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 實作不能提供記憶體區域的相關資訊。 它的可能發生原因如下:
注意事項
這些條件取決於 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