Appendix B

image

Metadata Tables Reference

Table: Entry Types

Type

Description

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, such as TypeDefOrRef (see the “Coded Token Types” table at the end of the appendix)

Table: Module; RID Type: 00; Token Type: 0x00000000; Metadata (MD) Streams: #~, #-

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

Table: TypeRef; RID Type: 01; Token Type: 0x01000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

ResolutionScope

ResolutionScope

--

Name

STRING

No longer than 1023 bytes

Namespace

STRING

No longer than 1023 bytes

Table: TypeDef; RID Type: 02; Token Type: 0x02000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Flags

ULONG

Validity mask: 0x00177DBF

Name

STRING

No longer than 1023 bytes

Namespace

STRING

No longer than 1023 bytes

Extends

TypeDefOrRef

Base type

FieldList

RID: Field

--

MethodList

RID: Method

--

Table: FieldPtr; RID Type: 03; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Field

RID: Field

--

Table: Field; RID Type: 04; Token Type: 0x04000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Flags

USHORT

Validity mask: 0xB7F7

Name

STRING

No longer than 1023 bytes

Signature

BLOB

Cannot be 0

Table: MethodPtr; RID Type: 05; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Method

RID: Method

--

Table: Method; RID Type: 06; Token Type: 0x06000000; MD Streams: #~, #-

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

--

Table: ParamPtr; RID Type: 07; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Param

RID: Param

--

Table: Param; RID Type: 08; Token Type: 0x08000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Flags

USHORT

Validity mask: 0x3013

Sequence

USHORT

0 means return value

Name

STRING

--

Table: InterfaceImpl; RID Type: 09; Token Type: 0x09000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Class

RID: TypeDef

Class implementing the interface

Interface

TypeDefOrRef

Implemented interface

Table: MemberRef; RID Type: 10; Token Type: 0x0A000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Class

MemberRefParent

Cannot be TypeDef

Name

STRING

No longer than 1023 bytes

Signature

BLOB

Cannot be 0

Table: Constant; RID Type: 11; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Type

BYTE

--

Parent

HasConstant

--

Value

BLOB

--

Table: CustomAttribute; RID Type: 12; Token Type: 0x0C000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Parent

HasCustomAttribute

--

Type

CustomAttributeType

--

Value

BLOB

Can be 0

Table: FieldMarshal; RID Type: 13; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Parent

FieldMarshal

--

NativeType

BLOB

Cannot be 0

Table: DeclSecurity; RID Type: 14; Token Type: 0x0E000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Action

SHORT

--

Parent

HasDeclSecurity

--

PermissionSet

BLOB

Cannot be 0

Table: ClassLayout; RID Type: 15; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

PackingSize

USHORT

Power of 2, from 1 through 128

ClassSize

ULONG

--

Parent

RID: TypeDef

--

Table: FieldLayout; RID Type: 16; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

OffSet

ULONG

Offset in bytes or ordinal

Field

RID: Field

--

Table: StandAloneSig; RID Type: 17; Token Type: 0x11000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Signature

BLOB

Cannot be 0

Table: EventMap; RID Type: 18; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Parent

RID: TypeDef

--

EventList

RID: Event

--

Table: EventPtr; RID Type: 19; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Event

RID: Event

--

Table: Event; RID Type: 20; Token Type: 0x14000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

EventFlags

USHORT

0x0000, 0x0200, or 0x0600

Name

STRING

No longer than 1023 bytes

EventType

TypeDefOrRef

--

Table:PropertyMap; RID Type: 21; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Parent

RID: TypeDef

--

PropertyList

RID: Property

--

Table: PropertyPtr; RID Type: 22; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Property

RID: Property

--

Table: Property; RID Type: 23; Token Type: 0x17000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

PropFlags

USHORT

Validity mask: 0x1600

Name

STRING

No longer than 1023 bytes

Type

BLOB

Property signature

Table: MethodSemantics; RID Type: 24; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Semantic

USHORT

--

Method

RID: Method

--

Association

HasSemantics

--

Table: MethodImpl; RID Type: 25; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Class

RID: TypeDef

--

MethodBody

MethodDefOrRef

Overriding method

MethodDeclaration

MethodDefOrRef

Overridden method

Table: ModuleRef; RID Type: 26; Token Type: 0x1A000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Name

STRING

No longer than 512 bytes

Table: TypeSpec; RID Type: 27; Token Type: 0x1B000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Signature

BLOB

Cannot be 0

Table: ENCLog; RID Type: 28; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Token

ULONG

--

FuncCode

ULONG

--

