Функция SymGetModuleBase (dbghelp.h)
Извлекает базовый адрес модуля, содержащего указанный адрес.
Синтаксис
DWORD IMAGEAPI SymGetModuleBase(
[in] HANDLE hProcess,
[in] DWORD dwAddr
);
Параметры
[in] hProcess
Дескриптор процесса, который изначально был передан функции SymInitialize .
[in] dwAddr
Виртуальный адрес, содержащийся в одном из модулей, загруженных функцией SymLoadModule64 .
Возвращаемое значение
Если функция выполняется успешно, возвращаемым значением будет ненулевой виртуальный адрес. Значение — это базовый адрес модуля, содержащего адрес, указанный параметром dwAddr .
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.
Комментарии
В таблице модулей выполняется поиск модуля, содержащего dwAddr. Модуль находится в зависимости от адреса нагрузки и размера каждого модуля.
Все функции DbgHelp, такие как эта, являются однопоточными. Таким образом, вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.
Эта функция заменяет функцию SymGetModuleBase . Дополнительные сведения см. в разделе Обновленная поддержка платформы. SymGetModuleBase определяется следующим образом в DbgHelp.h.
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetModuleBase SymGetModuleBase64
#else
DWORD
IMAGEAPI
SymGetModuleBase(
__in HANDLE hProcess,
__in DWORD dwAddr
);
#endif
Требования
Целевая платформа | Windows |
Header | dbghelp.h |
Библиотека | Dbghelp.lib |
DLL | Dbghelp.dll |
Распространяемые компоненты | DbgHelp.dll 5.1 или более поздней версии |