Partilhar via


Método IMetaDataInfo::GetFileMapping

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

Sintaxe

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

Parâmetros

ppvData
[fora] Um ponteiro para o início do ficheiro mapeado.

pcbData
[fora] O tamanho da região mapeada. Se pdwMappingType for fmFlat, este é o tamanho do ficheiro.

pdwMappingType
[fora] Um valor CorFileMapping que indica o tipo de mapeamento. A implementação atual do runtime de idioma comum (CLR) devolve fmFlatsempre . Outros valores estão reservados para utilização futura. No entanto, deve verificar sempre o valor devolvido, uma vez que outros valores podem estar ativados em versões futuras ou versões de serviço.

Devolver Valor

HRESULT Description
S_OK Todas as saídas são preenchidas.
E_INVALIDARG NULL foi transmitido 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. Isto pode acontecer pelos seguintes motivos:

- O âmbito dos metadados foi aberto com o ofWrite sinalizador ou ofCopyMemory .
- O âmbito dos metadados foi aberto sem o ofReadOnly sinalizador.
- O método IMetaDataDispenser::OpenScopeOnMemory foi utilizado para abrir apenas a parte dos metadados do ficheiro.
- O ficheiro não é um ficheiro executável portátil (PE). Nota: Estas condições dependem da implementação do CLR e são susceptíveis de ser enfraquecidas em versões futuras do CLR.

Observações

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

Para que este método funcione, quando mapear os metadados de um ficheiro no disco para a memória ao chamar o método IMetaDataDispenser::OpenScope , tem de especificar o ofReadOnly sinalizador e não pode especificar o ofWrite sinalizador ou ofCopyMemory .

A escolha do tipo de mapeamento de ficheiros para cada âmbito é específica de uma determinada implementação do CLR. Não pode ser definido pelo utilizador. A implementação atual do CLR regressa fmFlat sempre em pdwMappingType, mas esta ação pode ser alterada em versões futuras do CLR ou em futuras versões de serviço de uma determinada versão. Deve verificar sempre o valor devolvido em pdwMappingType, uma vez que diferentes tipos terão esquemas e desvios diferentes.

A transmissão de NULL para qualquer um dos três parâmetros não é suportada. O método devolve E_INVALIDARGe nenhuma das saídas é preenchida. Ignorar o tipo de mapeamento ou o tamanho da região pode resultar numa terminação anormal do programa.

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: Cor.h

Biblioteca: Utilizado como recurso no MsCorEE.dll

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

Ver também