次の方法で共有


IMetaDataInfo::GetFileMapping メソッド

マッピングされたファイルのメモリ領域とマッピングの種類を取得します。

構文

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

パラメーター

ppvData
[out] マッピングされたファイルの先頭へのポインター。

pcbData
[out] マッピングされた領域のサイズ。 pdwMappingTypefmFlat の場合、これはファイルのサイズです。

pdwMappingType
[out] マッピングの種類を示す CorFileMapping 値。 共通言語ランタイム (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 の実装では常に pdwMappingTypefmFlat が返されますが、これは CLR の将来のバージョンまたは所与のバージョンの今後のサービス リリースで変更される可能性があります。 型によってレイアウトとオフセットが異なるため、pdwMappingType の戻り値を常にチェックする必要があります。

3 つのパラメーターのいずれかに対して NULL を渡すことはサポートされていません。 このメソッドでは E_INVALIDARG が返され、出力はすべて入力されません。 マッピングの種類または領域のサイズを無視すると、プログラムが異常終了する可能性があります。

必要条件

:システム要件」を参照してください。

ヘッダー: Cor.h

ライブラリ: MsCorEE.dll でリソースとして使用されます

.NET Framework のバージョン: 4 以降で使用可能

関連項目