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:
Nota
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