次の方法で共有


ICorProfilerInfo::GetILToNativeMapping メソッド

Microsoft Intermediate Language (MSIL) オフセットから、指定した関数に含まれるコードのネイティブ オフセットへの割り当てを取得します。

HRESULT GetILToNativeMapping(
    [in] FunctionID functionId,
    [in] ULONG32 cMap,
    [out] ULONG32 *pcMap,
    [out, size_is(cMap), length_is(*pcMap)]
        COR_DEBUG_IL_TO_NATIVE_MAP map[]);

パラメーター

  • functionId
    [入力] コードを含む関数の ID。

  • cMap
    [入力] map 配列の最大サイズ。

  • pcMap
    [出力] 使用できる COR_DEBUG_IL_TO_NATIVE_MAP 構造体の合計。

  • map
    [出力] COR_DEBUG_IL_TO_NATIVE_MAP 構造体の配列。各構造体はオフセットを指定します。 GetILToNativeMapping メソッドから制御が戻ると、使用できる COR_DEBUG_IL_TO_NATIVE_MAP 構造体の一部またはすべてが map に格納されます。

解説

GetILToNativeMapping メソッドは、COR_DEBUG_IL_TO_NATIVE_MAP 構造体の配列を返します。 ネイティブ命令の特定の範囲がコードの特殊な領域 (prolog など) に対応することを伝達するために、配列内のエントリは、ilOffset フィールドを CorDebugIlToNativeMappingTypes 列挙体の値に設定できます。

GetILToNativeMapping から制御が戻ったら、map バッファーのサイズが十分で、すべての COR_DEBUG_IL_TO_NATIVE_MAP 構造体を格納できたかどうかを確認する必要があります。 これを行うには、cMap の値を pcMap パラメーターの値と比較します。 COR_DEBUG_IL_TO_NATIVE_MAP 構造体のサイズによって乗算された pcMap の値が、cMap より大きい場合は、map バッファーの割り当てを増やし、cMap を新しい大きいサイズに更新した後、GetILToNativeMapping を再度呼び出します。

別の方法として、最初に GetILToNativeMapping を長さゼロの map バッファーで呼び出して、適切なバッファーのサイズを取得します。 その後、バッファーのサイズを pcMap で返された値に設定し、GetILToNativeMapping を再度呼び出します。

この 2 つのアプローチの詳細については、「呼び出し元が割り当てたバッファー」を参照してください。

必要条件

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

ヘッダー: CorProf.idl、CorProf.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICorProfilerInfo インターフェイス

その他の技術情報

プロファイリングのインターフェイス

プロファイル (アンマネージ API リファレンス)