Compartilhar via


IMetaDataInfo::GetFileMapping Method

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

Syntax

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

Parameters

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.

Return Value

HRESULT Description
S_OK Todas as saídas são preenchidas.
E_INVALIDARG NULL foi passado como um valor de 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 ou o ofWrite sinalizador ofCopyMemory .
- O escopo dos metadados foi aberto sem o ofReadOnly sinalizador.
- O método IMetaDataDispenser::OpenScopeOnMemory foi usado para abrir apenas a parte de metadados do arquivo.
- O arquivo não é um arquivo PE (executável portátil). Nota: Essas condições dependem da implementação do CLR e provavelmente serão enfraquecidas em versões futuras do CLR.

Remarks

A memória a que aponta é válida apenas desde que ppvData o escopo de metadados subjacente esteja aberto.

Para que esse método funcione, ao mapear os metadados de um arquivo em disco na memória chamando o método IMetaDataDispenser::OpenScope, você deve especificar o ofReadOnly sinalizador e não deve especificar o ofWrite sinalizador.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 fmFlatpdwMappingType, mas isso pode mudar em versões futuras do CLR ou em versões de serviço futuras de uma determinada versão. Você sempre deve verificar o valor pdwMappingTyperetornado, 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 encerramento anormal do programa.

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Header: Cor.h

Library: CorGuids.lib

Versões do .NET: Disponível desde o .NET Framework 4.0

See also