Partilhar 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 [saídas] Um ponteiro para o início do arquivo mapeado.

pcbData [saídas] O tamanho da região mapeada. Se pdwMappingType for fmFlat, este é o tamanho do arquivo.

pdwMappingType [saídas] Um valor CorFileMapping 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 outros valores podem ser 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 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 a ofWrite bandeira ou ofCopyMemory .
- O escopo de metadados foi aberto sem a ofReadOnly bandeira.
- O método IMetaDataDispenser::OpenScopeOnMemory foi usado para abrir apenas a parte de metadados do arquivo.
- O ficheiro não é um ficheiro executável portátil (PE). Observação: Essas condições dependem da implementação do CLR e provavelmente serão enfraquecidas em versões futuras do CLR.

Remarks

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

Não há suporte para a passagem de NULL para qualquer um dos três parâmetros. O método retorna E_INVALIDARG, e nenhuma das saídas é preenchida. Ignorar o tipo de mapeamento ou o tamanho da região pode resultar no encerramento anormal do programa.

Requirements

Plataformas: Consulte Sistemas operacionais suportados pelo .NET.

Header: Cor.h

Library: CorGuids.lib

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

See also