Home | History | Annotate | Download | only in include
      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 #ifndef __CORHDR_H__
      6 #define __CORHDR_H__
      7 
      8 #ifdef __cplusplus
      9 extern "C" {
     10 #endif
     11 
     12 typedef enum CorTypeAttr {
     13   tdVisibilityMask = 0x7,
     14   tdNotPublic = 0x0,
     15   tdPublic = 0x1,
     16   tdNestedPublic = 0x2,
     17   tdNestedPrivate = 0x3,
     18   tdNestedFamily = 0x4,
     19   tdNestedAssembly = 0x5,
     20   tdNestedFamANDAssem = 0x6,
     21   tdNestedFamORAssem = 0x7,
     22   tdLayoutMask = 0x18,
     23   tdAutoLayout = 0x0,
     24   tdSequentialLayout = 0x8,
     25   tdExplicitLayout = 0x10,
     26   tdClassSemanticsMask = 0x20,
     27   tdClass = 0x0,
     28   tdInterface = 0x20,
     29   tdAbstract = 0x80,
     30   tdSealed = 0x100,
     31   tdSpecialName = 0x400,
     32   tdImport = 0x1000,
     33   tdSerializable = 0x2000,
     34   tdWindowsRuntime = 0x4000,
     35   tdStringFormatMask = 0x30000,
     36   tdAnsiClass = 0x0,
     37   tdUnicodeClass = 0x10000,
     38   tdAutoClass = 0x20000,
     39   tdCustomFormatClass = 0x30000,
     40   tdCustomFormatMask = 0xc00000,
     41   tdBeforeFieldInit = 0x100000,
     42   tdForwarder = 0x200000,
     43   tdReservedMask = 0x40800,
     44   tdRTSpecialName = 0x800,
     45   tdHasSecurity = 0x40000,
     46 } CorTypeAttr;
     47 
     48 typedef enum CorMethodAttr {
     49   mdMemberAccessMask = 0x0007,
     50   mdPrivateScope = 0x0,
     51   mdPrivate = 0x1,
     52   mdFamANDAssem = 0x2,
     53   mdAssem = 0x3,
     54   mdFamily = 0x4,
     55   mdFamORAssem = 0x5,
     56   mdPublic = 0x6,
     57   mdUnmanagedExport = 0x8,
     58   mdStatic = 0x10,
     59   mdFinal = 0x20,
     60   mdVirtual = 0x40,
     61   mdHideBySig = 0x80,
     62   mdVtableLayoutMask = 0x100,
     63   mdReuseSlot = 0x0,
     64   mdNewSlot = 0x100,
     65   mdCheckAccessOnOverride = 0x200,
     66   mdAbstract = 0x400,
     67   mdSpecialName = 0x800,
     68   mdPinvokeImpl = 0x2000,
     69   mdReservedMask = 0xd000,
     70   mdRTSpecialName = 0x1000,
     71   mdHasSecurity = 0x4000,
     72   mdRequireSecObject = 0x8000
     73 } CorMethodAttr;
     74 
     75 #ifndef __IMAGE_COR20_HEADER_DEFINED__
     76 #define __IMAGE_COR20_HEADER_DEFINED__
     77 typedef enum ReplacesCorHdrNumericDefines {
     78   COMIMAGE_FLAGS_ILONLY = 0x1,
     79   COMIMAGE_FLAGS_32BITREQUIRED = 0x2,
     80   COMIMAGE_FLAGS_IL_LIBRARY = 0x4,
     81   COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x8,
     82   COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x10,
     83   COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x10000,
     84   COMIMAGE_FLAGS_32BITPREFERRED = 0x20000,
     85   COR_VERSION_MAJOR_V2 = 2,
     86   COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
     87   COR_VERSION_MINOR = 5,
     88   COR_DELETED_NAME_LENGTH = 8,
     89   COR_VTABLEGAP_NAME_LENGTH = 8,
     90   NATIVE_TYPE_MAX_CB = 1,
     91   COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xff,
     92   COR_VTABLE_32BIT = 0x1,
     93   COR_VTABLE_64BIT = 0x2,
     94   COR_VTABLE_FROM_UNMANAGED = 0x4,
     95   COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN = 0x8,
     96   COR_VTABLE_CALL_MOST_DERIVED = 0x10,
     97   MAX_CLASS_NAME = 1024,
     98   MAX_PACKAGE_NAME = 1024
     99 } ReplacesCorHdrNumericDefines;
    100 
    101 typedef struct IMAGE_COR20_HEADER {
    102   DWORD cb;
    103   WORD MajorRuntimeVersion;
    104   WORD MinorRuntimeVersion;
    105   IMAGE_DATA_DIRECTORY MetaData;
    106   DWORD Flags;
    107   __C89_NAMELESS union {
    108     DWORD EntryPointToken;
    109     DWORD EntryPointRVA;
    110   };
    111   IMAGE_DATA_DIRECTORY Resources;
    112   IMAGE_DATA_DIRECTORY StrongNameSignature;
    113   IMAGE_DATA_DIRECTORY CodeManagerTable;
    114   IMAGE_DATA_DIRECTORY VTableFixups;
    115   IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
    116   IMAGE_DATA_DIRECTORY ManagedNativeHeader;
    117 } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER;
    118 #else
    119 #define COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN 0x8
    120 #define COMIMAGE_FLAGS_32BITPREFERRED 0x20000
    121 #endif
    122 
    123 typedef enum CorFieldAttr {
    124   fdFieldAccessMask = 0x0007,
    125   fdPrivateScope = 0x0000,
    126   fdPrivate = 0x0001,
    127   fdFamANDAssem = 0x0002,
    128   fdAssembly = 0x0003,
    129   fdFamily = 0x0004,
    130   fdFamORAssem = 0x0005,
    131   fdPublic = 0x0006,
    132 
    133   fdStatic = 0x0010,
    134   fdInitOnly = 0x0020,
    135   fdLiteral = 0x0040,
    136   fdNotSerialized = 0x0080,
    137   fdHasFieldRVA = 0x0100,
    138   fdSpecialName = 0x0200,
    139   fdRTSpecialName = 0x0400,
    140   fdHasFieldMarshal = 0x1000,
    141   fdPinvokeImpl = 0x2000,
    142   fdHasDefault = 0x8000,
    143   fdReservedMask = 0x9500
    144 } CorFieldAttr;
    145 
    146 typedef enum CorParamAttr {
    147   pdIn = 0x1,
    148   pdOut = 0x2,
    149   pdOptional = 0x10,
    150   pdReservedMask = 0xf000,
    151   pdHasDefault = 0x1000,
    152   pdHasFieldMarshal = 0x2000,
    153   pdUnused = 0xcfe0
    154 } CorParamAttr;
    155 
    156 typedef enum CorPropertyAttr {
    157   prReservedMask = 0xf400,
    158   prSpecialName = 0x0200,
    159   prRTSpecialName = 0x0400,
    160   prHasDefault = 0x1000,
    161   prUnused = 0xe9ff
    162 } CorPropertyAttr;
    163 
    164 typedef enum CorEventAttr {
    165   evSpecialName = 0x0200,
    166   evReservedMask = 0x0400,
    167   evRTSpecialName = 0x0400,
    168 } CorEventAttr;
    169 
    170 typedef enum CorMethodSemanticsAttr {
    171   msSetter = 0x1,
    172   msGetter = 0x2,
    173   msOther = 0x4,
    174   msAddOn = 0x8,
    175   msRemoveOn = 0x10,
    176   msFire = 0x20
    177 } CorMethodSemanticsAttr;
    178 
    179 typedef enum CorDeclSecurity {
    180   dclActionMask = 0x001f,
    181   dclActionNil = 0x0000,
    182   dclRequest = 0x0001,
    183   dclDemand = 0x0002,
    184   dclAssert = 0x0003,
    185   dclDeny = 0x0004,
    186   dclPermitOnly = 0x0005,
    187   dclLinktimeCheck = 0x0006,
    188   dclInheritanceCheck = 0x0007,
    189   dclRequestMinimum = 0x0008,
    190   dclRequestOptional = 0x0009,
    191   dclRequestRefuse = 0x000a,
    192   dclPrejitGrant = 0x000b,
    193   dclPrejitDenied = 0x000c,
    194   dclNonCasDemand = 0x000d,
    195   dclNonCasLinkDemand = 0x000e,
    196   dclNonCasInheritance = 0x000f,
    197   dclMaximumValue = 0x000f
    198 } CorDeclSecurity;
    199 
    200 typedef enum CorMethodImpl {
    201   miCodeTypeMask = 0x0003,
    202   miIL = 0x0000,
    203   miNative = 0x0001,
    204   miOPTIL = 0x0002,
    205   miRuntime = 0x0003,
    206   miManagedMask = 0x0004,
    207   miUnmanaged = 0x0004,
    208   miManaged = 0x0,
    209   miNoInlining = 0x0008,
    210   miForwardRef = 0x0010,
    211   miSynchronized = 0x0020,
    212   miNoOptimization = 0x0040,
    213   miPreserveSig = 0x0080,
    214   miAggressiveInlining = 0x0100,
    215   miInternalCall = 0x1000,
    216   miUserMask = miManagedMask | miForwardRef | miPreserveSig | miInternalCall | miSynchronized | miNoInlining | miAggressiveInlining | miNoOptimization,
    217   miMaxMethodImplVal = 0xffff
    218 } CorMethodImpl;
    219 
    220 typedef enum CorPinvokeMap {
    221   pmNoMangle = 0x0001,
    222   pmCharSetMask = 0x0006,
    223   pmCharSetNotSpec = 0x0,
    224   pmCharSetAnsi = 0x0002,
    225   pmCharSetUnicode = 0x0004,
    226   pmCharSetAuto = 0x0006,
    227   pmBestFitMask = 0x0030,
    228   pmBestFitUseAssem = 0x0,
    229   pmBestFitEnabled = 0x0010,
    230   pmBestFitDisabled = 0x0020,
    231   pmSupportsLastError = 0x0040,
    232   pmCallConvMask = 0x0700,
    233   pmCallConvWinapi = 0x0100,
    234   pmCallConvCdecl = 0x0200,
    235   pmCallConvStdcall = 0x0300,
    236   pmCallConvThiscall = 0x0400,
    237   pmCallConvFastcall = 0x0500,
    238   pmThrowOnUnmappableCharMask = 0x3000,
    239   pmThrowOnUnmappableCharUseAssem = 0x0,
    240   pmThrowOnUnmappableCharEnabled = 0x1000,
    241   pmThrowOnUnmappableCharDisabled = 0x2000,
    242   pmMaxValue = 0xffff
    243 } CorPinvokeMap;
    244 
    245 typedef enum CorAssemblyFlags {
    246   afPublicKey = 0x0001,
    247   afPA_Mask = 0x0070,
    248   afPA_FullMask = 0x00f0,
    249   afPA_None = 0x0,
    250   afPA_MSIL = 0x0010,
    251   afPA_x86 = 0x0020,
    252   afPA_IA64 = 0x0030,
    253   afPA_AMD64 = 0x0040,
    254   afPA_ARM = 0x0050,
    255   afPA_NoPlatform = 0x0070,
    256   afPA_Specified = 0x0080,
    257   afPA_Shift = 0x0004,
    258   afRetargetable = 0x0100,
    259   afContentType_Mask = 0x0e00,
    260   afContentType_Default = 0x0,
    261   afContentType_WindowsRuntime = 0x0200,
    262   afEnableJITcompileTracking = 0x8000,
    263   afDisableJITcompileOptimizer = 0x4000
    264 } CorAssemblyFlags;
    265 
    266 typedef enum CorManifestResourceFlags {
    267   mrVisibilityMask = 0x0007,
    268   mrPublic = 0x0001,
    269   mrPrivate = 0x0002,
    270 } CorManifestResourceFlags;
    271 
    272 typedef enum CorFileFlags {
    273   ffContainsMetaData = 0x0000,
    274   ffContainsNoMetaData = 0x0001,
    275 } CorFileFlags;
    276 
    277 typedef enum CorPEKind {
    278   peNot = 0x00000000,
    279   peILonly = 0x00000001,
    280   pe32BitRequired=0x00000002,
    281   pe32Plus = 0x00000004,
    282   pe32Unmanaged=0x00000008,
    283   pe32BitPreferred=0x00000010
    284 } CorPEKind;
    285 
    286 typedef enum CorGenericParamAttr {
    287   gpVarianceMask = 0x0003,
    288   gpNonVariant = 0x0000,
    289   gpCovariant = 0x0001,
    290   gpContravariant = 0x0002,
    291   gpSpecialConstraintMask = 0x001c,
    292   gpNoSpecialConstraint = 0x0000,
    293   gpReferenceTypeConstraint = 0x0004,
    294   gpNotNullableValueTypeConstraint = 0x0008,
    295   gpDefaultConstructorConstraint = 0x0010
    296 } CorGenericParamAttr;
    297 
    298 typedef enum CorElementType {
    299   ELEMENT_TYPE_END = 0x00,
    300   ELEMENT_TYPE_VOID = 0x01,
    301   ELEMENT_TYPE_BOOLEAN = 0x02,
    302   ELEMENT_TYPE_CHAR = 0x03,
    303   ELEMENT_TYPE_I1 = 0x04,
    304   ELEMENT_TYPE_U1 = 0x05,
    305   ELEMENT_TYPE_I2 = 0x06,
    306   ELEMENT_TYPE_U2 = 0x07,
    307   ELEMENT_TYPE_I4 = 0x08,
    308   ELEMENT_TYPE_U4 = 0x09,
    309   ELEMENT_TYPE_I8 = 0x0a,
    310   ELEMENT_TYPE_U8 = 0x0b,
    311   ELEMENT_TYPE_R4 = 0x0c,
    312   ELEMENT_TYPE_R8 = 0x0d,
    313   ELEMENT_TYPE_STRING = 0x0e,
    314   ELEMENT_TYPE_PTR = 0x0f,
    315   ELEMENT_TYPE_BYREF = 0x10,
    316   ELEMENT_TYPE_VALUETYPE = 0x11,
    317   ELEMENT_TYPE_CLASS = 0x12,
    318   ELEMENT_TYPE_VAR = 0x13,
    319   ELEMENT_TYPE_ARRAY = 0x14,
    320   ELEMENT_TYPE_GENERICINST = 0x15,
    321   ELEMENT_TYPE_TYPEDBYREF = 0x16,
    322   ELEMENT_TYPE_I = 0x18,
    323   ELEMENT_TYPE_U = 0x19,
    324   ELEMENT_TYPE_FNPTR = 0x1b,
    325   ELEMENT_TYPE_OBJECT = 0x1c,
    326   ELEMENT_TYPE_SZARRAY = 0x1d,
    327   ELEMENT_TYPE_MVAR = 0x1e,
    328   ELEMENT_TYPE_CMOD_REQD = 0x1f,
    329   ELEMENT_TYPE_CMOD_OPT = 0x20,
    330   ELEMENT_TYPE_INTERNAL = 0x21,
    331   ELEMENT_TYPE_MAX = 0x22,
    332   ELEMENT_TYPE_MODIFIER = 0x40,
    333   ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER,
    334   ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER,
    335 } CorElementType;
    336 
    337 typedef enum CorSerializationType {
    338   SERIALIZATION_TYPE_UNDEFINED = 0,
    339   SERIALIZATION_TYPE_BOOLEAN = ELEMENT_TYPE_BOOLEAN,
    340   SERIALIZATION_TYPE_CHAR = ELEMENT_TYPE_CHAR,
    341   SERIALIZATION_TYPE_I1 = ELEMENT_TYPE_I1,
    342   SERIALIZATION_TYPE_U1 = ELEMENT_TYPE_U1,
    343   SERIALIZATION_TYPE_I2 = ELEMENT_TYPE_I2,
    344   SERIALIZATION_TYPE_U2 = ELEMENT_TYPE_U2,
    345   SERIALIZATION_TYPE_I4 = ELEMENT_TYPE_I4,
    346   SERIALIZATION_TYPE_U4 = ELEMENT_TYPE_U4,
    347   SERIALIZATION_TYPE_I8 = ELEMENT_TYPE_I8,
    348   SERIALIZATION_TYPE_U8 = ELEMENT_TYPE_U8,
    349   SERIALIZATION_TYPE_R4 = ELEMENT_TYPE_R4,
    350   SERIALIZATION_TYPE_R8 = ELEMENT_TYPE_R8,
    351   SERIALIZATION_TYPE_STRING = ELEMENT_TYPE_STRING,
    352   SERIALIZATION_TYPE_SZARRAY = ELEMENT_TYPE_SZARRAY,
    353   SERIALIZATION_TYPE_TYPE = 0x50,
    354   SERIALIZATION_TYPE_TAGGED_OBJECT= 0x51,
    355   SERIALIZATION_TYPE_FIELD = 0x53,
    356   SERIALIZATION_TYPE_PROPERTY = 0x54,
    357   SERIALIZATION_TYPE_ENUM = 0x55
    358 } CorSerializationType;
    359 
    360 typedef enum CorCallingConvention {
    361   IMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0,
    362   IMAGE_CEE_CS_CALLCONV_VARARG = 0x5,
    363   IMAGE_CEE_CS_CALLCONV_FIELD = 0x6,
    364   IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7,
    365   IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8,
    366   IMAGE_CEE_CS_CALLCONV_UNMGD = 0x9,
    367   IMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa,
    368   IMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb,
    369   IMAGE_CEE_CS_CALLCONV_MAX = 0xc,
    370   IMAGE_CEE_CS_CALLCONV_MASK = 0x0f,
    371   IMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20,
    372   IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40,
    373   IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10,
    374 } CorCallingConvention;
    375 
    376 typedef enum CorUnmanagedCallingConvention {
    377   IMAGE_CEE_UNMANAGED_CALLCONV_C = 0x1,
    378   IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL = 0x2,
    379   IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL = 0x3,
    380   IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL = 0x4,
    381   IMAGE_CEE_CS_CALLCONV_C = IMAGE_CEE_UNMANAGED_CALLCONV_C,
    382   IMAGE_CEE_CS_CALLCONV_STDCALL = IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL,
    383   IMAGE_CEE_CS_CALLCONV_THISCALL = IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL,
    384   IMAGE_CEE_CS_CALLCONV_FASTCALL = IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL,
    385 } CorUnmanagedCallingConvention;
    386 
    387 typedef enum CorArgType {
    388   IMAGE_CEE_CS_END = 0x0,
    389   IMAGE_CEE_CS_VOID = 0x1,
    390   IMAGE_CEE_CS_I4 = 0x2,
    391   IMAGE_CEE_CS_I8 = 0x3,
    392   IMAGE_CEE_CS_R4 = 0x4,
    393   IMAGE_CEE_CS_R8 = 0x5,
    394   IMAGE_CEE_CS_PTR = 0x6,
    395   IMAGE_CEE_CS_OBJECT = 0x7,
    396   IMAGE_CEE_CS_STRUCT4 = 0x8,
    397   IMAGE_CEE_CS_STRUCT32 = 0x9,
    398   IMAGE_CEE_CS_BYVALUE = 0xa,
    399 } CorArgType;
    400 
    401 typedef enum CorNativeType {
    402   NATIVE_TYPE_END = 0x0,
    403   NATIVE_TYPE_VOID = 0x1,
    404   NATIVE_TYPE_BOOLEAN = 0x2,
    405   NATIVE_TYPE_I1 = 0x3,
    406   NATIVE_TYPE_U1 = 0x4,
    407   NATIVE_TYPE_I2 = 0x5,
    408   NATIVE_TYPE_U2 = 0x6,
    409   NATIVE_TYPE_I4 = 0x7,
    410   NATIVE_TYPE_U4 = 0x8,
    411   NATIVE_TYPE_I8 = 0x9,
    412   NATIVE_TYPE_U8 = 0xa,
    413   NATIVE_TYPE_R4 = 0xb,
    414   NATIVE_TYPE_R8 = 0xc,
    415   NATIVE_TYPE_SYSCHAR = 0xd,
    416   NATIVE_TYPE_VARIANT = 0xe,
    417   NATIVE_TYPE_CURRENCY = 0xf,
    418   NATIVE_TYPE_PTR = 0x10,
    419   NATIVE_TYPE_DECIMAL = 0x11,
    420   NATIVE_TYPE_DATE = 0x12,
    421   NATIVE_TYPE_BSTR = 0x13,
    422   NATIVE_TYPE_LPSTR = 0x14,
    423   NATIVE_TYPE_LPWSTR = 0x15,
    424   NATIVE_TYPE_LPTSTR = 0x16,
    425   NATIVE_TYPE_FIXEDSYSSTRING = 0x17,
    426   NATIVE_TYPE_OBJECTREF = 0x18,
    427   NATIVE_TYPE_IUNKNOWN = 0x19,
    428   NATIVE_TYPE_IDISPATCH = 0x1a,
    429   NATIVE_TYPE_STRUCT = 0x1b,
    430   NATIVE_TYPE_INTF = 0x1c,
    431   NATIVE_TYPE_SAFEARRAY = 0x1d,
    432   NATIVE_TYPE_FIXEDARRAY = 0x1e,
    433   NATIVE_TYPE_INT = 0x1f,
    434   NATIVE_TYPE_UINT = 0x20,
    435   NATIVE_TYPE_NESTEDSTRUCT = 0x21,
    436   NATIVE_TYPE_BYVALSTR = 0x22,
    437   NATIVE_TYPE_ANSIBSTR = 0x23,
    438   NATIVE_TYPE_TBSTR = 0x24,
    439   NATIVE_TYPE_VARIANTBOOL = 0x25,
    440   NATIVE_TYPE_FUNC = 0x26,
    441   NATIVE_TYPE_ASANY = 0x28,
    442   NATIVE_TYPE_ARRAY = 0x2a,
    443   NATIVE_TYPE_LPSTRUCT = 0x2b,
    444   NATIVE_TYPE_CUSTOMMARSHALER = 0x2c,
    445   NATIVE_TYPE_ERROR = 0x2d,
    446   NATIVE_TYPE_IINSPECTABLE = 0x2e,
    447   NATIVE_TYPE_HSTRING = 0x2f,
    448   NATIVE_TYPE_MAX = 0x50
    449 } CorNativeType;
    450 
    451 typedef enum CorDescrGroupMethodType {
    452   DESCR_GROUP_METHODDEF = 0,
    453   DESCR_GROUP_METHODIMPL = 1
    454 } CorDescrGroupMethodType;
    455 
    456 typedef enum CorILMethodSect {
    457   CorILMethod_Sect_KindMask = 0x3f,
    458   CorILMethod_Sect_Reserved = 0,
    459   CorILMethod_Sect_EHTable = 1,
    460   CorILMethod_Sect_OptILTable = 2,
    461   CorILMethod_Sect_FatFormat = 0x40,
    462   CorILMethod_Sect_MoreSects = 0x80
    463 } CorILMethodSect;
    464 
    465 typedef enum CorILMethodFlags {
    466   CorILMethod_InitLocals = 0x0010,
    467   CorILMethod_MoreSects = 0x0008,
    468   CorILMethod_CompressedIL = 0x0040,
    469   CorILMethod_FormatShift = 3,
    470   CorILMethod_FormatMask = 0x0007,
    471   CorILMethod_SmallFormat = 0x0,
    472   CorILMethod_TinyFormat = 0x0002,
    473   CorILMethod_FatFormat = 0x0003,
    474   CorILMethod_TinyFormat1 = 0x0006,
    475 } CorILMethodFlags;
    476 
    477 typedef enum CorExceptionFlag {
    478   COR_ILEXCEPTION_CLAUSE_NONE,
    479   COR_ILEXCEPTION_CLAUSE_OFFSETLEN = 0x0,
    480   COR_ILEXCEPTION_CLAUSE_DEPRECATED = 0x0,
    481   COR_ILEXCEPTION_CLAUSE_FILTER = 0x1,
    482   COR_ILEXCEPTION_CLAUSE_FINALLY = 0x2,
    483   COR_ILEXCEPTION_CLAUSE_FAULT = 0x4,
    484   COR_ILEXCEPTION_CLAUSE_DUPLICATED = 0x8
    485 } CorExceptionFlag;
    486 
    487 typedef enum CorCheckDuplicatesFor {
    488   MDDupAll = 0xffffffff,
    489   MDDupENC = MDDupAll,
    490   MDNoDupChecks = 0x00000000,
    491   MDDupTypeDef = 0x00000001,
    492   MDDupInterfaceImpl = 0x00000002,
    493   MDDupMethodDef = 0x00000004,
    494   MDDupTypeRef = 0x00000008,
    495   MDDupMemberRef = 0x00000010,
    496   MDDupCustomAttribute = 0x00000020,
    497   MDDupParamDef = 0x00000040,
    498   MDDupPermission = 0x00000080,
    499   MDDupProperty = 0x00000100,
    500   MDDupEvent = 0x00000200,
    501   MDDupFieldDef = 0x00000400,
    502   MDDupSignature = 0x00000800,
    503   MDDupModuleRef = 0x00001000,
    504   MDDupTypeSpec = 0x00002000,
    505   MDDupImplMap = 0x00004000,
    506   MDDupAssemblyRef = 0x00008000,
    507   MDDupFile = 0x00010000,
    508   MDDupExportedType = 0x00020000,
    509   MDDupManifestResource = 0x00040000,
    510   MDDupGenericParam = 0x00080000,
    511   MDDupMethodSpec = 0x00100000,
    512   MDDupGenericParamConstraint = 0x00200000,
    513   MDDupAssembly = 0x10000000,
    514   MDDupDefault = MDNoDupChecks | MDDupTypeRef | MDDupMemberRef | MDDupSignature | MDDupTypeSpec | MDDupMethodSpec
    515 } CorCheckDuplicatesFor;
    516 
    517 typedef enum CorRefToDefCheck {
    518   MDRefToDefDefault = 0x00000003,
    519   MDRefToDefAll = 0xffffffff,
    520   MDRefToDefNone = 0x00000000,
    521   MDTypeRefToDef = 0x00000001,
    522   MDMemberRefToDef = 0x00000002
    523 } CorRefToDefCheck;
    524 
    525 typedef enum CorNotificationForTokenMovement {
    526   MDNotifyDefault = 0x0000000f,
    527   MDNotifyAll = 0xffffffff,
    528   MDNotifyNone = 0x00000000,
    529   MDNotifyMethodDef = 0x00000001,
    530   MDNotifyMemberRef = 0x00000002,
    531   MDNotifyFieldDef = 0x00000004,
    532   MDNotifyTypeRef = 0x00000008,
    533   MDNotifyTypeDef = 0x00000010,
    534   MDNotifyParamDef = 0x00000020,
    535   MDNotifyInterfaceImpl = 0x00000040,
    536   MDNotifyProperty = 0x00000080,
    537   MDNotifyEvent = 0x00000100,
    538   MDNotifySignature = 0x00000200,
    539   MDNotifyTypeSpec = 0x00000400,
    540   MDNotifyCustomAttribute = 0x00000800,
    541   MDNotifySecurityValue = 0x00001000,
    542   MDNotifyPermission = 0x00002000,
    543   MDNotifyModuleRef = 0x00004000,
    544   MDNotifyNameSpace = 0x00008000,
    545   MDNotifyAssemblyRef = 0x01000000,
    546   MDNotifyFile = 0x02000000,
    547   MDNotifyExportedType = 0x04000000,
    548   MDNotifyResource = 0x08000000
    549 } CorNotificationForTokenMovement;
    550 
    551 typedef enum CorSetENC {
    552   MDSetENCOn = 0x00000001,
    553   MDSetENCOff = 0x00000002,
    554   MDUpdateENC = 0x00000001,
    555   MDUpdateFull = 0x00000002,
    556   MDUpdateExtension = 0x00000003,
    557   MDUpdateIncremental = 0x00000004,
    558   MDUpdateDelta = 0x00000005,
    559   MDUpdateMask = 0x00000007,
    560 } CorSetENC;
    561 
    562 typedef enum CorErrorIfEmitOutOfOrder {
    563   MDErrorOutOfOrderDefault = 0x00000000,
    564   MDErrorOutOfOrderNone = 0x00000000,
    565   MDErrorOutOfOrderAll = 0xffffffff,
    566   MDMethodOutOfOrder = 0x00000001,
    567   MDFieldOutOfOrder = 0x00000002,
    568   MDParamOutOfOrder = 0x00000004,
    569   MDPropertyOutOfOrder = 0x00000008,
    570   MDEventOutOfOrder = 0x00000010,
    571 } CorErrorIfEmitOutOfOrder;
    572 
    573 typedef enum CorImportOptions {
    574   MDImportOptionDefault = 0x00000000,
    575   MDImportOptionAll = 0xffffffff,
    576   MDImportOptionAllTypeDefs = 0x00000001,
    577   MDImportOptionAllMethodDefs = 0x00000002,
    578   MDImportOptionAllFieldDefs = 0x00000004,
    579   MDImportOptionAllProperties = 0x00000008,
    580   MDImportOptionAllEvents = 0x00000010,
    581   MDImportOptionAllCustomAttributes = 0x00000020,
    582   MDImportOptionAllExportedTypes = 0x00000040
    583 } CorImportOptions;
    584 
    585 typedef enum CorThreadSafetyOptions {
    586   MDThreadSafetyDefault = 0x00000000,
    587   MDThreadSafetyOff = 0x00000000,
    588   MDThreadSafetyOn = 0x00000001
    589 } CorThreadSafetyOptions;
    590 
    591 typedef enum CorLinkerOptions {
    592   MDAssembly = 0x00000000,
    593   MDNetModule = 0x00000001
    594 } CorLinkerOptions;
    595 
    596 typedef enum MergeFlags {
    597   MergeFlagsNone = 0,
    598   MergeManifest = 0x00000001,
    599   DropMemberRefCAs = 0x00000002,
    600   NoDupCheck = 0x00000004,
    601   MergeExportedTypes = 0x00000008
    602 } MergeFlags;
    603 
    604 typedef enum CorLocalRefPreservation {
    605   MDPreserveLocalRefsNone = 0x00000000,
    606   MDPreserveLocalTypeRef = 0x00000001,
    607   MDPreserveLocalMemberRef = 0x00000002
    608 } CorLocalRefPreservation;
    609 
    610 typedef enum CorTokenType {
    611   mdtModule = 0x00000000,
    612   mdtTypeRef = 0x01000000,
    613   mdtTypeDef = 0x02000000,
    614   mdtFieldDef = 0x04000000,
    615   mdtMethodDef = 0x06000000,
    616   mdtParamDef = 0x08000000,
    617   mdtInterfaceImpl = 0x09000000,
    618   mdtMemberRef = 0x0a000000,
    619   mdtCustomAttribute = 0x0c000000,
    620   mdtPermission = 0x0e000000,
    621   mdtSignature = 0x11000000,
    622   mdtEvent = 0x14000000,
    623   mdtProperty = 0x17000000,
    624   mdtMethodImpl = 0x19000000,
    625   mdtModuleRef = 0x1a000000,
    626   mdtTypeSpec = 0x1b000000,
    627   mdtAssembly = 0x20000000,
    628   mdtAssemblyRef = 0x23000000,
    629   mdtFile = 0x26000000,
    630   mdtExportedType = 0x27000000,
    631   mdtManifestResource = 0x28000000,
    632   mdtGenericParam = 0x2a000000,
    633   mdtMethodSpec = 0x2b000000,
    634   mdtGenericParamConstraint = 0x2c000000,
    635   mdtString = 0x70000000,
    636   mdtName = 0x71000000,
    637   mdtBaseType = 0x72000000,
    638 } CorTokenType;
    639 
    640 typedef enum CorOpenFlags {
    641   ofReadWriteMask = 0x00000001,
    642   ofRead = 0x00000000,
    643   ofWrite = 0x00000001,
    644   ofCopyMemory = 0x00000002,
    645   ofReadOnly = 0x00000010,
    646   ofTakeOwnership = 0x00000020,
    647   ofNoTypeLib = 0x00000080,
    648   ofNoTransform = 0x00001000,
    649   ofReserved1 = 0x00000100,
    650   ofReserved2 = 0x00000200,
    651   ofReserved3 = 0x00000400,
    652   ofReserved = 0xffffef40
    653 } CorOpenFlags;
    654 
    655 typedef enum CorAttributeTargets {
    656   catAssembly = 0x0001,
    657   catModule = 0x0002,
    658   catClass = 0x0004,
    659   catStruct = 0x0008,
    660   catEnum = 0x0010,
    661   catConstructor = 0x0020,
    662   catMethod = 0x0040,
    663   catProperty = 0x0080,
    664   catField = 0x0100,
    665   catEvent = 0x0200,
    666   catInterface = 0x0400,
    667   catParameter = 0x0800,
    668   catDelegate = 0x1000,
    669   catGenericParameter = 0x4000,
    670   catAll = catAssembly | catModule | catClass | catStruct | catEnum | catConstructor
    671     | catMethod | catProperty | catField | catEvent | catInterface | catParameter | catDelegate | catGenericParameter,
    672   catClassMembers = catClass | catStruct | catEnum | catConstructor | catMethod | catProperty | catField | catEvent | catDelegate | catInterface,
    673 } CorAttributeTargets;
    674 
    675 typedef enum CorFileMapping {
    676   fmFlat = 0,
    677   fmExecutableImage = 1
    678 } CorFileMapping;
    679 
    680 typedef enum CompilationRelaxationsEnum {
    681   CompilationRelaxations_NoStringInterning = 0x8
    682 } CompilationRelaxationEnum;
    683 
    684 typedef enum NGenHintEnum {
    685   NGenDefault = 0x0,
    686   NGenEager = 0x1,
    687   NGenLazy = 0x2,
    688   NGenNever = 0x3
    689 } NGenHintEnum;
    690 
    691 typedef enum LoadHintEnum {
    692   LoadDefault = 0x0,
    693   LoadAlways = 0x01,
    694   LoadSometimes = 0x2,
    695   LoadNever = 0x3
    696 } LoadHintEnum;
    697 
    698 #ifndef _CORSAVESIZE_DEFINED_
    699 #define _CORSAVESIZE_DEFINED_
    700 typedef enum CorSaveSize {
    701   cssAccurate = 0x0000,
    702   cssQuick = 0x0001,
    703   cssDiscardTransientCAs = 0x0002
    704 } CorSaveSize;
    705 #endif
    706 
    707 typedef enum NativeTypeArrayFlags {
    708   ntaSizeParamIndexSpecified = 0x0001,
    709   ntaReserved = 0xfffe
    710 } NativeTypeArrayFlags;
    711 
    712 typedef LPVOID mdScope;
    713 typedef ULONG32 mdToken;
    714 typedef mdToken mdModule;
    715 typedef mdToken mdTypeRef;
    716 typedef mdToken mdTypeDef;
    717 typedef mdToken mdFieldDef;
    718 typedef mdToken mdMethodDef;
    719 typedef mdToken mdParamDef;
    720 typedef mdToken mdInterfaceImpl;
    721 typedef mdToken mdMemberRef;
    722 typedef mdToken mdCustomAttribute;
    723 typedef mdToken mdPermission;
    724 typedef mdToken mdSignature;
    725 typedef mdToken mdEvent;
    726 typedef mdToken mdProperty;
    727 typedef mdToken mdModuleRef;
    728 typedef mdToken mdAssembly;
    729 typedef mdToken mdAssemblyRef;
    730 typedef mdToken mdFile;
    731 typedef mdToken mdExportedType;
    732 typedef mdToken mdManifestResource;
    733 typedef mdToken mdTypeSpec;
    734 typedef mdToken mdGenericParam;
    735 typedef mdToken mdMethodSpec;
    736 typedef mdToken mdGenericParamConstraint;
    737 typedef mdToken mdString;
    738 typedef mdToken mdCPToken;
    739 typedef ULONG RID;
    740 typedef CorTypeAttr CorRegTypeAttr;
    741 typedef void *HCORENUM;
    742 typedef unsigned char COR_SIGNATURE;
    743 typedef COR_SIGNATURE *PCOR_SIGNATURE;
    744 typedef const COR_SIGNATURE *PCCOR_SIGNATURE;
    745 typedef const char *MDUTF8CSTR;
    746 typedef char *MDUTF8STR;
    747 typedef void *PSECURITY_PROPS;
    748 typedef void *PSECURITY_VALUE;
    749 typedef void **PPSECURITY_PROPS;
    750 typedef void **PPSECURITY_VALUE;
    751 
    752 typedef struct COR_SECATTR {
    753   mdMemberRef tkCtor;
    754   const void *pCustomAttribute;
    755   ULONG cbCustomAttribute;
    756 } COR_SECATTR;
    757 
    758 typedef struct IMAGE_COR_ILMETHOD_SECT_SMALL {
    759   BYTE Kind;
    760   BYTE DataSize;
    761 } IMAGE_COR_ILMETHOD_SECT_SMALL;
    762 
    763 typedef struct IMAGE_COR_ILMETHOD_SECT_FAT {
    764   unsigned int Kind : 8;
    765   unsigned int DataSize : 24;
    766 } IMAGE_COR_ILMETHOD_SECT_FAT;
    767 
    768 typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT {
    769   CorExceptionFlag Flags;
    770   DWORD TryOffset;
    771   DWORD TryLength;
    772   DWORD HandlerOffset;
    773   DWORD HandlerLength;
    774   __C89_NAMELESS union {
    775     DWORD ClassToken;
    776     DWORD FilterOffset;
    777   };
    778 } IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT;
    779 
    780 typedef struct IMAGE_COR_ILMETHOD_SECT_EH_FAT {
    781   IMAGE_COR_ILMETHOD_SECT_FAT SectFat;
    782   IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT Clauses[1];
    783 } IMAGE_COR_ILMETHOD_SECT_EH_FAT;
    784 
    785 typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL {
    786   unsigned int Flags : 16;
    787   unsigned int TryOffset : 16;
    788   unsigned int TryLength : 8;
    789   unsigned int HandlerOffset : 16;
    790   unsigned int HandlerLength : 8;
    791   __C89_NAMELESS union {
    792     DWORD ClassToken;
    793     DWORD FilterOffset;
    794   };
    795 } IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL;
    796 
    797 typedef struct IMAGE_COR_ILMETHOD_SECT_EH_SMALL {
    798   IMAGE_COR_ILMETHOD_SECT_SMALL SectSmall;
    799   WORD Reserved;
    800   IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL Clauses[1];
    801 } IMAGE_COR_ILMETHOD_SECT_EH_SMALL;
    802 
    803 typedef union IMAGE_COR_ILMETHOD_SECT_EH {
    804   IMAGE_COR_ILMETHOD_SECT_EH_SMALL Small;
    805   IMAGE_COR_ILMETHOD_SECT_EH_FAT Fat;
    806 } IMAGE_COR_ILMETHOD_SECT_EH;
    807 
    808 typedef struct IMAGE_COR_ILMETHOD_TINY {
    809   BYTE Flags_CodeSize;
    810 } IMAGE_COR_ILMETHOD_TINY;
    811 
    812 typedef struct IMAGE_COR_ILMETHOD_FAT {
    813   unsigned int Flags : 12;
    814   unsigned int Size : 4;
    815   unsigned int MaxStack : 16;
    816   DWORD CodeSize;
    817   mdSignature LocalVarSigTok;
    818 } IMAGE_COR_ILMETHOD_FAT;
    819 
    820 typedef union IMAGE_COR_ILMETHOD {
    821   IMAGE_COR_ILMETHOD_TINY Tiny;
    822   IMAGE_COR_ILMETHOD_FAT Fat;
    823 } IMAGE_COR_ILMETHOD;
    824 
    825 typedef struct IMAGE_COR_VTABLEFIXUP {
    826   ULONG RVA;
    827   USHORT Count;
    828   USHORT Type;
    829 } IMAGE_COR_VTABLEFIXUP;
    830 
    831 #ifndef _COR_FIELD_OFFSET_
    832 #define _COR_FIELD_OFFSET_
    833 typedef struct COR_FIELD_OFFSET {
    834   mdFieldDef ridOfField;
    835   ULONG ulOffset;
    836 } COR_FIELD_OFFSET;
    837 #endif
    838 
    839 #ifndef IMAGE_DIRECTORY_ENTRY_COMHEADER
    840 #define IMAGE_DIRECTORY_ENTRY_COMHEADER 14
    841 #endif
    842 
    843 #define FRAMEWORK_REGISTRY_KEY "Software\\Microsoft\\.NETFramework"
    844 #define FRAMEWORK_REGISTRY_KEY_W L"Software\\Microsoft\\.NETFramework"
    845 
    846 #ifdef _WIN64
    847 #define USER_FRAMEWORK_REGISTRY_KEY "Software\\Microsoft\\.NETFramework64"
    848 #define USER_FRAMEWORK_REGISTRY_KEY_W L"Software\\Microsoft\\.NETFramework64"
    849 #else
    850 #define USER_FRAMEWORK_REGISTRY_KEY "Software\\Microsoft\\.NETFramework"
    851 #define USER_FRAMEWORK_REGISTRY_KEY_W L"Software\\Microsoft\\.NETFramework"
    852 #endif
    853 
    854 #define COR_CTOR_METHOD_NAME ".ctor"
    855 #define COR_CTOR_METHOD_NAME_W L".ctor"
    856 #define COR_CCTOR_METHOD_NAME ".cctor"
    857 #define COR_CCTOR_METHOD_NAME_W L".cctor"
    858 
    859 #define COR_ENUM_FIELD_NAME "value__"
    860 #define COR_ENUM_FIELD_NAME_W L"value__"
    861 
    862 #define COR_DELETED_NAME_A "_Deleted"
    863 #define COR_DELETED_NAME_W L"_Deleted"
    864 #define COR_VTABLEGAP_NAME_A "_VtblGap"
    865 #define COR_VTABLEGAP_NAME_W L"_VtblGap"
    866 
    867 #define COR_IS_32BIT_REQUIRED(_FLAGS) (((_FLAGS) & (COMIMAGE_FLAGS_32BITREQUIRED | COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED))
    868 #define COR_IS_32BIT_PREFERRED(_FLAGS) (((_FLAGS) & (COMIMAGE_FLAGS_32BITREQUIRED | COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED | COMIMAGE_FLAGS_32BITPREFERRED))
    869 #define COR_SET_32BIT_REQUIRED(_FLAGS) do { _FLAGS = (_FLAGS & ~COMIMAGE_FLAGS_32BITPREFERRED) | COMIMAGE_FLAGS_32BITREQUIRED; } while (0)
    870 #define COR_SET_32BIT_PREFERRED(_FLAGS) do { _FLAGS |= COMIMAGE_FLAGS_32BITPREFERRED | COMIMAGE_FLAGS_32BITREQUIRED; } while (0)
    871 #define COR_CLEAR_32BIT_REQUIRED(_flagsfield) do { _FLAGS &= ~ (COMIMAGE_FLAGS_32BITREQUIRED | COMIMAGE_FLAGS_32BITPREFERRED); } while (0)
    872 #define COR_CLEAR_32BIT_PREFERRED(_FLAGS) do { _FLAGS &= ~ (COMIMAGE_FLAGS_32BITREQUIRED | COMIMAGE_FLAGS_32BITPREFERRED); } while (0)
    873 
    874 #define COR_IS_METHOD_MANAGED_IL(flags) ((flags & 0xf) == (miIL | miManaged))
    875 #define COR_IS_METHOD_MANAGED_OPTIL(flags) ((flags & 0xf) == (miOPTIL | miManaged))
    876 #define COR_IS_METHOD_MANAGED_NATIVE(flags) ((flags & 0xf) == (miNative | miManaged))
    877 #define COR_IS_METHOD_UNMANAGED_NATIVE(flags) ((flags & 0xf) == (miNative | miUnmanaged))
    878 
    879 #define CMOD_CALLCONV_NAMESPACE_OLD "System.Runtime.InteropServices"
    880 #define CMOD_CALLCONV_NAMESPACE "System.Runtime.CompilerServices"
    881 #define CMOD_CALLCONV_NAME_CDECL "CallConvCdecl"
    882 #define CMOD_CALLCONV_NAME_STDCALL "CallConvStdcall"
    883 #define CMOD_CALLCONV_NAME_THISCALL "CallConvThiscall"
    884 #define CMOD_CALLCONV_NAME_FASTCALL "CallConvFastcall"
    885 
    886 #define IsDeletedName(strName) (strncmp (strName, COR_DELETED_NAME_A, COR_DELETED_NAME_LENGTH) == 0)
    887 #define IsVtblGapName(strName) (strncmp (strName, COR_VTABLEGAP_NAME_A, COR_VTABLEGAP_NAME_LENGTH) == 0)
    888 
    889 #define IsTdNotPublic(x) (((x) & tdVisibilityMask) == tdNotPublic)
    890 #define IsTdPublic(x) (((x) & tdVisibilityMask) == tdPublic)
    891 #define IsTdNestedPublic(x) (((x) & tdVisibilityMask) == tdNestedPublic)
    892 #define IsTdNestedPrivate(x) (((x) & tdVisibilityMask) == tdNestedPrivate)
    893 #define IsTdNestedFamily(x) (((x) & tdVisibilityMask) == tdNestedFamily)
    894 #define IsTdNestedAssembly(x) (((x) & tdVisibilityMask) == tdNestedAssembly)
    895 #define IsTdNestedFamANDAssem(x) (((x) & tdVisibilityMask) == tdNestedFamANDAssem)
    896 #define IsTdNestedFamORAssem(x) (((x) & tdVisibilityMask) == tdNestedFamORAssem)
    897 #define IsTdNested(x) (((x) & tdVisibilityMask) >= tdNestedPublic)
    898 #define IsTdAutoLayout(x) (((x) & tdLayoutMask) == tdAutoLayout)
    899 #define IsTdSequentialLayout(x) (((x) & tdLayoutMask) == tdSequentialLayout)
    900 #define IsTdExplicitLayout(x) (((x) & tdLayoutMask) == tdExplicitLayout)
    901 #define IsTdClass(x) (((x) & tdClassSemanticsMask) == tdClass)
    902 #define IsTdInterface(x) (((x) & tdClassSemanticsMask) == tdInterface)
    903 #define IsTdAbstract(x) ((x) & tdAbstract)
    904 #define IsTdSealed(x) ((x) & tdSealed)
    905 #define IsTdSpecialName(x) ((x) & tdSpecialName)
    906 #define IsTdImport(x) ((x) & tdImport)
    907 #define IsTdSerializable(x) ((x) & tdSerializable)
    908 #define IsTdWindowsRuntime(x) ((x) & tdWindowsRuntime)
    909 #define IsTdAnsiClass(x) (((x) & tdStringFormatMask) == tdAnsiClass)
    910 #define IsTdUnicodeClass(x) (((x) & tdStringFormatMask) == tdUnicodeClass)
    911 #define IsTdAutoClass(x) (((x) & tdStringFormatMask) == tdAutoClass)
    912 #define IsTdCustomFormatClass(x) (((x) & tdStringFormatMask) == tdCustomFormatClass)
    913 #define IsTdBeforeFieldInit(x) ((x) & tdBeforeFieldInit)
    914 #define IsTdForwarder(x) ((x) & tdForwarder)
    915 #define IsTdRTSpecialName(x) ((x) & tdRTSpecialName)
    916 #define IsTdHasSecurity(x) ((x) & tdHasSecurity)
    917 
    918 #define IsMdPrivateScope(x) (((x) & mdMemberAccessMask) == mdPrivateScope)
    919 #define IsMdPrivate(x) (((x) & mdMemberAccessMask) == mdPrivate)
    920 #define IsMdFamANDAssem(x) (((x) & mdMemberAccessMask) == mdFamANDAssem)
    921 #define IsMdAssem(x) (((x) & mdMemberAccessMask) == mdAssem)
    922 #define IsMdFamily(x) (((x) & mdMemberAccessMask) == mdFamily)
    923 #define IsMdFamORAssem(x) (((x) & mdMemberAccessMask) == mdFamORAssem)
    924 #define IsMdPublic(x) (((x) & mdMemberAccessMask) == mdPublic)
    925 #define IsMdUnmanagedExport(x) ((x) & mdUnmanagedExport)
    926 #define IsMdStatic(x) ((x) & mdStatic)
    927 #define IsMdFinal(x) ((x) & mdFinal)
    928 #define IsMdVirtual(x) ((x) & mdVirtual)
    929 #define IsMdHideBySig(x) ((x) & mdHideBySig)
    930 #define IsMdReuseSlot(x) (((x) & mdVtableLayoutMask) == mdReuseSlot)
    931 #define IsMdNewSlot(x) (((x) & mdVtableLayoutMask) == mdNewSlot)
    932 #define IsMdCheckAccessOnOverride(x) ((x) & mdCheckAccessOnOverride)
    933 #define IsMdAbstract(x) ((x) & mdAbstract)
    934 #define IsMdSpecialName(x) ((x) & mdSpecialName)
    935 #define IsMdPinvokeImpl(x) ((x) & mdPinvokeImpl)
    936 #define IsMdRTSpecialName(x) ((x) & mdRTSpecialName)
    937 #define IsMdInstanceInitializer(x, str) (((x) & mdRTSpecialName) && !strcmp ((str), COR_CTOR_METHOD_NAME))
    938 #define IsMdInstanceInitializerW(x, str) (((x) & mdRTSpecialName) && !wcscmp ((str), COR_CTOR_METHOD_NAME_W))
    939 #define IsMdClassConstructor(x, str) (((x) & mdRTSpecialName) && !strcmp ((str), COR_CCTOR_METHOD_NAME))
    940 #define IsMdClassConstructorW(x, str) (((x) & mdRTSpecialName) && !wcscmp ((str), COR_CCTOR_METHOD_NAME_W))
    941 #define IsMdHasSecurity(x) ((x) & mdHasSecurity)
    942 #define IsMdRequireSecObject(x) ((x) & mdRequireSecObject)
    943 
    944 #define IsFdPrivateScope(x) (((x) & fdFieldAccessMask) == fdPrivateScope)
    945 #define IsFdPrivate(x) (((x) & fdFieldAccessMask) == fdPrivate)
    946 #define IsFdFamANDAssem(x) (((x) & fdFieldAccessMask) == fdFamANDAssem)
    947 #define IsFdAssembly(x) (((x) & fdFieldAccessMask) == fdAssembly)
    948 #define IsFdFamily(x) (((x) & fdFieldAccessMask) == fdFamily)
    949 #define IsFdFamORAssem(x) (((x) & fdFieldAccessMask) == fdFamORAssem)
    950 #define IsFdPublic(x) (((x) & fdFieldAccessMask) == fdPublic)
    951 #define IsFdStatic(x) ((x) & fdStatic)
    952 #define IsFdInitOnly(x) ((x) & fdInitOnly)
    953 #define IsFdLiteral(x) ((x) & fdLiteral)
    954 #define IsFdNotSerialized(x) ((x) & fdNotSerialized)
    955 #define IsFdHasFieldRVA(x) ((x) & fdHasFieldRVA)
    956 #define IsFdSpecialName(x) ((x) & fdSpecialName)
    957 #define IsFdRTSpecialName(x) ((x) & fdRTSpecialName)
    958 #define IsFdHasFieldMarshal(x) ((x) & fdHasFieldMarshal)
    959 #define IsFdPinvokeImpl(x) ((x) & fdPinvokeImpl)
    960 #define IsFdHasDefault(x) ((x) & fdHasDefault)
    961 
    962 #define IsPdIn(x) ((x) & pdIn)
    963 #define IsPdOut(x) ((x) & pdOut)
    964 #define IsPdOptional(x) ((x) & pdOptional)
    965 #define IsPdHasDefault(x) ((x) & pdHasDefault)
    966 #define IsPdHasFieldMarshal(x) ((x) & pdHasFieldMarshal)
    967 
    968 #define IsPrSpecialName(x) ((x) & prSpecialName)
    969 #define IsPrRTSpecialName(x) ((x) & prRTSpecialName)
    970 #define IsPrHasDefault(x) ((x) & prHasDefault)
    971 
    972 #define IsEvSpecialName(x) ((x) & evSpecialName)
    973 #define IsEvRTSpecialName(x) ((x) & evRTSpecialName)
    974 
    975 #define IsMsSetter(x) ((x) & msSetter)
    976 #define IsMsGetter(x) ((x) & msGetter)
    977 #define IsMsOther(x) ((x) & msOther)
    978 #define IsMsAddOn(x) ((x) & msAddOn)
    979 #define IsMsRemoveOn(x) ((x) & msRemoveOn)
    980 #define IsMsFire(x) ((x) & msFire)
    981 
    982 #define IsDclActionNil(x) (((x) & dclActionMask) == dclActionNil)
    983 #define IsDclActionAnyStackModifier(x) ((((x) & dclActionMask) == dclAssert) || (((x) & dclActionMask) == dclDeny) || (((x) & dclActionMask) == dclPermitOnly))
    984 #define IsAssemblyDclAction(x) (((x) >= dclRequestMinimum) && ((x) <= dclRequestRefuse))
    985 #define IsNGenOnlyDclAction(x) (((x) == dclPrejitGrant) || ((x) == dclPrejitDenied))
    986 
    987 #define IsMiIL(x) (((x) & miCodeTypeMask) == miIL)
    988 #define IsMiNative(x) (((x) & miCodeTypeMask) == miNative)
    989 #define IsMiOPTIL(x) (((x) & miCodeTypeMask) == miOPTIL)
    990 #define IsMiRuntime(x) (((x) & miCodeTypeMask) == miRuntime)
    991 #define IsMiUnmanaged(x) (((x) & miManagedMask) == miUnmanaged)
    992 #define IsMiManaged(x) (((x) & miManagedMask) == miManaged)
    993 #define IsMiNoInlining(x) ((x) & miNoInlining)
    994 #define IsMiForwardRef(x) ((x) & miForwardRef)
    995 #define IsMiSynchronized(x) ((x) & miSynchronized)
    996 #define IsMiNoOptimization(x) ((x) & miNoOptimization)
    997 #define IsMiPreserveSig(x) ((x) & miPreserveSig)
    998 #define IsMiAggressiveInlining(x) ((x) & miAggressiveInlining)
    999 #define IsMiInternalCall(x) ((x) & miInternalCall)
   1000 
   1001 #define IsPmNoMangle(x) ((x) & pmNoMangle)
   1002 #define IsPmCharSetNotSpec(x) (((x) & pmCharSetMask) == pmCharSetNotSpec)
   1003 #define IsPmCharSetAnsi(x) (((x) & pmCharSetMask) == pmCharSetAnsi)
   1004 #define IsPmCharSetUnicode(x) (((x) & pmCharSetMask) == pmCharSetUnicode)
   1005 #define IsPmCharSetAuto(x) (((x) & pmCharSetMask) == pmCharSetAuto)
   1006 #define IsPmSupportsLastError(x) ((x) & pmSupportsLastError)
   1007 #define IsPmCallConvWinapi(x) (((x) & pmCallConvMask) == pmCallConvWinapi)
   1008 #define IsPmCallConvCdecl(x) (((x) & pmCallConvMask) == pmCallConvCdecl)
   1009 #define IsPmCallConvStdcall(x) (((x) & pmCallConvMask) == pmCallConvStdcall)
   1010 #define IsPmCallConvThiscall(x) (((x) & pmCallConvMask) == pmCallConvThiscall)
   1011 #define IsPmCallConvFastcall(x) (((x) & pmCallConvMask) == pmCallConvFastcall)
   1012 #define IsPmBestFitEnabled(x) (((x) & pmBestFitMask) == pmBestFitEnabled)
   1013 #define IsPmBestFitDisabled(x) (((x) & pmBestFitMask) == pmBestFitDisabled)
   1014 #define IsPmBestFitUseAssem(x) (((x) & pmBestFitMask) == pmBestFitUseAssem)
   1015 #define IsPmThrowOnUnmappableCharEnabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharEnabled)
   1016 #define IsPmThrowOnUnmappableCharDisabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharDisabled)
   1017 #define IsPmThrowOnUnmappableCharUseAssem(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharUseAssem)
   1018 
   1019 #define IsAfRetargetable(x) ((x) & afRetargetable)
   1020 #define IsAfContentType_Default(x) (((x) & afContentType_Mask) == afContentType_Default)
   1021 #define IsAfContentType_WindowsRuntime(x) (((x) & afContentType_Mask) == afContentType_WindowsRuntime)
   1022 #define IsAfPA_MSIL(x) (((x) & afPA_Mask) == afPA_MSIL)
   1023 #define IsAfPA_x86(x) (((x) & afPA_Mask) == afPA_x86)
   1024 #define IsAfPA_IA64(x) (((x) & afPA_Mask) == afPA_IA64)
   1025 #define IsAfPA_AMD64(x) (((x) & afPA_Mask) == afPA_AMD64)
   1026 #define IsAfPA_ARM(x) (((x) & afPA_Mask) == afPA_ARM)
   1027 #define IsAfPA_NoPlatform(x) (((x) & afPA_FullMask) == afPA_NoPlatform)
   1028 #define IsAfPA_Specified(x) ((x) & afPA_Specified)
   1029 #define PAIndex(x) (((x) & afPA_Mask) >> afPA_Shift)
   1030 #define PAFlag(x) (((x) << afPA_Shift) & afPA_Mask)
   1031 #define PrepareForSaving(x) ((x) &(((x) & afPA_Specified) ? ~afPA_Specified : ~afPA_FullMask))
   1032 #define IsAfEnableJITcompileTracking(x) ((x) & afEnableJITcompileTracking)
   1033 #define IsAfDisableJITcompileOptimizer(x) ((x) & afDisableJITcompileOptimizer)
   1034 #define IsAfPublicKey(x) ((x) & afPublicKey)
   1035 #define IsAfPublicKeyToken(x) (((x) & afPublicKey) == 0)
   1036 
   1037 #define IsMrPublic(x) (((x) & mrVisibilityMask) == mrPublic)
   1038 #define IsMrPrivate(x) (((x) & mrVisibilityMask) == mrPrivate)
   1039 
   1040 #define IsFfContainsMetaData(x) (! ((x) & ffContainsNoMetaData))
   1041 #define IsFfContainsNoMetaData(x) ((x) & ffContainsNoMetaData)
   1042 
   1043 #define IMAGE_CEE_CS_CALLCONV_INSTANTIATION IMAGE_CEE_CS_CALLCONV_GENERICINST
   1044 
   1045 #define IsENCDelta(x) (((x) & MDUpdateMask) == MDUpdateDelta)
   1046 
   1047 #define RidToToken(rid, tktype) ((rid) |= (tktype))
   1048 #define TokenFromRid(rid, tktype) ((rid) | (tktype))
   1049 #define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff))
   1050 #define TypeFromToken(tk) ((ULONG32) ((tk) & 0xff000000))
   1051 #define IsNilToken(tk) ((RidFromToken (tk)) == 0)
   1052 
   1053 #define mdTokenNil ((mdToken)0)
   1054 #define mdModuleNil ((mdModule)mdtModule)
   1055 #define mdTypeRefNil ((mdTypeRef)mdtTypeRef)
   1056 #define mdTypeDefNil ((mdTypeDef)mdtTypeDef)
   1057 #define mdFieldDefNil ((mdFieldDef)mdtFieldDef)
   1058 #define mdMethodDefNil ((mdMethodDef)mdtMethodDef)
   1059 #define mdParamDefNil ((mdParamDef)mdtParamDef)
   1060 #define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl)
   1061 #define mdMemberRefNil ((mdMemberRef)mdtMemberRef)
   1062 #define mdCustomAttributeNil ((mdCustomAttribute)mdtCustomAttribute)
   1063 #define mdPermissionNil ((mdPermission)mdtPermission)
   1064 #define mdSignatureNil ((mdSignature)mdtSignature)
   1065 #define mdEventNil ((mdEvent)mdtEvent)
   1066 #define mdPropertyNil ((mdProperty)mdtProperty)
   1067 #define mdModuleRefNil ((mdModuleRef)mdtModuleRef)
   1068 #define mdTypeSpecNil ((mdTypeSpec)mdtTypeSpec)
   1069 #define mdAssemblyNil ((mdAssembly)mdtAssembly)
   1070 #define mdAssemblyRefNil ((mdAssemblyRef)mdtAssemblyRef)
   1071 #define mdFileNil ((mdFile)mdtFile)
   1072 #define mdExportedTypeNil ((mdExportedType)mdtExportedType)
   1073 #define mdManifestResourceNil ((mdManifestResource)mdtManifestResource)
   1074 #define mdGenericParamNil ((mdGenericParam)mdtGenericParam)
   1075 #define mdGenericParamConstraintNil ((mdGenericParamConstraint)mdtGenericParamConstraint)
   1076 #define mdMethodSpecNil ((mdMethodSpec)mdtMethodSpec)
   1077 #define mdStringNil ((mdString)mdtString)
   1078 
   1079 #define IsOfRead(x) (((x) & ofReadWriteMask) == ofRead)
   1080 #define IsOfReadWrite(x) (((x) & ofReadWriteMask) == ofWrite)
   1081 #define IsOfCopyMemory(x) ((x) & ofCopyMemory)
   1082 #define IsOfReadOnly(x) ((x) & ofReadOnly)
   1083 #define IsOfTakeOwnership(x) ((x) & ofTakeOwnership)
   1084 #define IsOfReserved(x) (((x) & ofReserved) != 0)
   1085 
   1086 #ifndef IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS
   1087 #define IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS (IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS)
   1088 #endif
   1089 
   1090 #define INTEROP_AUTOPROXY_TYPE_W L"System.Runtime.InteropServices.AutomationProxyAttribute"
   1091 #define INTEROP_AUTOPROXY_TYPE "System.Runtime.InteropServices.AutomationProxyAttribute"
   1092 #define INTEROP_AUTOPROXY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN}
   1093 #define INTEROP_BESTFITMAPPING_TYPE_W L"System.Runtime.InteropServices.BestFitMappingAttribute"
   1094 #define INTEROP_BESTFITMAPPING_TYPE "System.Runtime.InteropServices.BestFitMappingAttribute"
   1095 #define INTEROP_BESTFITMAPPING_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN, ELEMENT_TYPE_BOOLEAN}
   1096 #define INTEROP_CLASSINTERFACE_TYPE_W L"System.Runtime.InteropServices.ClassInterfaceAttribute"
   1097 #define INTEROP_CLASSINTERFACE_TYPE "System.Runtime.InteropServices.ClassInterfaceAttribute"
   1098 #define INTEROP_CLASSINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1099 #define INTEROP_COCLASS_TYPE_W L"System.Runtime.InteropServices.CoClassAttribute"
   1100 #define INTEROP_COCLASS_TYPE "System.Runtime.InteropServices.CoClassAttribute"
   1101 #define INTEROP_COMALIASNAME_TYPE_W L"System.Runtime.InteropServices.ComAliasNameAttribute"
   1102 #define INTEROP_COMALIASNAME_TYPE "System.Runtime.InteropServices.ComAliasNameAttribute"
   1103 #define INTEROP_COMALIASNAME_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1104 #define INTEROP_COMCOMPATIBLEVERSION_TYPE_W L"System.Runtime.InteropServices.ComCompatibleVersionAttribute"
   1105 #define INTEROP_COMCOMPATIBLEVERSION_TYPE "System.Runtime.InteropServices.ComCompatibleVersionAttribute"
   1106 #define INTEROP_COMCOMPATIBLEVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 4, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2}
   1107 #define INTEROP_COMCONVERSIONLOSS_TYPE_W L"System.Runtime.InteropServices.ComConversionLossAttribute"
   1108 #define INTEROP_COMCONVERSIONLOSS_TYPE "System.Runtime.InteropServices.ComConversionLossAttribute"
   1109 #define INTEROP_COMCONVERSIONLOSS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1110 #define INTEROP_COMDEFAULTINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComDefaultInterfaceAttribute"
   1111 #define INTEROP_COMDEFAULTINTERFACE_TYPE "System.Runtime.InteropServices.ComDefaultInterfaceAttribute"
   1112 #define INTEROP_COMEMULATE_TYPE_W L"System.Runtime.InteropServices.ComEmulateAttribute"
   1113 #define INTEROP_COMEMULATE_TYPE "System.Runtime.InteropServices.ComEmulateAttribute"
   1114 #define INTEROP_COMEMULATE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1115 #define INTEROP_COMEVENTINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComEventInterfaceAttribute"
   1116 #define INTEROP_COMEVENTINTERFACE_TYPE "System.Runtime.InteropServices.ComEventInterfaceAttribute"
   1117 #define INTEROP_COMIMPORT_TYPE_W L"System.Runtime.InteropServices.ComImportAttribute"
   1118 #define INTEROP_COMIMPORT_TYPE "System.Runtime.InteropServices.ComImportAttribute"
   1119 #define INTEROP_COMIMPORT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1120 #define INTEROP_COMREGISTERFUNCTION_TYPE_W L"System.Runtime.InteropServices.ComRegisterFunctionAttribute"
   1121 #define INTEROP_COMREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComRegisterFunctionAttribute"
   1122 #define INTEROP_COMREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1123 #define INTEROP_COMSOURCEINTERFACES_TYPE_W L"System.Runtime.InteropServices.ComSourceInterfacesAttribute"
   1124 #define INTEROP_COMSOURCEINTERFACES_TYPE "System.Runtime.InteropServices.ComSourceInterfacesAttribute"
   1125 #define INTEROP_COMSOURCEINTERFACES_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1126 #define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute"
   1127 #define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE "System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute"
   1128 #define INTEROP_COMSUBSTITUTABLEINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1129 #define INTEROP_COMUNREGISTERFUNCTION_TYPE_W L"System.Runtime.InteropServices.ComUnregisterFunctionAttribute"
   1130 #define INTEROP_COMUNREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComUnregisterFunctionAttribute"
   1131 #define INTEROP_COMUNREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1132 #define INTEROP_COMVISIBLE_TYPE_W L"System.Runtime.InteropServices.ComVisibleAttribute"
   1133 #define INTEROP_COMVISIBLE_TYPE "System.Runtime.InteropServices.ComVisibleAttribute"
   1134 #define INTEROP_COMVISIBLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN}
   1135 #define INTEROP_DATETIMEVALUE_TYPE_W L"System.Runtime.CompilerServices.DateTimeConstantAttribute"
   1136 #define INTEROP_DATETIMEVALUE_TYPE "System.Runtime.CompilerServices.DateTimeConstantAttribute"
   1137 #define INTEROP_DATETIMEVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I8}
   1138 #define INTEROP_DECIMALVALUE_TYPE_W L"System.Runtime.CompilerServices.DecimalConstantAttribute"
   1139 #define INTEROP_DECIMALVALUE_TYPE "System.Runtime.CompilerServices.DecimalConstantAttribute"
   1140 #define INTEROP_DECIMALVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 5, ELEMENT_TYPE_VOID, ELEMENT_TYPE_U1, ELEMENT_TYPE_U1, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4}
   1141 #define INTEROP_DEFAULTMEMBER_TYPE_W L"System.Reflection.DefaultMemberAttribute"
   1142 #define INTEROP_DEFAULTMEMBER_TYPE "System.Reflection.DefaultMemberAttribute"
   1143 #define INTEROP_DEFAULTMEMBER_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1144 #define INTEROP_DISPID_TYPE_W L"System.Runtime.InteropServices.DispIdAttribute"
   1145 #define INTEROP_DISPID_TYPE "System.Runtime.InteropServices.DispIdAttribute"
   1146 #define INTEROP_DISPID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4}
   1147 #define INTEROP_GUID_TYPE_W L"System.Runtime.InteropServices.GuidAttribute"
   1148 #define INTEROP_GUID_TYPE "System.Runtime.InteropServices.GuidAttribute"
   1149 #define INTEROP_GUID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1150 #define INTEROP_IDISPATCHIMPL_TYPE_W L"System.Runtime.InteropServices.IDispatchImplAttribute"
   1151 #define INTEROP_IDISPATCHIMPL_TYPE "System.Runtime.InteropServices.IDispatchImplAttribute"
   1152 #define INTEROP_IDISPATCHIMPL_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1153 #define INTEROP_IDISPATCHVALUE_TYPE_W L"System.Runtime.CompilerServices.IDispatchConstantAttribute"
   1154 #define INTEROP_IDISPATCHVALUE_TYPE "System.Runtime.CompilerServices.IDispatchConstantAttribute"
   1155 #define INTEROP_IDISPATCHVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1156 #define INTEROP_IMPORTEDFROMTYPELIB_TYPE_W L"System.Runtime.InteropServices.ImportedFromTypeLibAttribute"
   1157 #define INTEROP_IMPORTEDFROMTYPELIB_TYPE "System.Runtime.InteropServices.ImportedFromTypeLibAttribute"
   1158 #define INTEROP_IMPORTEDFROMTYPELIB_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
   1159 #define INTEROP_IN_TYPE_W L"System.Runtime.InteropServices.InAttribute"
   1160 #define INTEROP_IN_TYPE "System.Runtime.InteropServices.InAttribute"
   1161 #define INTEROP_IN_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1162 #define INTEROP_INTERFACETYPE_TYPE_W L"System.Runtime.InteropServices.InterfaceTypeAttribute"
   1163 #define INTEROP_INTERFACETYPE_TYPE "System.Runtime.InteropServices.InterfaceTypeAttribute"
   1164 #define INTEROP_INTERFACETYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1165 #define INTEROP_IUNKNOWNVALUE_TYPE_W L"System.Runtime.CompilerServices.IUnknownConstantAttribute"
   1166 #define INTEROP_IUNKNOWNVALUE_TYPE "System.Runtime.CompilerServices.IUnknownConstantAttribute"
   1167 #define INTEROP_IUNKNOWNVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1168 #define INTEROP_LCIDCONVERSION_TYPE_W L"System.Runtime.InteropServices.LCIDConversionAttribute"
   1169 #define INTEROP_LCIDCONVERSION_TYPE "System.Runtime.InteropServices.LCIDConversionAttribute"
   1170 #define INTEROP_LCIDCONVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4}
   1171 #define INTEROP_MARSHALAS_TYPE_W L"System.Runtime.InteropServices.MarshalAsAttribute"
   1172 #define INTEROP_MARSHALAS_TYPE "System.Runtime.InteropServices.MarshalAsAttribute"
   1173 #define INTEROP_MARSHALAS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1174 #define INTEROP_OUT_TYPE_W L"System.Runtime.InteropServices.OutAttribute"
   1175 #define INTEROP_OUT_TYPE "System.Runtime.InteropServices.OutAttribute"
   1176 #define INTEROP_OUT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1177 #define INTEROP_PARAMARRAY_TYPE_W L"System.ParamArrayAttribute"
   1178 #define INTEROP_PARAMARRAY_TYPE "System.ParamArrayAttribute"
   1179 #define INTEROP_PARAMARRAY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1180 #define INTEROP_PRESERVESIG_TYPE_W L"System.Runtime.InteropServices.PreserveSigAttribure"
   1181 #define INTEROP_PRESERVESIG_TYPE "System.Runtime.InteropServices.PreserveSigAttribure"
   1182 #define INTEROP_PRESERVESIG_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_BOOLEAN}
   1183 #define INTEROP_PRIMARYINTEROPASSEMBLY_TYPE_W L"System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute"
   1184 #define INTEROP_PRIMARYINTEROPASSEMBLY_TYPE "System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute"
   1185 #define INTEROP_PRIMARYINTEROPASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4, ELEMENT_TYPE_I4}
   1186 #define INTEROP_SERIALIZABLE_TYPE_W L"System.SerializableAttribute"
   1187 #define INTEROP_SERIALIZABLE_TYPE "System.SerializableAttribute"
   1188 #define INTEROP_SERIALIZABLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1189 #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE_W L"System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute"
   1190 #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE "System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute"
   1191 #define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1192 #define INTEROP_TYPELIBFUNC_TYPE_W L"System.Runtime.InteropServices.TypeLibFuncAttribute"
   1193 #define INTEROP_TYPELIBFUNC_TYPE "System.Runtime.InteropServices.TypeLibFuncAttribute"
   1194 #define INTEROP_TYPELIBIMPORTCLASS_TYPE_W L"System.Runtime.InteropServices.TypeLibImportClassAttribute"
   1195 #define INTEROP_TYPELIBIMPORTCLASS_TYPE "System.Runtime.InteropServices.TypeLibImportClassAttribute"
   1196 #define INTEROP_TYPELIBFUNC_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1197 #define INTEROP_TYPELIBTYPE_TYPE_W L"System.Runtime.InteropServices.TypeLibTypeAttribute"
   1198 #define INTEROP_TYPELIBTYPE_TYPE "System.Runtime.InteropServices.TypeLibTypeAttribute"
   1199 #define INTEROP_TYPELIBTYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1200 #define INTEROP_TYPELIBVAR_TYPE_W L"System.Runtime.InteropServices.TypeLibVarAttribute"
   1201 #define INTEROP_TYPELIBVAR_TYPE "System.Runtime.InteropServices.TypeLibVarAttribute"
   1202 #define INTEROP_TYPELIBVAR_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
   1203 #define INTEROP_TYPELIBVERSION_TYPE_W L"System.Runtime.InteropServices.TypeLibVersionAttribute"
   1204 #define INTEROP_TYPELIBVERSION_TYPE "System.Runtime.InteropServices.TypeLibVersionAttribute"
   1205 #define INTEROP_TYPELIBVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2}
   1206 
   1207 #define FORWARD_INTEROP_STUB_METHOD_TYPE_W L"System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute"
   1208 #define FORWARD_INTEROP_STUB_METHOD_TYPE "System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute"
   1209 
   1210 #define FRIEND_ACCESS_ALLOWED_ATTRIBUTE_TYPE_W L"System.Runtime.CompilerServices.FriendAccessAllowedAttribute"
   1211 #define FRIEND_ACCESS_ALLOWED_ATTRIBUTE_TYPE "System.Runtime.CompilerServices.FriendAccessAllowedAttribute"
   1212 #define FRIEND_ACCESS_ALLOWED_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1213 #define FRIEND_ASSEMBLY_TYPE_W L"System.Runtime.CompilerServices.InternalsVisibleToAttribute"
   1214 #define FRIEND_ASSEMBLY_TYPE "System.Runtime.CompilerServices.InternalsVisibleToAttribute"
   1215 #define FRIEND_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING, ELEMENT_TYPE_BOOLEAN}
   1216 
   1217 #define DEFAULTDEPENDENCY_TYPE_W L"System.Runtime.CompilerServices.DefaultDependencyAttribute"
   1218 #define DEFAULTDEPENDENCY_TYPE "System.Runtime.CompilerServices.DefaultDependencyAttribute"
   1219 
   1220 #define DEFAULTDOMAIN_LOADEROPTIMIZATION_TYPE_W L"System.LoaderOptimizationAttribute"
   1221 #define DEFAULTDOMAIN_LOADEROPTIMIZATION_TYPE "System.LoaderOptimizationAttribute"
   1222 #define DEFAULTDOMAIN_LOADEROPTIMIZATION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I1}
   1223 #define DEFAULTDOMAIN_MTA_TYPE_W L"System.MTAThreadAttribute"
   1224 #define DEFAULTDOMAIN_MTA_TYPE "System.MTAThreadAttribute"
   1225 #define DEFAULTDOMAIN_MTA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1226 #define DEFAULTDOMAIN_STA_TYPE_W L"System.STAThreadAttribute"
   1227 #define DEFAULTDOMAIN_STA_TYPE "System.STAThreadAttribute"
   1228 #define DEFAULTDOMAIN_STA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
   1229 
   1230 #define DEPENDENCY_TYPE_W L"System.Runtime.CompilerServices.DependencyAttribute"
   1231 #define DEPENDENCY_TYPE "System.Runtime.CompilerServices.DependencyAttribute"
   1232 
   1233 #define RUNTIMECOMPATIBILITY_TYPE_W L"System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"
   1234 #define RUNTIMECOMPATIBILITY_TYPE "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"
   1235 
   1236 #define TARGET_FRAMEWORK_TYPE_W L"System.Runtime.Versioning.TargetFrameworkAttribute"
   1237 #define TARGET_FRAMEWORK_TYPE "System.Runtime.Versioning.TargetFrameworkAttribute"
   1238 
   1239 #define TARGETEDPATCHBAND_W L"System.Runtime.AssemblyTargetedPatchBandAttribute"
   1240 #define TARGETEDPATCHBAND "System.Runtime.AssemblyTargetedPatchBandAttribute"
   1241 #define TARGETEDPATCHOPTOUT_W L"System.Runtime.TargetedPatchingOptOutAttribute"
   1242 #define TARGETEDPATCHOPTOUT "System.Runtime.TargetedPatchingOptOutAttribute"
   1243 
   1244 #define COMPILATIONRELAXATIONS_TYPE_W L"System.Runtime.CompilerServices.CompilationRelaxationsAttribute"
   1245 #define COMPILATIONRELAXATIONS_TYPE "System.Runtime.CompilerServices.CompilationRelaxationsAttribute"
   1246 
   1247 #ifdef __cplusplus
   1248 }
   1249 #endif
   1250 
   1251 #endif
   1252