Поделиться через


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_MACPASCAL 3

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

CC_MAX 9

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

CC_MPWCDECL 7

Указывает на использование для метода соглашения о вызове Macintosh Programmers' Workbench (MPW) CDECL.

CC_MPWPASCAL 8

Указывает на использование для метода соглашения о вызове Macintosh Programmers' Workbench (MPW) PASCAL.

CC_MSCPASCAL 2

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

CC_PASCAL 2

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

CC_RESERVED 5

Это значение зарезервировано для использования в будущем.

CC_STDCALL 4

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

CC_SYSCALL 6

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

Комментарии

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

  • CC_CDECL использует соглашения об именовании и вызовах языка C. Вызывающий объект отправляет параметры в стек в обратном порядке (справа налево) и очищает стек после возврата функции. Это соглашение о вызовах позволяет вызывать функции с varargsпомощью , что делает его подходящим для использования с методами, принимаюющими переменное количество параметров, таких как printf функций времени выполнения 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. Для получения дополнительной информации см. How to: Map HRESULTs and Exceptions.

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

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