Рабочим названием платформы .NET было |
Структура программных компонентов
Заголовок CLI
Директория заголовка CLI в дополнительном заголовке PE-файла должна указывать на заголовок CLI, который служит главным образом для локализации метаданных в PE-файле.
Заголовок CLI состоит из следующих полей:
long Cb;
Размер заголовка в байтах.
short MajorRuntimeVersion; short MinorRuntimeVersion;
Эти два поля содержат информацию о версии CLR, для которой предназначена данная сборка. В настоящее время эти поля должны содержать значения 2 и 0 соответственно.
struct { long RVA, Size; } Metadata;
В этом поле указываются RVA и размер в байтах метаданных в образе PE-файла.
long Flags;
Это поле описывает свойства сборки. Для обычных сборок .NET равно 1.
long EntryPointToken;
Токен метаданных, указывающий на точку входа в сборку.
struct { long RVA, Size; } Resources;
В этом поле указываются RVA и размер в байтах ресурсов сборки.
struct { long RVA, Size; } StrongNameSignature;
В этом поле указываются RVA и размер данных, используемых загрузчиком CLI для контроля версий связываемых динамических библиотек.
long CodeManagerTable[2];
Это поле не используется и всегда заполнено нулями.
struct { long RVA, Size; } VTableFixups;
В этом поле указываются RVA и размер данных, используемых загрузчиком для исправления таблиц виртуальных методов. Так как эти таблицы, вообще говоря, порождаются только некоторыми "экзотическими" компиляторами (предположительно, Visual C++ With Managed Extensions), мы их рассматривать не будем.
long ExportAddressTableJumps[2];
Это поле не используется и всегда заполнено нулями.
long ManagedNativeHeader[2];
Это поле не используется и всегда заполнено нулями.