The Module table has the following columns:
-
Generation (a 2-byte value, reserved, shall be zero)
-
Name (an index into the String heap)
-
Mvid (an index into the Guid heap; simply a Guid used to distinguish between two versions of the same module)
-
EncId (an index into the Guid heap; reserved, shall be zero)
-
EncBaseId (an index into the Guid heap; reserved, shall be zero)
The Mvid column shall index a unique GUID in the GUID heap (§II.24.2.5) that identifies this instance of the module. The Mvid can be ignored on read by conforming implementations of the CLI. The Mvid should be newly generated for every module, using the algorithm specified in ISO/IEC 11578:1996 (Annex A) or another compatible algorithm.
[Note: The term GUID stands for Globally Unique IDentifier, a 16-byte long number typically displayed using its hexadecimal encoding. A GUID can be generated by several well-known algorithms including those used for UUIDs (Universally Unique IDentifiers) in RPC and CORBA, as well as CLSIDs, GUIDs, and IIDs in COM. end note]
[Rationale: While the VES itself makes no use of the Mvid, other tools (such as debuggers, which are outside the scope of this standard) rely on the fact that the Mvid almost always differs from one module to another. end rationale]
The Generation, EncId, and EncBaseId columns can be written as zero, and can be ignored by conforming implementations of the CLI.
The rows in the Module table result from .module directives in the Assembly (§II.6.4).
This contains informative text only.
-
The Module table shall contain one and only one row [ERROR]
-
Name shall index a non-empty string. This string should match exactly any corresponding ModuleRef.Name string that resolves to this module. [ERROR]
-
Mvid shall index a non-null GUID in the Guid heap [ERROR]
End informative text.