Freigeben über


IDebugHostSymbols::FindModuleByName-Methode (dbgmodel.h)

Die FindModuleByName-Methode durchsieht den angegebenen Hostkontext, sucht nach einem Modul, das den angegebenen Namen hat, und gibt eine Schnittstelle zurück. Es ist zulässig, nach dem Modul anhand des Namens mit oder ohne Dateierweiterung zu suchen.

Syntax

HRESULT FindModuleByName(
  IDebugHostContext *context,
  PCWSTR            moduleName,
  IDebugHostModule  **module
);

Parameter

context

Dieser Hostkontext wird nach einem geladenen Modul gesucht, das dem angegebenen Namen entspricht.

moduleName

Der Name des moduls, nach dem gesucht werden soll. Der Name kann mit oder ohne Dateierweiterung angegeben werden.

module

Wenn das Modul gefunden wird, wird hier eine Schnittstelle zum Modul zurückgegeben.

Rückgabewert

Diese Methode gibt HRESULT zurück, das den Erfolg oder Fehler angibt.

Hinweise

Beispielcode

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"
    }
}

Unterschiede beim Abgleich von Symbolmodulen in FindModuleByName, CreateTypeSignature und CreateTypeSignatureForModuleRange

FindModuleByName lässt zu, dass der übergebene Modulname entweder der reale Imagename des Moduls ist, z. B. My Module.dll, oder der Name, auf den Sie in der Debugger-Engine verweisen können (z. B. MyModule oder MyModule_<hex_base>).

Wenn Sie CreateTypeSignatureForModuleRange aufrufen und einen Namen/nullptr/nullptr übergeben, wird eine Signatur erstellt, die mit jedem Modul übereinstimmt, das mit diesem Namen einer beliebigen Version übereinstimmt.

Der an die CreateTypeSignature-Funktionen übergebene Modulname akzeptiert nur den tatsächlichen Bildnamen des Moduls (z. B. MyModule.dll).

Wenn Sie FindModuleByName und dann CreateTypeSignature mit diesem Modul aufrufen, wird eine Signatur erstellt, die nur der bestimmten instance des moduls entspricht, das an dieses Modul übergeben wird. Wenn zwei Kopien eines Moduls geladen werden (z. B. ntdll in einem 32-Bit-Prozess, der unter 64-Bit-Windows ausgeführt wird), entspricht es nur der spezifischen übergebenen instance. Es würde auch nicht mehr übereinstimmen, wenn diese DLL entladen und neu geladen würde. Die Signatur ist einer bestimmten instance eines Moduls zugeordnet, wie vom Debugger bekannt.

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostSymbols-Schnittstelle

CreateTypeSignature

CreateTypeSignatureForModuleRange