次の方法で共有


ICorProfilerInfo2::GetFunctionInfo2 Method

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

Syntax

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[]);

Parameters

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 です。 メソッドから制御が戻ると、 typeArgs には ClassID 値の一部またはすべてが含まれます。

Remarks

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

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

パラメーター frameInfo の値。 Result
FunctionEnter2 コールバックから取得されたCOR_PRF_FRAME_INFO pClassIdによって参照される場所で返されるClassIDと、typeArgs配列で返されるすべての型引数は正確です。
FunctionEnter2 コールバック以外のソースから取得されたCOR_PRF_FRAME_INFO 正確な ClassID 引数と型引数を特定できません。 つまり、 ClassID は null であり、一部の型引数は Objectとして返される可能性があります。
Zero 正確な ClassID 引数と型引数を特定できません。 つまり、 ClassID は null であり、一部の型引数は Objectとして返される可能性があります。

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

または、最初に長さ 0 のGetFunctionInfo2 バッファーでpcTypeArgsを呼び出して、正しいバッファー サイズを取得することもできます。 その後、バッファー サイズを、ClassID値のサイズで除算したpcTypeArgsで返される値に設定し、GetFunctionInfo2を再度呼び出すことができます。

Requirements

:システム要件」を参照してください。

ヘッダ: CorProf.idl、CorProf.h

Library: CorGuids.lib

.NET Framework のバージョン: 2.0 以降で使用可能

See also