IDebugHostSymbols::FindModuleByName メソッド (dbgmodel.h)
FindModuleByName メソッドは、指定されたホスト コンテキストを調べるし、指定した名前を持つモジュールを検索し、それにインターフェイスを返します。 ファイル拡張子の有無にかかわらず、名前でモジュールを検索することは有効です。
構文
HRESULT FindModuleByName(
IDebugHostContext *context,
PCWSTR moduleName,
IDebugHostModule **module
);
パラメーター
context
このホスト コンテキストは、指定された名前と一致する読み込まれたモジュールを検索します。
moduleName
検索するモジュールの名前。 名前は、ファイル拡張子の有無にかかわらず指定できます。
module
モジュールが見つかった場合は、モジュールへのインターフェイスがここに返されます。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
サンプル コード
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
// Find the "notepad.exe" module in the current UI context (process)
// of the debug host:
ComPtr<IDebugHostModule> spModule;
if (SUCCEEDED(spSym->FindModuleByName(USE_CURRENT_HOST_CONTEXT,
L"notepad.exe",
&spModule)))
{
// spModule is the module "notepad.exe"
}
}
FindModuleByName、CreateTypeSignature、CreateTypeSignatureForModuleRange でのシンボル モジュールの一致の違い
FindModuleByName を使用すると、渡されたモジュール名を、モジュールの実際のイメージ名 (例: My Module.dll) またはデバッガー エンジンで参照できる名前 (たとえば、MyModule または MyModule_<hex_base>) にすることができます。
CreateTypeSignatureForModuleRange を呼び出し、name/nullptr/nullptr を渡すと、任意のバージョンのその名前に一致するモジュールと一致するシグネチャが作成されます。
CreateTypeSignature 関数に渡されるモジュール名は、モジュールの実際のイメージ名 (例: MyModule.dll) のみを受け入れます。
FindModuleByName を呼び出し、そのモジュールで CreateTypeSignature を呼び出すと、渡されたモジュールの特定のインスタンスにのみ一致する署名が作成されます。 読み込まれるモジュールのコピーが 2 つある場合 (たとえば、64 ビット Windows で実行されている 32 ビット プロセスの ntdll) は、渡された特定のインスタンスにのみ一致します。 また、その DLL がアンロードされ、再読み込みされた場合も一致しなくなります。 シグネチャは、デバッガーによって知られているモジュールの特定のインスタンスに関連付けられます。
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |