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
[in] 親クラスおよびその他の情報を取得する関数の ID。
frameInfo
[in] スタック フレームに関する情報を指す COR_PRF_FRAME_INFO
値。
pClassId
[out] 関数の親クラスへのポインター。
pModuleId
[out] 関数の親クラスが定義されているモジュールへのポインター。
pToken
[out] 関数のメタデータ トークンへのポインター。
cTypeArgs
[in] typeArgs
配列のサイズ。
pcTypeArgs
[out] ClassID
値の総数へのポインター。
typeArgs
[out] 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 として戻る可能性があります。 |
ゼロ | 正確な ClassID と型引数を特定できません。 つまり、ClassID は null の可能性があり、一部の型引数は Object として戻る可能性があります。 |
GetFunctionInfo2
から制御が戻ったら、typeArgs
バッファーのサイズが十分で、すべての ClassID
値を格納できたかどうかを確認する必要があります。 これを行うには、pcTypeArgs
が指している値を cTypeArgs
パラメーターの値と比較します。 pcTypeArgs
の指す値が、ClassID
値のサイズで除算された cTypeArgs
の値より大きい場合は、pcTypeArgs
バッファーの割り当てを増やし、cTypeArgs
を新しい大きいサイズに更新して、GetFunctionInfo2
を再度呼び出します。
別の方法として、最初に GetFunctionInfo2
を長さゼロの pcTypeArgs
バッファーで呼び出して、適切なバッファーのサイズを取得します。 その後、バッファーのサイズを pcTypeArgs
に返された値 (ClassID
値のサイズで除算された値) に設定し、GetFunctionInfo2
を再度呼び出します。
必要条件
:「システム要件」を参照してください。
ヘッダー : CorProf.idl、CorProf.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 2.0 以降で使用可能
関連項目
.NET