Compartilhar via


Método de IMetaDataInfo::GetFileMapping

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

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 é fmFlat, esse é o tamanho do arquivo.

  • pdwMappingType
    [out] A CorFileMapping valor que indica o tipo de mapeamento. A implementação atual do common language runtime (CLR) sempre retorna fmFlat. Outros valores são reservados para uso futuro. No entanto, você sempre deve verificar o valor retornado, porque os outros valores podem ser ativados em futuras versões ou versões de serviço.

Valor de retorno

HRESULT

Descrição

S_OK

Todas as saídas são preenchidas.

E_INVALIDARG

NULO 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 acontecer pelos seguintes motivos:

  • O escopo de metadados foi aberto com o ofWrite ou ofCopyMemory sinalizador.

  • O escopo de metadados foi aberto sem o ofReadOnly sinalizador.

  • O IMetaDataDispenser::OpenScopeOnMemory método foi usado para abrir somente a parte de metadados do arquivo.

  • O arquivo não é um arquivo executável portátil (PE).

Observação

Essas condições dependem da implementação do CLR e provavelmente ser diminuída em futuras versões do CLR.

Comentários

A memória que ppvData pontos é válida somente como o escopo de metadados subjacente é aberta.

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

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 na pdwMappingType, mas isso pode mudar em futuras versões do CLR ou em futuras versões de serviço de uma determinada versão. Você sempre deve verificar o valor retornado pdwMappingType, pois terão diferentes tipos diferentes layouts e deslocamentos.

Não há suporte para passar NULL para qualquer um dos três parâmetros. O método retorna E_INVALIDARG, e nenhum das saídas são preenchidas. Ignorar o tipo de mapeamento ou o tamanho da região pode resultar na finalização anormal do programa.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Cor.h

Biblioteca: Usado como um recurso em mscoree

.NET Framework versões: 4

Consulte também

Outros recursos

Interface de IMetaDataInfo

Enumeração de CorFileMapping