Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Заголовок CLR

Заголовок CLR

Заголовок CLR- это блок данных, который должны поддерживать все файлы .NET (и действительно поддерживают, благодаря компилятору C#), чтобы среда CLR имела возможность обрабатывать их. По сути, этот заголовок определяет множество флагов, позволяющих среде выполнения выяснить структуру данного управляемого файла. Например, существуют флаги, позволяющие идентифицировать размещение метаданных и ресурсов в файле, выяснить версию среды выполнения, для которой создавался компоновочный блок, значение (необязательного) открытого ключа и т.д. Если с dumpbin.exe использовать флаг /clrheader, вы получите внутреннюю информацию заголовка CLR для данного компоновочного блока .NET, как показано на рис. 11.2.

Заголовок CLR компоновочного блока представляется неуправляемой структурой C-типа (IMAGE _ COR20 _ HEADER), определенной в файле C-заголовка corhdr.h.


Рис. 11.1. Информация заголовка Win32 компоновочного блока


Рис. 11.2. Информация заголовка CLR компоновочного блока

Для заинтересованных читателей предлагаем ознакомиться с видом структуры, о которой здесь идет речь.

// Структура заголовка CLR 2.0.
 typedef struct IMAGE_COR20_HEADER {
 // Версии заголовка.
 ULONG cb;
 USHORT MajorRuntimeVersion;
 USHORT MinorRuntimeVersion;
 // Таблица символов и начальная информация.
 IMAGE_DATA_DIRECTORY MetaData;
 ULONG Flags;
 ULONG EntryPointToken;
 // Информация связывания.
 IMAGE_DATA_DIRECTQRY Resources;
 IMAGE_DATA_DIRECTORY StrongNameSignature;
 // Стандартная информация адресации и связывания.
 IMAGE_DATA_DIRECTQRY CodeManagerTable;
 IMAGE_DATA_DIRECTORY VTableFixups;
 IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
 // Информация прекомпилированного образа (только для
 // внутреннего использования – обнуляется)
 IMAGE_DATA_DIRECTORY ManagedNativeHeader;
} IMAGE_COR20_HEADER;

Снова обращаем ваше внимание на то, что вам, как разработчику .NET-приложений, не придется иметь дело с информацией заголовков Win32 и CLR (за исключением того случая, когда вы захотите построить новый управляемый компилятор). Вам достаточно понимать, что каждый компоновочный блок .NET обязательно содержит эти данные, используемые средой выполнения .NET и операционной системой Win32.

Оглавление книги


Генерация: 2.354. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз