master
   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
   9extern "C" {
  10#endif
  11
  12typedef 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
  48typedef 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__
  77typedef 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
 101typedef 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
 123typedef 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
 146typedef 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
 156typedef enum CorPropertyAttr {
 157  prReservedMask = 0xf400,
 158  prSpecialName = 0x0200,
 159  prRTSpecialName = 0x0400,
 160  prHasDefault = 0x1000,
 161  prUnused = 0xe9ff
 162} CorPropertyAttr;
 163
 164typedef enum CorEventAttr {
 165  evSpecialName = 0x0200,
 166  evReservedMask = 0x0400,
 167  evRTSpecialName = 0x0400
 168} CorEventAttr;
 169
 170typedef enum CorMethodSemanticsAttr {
 171  msSetter = 0x1,
 172  msGetter = 0x2,
 173  msOther = 0x4,
 174  msAddOn = 0x8,
 175  msRemoveOn = 0x10,
 176  msFire = 0x20
 177} CorMethodSemanticsAttr;
 178
 179typedef 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
 200typedef 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
 220typedef 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
 245typedef 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
 266typedef enum CorManifestResourceFlags {
 267  mrVisibilityMask = 0x0007,
 268  mrPublic = 0x0001,
 269  mrPrivate = 0x0002
 270} CorManifestResourceFlags;
 271
 272typedef enum CorFileFlags {
 273  ffContainsMetaData = 0x0000,
 274  ffContainsNoMetaData = 0x0001
 275} CorFileFlags;
 276
 277typedef enum CorPEKind {
 278  peNot = 0x00000000,
 279  peILonly = 0x00000001,
 280  pe32BitRequired=0x00000002,
 281  pe32Plus = 0x00000004,
 282  pe32Unmanaged=0x00000008,
 283  pe32BitPreferred=0x00000010
 284} CorPEKind;
 285
 286typedef 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
 298typedef 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
 337typedef 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
 360typedef 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
 376typedef 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
 387typedef 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
 401typedef 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
 451typedef enum CorDescrGroupMethodType {
 452  DESCR_GROUP_METHODDEF = 0,
 453  DESCR_GROUP_METHODIMPL = 1
 454} CorDescrGroupMethodType;
 455
 456typedef 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
 465typedef 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
 477typedef 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
 487typedef 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
 517typedef enum CorRefToDefCheck {
 518  MDRefToDefDefault = 0x00000003,
 519  MDRefToDefAll = 0xffffffff,
 520  MDRefToDefNone = 0x00000000,
 521  MDTypeRefToDef = 0x00000001,
 522  MDMemberRefToDef = 0x00000002
 523} CorRefToDefCheck;
 524
 525typedef 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
 551typedef 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
 562typedef 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
 573typedef 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
 585typedef enum CorThreadSafetyOptions {
 586  MDThreadSafetyDefault = 0x00000000,
 587  MDThreadSafetyOff = 0x00000000,
 588  MDThreadSafetyOn = 0x00000001
 589} CorThreadSafetyOptions;
 590
 591typedef enum CorLinkerOptions {
 592  MDAssembly = 0x00000000,
 593  MDNetModule = 0x00000001
 594} CorLinkerOptions;
 595
 596typedef enum MergeFlags {
 597  MergeFlagsNone = 0,
 598  MergeManifest = 0x00000001,
 599  DropMemberRefCAs = 0x00000002,
 600  NoDupCheck = 0x00000004,
 601  MergeExportedTypes = 0x00000008
 602} MergeFlags;
 603
 604typedef enum CorLocalRefPreservation {
 605  MDPreserveLocalRefsNone = 0x00000000,
 606  MDPreserveLocalTypeRef = 0x00000001,
 607  MDPreserveLocalMemberRef = 0x00000002
 608} CorLocalRefPreservation;
 609
 610typedef 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
 640typedef 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
 655typedef 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
 675typedef enum CorFileMapping {
 676  fmFlat = 0,
 677  fmExecutableImage = 1
 678} CorFileMapping;
 679
 680typedef enum CompilationRelaxationsEnum {
 681  CompilationRelaxations_NoStringInterning = 0x8
 682} CompilationRelaxationEnum;
 683
 684typedef enum NGenHintEnum {
 685  NGenDefault = 0x0,
 686  NGenEager = 0x1,
 687  NGenLazy = 0x2,
 688  NGenNever = 0x3
 689} NGenHintEnum;
 690
 691typedef 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_
 700typedef enum CorSaveSize {
 701  cssAccurate = 0x0000,
 702  cssQuick = 0x0001,
 703  cssDiscardTransientCAs = 0x0002
 704} CorSaveSize;
 705#endif
 706
 707typedef enum NativeTypeArrayFlags {
 708  ntaSizeParamIndexSpecified = 0x0001,
 709  ntaReserved = 0xfffe
 710} NativeTypeArrayFlags;
 711
 712typedef LPVOID mdScope;
 713typedef ULONG32 mdToken;
 714typedef mdToken mdModule;
 715typedef mdToken mdTypeRef;
 716typedef mdToken mdTypeDef;
 717typedef mdToken mdFieldDef;
 718typedef mdToken mdMethodDef;
 719typedef mdToken mdParamDef;
 720typedef mdToken mdInterfaceImpl;
 721typedef mdToken mdMemberRef;
 722typedef mdToken mdCustomAttribute;
 723typedef mdToken mdPermission;
 724typedef mdToken mdSignature;
 725typedef mdToken mdEvent;
 726typedef mdToken mdProperty;
 727typedef mdToken mdModuleRef;
 728typedef mdToken mdAssembly;
 729typedef mdToken mdAssemblyRef;
 730typedef mdToken mdFile;
 731typedef mdToken mdExportedType;
 732typedef mdToken mdManifestResource;
 733typedef mdToken mdTypeSpec;
 734typedef mdToken mdGenericParam;
 735typedef mdToken mdMethodSpec;
 736typedef mdToken mdGenericParamConstraint;
 737typedef mdToken mdString;
 738typedef mdToken mdCPToken;
 739typedef ULONG RID;
 740typedef CorTypeAttr CorRegTypeAttr;
 741typedef void *HCORENUM;
 742typedef unsigned char COR_SIGNATURE;
 743typedef COR_SIGNATURE *PCOR_SIGNATURE;
 744typedef const COR_SIGNATURE *PCCOR_SIGNATURE;
 745typedef const char *MDUTF8CSTR;
 746typedef char *MDUTF8STR;
 747typedef void *PSECURITY_PROPS;
 748typedef void *PSECURITY_VALUE;
 749typedef void **PPSECURITY_PROPS;
 750typedef void **PPSECURITY_VALUE;
 751
 752typedef struct COR_SECATTR {
 753  mdMemberRef tkCtor;
 754  const void *pCustomAttribute;
 755  ULONG cbCustomAttribute;
 756} COR_SECATTR;
 757
 758typedef struct IMAGE_COR_ILMETHOD_SECT_SMALL {
 759  BYTE Kind;
 760  BYTE DataSize;
 761} IMAGE_COR_ILMETHOD_SECT_SMALL;
 762
 763typedef struct IMAGE_COR_ILMETHOD_SECT_FAT {
 764  unsigned int Kind : 8;
 765  unsigned int DataSize : 24;
 766} IMAGE_COR_ILMETHOD_SECT_FAT;
 767
 768typedef 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
 780typedef 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
 785typedef 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
 797typedef 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
 803typedef 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
 808typedef struct IMAGE_COR_ILMETHOD_TINY {
 809  BYTE Flags_CodeSize;
 810} IMAGE_COR_ILMETHOD_TINY;
 811
 812typedef 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
 820typedef union IMAGE_COR_ILMETHOD {
 821  IMAGE_COR_ILMETHOD_TINY Tiny;
 822  IMAGE_COR_ILMETHOD_FAT Fat;
 823} IMAGE_COR_ILMETHOD;
 824
 825typedef 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_
 833typedef 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