SymEnumSymbolsW 函数 (dbghelp.h)

枚举进程中的所有符号。

语法

BOOL IMAGEAPI SymEnumSymbolsW(
  [in]           HANDLE                          hProcess,
  [in]           ULONG64                         BaseOfDll,
  [in, optional] PCWSTR                          Mask,
  [in]           PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
  [in, optional] PVOID                           UserContext
);

参数

[in] hProcess

进程的句柄。 此句柄必须以前传递给 SymInitialize 函数。

[in] BaseOfDll

模块的基址。 如果此值为零,并且 Mask 包含感叹号 (!) ,则函数将跨模块进行查找。 如果此值为零并且 Mask 不包含感叹号,则函数将使用 SymSetContext 函数建立的范围。

[in, optional] Mask

一个通配符字符串,指示要枚举的符号的名称。 文本可以选择性地包含通配符“*”和“?”。

若要指定特定模块或模块集,请以指定模块的通配符字符串开头文本,后跟感叹号。 指定模块时,将忽略 BaseOfDll

含义
Foo
如果 BaseOfDll 不为零,则 SymEnumSymbols 将查找名为“foo”的全局符号。

如果 BaseOfDll 为零,则 SymEnumSymbols 将在最近调用 SymSetContext 函数所建立的范围内查找名为“foo”的本地符号。

Foo?
如果 BaseOfDll 不为零,则 SymEnumSymbols 将查找一个全局符号,该符号以“foo”开头,然后包含一个额外的字符,例如“傻瓜”和“foot”。

如果 BaseOfDll 为零,则 SymEnumSymbols 将查找以“foo”开头并包含一个额外字符的符号,例如“傻瓜”和“foot”。 搜索将在最近一次调用 SymSetContext 函数所建立的范围内。

foo*!bar
SymEnumSymbols 将在每个加载的模块中查找以文本“foo”开头的符号“bar”。 它可以找到诸如“foot!bar”、“footlocker!bar”和“fool!bar”等匹配项。
*!*
SymEnumSymbols 将枚举每个已加载模块中的每个符号。

[in] EnumSymbolsCallback

接收符号信息的 SymEnumSymbolsProc 回调函数。

[in, optional] UserContext

传递给回调函数的用户定义值,或 NULL。 应用程序通常使用此参数将指针传递给为回调函数提供上下文的数据结构。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError

注解

所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

若要调用此函数的 Unicode 版本,请定义 DBGHELP_TRANSLATE_TCHAR

示例

有关示例,请参阅枚举符号

注意

dbghelp.h 标头将 SymEnumSymbols 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
目标平台 Windows
标头 dbghelp.h
Library Dbghelp.lib
DLL Dbghelp.dll
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

DbgHelp 函数

SymEnumSymbolsProc