ICorProfilerInfo3::GetModuleInfo2 メソッド

モジュール ID を指定して、モジュールのファイル名、モジュールの親アセンブリの ID、およびモジュールのプロパティを示すビットマスクを返します。

構文

HRESULT GetModuleInfo2(  
    [in]  ModuleID   moduleId,  
    [out] LPCBYTE    *ppBaseLoadAddress,  
    [in]  ULONG      cchName,  
    [out] ULONG      *pcchName,  
    [out, annotation("__out_ecount_part(cchName, *pcchName)")]  
          WCHAR      szName[] ,  
    [out] AssemblyID *pAssemblyId);  
    [out] DWORD                 *pdwModuleFlags);  

パラメーター

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

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

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

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

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

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

pdwModuleFlags
[out] モジュールのプロパティを指定する COR_PRF_MODULE_FLAGS 列挙型の値のビットマスク。

解説

動的モジュールの場合、szName パラメーターはモジュールのメタデータ名になり、ベース アドレスは 0 (ゼロ) になります。 メタデータ名は、メタデータ内の Module テーブルの Name 列の値です。 また、この値は、マネージド コードに対しては Module.ScopeName プロパティとして、アンマネージド メタデータ クライアント コードに対しては IMetaDataImport::GetScopeProps メソッドの szName パラメーターとして公開されます。

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

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

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

必要条件

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

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

ライブラリ: CorGuids.lib

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

関連項目