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 |