次の方法で共有


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

こちらもご覧ください

IDebugHostSymbols インターフェイス

CreateTypeSignature

CreateTypeSignatureForModuleRange