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_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 и исключений".