次の方法で共有


ICorProfilerInfo2::GetClassIDInfo2 メソッド

更新 : 2007 年 11 月

指定したジェネリック クラスの親モジュールとメタデータ トークン、その親クラスの 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

ライブラリ : CorGuids.lib

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICorProfilerInfo

ICorProfilerInfo2

その他の技術情報

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

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