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