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,这使得它适合用于接受可变参数数的方法,例如 C 运行时函数 printf、_printf_l、wprintf _wprintf_l

  • CC_PASCAL使用 Pascal 调用约定。 调用方按从左到右的顺序将参数推送到堆栈上。 被调用的 函数在返回之前清理堆栈。

  • CC_STDCALL是 Win32 函数的标准调用约定。 这是使用平台调用调用非托管函数的默认约定。 调用方将参数反向 (从右到左) 顺序推送到堆栈上,调用的函数在返回之前清理堆栈。

  • CC_SYSCALL类似于 CDECL,参数是从右向左推送的。 不会保留 EAX、ECX 和 EDX 寄存器。

这些调用约定标识符由 .NET Framework、Windows Embedded CE 平台和自动化使用。

当本机代码中的 COM 方法返回 HRESULT 时,公共语言运行时将引发异常。 有关更多信息,请参见 How to: Map HRESULTs and Exceptions

适用于

另请参阅