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

Определение

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

C#
public enum CALLCONV
C#
[System.Serializable]
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.

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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