CALLCONV Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет соглашение о вызовах, используемое методом, описанным в структуре METHODDATA.
public enum class CALLCONV
public enum CALLCONV
[System.Serializable]
public enum CALLCONV
type CALLCONV =
[<System.Serializable>]
type CALLCONV =
Public Enum 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.