ICorProfilerInfo::GetModuleInfo メソッド

モジュール ID を指定して、モジュールのファイル名とモジュールの親アセンブリの ID を取得します。

構文

HRESULT GetModuleInfo(  
    [in]  ModuleID   moduleId,  
    [out] LPCBYTE    *ppBaseLoadAddress,  
    [in]  ULONG      cchName,  
    [out] ULONG      *pcchName,  
    [out, size_is(cchName), length_is(*pcchName)]  
          WCHAR      szName[] ,  
    [out] AssemblyID *pAssemblyId);  

パラメーター

moduleId
[in] 情報が取得されるモジュールの ID。

ppBaseLoadAddress
[out] モジュールが読み込まれるベース アドレス。

cchName
[in] szName 戻りバッファーの長さ (文字単位)。

pcchName
[out] 返されるモジュールのファイル名の文字列長の合計へのポインター。

szName
[out] 呼び出し元が提供したワイド文字バッファー。 メソッドから制御が戻るとき、このバッファーにモジュールのファイル名が格納されます。

pAssemblyId
[out] モジュールの親アセンブリ ID へのポインター。

解説

動的モジュールの場合、szName パラメーターは空の文字列、ベース アドレスは 0 (ゼロ) になります。

モジュールの ID が見つかるとすぐに、GetModuleInfo メソッドが呼び出される可能性がありますが、プロファイラーが ICorProfilerCallback::ModuleAttachedToAssembly コールバックを受け取るまで親アセンブリの ID は使用できません。

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

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

必要条件

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

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

ライブラリ: CorGuids.lib

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

関連項目