CALLCONV Перечисление

Определение

Определяет соглашение о вызовах, используемое методом, описанным в структуре METHODDATA .

public enum class CALLCONV
public enum CALLCONV
[System.Serializable]
public enum CALLCONV
type CALLCONV = 
[<System.Serializable>]
type CALLCONV = 
Public Enum CALLCONV
Наследование
CALLCONV
Атрибуты

Поля

Имя Значение Описание
CC_CDECL 1

Указывает, что для метода используется соглашение о вызове объявления C (CDECL).

CC_MSCPASCAL 2

Указывает, что для метода используется соглашение о вызове MSC Pascal (MSCPASCAL).

CC_PASCAL 2

Указывает, что для метода используется соглашение о вызове Pascal.

CC_MACPASCAL 3

Указывает, что для метода используется соглашение о вызове Macintosh Pascal (MACPASCAL).

CC_STDCALL 4

Указывает, что для метода используется стандартное соглашение о вызовах (STDCALL).

CC_RESERVED 5

Это значение зарезервировано для дальнейшего использования.

CC_SYSCALL 6

Указывает, что для метода используется стандартное соглашение о вызовах SYSCALL.

CC_MPWCDECL 7

Указывает, что для метода используется соглашение о вызовах CDECL программистов Macintosh (MPW).

CC_MPWPASCAL 8

Указывает, что для метода используется соглашение о вызовах PASCAL программистов Macintosh (MPW).

CC_MAX 9

Указывает конец перечисления CALLCONV .

Комментарии

Соглашения о вызовах в этом классе описывают, как функции передают аргументы и возвращаемые значения. Они указывают порядок настройки параметров для вызываемой функции, где параметры хранятся (в регистрах или в памяти), а также кто (вызывающий или вызываемая функция) отвечает за очистку стека после возврата функции. Рассмотрим пример.

  • CC_CDECL использует соглашения об именовании и вызовах языка C. Вызывающий объект отправляет параметры в стек в обратном порядке (справа налево) и очищает стек после возврата функции. Это соглашение о вызове позволяет вызывать функции с varargsпомощью методов, которые принимают переменное число параметров, например печать функций времени выполнения C , _printf_l, wprintf, _wprintf_l.

  • CC_PASCAL использует соглашение о вызовах Pascal. Вызывающий объект отправляет параметры в стек в левом порядке вправо. Вызываемая функция очищает стек перед возвратом.

  • CC_STDCALL — это стандартное соглашение о вызовах функций Win32. Это соглашение по умолчанию для вызова неуправляемых функций с вызовом платформы. Вызывающий объект отправляет параметры в стек в обратном порядке (справа налево), а вызываемая функция очищает стек перед возвратом.

  • CC_SYSCALL похож на CDECL в том, что аргументы отправляются справа налево. Регистры EAX, ECX и EDX не сохраняются.

Эти идентификаторы соглашения о вызовах используются платформой .NET Framework, платформой Windows Embedded CE и службой автоматизации.

Среда CLR создает исключение, если метод COM в машинном коде возвращает HRESULT. Дополнительные сведения см. в разделе "Практическое руководство. Сопоставление HRESULTs и исключений".

Применяется к

См. также раздел