CorPinvokeMap 枚举
指定 PInvoke 调用的选项。
语法
typedef enum CorPinvokeMap {
pmNoMangle = 0x0001,
pmCharSetMask = 0x0006,
pmCharSetNotSpec = 0x0000,
pmCharSetAnsi = 0x0002,
pmCharSetUnicode = 0x0004,
pmCharSetAuto = 0x0006,
pmBestFitUseAssem = 0x0000,
pmBestFitEnabled = 0x0010,
pmBestFitDisabled = 0x0020,
pmBestFitMask = 0x0030,
pmThrowOnUnmappableCharUseAssem = 0x0000,
pmThrowOnUnmappableCharEnabled = 0x1000,
pmThrowOnUnmappableCharDisabled = 0x2000,
pmThrowOnUnmappableCharMask = 0x3000,
pmSupportsLastError = 0x0040,
pmCallConvMask = 0x0700,
pmCallConvWinapi = 0x0100,
pmCallConvCdecl = 0x0200,
pmCallConvStdcall = 0x0300,
pmCallConvThiscall = 0x0400,
pmCallConvFastcall = 0x0500,
pmMaxValue = 0xFFFF
} CorPinvokeMap;
成员
成员 | 说明 |
---|---|
pmNoMangle |
根据指定使用每个成员名称。 |
pmCharSetMask |
保留。 |
pmCharSetNotSpec |
保留。 |
pmCharSetAnsi |
以多字节字符串的形式封送字符串。 |
pmCharSetUnicode |
以 Unicode 2 字节字符的形式封送字符串。 |
pmCharSetAuto |
针对目标操作系统适当地自动封送字符串。 Windows 上默认为 Unicode。 |
pmBestFitUseAssem |
保留。 |
pmBestFitEnabled |
对 ANSI 字符集中缺少精确匹配的 Unicode 字符执行最佳匹配映射。 |
pmBestFitDisabled |
不要执行 Unicode 字符的最佳匹配映射。 在这种情况下,所有不可映射的字符都将被替换为“?”。 |
pmBestFitMask |
保留。 |
pmThrowOnUnmappableCharUseAssem |
保留。 |
pmThrowOnUnmappableCharEnabled |
当互操作封送处理程序遇到不可映射的字符时引发异常。 |
pmThrowOnUnmappableCharDisabled |
当互操作封送处理程序遇到不可映射的字符时不引发异常。 |
pmThrowOnUnmappableCharMask |
保留 |
pmSupportsLastError |
允许被调用方在从属性化方法返回之前调用 Win32 SetLastError 函数。 |
pmCallConvMask |
保留 |
pmCallConvWinapi |
使用默认的平台调用约定。 例如,在 Windows 上默认为 StdCall ,在 Windows CE.NET 上默认为 Cdecl 。 |
pmCallConvCdecl |
使用 Cdecl 调用约定。 在这种情况下,调用方将清理堆栈。 这允许使用 varargs 调用函数(即,接受可变数量参数的函数)。 |
pmCallConvStdcall |
使用 StdCall 调用约定。 在这种情况下,被调用方将清理堆栈。 这是使用平台 invoke 调用非托管函数的默认约定。 |
pmCallConvThiscall |
使用 ThisCall 调用约定。 在这种情况下,第一个参数是 this 指针,它存储在寄存器 ECX 中。 其他参数被推送到堆栈上。 ThisCall 调用约定用于对从非托管 DLL 导出的类调用方法。 |
pmCallConvFastcall |
保留。 |
pmMaxValue |
保留。 |
要求
平台:请参阅系统要求。
标头:CorHdr.h
.NET Framework 版本:自 1.0 起可用