共用方式為


IMetaDataInfo::GetFileMapping 方法

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

語法

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

參數

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

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

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

傳回值

HRESULT 描述
S_OK 所有輸出都會填滿。
E_INVALIDARG 傳遞了 null 來作為引數值。
COR_E_NOTSUPPORTED CLR 實作無法提供記憶體區域的相關資訊。 這可能因為以下原因而發生:

- 所開啟的中繼資料範圍具有 ofWriteofCopyMemory 旗標。
- 所開啟的中繼資料範圍沒有 ofReadOnly 旗標。
- 使用了 IMetaDataDispenser::OpenScopeOnMemory 方法來只開啟檔案的中繼資料部分。
- 檔案不是可攜式可執行檔 (PE) 檔案。 注意:這些條件取決於 CLR 實作,而且在未來的 CLR 版本中可能會減弱。

備註

只有在基礎中繼資料範圍開啟時,ppvData 所指向的記憶體才會有效。

若要讓這個方法能夠運作,您在呼叫 IMetaDataDispenser::OpenScope 方法將磁碟檔案上的中繼資料對應至記憶體時,必須指定 ofReadOnly 旗標,而且不得指定 ofWriteofCopyMemory 旗標。

每個範圍的檔案對應型別選擇專門適用於給定的 CLR 實作。 使用者無法進行設定。 CLR 的目前實作一律會在 pdwMappingType 中傳回 fmFlat,但這可能會在 CLR 的未來版本或給定版本的未來服務版本中變更。 您應該一律檢查 pdwMappingType 中傳回的值,因為不同型別的配置和位移會不同。

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

規格需求

平台:請參閱系統需求

標頭:Cor.h

程式庫:作為 MSCorEE.dll 中的資源使用

.NET Framework版本:自 4 起可用

另請參閱