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
[入力] 情報が取得されるモジュールの ID。ppBaseLoadAddress
[出力] モジュールが読み込まれるベース アドレス。cchName
[入力] szName 戻りバッファーの長さ (文字単位)。pcchName
[出力] 返されるモジュールのファイル名の文字列長の合計へのポインター。szName
[出力] 呼び出し元が提供したワイド文字バッファー。 メソッドから制御が戻るとき、このバッファーにモジュールのファイル名が格納されます。pAssemblyId
[出力] モジュールの親アセンブリ ID へのポインター。pdwModuleFlags
[出力] モジュールのプロパティを指定する 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 を再度呼び出します。
この 2 つの方法の詳細については、「API メソッド規則のプロファイリング」の「呼び出し元によって割り当てられるバッファー」を参照してください。
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー: CorProf.idl、CorProf.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 4