IMetaDataInfo::GetFileMapping メソッドIMetaDataInfo::GetFileMapping Method

マップされたファイルのメモリ領域とマッピングの種類を取得します。Gets the memory region of the mapped file, and the type of mapping.


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


入出力マップされたファイルの先頭へのポインター。[out] A pointer to the start of the mapped file.

入出力マップされた領域のサイズ。[out] The size of the mapped region. がの場合 pdwMappingType fmFlat 、これはファイルのサイズです。If pdwMappingType is fmFlat, this is the size of the file.

入出力マッピングの種類を示すCorFileMapping値です。[out] A CorFileMapping value that indicates the type of mapping. 共通言語ランタイム (CLR) の現在の実装では、常にを返し fmFlat ます。The current implementation of the common language runtime (CLR) always returns fmFlat. 他の値は将来使用するために予約されています。Other values are reserved for future use. ただし、その他の値は将来のバージョンまたはサービスリリースで有効になる可能性があるため、常に戻り値を確認する必要があります。However, you should always verify the returned value, because other values may be enabled in future versions or service releases.

戻り値Return Value

S_OK すべての出力が入力されます。All outputs are filled.
E_INVALIDARG 引数の値として NULL が渡されました。NULL was passed as an argument value.
COR_E_NOTSUPPORTED CLR 実装では、メモリ領域に関する情報を提供できません。The CLR implementation cannot provide information about the memory region. これが発生する理由としては次のようなことが考えられます。This can happen for the following reasons:

-メタデータスコープがまたはフラグで開かれました ofWrite ofCopyMemory- The metadata scope was opened with the ofWrite or ofCopyMemory flag.
-フラグなしでメタデータスコープが開かれました ofReadOnly- The metadata scope was opened without the ofReadOnly flag.
- IMetaDataDispenser:: OpenScopeOnMemoryメソッドは、ファイルのメタデータ部分のみを開くために使用されました。- The IMetaDataDispenser::OpenScopeOnMemory method was used to open only the metadata portion of the file.
-ファイルは、ポータブル実行可能 (PE) ファイルではありません。- The file is not a portable executable (PE) file. 注: これらの条件は CLR の実装によって異なり、CLR の将来のバージョンでは緩和される可能性があります。Note: These conditions depend on the CLR implementation, and are likely to be weakened in future versions of the CLR.


が指すメモリ ppvData は、基になるメタデータスコープが開いている間のみ有効です。The memory that ppvData points to is valid only as long as the underlying metadata scope is open.

このメソッドを機能させるには、 IMetaDataDispenser:: OpenScopeメソッドを呼び出して、ディスク上のファイルのメタデータをメモリにマップするときに、フラグを指定 ofReadOnly し、またはフラグを指定しないようにする必要があり ofWrite ofCopyMemory ます。In order for this method to work, when you map the metadata of an on-disk file into memory by calling the IMetaDataDispenser::OpenScope method, you must specify the ofReadOnly flag and you must not specify the ofWrite or ofCopyMemory flag.

各スコープでのファイルマッピングの種類の選択は、CLR の特定の実装に固有です。The choice of file mapping type for each scope is specific to a given implementation of the CLR. ユーザーが設定することはできません。It cannot be set by the user. CLR の現在の実装では常にが返され fmFlat pdwMappingType ますが、これは clr の将来のバージョンまたは特定のバージョンの今後のサービスリリースで変更される可能性があります。The current implementation of the CLR always returns fmFlat in pdwMappingType, but this can change in future versions of the CLR or in future service releases of a given version. の戻り値は pdwMappingType 、型によってレイアウトとオフセットが異なるため、常にでチェックする必要があります。You should always check the returned value in pdwMappingType, because different types will have different layouts and offsets.

3つのパラメーターのいずれかに対して NULL を渡すことはサポートされていません。Passing NULL for any of the three parameters is not supported. このメソッドはを返し E_INVALIDARG 、出力はすべて入力されません。The method returns E_INVALIDARG, and none of the outputs are filled. マッピングの種類または領域のサイズを無視すると、プログラムが異常終了する可能性があります。Ignoring the mapping type or the size of the region can result in abnormal program termination.


:システム要件」を参照してください。Platforms: See System Requirements.

ヘッダー: CorHeader: Cor.h

ライブラリ: Mscoree.dll のリソースとして使用されます。Library: Used as a resource in MsCorEE.dll

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

関連項目See also