Appendix B
Metadata Tables Reference
BYTE | Unsigned 1-byte integer |
SHORT | Signed 2-byte integer |
USHORT | Unsigned 2-byte integer |
ULONG | Unsigned 4-byte integer |
RID: <table> | Record index to <table> |
STRING | Offset in the #Strings stream |
GUID | Offset in the #GUID stream |
BLOB | Offset in the #Blob stream |
<coded_token_type> | Coded token (see the Coded Token Types table at the end of the Appendix) |
Entry Name | Entry Type | Comments |
Generation | USHORT | For edit-and-continue |
Name | STRING | No longer than 512 bytes |
Mvid | GUID | Generated automatically |
EncId | GUID | For edit-and-continue |
EncBaseId | GUID | For edit-and-continue |
Entry Name | Entry Type | Comments |
ResolutionScope | ResolutionScope | |
Name | STRING | |
Namespace | STRING |
Entry Name | Entry Type | Comments |
Flags | ULONG | Validity mask: 0x001173DBF |
Name | STRING | |
Namespace | STRING | |
Extends | TypeDefOrRef | Base type |
FieldList | RID: Field | |
MethodList | RID: Method |
Entry Name | Entry Type | Comments |
Field | RID: Field |
Entry Name | Entry Type | Comments |
Flags | USHORT | Validity mask: 0xB7F7 |
Name | STRING | No longer than 1023 bytes |
Signature | BLOB | Cannot be 0 |
Entry Name | Entry Type | Comments |
Method | RID: Method |
Entry Name | Entry Type | Comments |
RVA | ULONG | Must be 0 or point at read-only section |
ImplFlags | USHORT | Validity mask: 0x10BF |
Flags | USHORT | Validity mask: 0xFDF7 |
Name | STRING | No longer than 1023 bytes |
Signature | BLOB | Cannot be 0 |
ParamList | RID: Param |
Entry Name | Entry Type | Comments |
Param | RID: Param |
Entry Name | Entry Type | Comments |
Flags | USHORT | Validity mask: 0x3013 |
Sequence | USHORT | 0 means return value |
Name | STRING |
Entry Name | Entry Type | Comments |
Class | RID: TypeDef | Class implementing the interface |
Interface | TypeDefOrRef | Implemented interface |
Entry Name | Entry Type | Comments |
Class | MemberRefParent | Cannot be TypeDef |
Name | STRING | No longer than 1023 bytes |
Signature | BLOB | Cannot be 0 |
Entry Name | Entry Type | Comments |
Type | BYTE | |
Parent | HasConstant | |
Value | BLOB |
Entry Name | Entry Type | Comments |
Parent | HasCustomAttribute | |
Type | CustomAttributeType | |
Value | BLOB |
Entry Name | Entry Type | Comments |
Parent | HasFieldMarshal | |
NativeType | BLOB | Cannot be 0 |
Entry Name | Entry Type | Comments |
Action | SHORT | |
Parent | HasDeclSecurity | |
PermissionSet | BLOB |
Entry Name | Entry Type | Comments |
PackingSize | USHORT | Power of 2, from 1 through 128 |
ClassSize | ULONG | |
Parent | RID: TypeDef |
Entry Name | Entry Type | Comments |
OffSet | ULONG | Offset in bytes or ordinal |
Field | RID: Field |
Entry Name | Entry Type | Comments |
Signature | BLOB | Cannot be 0 |
Entry Name | Entry Type | Comments |
Parent | RID: TypeDef | |
EventList | RID: Event |
Entry Name | Entry Type | Comments |
Event | RID: Event |
Entry Name | Entry Type | Comments |
EventFlags | USHORT | 0x0000, 0x0200, or 0x0600 |
Name | STRING | |
EventType | TypeDefOrRef |
Entry Name | Entry Type | Comments |
Parent | RID: TypeDef | |
PropertyList | RID: Property |
Entry Name | Entry Type | Comments |
Property | RID: Property |
Entry Name | Entry Type | Comments |
PropFlags | USHORT | Validity mask: 0x1600 |
Name | STRING | |
Type | BLOB | Property signature |
Entry Name | Entry Type | Comments |
Semantic | USHORT | |
Method | RID: Method | |
Association | HasSemantic |
Entry Name | Entry Type | Comments |
Class | RID: TypeDef | |
MethodBody | MethodDefOrRef | Overriding method |
MethodDeclaration | MethodDefOrRef | Overridden method |
Entry Name | Entry Type | Comments |
Name | STRING | No longer than 512 bytes |
Entry Name | Entry Type | Comments |
Signature | BLOB | Cannot be 0 |
Entry Name | Entry Type | Comments |
Token | ULONG | |
FuncCode | ULONG |
Entry Name | Entry Type | Comments |
MappingFlags | USHORT | Validity mask: 0x0747 |
MemberForwarded | MemberForwarded | Method only |
ImportName | STRING | Entry point name |
ImportScope | RID: ModuleRef | ModuleRef to unmanaged DLL |
Entry Name | Entry Type | Comments |
Token | ULONG |
Entry Name | Entry Type | Comments |
RVA | ULONG | |
Field | RID: Field |
Entry Name | Entry Type | Comments |
HashAlgId | ULONG | |
MajorVersion | USHORT | |
MinorVersion | USHORT | |
BuildNumber | USHORT | |
RevisionNumber | USHORT | |
Flags | ULONG | Validity mask: 0x0000C031 |
PublicKey | BLOB | |
Name | STRING | No path, no extension |
Locale | STRING |
Entry Name | Entry Type | Comments |
Processor | ULONG |
Entry Name | Entry Type | Comments |
OSPlatformId | ULONG | |
OSMajorVersion | ULONG | |
OSMinorVersion | ULONG |
Entry Name | Entry Type | Comments |
MajorVersion | USHORT | |
MinorVersion | USHORT | |
BuildNumber | USHORT | |
RevisionNumber | USHORT | |
Flags | ULONG | 0x00000000 or 0x00000001 |
PublicKeyOrToken | BLOB | |
Name | STRING | No path, no extension |
Locale | STRING | |
HashValue | BLOB |
Entry Name | Entry Type | Comments |
Processor | ULONG | |
AssemblyRef | RID: AssemblyRef |
Entry Name | Entry Type | Comments |
OSPlatformId | ULONG | |
OSMajorVersion | ULONG | |
OSMinorVersion | ULONG | |
AssemblyRef | RID: AssemblyRef |
Entry Name | Entry Type | Comments |
Flags | ULONG | 0x00000000 or 0x00000001 |
Name | STRING | No path |
HashValue | BLOB |
Entry Name | Entry Type | Comments |
Flags | ULONG | Validity mask: 0x00000007 |
TypeDefId | ULONG | TypeDef token in another module |
TypeName | STRING | |
TypeNamespace | STRING | |
Implementation | Implementation | File, ExportedType |
Entry Name | Entry Type | Comments |
Offset | ULONG | |
Flags | ULONG | 0x000001 or 0x000002 |
Name | STRING | |
Implementation | Implementation | 0, File, AssemblyRef |
Entry Name | Entry Type | Comments |
NestedClass | RID: TypeDef | |
EnclosingClass | RID: TypeDef |
Type | Tag |
TypeDefOrRef (64): 3 referenced tables, tag size 2 | |
TypeDef | 0 |
TypeRef | 1 |
TypeSpec | 2 |
HasConstant (65): 3 referenced tables, tag size 2 | |
Field | 0 |
Param | 1 |
Property | 2 |
HasCustomAttribute (66): 19 referenced tables, tag size 5 | |
Method | 0 |
Field | 1 |
TypeRef | 2 |
TypeDef | 3 |
Param | 4 |
InterfaceImpl | 5 |
MemberRef | 6 |
Module | 7 |
DeclSecurity | 8 |
Property | 9 |
Event | 10 |
StandAloneSig | 11 |
ModuleRef | 12 |
TypeSpec | 13 |
Assembly | 14 |
AssemblyRef | 15 |
File | 16 |
ExportedType | 17 |
ManifestResource | 18 |
HasFieldMarshal (67): 2 referenced tables, tag size 1 | |
Field | 0 |
Param | 1 |
HasDeclSecurity (68): 3 referenced tables, tag size 2 | |
TypeDef | 0 |
Method | 1 |
Assembly | 2 |
MemberRefParent (69): 5 referenced tables, tag size 3 | |
TypeDef | 0 |
TypeRef | 1 |
ModuleRef | 2 |
Method | 3 |
TypeSpec | 4 |
HasSemantics (70): 2 referenced tables, tag size 1 | |
Event | 0 |
Property | 1 |
MethodDefOrRef (71): 2 referenced tables, tag size 1 | |
Method | 0 |
MemberRef | 1 |
MemberForwarded (72): 2 referenced tables, tag size 1 | |
Field | 0 |
Method | 1 |
Implementation (73): 3 referenced tables, tag size 2 | |
File | 0 |
AssemblyRef | 1 |
ExportedType | 2 |
CustomAttributeType (74): 5 referenced tables, tag size 3 | |
TypeRef | 0 |
TypeDef | 1 |
Method | 2 |
MemberRef | 3 |
String | 4 |
ResolutionScope (75): 4 referenced tables, tag size 2 | |
Module | 0 |
ModuleRef | 1 |
AssemblyRef | 2 |
TypeRef | 3 |