Поделиться через


Метод IMetaDataInfo::GetFileMapping

Получает область памяти сопоставленных файлов и тип сопоставления.

HRESULT GetFileMapping (
    [out] const void           **ppvData, 
    [out] ULONGLONG            *pcbData, 
    [out] DWORD                *pdwMappingType
);

Параметры

  • ppvData
    [out] Указатель на начало сопоставленного файла.

  • pcbData
    [out] Размер сопоставленной области. Если параметр pdwMappingType имеет значение fmFlat, то это размер файла.

  • pdwMappingType
    [out] Значение CorFileMapping, которое указывает тип сопоставления. Текущая реализация среды CLR всегда возвращает fmFlat. Другие значения зарезервированы для использования в будущем. Однако всегда следует проверять возвращаемое значение, поскольку другие значения могут быть включены в будущих версиях или в наборах исправлений.

Возвращаемое значение

HRESULT

Описание

S_OK

Все выходные данные заполняются.

E_INVALIDARG

Значение NULL передано в качестве значения аргумента.

COR_E_NOTSUPPORTED

Реализация среды CLR не может предоставить сведения об области памяти. Это может произойти по следующим причинам:

  • Область действия метаданных была открыта с флагом ofWrite или ofCopyMemory.

  • Область действия метаданных была открыта без флага ofReadOnly.

  • Метод IMetaDataDispenser::OpenScopeOnMemory использовался для открытия только части файла, содержащей метаданные.

  • Файл не является переносимым исполняемый (PE) файлом.

ПримечаниеПримечание
Эти условия зависят от реализации среды CLR и, скорее всего, будут смягчены в будущих версиях среды CLR.

Заметки

Память, на которую указывает ppvData, действительна только до тех пор, пока открыта базовая область действия метаданных.

Чтобы данный метод работал, при сопоставлении метаданных файла на диске с памятью путем вызова метода IMetaDataDispenser::OpenScope необходимо указать флаг ofReadOnly, а флаги ofWrite и ofCopyMemory указывать не следует.

Выбор типа сопоставления файлов для каждой области относится только к заданной реализации среды CLR. Не может быть задано пользователем. Текущая реализация среды CLR всегда возвращает fmFlat в pdwMappingType, но это может измениться в будущих версиях среды CLR или в наборе исправлений данной версии. Следует всегда проверять возвращаемое значение в pdwMappingType, поскольку разные типы будут иметь различные макеты и смещения.

Передача значения NULL для любого из этих трех параметров не поддерживается. Метод возвращает E_INVALIDARG, и ни один из выходных файлов не заполняется. Игнорирование типа сопоставления или размера области может привести к аномальному завершению программы.

Требования

Платформы: см. раздел Требования к системе для .NET Framework.

Заголовок: Cor.h

Библиотека: используется как ресурс в MsCorEE.dll

Версии платформы .NET Framework: 4

См. также

Другие ресурсы

Интерфейс IMetaDataInfo

Перечисление CorFileMapping