Condividi tramite


Metodo IMetaDataInfo::GetFileMapping

Ottiene la regione di memoria del file mappato e il tipo di mapping.

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

Parametri

  • ppvData
    [out] Puntatore all'inizio del file mappato.

  • pcbData
    [out] Dimensione della regione mappata. Se pdwMappingType è fmFlat, queste sono le dimensioni del file.

  • pdwMappingType
    [out] Un valore CorFileMapping che indica il tipo di mapping. L'implementazione corrente del Common Language Runtime (CLR) restituisce sempre fmFlat. Gli altri valori sono riservati per uso futuro. Tuttavia, è necessario verificare sempre il valore restituito, perché gli altri valori possono essere abilitati in versioni future o versioni del servizio.

Valore restituito

HRESULT

Oggetto di descrizione

S_OK

Tutti gli output sono riempiti.

E_INVALIDARG

NULL è stato passato come un valore di argomento.

COR_E_NOTSUPPORTED

L'implementazione di CLR non è in grado di fornire informazioni riguardanti l'area di memoria. Può verificarsi per i motivi seguenti:

  • L'ambito dei metadati è stato aperto con ofWrite o il contrassegno ofCopyMemory.

  • L'ambito dei metadati è stato aperto senza il contrassegno ofReadOnly.

  • Il metodo IMetaDataDispenser::OpenScopeOnMemory è stato utilizzato per aprire solo la parte di metadati del file.

  • Il file non è un file eseguibile di tipo PE.

NotaNota
Queste condizioni dipendono dall'implementazione di CLR e probabilmente saranno ridotte in versioni future di CLR.

Note

La memoria alla quale ppvData punta è valida solo finché è aperto l'ambito dei metadati sottostante.

Per il corretto funzionamento del metodo, quando si esegue il mapping dei metadati di un file su disco in memoria chiamando il metodo IMetaDataDispenser::OpenScope, è necessario specificare il contrassegno ofReadOnly e non è necessario specificare ofWrite o il contrassegno ofCopyMemory.

La scelta del tipo di mapping del file per ogni ambito è specifica di una determinata implementazione di CLR. Non può essere impostato dall'utente. L'implementazione corrente del CLR restituisce sempre fmFlat in pdwMappingType, ma questo può cambiare nelle versioni successive del CLR o in versioni di servizio successive di una versione specificata. È necessario verificare sempre il valore restituito in pdwMappingType, perché tipi differenti disporranno di layout e offset diversi.

Il passaggio di un valore NULL per alcuni dei tre parametri non è supportato. Il metodo restituisce E_INVALIDARGe nessuno degli output viene riempito. Se si ignorano il tipo di mapping o le dimensioni dell'area si può verificare l'interruzione anomala del programma.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: Cor.h

Libreria: utilizzata come risorsa in MsCorEE.dll

Versioni di .NET Framework: 4

Vedere anche

Altre risorse

Interfaccia IMetaDataInfo

Enumerazione CorFileMapping