Share via


Méthode IDebugHostSymbols ::FindModuleByName (dbgmodel.h)

La méthode FindModuleByName examine le contexte d’hôte donné et recherche un module qui a le nom spécifié et lui retourne une interface. Il est légal de rechercher le module par nom avec ou sans l’extension de fichier.

Syntaxe

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

Paramètres

context

Ce contexte hôte sera recherché pour un module chargé correspondant au nom donné.

moduleName

Nom du module à rechercher. Le nom peut être spécifié avec ou sans extension de fichier.

module

Si le module est trouvé, une interface vers le module est retournée ici.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

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

Différences dans la correspondance des modules de symboles dans FindModuleByName, CreateTypeSignature et CreateTypeSignatureForModuleRange

FindModuleByName permet au nom du module passé d’être soit le nom réel de l’image du module, par exemple My Module.dll, soit celui par lequel vous pouvez le référencer dans le moteur de débogueur (par exemple, MyModule ou MyModule_<hex_base>).

L’appel de CreateTypeSignatureForModuleRange et le passage d’un nom/nullptr/nullptr crée une signature qui correspond à n’importe quel module correspondant au nom de n’importe quelle version.

Le nom du module passé aux fonctions CreateTypeSignature n’accepte que le nom réel de l’image du module (par exemple, MyModule.dll).

L’appel de FindModuleByName, puis de CreateTypeSignature avec ce module crée une signature qui correspondra uniquement au instance particulier du module qui lui est passé. S’il existe deux copies d’un module chargé (par exemple, ntdll dans un processus 32 bits s’exécutant sur Windows 64 bits), il ne correspondrait qu’à la instance spécifique passée. Elle ne correspondrait plus non plus si cette DLL était déchargée et rechargée. La signature est associée à un instance spécifique d’un module connu par le débogueur.

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostSymbols

CreateTypeSignature

CreateTypeSignatureForModuleRange