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
[入力] 情報が取得されるモジュールの ID。ppBaseLoadAddress
[出力] モジュールが読み込まれるベース アドレス。cchName
[入力] szName 戻りバッファーの長さ (文字単位)。pcchName
[出力] 返されるモジュールのファイル名の文字列長の合計へのポインター。szName
[出力] 呼び出し元が提供したワイド文字バッファー。 メソッドから制御が戻るとき、このバッファーにモジュールのファイル名が格納されます。pAssemblyId
[出力] モジュールの親アセンブリ ID へのポインター。
解説
動的モジュールの場合、szName パラメーターは空の文字列、ベース アドレスは 0 (ゼロ) になります。
モジュールの ID が見つかるとすぐに、GetModuleInfo メソッドが呼び出される可能性がありますが、プロファイラーが ICorProfilerCallback::ModuleAttachedToAssembly コールバックを受け取るまで親アセンブリの ID は使用できません。
GetModuleInfo から制御が戻ったら、szName バッファーのサイズが十分で、モジュールのファイル名全体を格納できたかどうかを確認する必要があります。 これを行うには、pcchName が指している値を cchName パラメーターの値と比較します。 pcchName が指している値が cchName の値より大きい場合は、szName バッファーの割り当てを増やし、cchName を大きくなった新しいサイズに更新した後、GetModuleInfo を再度呼び出します。
別の方法として、最初に GetModuleInfo を長さゼロの szName バッファーで呼び出して、適切なバッファーのサイズを取得します。 その後、バッファーのサイズを pcchName で返された値に設定し、GetModuleInfo を再度呼び出します。
この 2 つのアプローチの詳細については、「呼び出し元が割り当てたバッファー」を参照してください。
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー: CorProf.idl、CorProf.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0