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 或更高版本

另请参阅

DbgHelp 函数

IMAGEHLP_SYMBOL64

SymFromName

SymInitialize