Método IMetaDataInfo::GetFileMapping

Obtém a região de memória do arquivo mapeado e o tipo de mapeamento.

Sintaxe

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

Parâmetros

ppvData
[out] Um ponteiro para o início do arquivo mapeado.

pcbData
[out] O tamanho da região mapeada. Se pdwMappingType for fmFlat, esse é o tamanho do arquivo.

pdwMappingType
[out] Um valor CorFileMapping que indica o tipo de mapeamento. A implementação atual do CLR (Common Language Runtime) sempre retorna fmFlat. Outros valores são reservados para uso futuro. No entanto, você sempre deve verificar o valor retornado, pois outros valores podem estar habilitados em versões futuras ou versões de serviço.

Valor Retornado

HRESULT Descrição
S_OK Todas as saídas são preenchidas.
E_INVALIDARG NULL foi passado como um valor do argumento.
COR_E_NOTSUPPORTED A implementação do CLR não pode fornecer informações sobre a região de memória. Isso pode ocorrer pelos seguintes motivos:

- O escopo dos metadados foi aberto com o sinalizador ofWrite ou o sinalizador ofCopyMemory.
- O escopo dos metadados foi aberto sem o sinalizador ofReadOnly.
- O método IMetaDataDispenser::OpenScopeOnMemory foi usado para abrir apenas a parte de metadados do arquivo.
- O arquivo não é um arquivo PE (portable executable). Observação: Essas condições dependem da implementação do CLR e provavelmente serão enfraquecidas em versões futuras do CLR.

Comentários

A memória para a qual ppvData aponta é válida apenas enquanto o escopo de metadados subjacente estiver aberto.

Para que esse método funcione, quando mapear os metadados de um arquivo em disco na memória chamando o método IMetaDataDispenser::OpenScope, você deverá especificar o sinalizador ofReadOnly e não deverá especificar o sinalizador ofWrite nem o ofCopyMemory.

A escolha do tipo de mapeamento de arquivo para cada escopo é específica para uma determinada implementação do CLR. Ele não pode ser definido pelo usuário. A implementação atual do CLR sempre retorna fmFlat em pdwMappingType, mas isso pode mudar em versões futuras do CLR ou em versões futuras de serviço de uma determinada versão. Sempre verifique o valor retornado em pdwMappingType, pois diferentes tipos terão layouts e deslocamentos diferentes.

Não há suporte para passar NULL para qualquer um dos três parâmetros. O método retorna E_INVALIDARGe nenhuma das saídas é preenchida. Ignorar o tipo de mapeamento ou o tamanho da região pode resultar em término anormal do programa.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: Cor.h

Biblioteca: usada como um recurso na MsCorEE.dll

Versões do .NET Framework: disponíveis desde 4

Confira também