ICorProfilerInfo2::GetClassIDInfo2 メソッド
指定したジェネリック クラスの親モジュールとメタデータ トークン、その親クラスの ClassID、およびそのクラスの型引数が存在する場合はそれぞれの ClassID を取得します。
HRESULT GetClassIDInfo2(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken,
[out] ClassID *pParentClassId,
[in] ULONG32 cNumTypeArgs,
[out] ULONG32 *pcNumTypeArgs,
[out] ClassID typeArgs[]);
パラメーター
classId
[入力] 情報が取得されるクラスの ID。pModuleId
[出力] クラスの親モジュールの ID へのポインター。pTypeDefToken
[出力] クラスのメタデータ トークンへのポインター。pParentClassId
[出力] 親クラスの ID へのポインター。cNumTypeArgs
[入力] typeArgs 配列のサイズ。pcNumTypeArgs
[出力] 使用できる要素の総数へのポインター。typeArgs
[出力] ClassID 値の配列。各値は、クラスの型引数の ID を表します。 メソッドが戻るとき、使用できる ClassID 値の一部またはすべてが typeArgs に格納されます。
解説
GetClassIDInfo2 メソッドは ICorProfilerInfo::GetClassIDInfo メソッドに似ていますが、GetClassIDInfo2 では、ジェネリック型についての追加情報が取得されます。
プロファイラー コードで ICorProfilerInfo::GetModuleMetaData を呼び出して、指定したモジュールの metadata インターフェイスを取得できます。 pTypeDefToken によって参照される場所に返されるメタデータ トークンを使用すると、クラスのメタデータにアクセスできます。
GetClassIDInfo2 から制御が戻ったら、typeArgs バッファーのサイズが十分で、すべての ClassID 値を格納できたかどうかを確認する必要があります。 これを行うには、pcNumTypeArgs が指している値を cNumTypeArgs パラメーターの値と比較します。 pcNumTypeArgs の指す値が cNumTypeArgs の値より大きい場合は、typeArgs バッファーの割り当てを増やし、cNumTypeArgs を新しい大きいサイズに更新して、GetClassIDInfo2 を再度呼び出します。
別の方法として、最初に長さ 0 の typeArgs バッファーを指定して GetClassIDInfo2 を呼び出すことで、適切なバッファーのサイズを取得することもできます。 その後、typeArgs バッファーのサイズを pcNumTypeArgs に返された値に設定し、GetClassIDInfo2 を再度呼び出します。
この 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