Condividi tramite


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 è fmFlatla dimensione del file.

pdwMappingType
[out] Valore CorFileMapping che indica il tipo di mapping. L'implementazione corrente di Common Language Runtime (CLR) restituisce fmFlatsempre . 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 ofReadOnlyofWrite 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_INVALIDARGe 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

Vedi anche