Поделиться через


Метод 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 и передача имени/nullptr/nullptr создаст сигнатуру, которая будет соответствовать любому модулю, соответствующему имени любой версии.

Имя модуля, передаваемое функциям CreateTypeSignature , будет принимать только имя реального образа модуля (например, MyModule.dll).

Вызов FindModuleByName и CreateTypeSignature с этим модулем создаст сигнатуру, которая будет соответствовать только конкретному экземпляру модуля, переданному ему. Если загружены две копии модуля (например, ntdll в 32-разрядном процессе, работающем в 64-разрядной версии Windows), он будет соответствовать только конкретному переданном экземпляру. Она также не будет совпадать, если эта библиотека DLL была выгружена и перезагружена. Сигнатура связана с определенным экземпляром модуля, известного отладчиком.

Требования

Требование Значение
Заголовок dbgmodel.h

См. также раздел

Интерфейс IDebugHostSymbols

CreateTypeSignature

CreateTypeSignatureForModuleRange