dbghelp.h) (SYMBOL_INFO 结构

包含符号信息。

语法

typedef struct _SYMBOL_INFO {
  ULONG   SizeOfStruct;
  ULONG   TypeIndex;
  ULONG64 Reserved[2];
  ULONG   Index;
  ULONG   Size;
  ULONG64 ModBase;
  ULONG   Flags;
  ULONG64 Value;
  ULONG64 Address;
  ULONG   Register;
  ULONG   Scope;
  ULONG   Tag;
  ULONG   NameLen;
  ULONG   MaxNameLen;
  CHAR    Name[1];
} SYMBOL_INFO, *PSYMBOL_INFO;

成员

SizeOfStruct

结构大小(以字节为单位)。 此成员必须设置为 sizeof(SYMBOL_INFO)。 请注意,数据的总大小为 SizeOfStruct + (MaxNameLen - 1) * sizeof(TCHAR)。 减去一个字符的原因是名称中的第一个字符在结构的大小中被考虑。

TypeIndex

一个唯一值,该值标识描述符号的类型数据。 此值不会在会话之间保留。

Reserved[2]

此成员保留供系统使用。

Index

符号的唯一值。 与符号关联的值不能保证每次运行进程时都相同。

对于 PDB 符号,除非按名称或地址通过搜索来枚举或检索符号,否则不会生成符号的索引值。 加载符号时,将生成所有 CodeView 和 COFF 符号的索引值。

Size

如果符号是位域成员) ,则符号大小(以字节 (或位为单位)。

仅当模块符号来自 pdb 文件时,此值才有意义;否则,此值通常为零,应忽略。

ModBase

包含 符号的模块的基址。

Flags

此成员可以是以下一个或多个值。

含义
SYMFLAG_CLR_TOKEN
0x00040000
符号是 CLR 标记。
SYMFLAG_CONSTANT
0x00000100
符号是常量。
SYMFLAG_EXPORT
0x00000200
符号来自导出表。
SYMFLAG_FORWARDER
0x00000400
符号是转发器。
SYMFLAG_FRAMEREL
0x00000020
偏移量是相对于帧的。
SYMFLAG_FUNCTION
0x00000800
符号是一个已知函数。
SYMFLAG_ILREL
0x00010000
符号地址是相对于中间语言块开头的偏移量。 这仅适用于托管代码。
SYMFLAG_LOCAL
0x00000080
符号是局部变量。
SYMFLAG_METADATA
0x00020000
符号是托管元数据。
SYMFLAG_PARAMETER
0x00000040
符号是参数。
SYMFLAG_REGISTER
0x00000008
符号是寄存器。 使用 Register 成员。
SYMFLAG_REGREL
0x00000010
偏移量是寄存器相对的。
SYMFLAG_SLOT
0x00008000
符号是托管代码槽。
SYMFLAG_THUNK
0x00002000
符号是 thunk。
SYMFLAG_TLSREL
0x00004000
符号是 TLS 数据区域的偏移量。
SYMFLAG_VALUEPRESENT
0x00000001
使用 Value 成员。
SYMFLAG_VIRTUAL
0x00001000
符号是由 SymAddSymbol 函数创建的虚拟符号。

Value

常量的值。

Address

符号开头的虚拟地址。

Register

寄存器。

Scope

DIA 范围。 有关详细信息,请参阅 Visual Studio 文档中的 调试接口访问 SDK 。 (此资源可能在某些语言中不可用

和 countries.)

Tag

PDB 分类。 这些值在 Dbghelp.h 中的 SymTagEnum 枚举类型中定义。

NameLen

名称的长度(以字符为单位),不包括 null 终止符。

MaxNameLen

名称缓冲区的大小(以字符为单位)。 如果此成员为 0,则不使用 Name 成员。

Name[1]

符号的名称。 如果将 SYMOPT_UNDNAME 选项与 SymSetOptions 函数一起使用,则可以取消修饰该名称。

要求

要求
Header dbghelp.h
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

SymEnumSymbolsProc

SymFromAddr

SymFromName

SymGetTypeFromName