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 fmFlat
sempre . 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_INVALIDARG
e 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