共用方式為


IMetaDataInfo::GetFileMapping 方法

取得對應檔案的記憶體區域,以及對應類型。

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

參數

  • ppvData
    [out] 對應檔的開頭指標。

  • pcbData
    [out] 對應區域的大小。 如果 pdwMappingType 是 fmFlat,則這會是檔案的大小。

  • pdwMappingType
    [out] CorFileMapping 值,指出對應的型別。 Common Language Runtime (CLR) 的目前實作一律傳回 fmFlat。 其他的值會保留以供日後使用。 但是,請一律驗證傳回的值,因為其他值在未來版本或服務版本中可能為啟用。

傳回值

HRESULT

描述

S_OK

所有的輸出會填滿。

E_INVALIDARG

會傳遞 NULL 做為引數值。

COR_E_NOTSUPPORTED

CLR 實作不能提供記憶體區域的相關資訊。 它的可能發生原因如下:

  • 含 ofWrite 或 ofCopyMemory 旗標的中繼資料範圍已被開啟。

  • 不含 ofReadOnly 旗標的中繼資料範圍已被開啟。

  • IMetaDataDispenser::OpenScopeOnMemory 方法用於僅開啟檔案的中繼資料部分。

  • 檔案不是可攜式可執行檔 (PE)。

注意事項注意事項
這些條件取決於 CLR 實作,在未來的 CLR 版本中可能會弱化。

備註

只要基礎中繼資料範圍是開啟的,ppvData 指向的記憶體便會有效。

為了讓這個方法可行,當您藉由呼叫 IMetaDataDispenser::OpenScope 方法將磁碟上檔案的中繼資料對應到記憶體時,您必須指定 ofReadOnly 旗標,但不得指定 ofWrite ofCopyMemory 旗標。

每個範圍的檔案對應類型選擇是給定的 CLR 實作所特有的。 它不能由使用者設定。 CLR 的目前實作一律在 pdwMappingType 中傳回 fmFlat,但這在 CLR 的未來版本或指定版本未來發行的服務中會有所改變。 您應該永遠檢查 pdwMappingType 中傳回的值,因為不同的型別將擁有不同版面配置與位移。

不支援傳遞任何三個參數的 NULL。 此方法會傳回 E_INVALIDARG,且未填滿任何的輸出。 略過對應的型別或區域大小,可能會導致程式異常終止。

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**Cor.h

**程式庫:**當做 MsCorEE.dll 中的資源使用

**.NET Framework 版本:**4

請參閱

其他資源

IMetaDataInfo 介面

CorFileMapping 列舉