Table: ImplMap; RID Type: 29; Token Type: None; MD Streams: #~, #-

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

Table: ENCMap; RID Type: 30; Token Type: None; MD Stream: #-

Entry Name

Entry Type

Comments

Token

ULONG

--

Table: FieldRVA; RID Type: 31; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

RVA

ULONG

--

Field

RID: Field

--

Table: Assembly; RID Type: 32; Token Type: 0x20000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

HashAlgId

ULONG

--

MajorVersion

USHORT

--

MinorVersion

USHORT

--

BuildNumber

USHORT

--

RevisionNumber

USHORT

--

Flags

ULONG

Validity mask: 0x0000C371

PublicKey

BLOB

--

Name

STRING

No path, no extension

Locale

STRING

--

Table: AssemblyProcessor; RID Type: 33; Token Type: None; Unused

Entry Name

Entry Type

Comments

Processor

ULONG

--

Table: AssemblyOS; RID Type: 34; Token Type: None; Unused

Entry Name

Entry Type

Comments

OSPlatformID

ULONG

--

OSMajorVersion

ULONG

--

OSMinorVersion

ULONG

--

Table: AssemblyRef; RID Type: 35; Token Type: 0x23000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

MajorVersion

USHORT

--

MinorVersion

USHORT

--

BuildNumber

USHORT

--

RevisionNumber

USHORT

--

Flags

ULONG

Validity mask: 0x00000371

PublicKeyOrToken

BLOB

--

Name

STRING

No path, no extension

Locale

STRING

--

HashValue

BLOB

--

Table: AssemblyRefProcessor; RID Type: 36; Token Type: None; Unused

Entry Name

Entry Type

Comments

Processor

ULONG

--

AssemblyRef

RID: AssemblyRef

--

Table: AssemblyRefOS; RID Type: 37; Token Type: None; Unused

Entry Name

Entry Type

Comments

OSPlatformId

ULONG

--

OSMajorVersion

ULONG

--

OSMinorVersion

ULONG

--

AssemblyRef

RID: AssemblyRef

--

Table: File; RID Type: 38; Token Type: 0x26000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Flags

ULONG

0x00000000 or 0x00000001

Name

STRING

No path; only filename

HashValue

BLOB

--

Table: ExportedType; RID Type: 39; Token Type: 0x27000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Flags

ULONG

Validity mask: 0x00200007

TypeDefId

ULONG

TypeDef token in another module

TypeName

STRING

No longer than 1023 bytes

TypeNamespace

STRING

No longer than 1023 bytes

Implementation

Implementation

File, ExportedType, AssemblyRef

Table: ManifestResource; RID Type: 40; Token Type: 0x28000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Offset

ULONG

--

Flags

ULONG

0x000001 or 0x000002

Name

STRING

--

Implementation

Implementation

0, File, AssemblyRef

Table: NestedClass; RID Type: 41; Token Type: None; MD Streams: #~, #-

Entry Name

Entry Type

Comments

NestedClass

RID: TypeDef

--

EnclosingClass

RID: TypeDef

--

Table : GenericParam; RID Type: 42; Token Type: 0x2A000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Number

USHORT

Ordinal

Flags

USHORT

Constraint flags

Owner

TypeOrMethodDef

Generic type or method

Name

STRING

Can be 0

Table: MethodSpec; RID Type: 43; Token Type: 0x2B000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Method

MethodDefOrRef

Instantiated method

Instantiation

BLOB

Instantiation signature

Table: GenericParamConstraint; RID Type: 44; Token Type: 0x2C000000; MD Streams: #~, #-

Entry Name

Entry Type

Comments

Owner

RID: GenericParam

Constrained parameter

Constraint

TypeDefOrRef

Type the parameter must extend or implement

Table: Coded Token Types

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): 22 referenced tables, tag size 5

Method

0

Field

1

TypeRef

2

TypeDef

3

Param

4

InterfaceImpl

5

MemberRef

6

Module

7

Permission

8

Property

9

Event

10

Signature

11

ModuleRef

12

TypeSpec

13

Assembly

14

AssemblyRef

15

File

16

ExportedType

17

ManifestResource

18

GenericParam

19

GenericParamConstraint

20

MethodSpec

21

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): 2 referenced tables, tag size 3

none

0

none

1

Method

2

MemberRef

3

none

4

ResolutionScope (75): 4 referenced tables, tag size 2

Module

0

ModuleRef

1

AssemblyRef

2

TypeRef

3

TypeOrMethodDef (76): 2 referenced tables, tag size 1

TypeDef

0

Method

1

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.187.103