次の方法で共有


IMetaDataInfo::GetFileMapping メソッド

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

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

パラメーター

  • ppvData
    [出力] マップト ファイルの先頭を指すポインター。

  • pcbData
    [出力] マップ領域のサイズ。 pdwMappingType が fmFlat である場合、これはファイルのサイズです。

  • pdwMappingType
    [出力] マッピングの種類を示す 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 の現在の実装では、pdwMappingType に常に fmFlat が返されますが、これは CLR の将来のバージョンまたは特定のバージョンの将来のサービス リリースで変更される可能性があります。 種類によってレイアウトとオフセットが異なるため、pdwMappingType の戻り値を必ず確認してください。

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

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー: Cor.h

ライブラリ: MsCorEE.dll でリソースとして使用されていること

.NET Framework のバージョン: 4

参照

その他の技術情報

IMetaDataInfo インターフェイス

CorFileMapping 列挙体