次の方法で共有


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
[in] 情報が取得されるクラスの ID。

pModuleId
[out] 指定したクラスのオープン ジェネリック定義の親モジュールの ID へのポインター。

pTypeDefToken
[out] 指定したクラスのオープン ジェネリック定義のメタデータ トークンへのポインター。

pParentClassId
[out] 親クラスの ID へのポインター。

cNumTypeArgs
[in] typeArgs 配列のサイズ。

pcNumTypeArgs
[out] 使用できる要素の総数へのポインター。

typeArgs
[out] ClassID 値の配列。各値は、クラスの型引数の ID を表します。 このメソッドが戻るとき、使用できる ClassID 値の一部またはすべてが typeArgs に格納されます。

解説

GetClassIDInfo2 メソッドは ICorProfilerInfo::GetClassIDInfo メソッドに似ていますが、GetClassIDInfo2 では、ジェネリック型についての追加情報が取得されます。

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

GetClassIDInfo2 から制御が戻ったら、typeArgs バッファーのサイズが十分で、すべての ClassID 値を格納できたかどうかを確認する必要があります。 これを行うには、pcNumTypeArgs が指している値を cNumTypeArgs パラメーターの値と比較します。 pcNumTypeArgs が指している値が cNumTypeArgs の値より大きい場合は、typeArgs バッファーの割り当てを増やし、cNumTypeArgs を新しい大きいサイズに更新して、GetClassIDInfo2 を再度呼び出します。

別の方法として、最初に GetClassIDInfo2 を長さゼロの typeArgs バッファーで呼び出して、適切なバッファーのサイズを取得します。 その後、typeArgs バッファーのサイズを pcNumTypeArgs に返された値に設定し、GetClassIDInfo2 を再度呼び出します。

必要条件

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

ヘッダー : CorProf.idl、CorProf.h

ライブラリ: CorGuids.lib

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

関連項目