Функция SymGetModuleInfoW64 (dbghelp.h)
Извлекает сведения о модуле указанного модуля.
Синтаксис
BOOL IMAGEAPI SymGetModuleInfoW64(
[in] HANDLE hProcess,
[in] DWORD64 qwAddr,
[out] PIMAGEHLP_MODULEW64 ModuleInfo
);
Параметры
[in] hProcess
Дескриптор процесса, который изначально был передан функции SymInitialize .
[in] qwAddr
Виртуальный адрес, содержащийся в одном из модулей, загруженных функцией SymLoadModule64 .
[out] ModuleInfo
Указатель на структуру IMAGEHLP_MODULEW64 . Для элемента SizeOfStruct необходимо задать размер структуры IMAGEHLP_MODULEW64 . Недопустимое значение приведет к ошибке.
Возвращаемое значение
Если функция выполнена успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.
Комментарии
В таблице модулей выполняется поиск модуля, содержащего dwAddr. Модуль находится в зависимости от адреса нагрузки и размера каждого модуля. Если найден допустимый модуль, параметр ModuleInfo заполняется сведениями о модуле.
Размер IMAGEHLP_MODULEW64 структуры, используемой этой функцией, изменялся с годами. Если вызывается версия 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 или более поздней версии |