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


Функция SymGetModuleInfo64 (dbghelp.h)

Извлекает сведения о модуле указанного модуля.

Синтаксис

BOOL IMAGEAPI SymGetModuleInfo64(
  [in]  HANDLE             hProcess,
  [in]  DWORD64            qwAddr,
  [out] PIMAGEHLP_MODULE64 ModuleInfo
);

Параметры

[in] hProcess

Дескриптор процесса, который изначально был передан функции SymInitialize .

[in] qwAddr

Виртуальный адрес, содержащийся в одном из модулей, загруженных функцией SymLoadModule64 .

[out] ModuleInfo

Указатель на структуру IMAGEHLP_MODULE64 . Для элемента SizeOfStruct необходимо задать размер структуры IMAGEHLP_MODULE64 . Недопустимое значение приведет к ошибке.

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

В таблице модулей выполняется поиск модуля, содержащего dwAddr. Модуль находится в зависимости от адреса нагрузки и размера каждого модуля. Если найден допустимый модуль, параметр ModuleInfo заполняется сведениями о модуле.

Размер структуры IMAGEHLP_MODULE64 , используемой этой функцией, изменился с годами. Если вызывается версия DbgHelp.dll, которая старше dbgHelp.h, используемой для компиляции вызывающего кода, эта функция может завершиться ошибкой с кодом ERROR_INVALID_PARAMETER. Чаще всего это происходит при вызове версии системы (%WinDir%\System32\DbgHelp.dll). Код, вызывающий системную версию DbgHelp.dll, должен быть скомпилирован с помощью соответствующего пакета SDK для этого выпуска Windows или пакета SDK для предыдущего выпуска.

Рекомендуемая модель заключается в повторном распространении требуемой версии DbgHelp.dll вместе с вызывающим программным обеспечением. Это позволяет вызывающей объекту использовать наиболее надежные версии DbgHelp.dll а также упростить обновление. Последнюю версию DbgHelp.dll всегда можно найти в пакете Средства отладки для Windows . Как правило, код, скомпилированный для работы со старыми версиями, всегда будет работать с более новыми версиями.

Все функции DbgHelp, такие как эта, являются однопоточными. Таким образом, вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

Чтобы вызвать версию Юникода этой функции, определите DBGHELP_TRANSLATE_TCHAR. SymGetModuleInfoW64 определяется следующим образом в DbgHelp.h.


BOOL
IMAGEAPI
SymGetModuleInfoW64(
    __in HANDLE hProcess,
    __in DWORD64 qwAddr,
    __out PIMAGEHLP_MODULEW64 ModuleInfo
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetModuleInfo64   SymGetModuleInfoW64
#endif

Эта функция заменяет функцию SymGetModuleInfo . Дополнительные сведения см. в разделе Обновленная поддержка платформы. SymGetModuleInfo определяется в DbgHelp.h следующим образом.

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetModuleInfo   SymGetModuleInfo64
#define SymGetModuleInfoW  SymGetModuleInfoW64
#else
BOOL
IMAGEAPI
SymGetModuleInfo(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULE ModuleInfo
    );

BOOL
IMAGEAPI
SymGetModuleInfoW(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULEW ModuleInfo
    );
#endif

Требования

Требование Значение
Целевая платформа Windows
Header dbghelp.h
Библиотека Dbghelp.lib
DLL Dbghelp.dll
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

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

Функции DbgHelp

IMAGEHLP_MODULE64

SymInitialize

SymLoadModule64