Metodo IMetaDataInfo::GetFileMapping
Ottiene l'area di memoria del file mappato e il tipo di mapping.
Sintassi
HRESULT GetFileMapping (
[out] const void **ppvData,
[out] ULONGLONG *pcbData,
[out] DWORD *pdwMappingType
);
Parametri
ppvData
[out] Puntatore all'inizio del file mappato.
pcbData
[out] Dimensioni dell'area mappata. Se pdwMappingType
è , questa è fmFlat
la dimensione del file.
pdwMappingType
[out] Valore CorFileMapping che indica il tipo di mapping. L'implementazione corrente di Common Language Runtime (CLR) restituisce fmFlat
sempre . Altri valori sono riservati per utilizzi futuri. Tuttavia, è consigliabile verificare sempre il valore restituito, perché altri valori possono essere abilitati nelle versioni future o nelle versioni di servizio.
Valore restituito
HRESULT | Descrizione |
---|---|
S_OK |
Tutti gli output vengono riempiti. |
E_INVALIDARG |
NULL è stato passato come valore di argomento. |
COR_E_NOTSUPPORTED |
L'implementazione CLR non può fornire informazioni sull'area di memoria. Ciò può verificarsi per i seguenti motivi: - L'ambito dei metadati è stato aperto con il ofWrite flag o ofCopyMemory .- L'ambito dei metadati è stato aperto senza il ofReadOnly flag.- Il metodo IMetaDataDispenser::OpenScopeOnMemory è stato usato per aprire solo la parte dei metadati del file. - Il file non è un file eseguibile portabile (PE). Nota: Queste condizioni dipendono dall'implementazione DI CLR e potrebbero essere indebolite nelle versioni future di CLR. |
Commenti
Memoria che punta a è valida solo a condizione che ppvData
l'ambito dei metadati sottostanti sia aperto.
Affinché questo metodo funzioni, quando si esegue il mapping dei metadati di un file su disco in memoria chiamando il metodo IMetaDataDispenser::OpenScope , è necessario specificare il flag e non è necessario specificare il ofReadOnly
ofWrite
flag o ofCopyMemory
il flag.
La scelta del tipo di mapping dei file per ogni ambito è specifica per una determinata implementazione di CLR. Non può essere impostato dall'utente. L'implementazione corrente di CLR restituisce fmFlat
sempre in pdwMappingType
, ma può cambiare nelle versioni future di CLR o nelle versioni future del servizio di una determinata versione. È consigliabile controllare sempre il valore restituito in pdwMappingType
, perché diversi tipi avranno layout e offset diversi.
Il passaggio di NULL per uno dei tre parametri non è supportato. Il metodo restituisce E_INVALIDARG
e nessuno degli output viene riempito. Ignorando il tipo di mapping o le dimensioni dell'area può causare la terminazione del programma anormale.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: Cor.h
Libreria: Usato come risorsa in MsCorEE.dll
Versioni di .NET Framework: Disponibile da 4