次の方法で共有


ICorProfilerInfo2::GetFunctionInfo2 メソッド

関数の親クラス、メタデータ トークン、および型引数が存在する場合はそれぞれの ClassID を取得します。

HRESULT GetFunctionInfo2(
    [in]  FunctionID funcId,
    [in]  COR_PRF_FRAME_INFO frameInfo,
    [out] ClassID *pClassId,
    [out] ModuleID *pModuleId,
    [out] mdToken *pToken,
    [in]  ULONG32 cTypeArgs,
    [out] ULONG32 *pcTypeArgs,
    [out] ClassID typeArgs[]);

パラメーター

  • funcId
    [入力] 親クラスおよびその他の情報を取得する関数の ID。

  • frameInfo
    [入力] スタック フレームに関する情報を指す COR_PRF_FRAME_INFO 値。

  • pClassId
    [出力] 関数の親クラスへのポインター。

  • pModuleId
    [出力] 関数の親クラスが定義されるモジュールへのポインター。

  • pToken
    [出力] 関数のメタデータ トークンへのポインター。

  • cTypeArgs
    [入力] typeArgs 配列のサイズ。

  • pcTypeArgs
    [出力] ClassID 値の総数へのポインター。

  • typeArgs
    [出力] ClassID 値の配列。各値は、関数の型引数の ID です。 メソッドが戻るとき、使用できる ClassID 値の一部またはすべてが typeArgs に格納されます。

解説

プロファイラー コードで ICorProfilerInfo::GetModuleMetaData を呼び出して、指定したモジュールの metadata インターフェイスを取得できます。 pToken によって参照される場所に返されるメタデータ トークンを使用すると、関数のメタデータにアクセスできます。

次の表に示すように、pClassId パラメーターで返されるクラス ID、および typeArgs パラメーターで返される型引数は、frameInfo パラメーターで渡される値によって異なります。

パラメーター frameInfo の値

結果

FunctionEnter2 コールバックから取得された COR_PRF_FRAME_INFO 値

pClassId によって参照される場所に返される ClassID と typeArgs 配列で返されるすべての型引数はまったく同じになります。

FunctionEnter2 コールバック以外のソースから取得された COR_PRF_FRAME_INFO

正確な ClassID と型引数を特定できません。 つまり、ClassID は null の可能性があり、一部の型引数は Object として戻る可能性があります。

0

正確な ClassID と型引数を特定できません。 つまり、ClassID は null の可能性があり、一部の型引数は Object として戻る可能性があります。

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

別の方法として、最初に長さ 0 の pcTypeArgs バッファーを指定して GetFunctionInfo2 を呼び出すことで、適切なバッファーのサイズを取得することもできます。 その後、バッファーのサイズを pcTypeArgs に返された値 (ClassID 値のサイズで除算された値) に設定し、GetFunctionInfo2 を再度呼び出します。

この 2 つの方法の詳細については、「API メソッド規則のプロファイリング」を参照してください。

必要条件

プラットフォーム: 「.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 インターフェイス

ICorProfilerInfo2 インターフェイス

その他の技術情報

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

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