Опубликован: 28.06.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный технический университет им. Н.Э. Баумана
Лекция 3:

Структура программных компонентов

Заголовок 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];

Это поле не используется и всегда заполнено нулями.

Анастасия Булинкова
Анастасия Булинкова
Рабочим названием платформы .NET было
Bogdan Drumov
Bogdan Drumov
Молдова, Республика
Azamat Nurmanbetov
Azamat Nurmanbetov
Киргизия, Bishkek