SymGetSymFromName 函数 (dbghelp.h)
查找指定名称的符号。
注意 提供此函数仅用于兼容性。 应用程序应使用 SymFromName。
语法
BOOL IMAGEAPI SymGetSymFromName(
[in] HANDLE hProcess,
[in] PCSTR Name,
[in, out] PIMAGEHLP_SYMBOL Symbol
);
参数
[in] hProcess
最初传递给 SymInitialize 函数的进程句柄。
[in] Name
要为其定位符号的符号名称。
[in, out] Symbol
指向 IMAGEHLP_SYMBOL64 结构的指针。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError。
注解
SymGetSymFromName64 函数用于查找指定名称的符号。 该名称可以包含一个模块前缀,该前缀将符号搜索隔离到单个模块的符号表中。
模块前缀采用“module!”格式。 “!” 字符是模块名称和符号名称之间的分隔符。 如果没有模块前缀,则从加载的第一个模块开始,以线性方式在每个模块的符号表上执行搜索。
最好使用模块前缀,原因有两个。 首先,符号搜索的发生速度要快得多。 其次,启用延迟符号加载时,搜索会导致为每个搜索的模块加载符号。 找到符号后,符号信息将复制到调用方提供的 符号 缓冲区中。 调用方必须在调用 SymGetSymFromName64 之前正确分配符号缓冲区并在 IMAGEHLP_SYMBOL64 结构中填充所需的参数。
所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。
此函数取代 SymGetSymFromName 函数。 有关详细信息,请参阅 更新的平台支持。 SymGetSymFromName 在 Dbghelp.h 中定义如下。
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetSymFromName SymGetSymFromName64
#else
BOOL
IMAGEAPI
SymGetSymFromName(
__in HANDLE hProcess,
__in PCSTR Name,
__inout PIMAGEHLP_SYMBOL Symbol
);
#endif
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | dbghelp.h |
Library | Dbghelp.lib |
DLL | Dbghelp.dll |
可再发行组件 | DbgHelp.dll 5.1 或更高版本 |