symSearch 函数 (dbghelp.h)

搜索满足指定条件的 PDB 符号。

语法

BOOL IMAGEAPI SymSearch(
  [in]           HANDLE                         hProcess,
  [in]           ULONG64                        BaseOfDll,
  [in, optional] DWORD                          Index,
  [in, optional] DWORD                          SymTag,
  [in, optional] PCSTR                          Mask,
  [in, optional] DWORD64                        Address,
  [in]           PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
  [in, optional] PVOID                          UserContext,
  [in]           DWORD                          Options
);

参数

[in] hProcess

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

[in] BaseOfDll

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

[in, optional] Index

符号的唯一值。

[in, optional] SymTag

PDB 分类。 这些值在 Dbghelp.h 中的 SymTagEnum 枚举类型中定义。 有关说明,请参阅 PDB 文档。

[in, optional] Mask

一个通配符表达式,指示要枚举的符号的名称。 若要指定模块名称,请使用 !mod 语法。

[in, optional] Address

符号的地址。

[in] EnumSymbolsCallback

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

[in, optional] UserContext

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

[in] Options

控制此函数行为的选项。

Value 含义
SYMSEARCH_ALLITEMS
0x08
在 .pdb 文件中包含所有符号和其他数据。

DbgHelp 6.6 及更早版本: 不支持此值。

SYMSEARCH_GLOBALSONLY
0x04
仅搜索全局符号。
SYMSEARCH_MASKOBJS
0x01
仅限内部使用。
SYMSEARCH_RECURSE
0x02
从顶部递归以查找所有符号。

返回值

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

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

备注

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

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

要求

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

请参阅

DbgHelp 函数

SymEnumSymbolsProc