次の方法で共有


ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs メソッド

指定したメタデータ トークン、包含クラス、および任意の型引数の ClassID 値を使用して、関数の FunctionID を取得します。

HRESULT GetFunctionFromTokenAndTypeArgs(
    [in] ModuleID moduleID,
    [in] mdMethodDef funcDef,
    [in] ClassID classId,
    [in] ULONG32 cTypeArgs,
    [in, size_is(cTypeArgs)] ClassID typeArgs[],
    [out] FunctionID* pFunctionID);

パラメーター

  • moduleID
    [入力] 関数が存在するモジュールの ID。

  • funcDef
    [入力] 関数を参照する mdMethodDef メタデータ トークン。

  • classId
    [入力] 関数が含まれるクラスの ID。

  • cTypeArgs
    [入力] 指定する関数の型パラメーターの数。 非ジェネリック関数の場合はこの値を 0 にする必要があります。

  • typeArgs
    [入力] それぞれが関数の引数である ClassID 値の配列。 cTypeArgs が 0 に設定されている場合は、typeArgs に NULL を指定できます。

  • pFunctionID
    [出力] 指定した関数の FunctionID へのポインター。

解説

mdMethodDef メタデータ トークンの代わりに mdMethodRef メタデータを使用して GetFunctionFromTokenAndTypeArgs メソッドを呼び出すと、予測できない結果になることがあります。 mdMethodRef を渡す場合は、呼び出し元が mdMethodDef に解決する必要があります。

関数がまだ読み込まれていないときに GetFunctionFromTokenAndTypeArgs を呼び出すと読み込みが実行されるため、多くの状況ではこの呼び出し操作を行わないようにする必要があります。 たとえば、モジュールまたは型を読み込んでいるときにこのメソッドを呼び出すと、ランタイムが循環的に読み込みを実行しようとするため、無限ループが発生する可能性があります。

通常は、GetFunctionFromTokenAndTypeArgs を使用しないでください。 プロファイラーで特定の関数のイベントを確認する場合は、その関数の ModuleIDmdMethodDef を格納し、ICorProfilerInfo2::GetFunctionInfo2 を使用して FunctionID が目的の関数のものかどうかをチェックする必要があります。

必要条件

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