SymEnumerateModules 函数 (dbghelp.h)
枚举由 SymLoadModule64 或 SymLoadModuleEx 函数为进程加载的所有模块。
语法
BOOL IMAGEAPI SymEnumerateModules(
[in] HANDLE hProcess,
[in] PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
[in, optional] PVOID UserContext
);
参数
[in] hProcess
最初传递给 SymInitialize 函数的进程句柄。
[in] EnumModulesCallback
枚举回调函数。 每个模块调用一次此函数。 有关详细信息,请参阅 SymEnumerateModulesProc64。
[in, optional] UserContext
用户定义的值或 NULL。 此值只是传递给回调函数。 通常,应用程序使用此参数将指针传递给数据结构,该数据结构允许回调函数建立某种类型的上下文。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError。
注解
SymEnumerateModules64 函数枚举 SymLoadModule64 为进程加载的所有模块,即使符号加载延迟也是如此。 枚举回调函数为每个模块调用一次,并传递模块信息。
所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。
若要调用此函数的 Unicode 版本,请定义 DBGHELP_TRANSLATE_TCHAR。 SymEnumerateModulesW64 在 Dbghelp.h 中定义如下。
BOOL
IMAGEAPI
SymEnumerateModulesW64(
__in HANDLE hProcess,
__in PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback,
__in_opt PVOID UserContext
);
#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymEnumerateModules64 SymEnumerateModulesW64
#endif
此函数取代 SymEnumerateModules 函数。 有关详细信息,请参阅 更新的平台支持。 SymEnumerateModules 在 Dbghelp.h 中定义如下。
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymEnumerateModules SymEnumerateModules64
#else
BOOL
IMAGEAPI
SymEnumerateModules(
__in HANDLE hProcess,
__in PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
__in_opt PVOID UserContext
);
#endif
示例
有关示例,请参阅枚举符号模块。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | dbghelp.h |
Library | Dbghelp.lib |
DLL | Dbghelp.dll |
可再发行组件 | DbgHelp.dll 5.1 或更高版本 |