IDebugAdvanced3::GetSymbolInformation 方法 (dbgeng.h)

GetSymbolInformation 方法返回有关符号的指定信息。

语法

HRESULT GetSymbolInformation(
  [in]            ULONG   Which,
  [in]            ULONG64 Arg64,
  [in]            ULONG   Arg32,
  [out, optional] PVOID   Buffer,
  [in]            ULONG   BufferSize,
  [out, optional] PULONG  InfoSize,
  [out, optional] PSTR    StringBuffer,
  [in]            ULONG   StringBufferSize,
  [out, optional] PULONG  StringSize
);

参数

[in] Which

指定要返回的信息片段。 可以采用下表中的值之一。

返回的信息
DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE 返回指定断点的源代码文件名和行号。 行号作为 ULONG 返回到 Buffer 。 文件名将返回到 StringBuffer
DEBUG_SYMINFO_IMAGEHLP_MODULEW64 返回描述指定模块的 IMAGEHLP_MODULEW64 结构。 有关此结构的详细信息,请参阅调试帮助库文档中的 IMAGEHLP_MODULE64 主题 (dbghelp.chm) 。

不返回任何字符串, StringBufferStringBufferSizeStringSize 必须全部设置为零。

DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE 返回由内存中的位置和 PDB 标记类型指定的符号的 Unicode 名称。 该名称将返回到 Buffer。 不使用 StringBuffer
DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS 返回指定模块中具有指定 PDB 标记类型的符号的符号名称和偏移量的列表。 偏移量作为 ULONG 值的数组返回到 Buffer。 名称的返回顺序与 StringBuffer 的偏移量相同。 某些名称可能包含嵌入的零,因为批注可以具有多部分名称;因此,每个名称都以两个空字符结尾。

[in] Arg64

指定 64 位参数。 此参数具有以下解释,具体取决于 “哪个”的值:

DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE

已忽略。

DEBUG_SYMINFO_IMAGEHLP_MODULEW64

正在请求其说明的模块的基址。

DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE

指定目标内存中正在请求其名称的符号的地址。

DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS

指定请求其符号的模块。 Arg64 是模块内存分配中的一个位置。

[in] Arg32

指定 32 位参数。 此参数具有以下解释,具体取决于 “哪个”的值:

DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE

所需断点的引擎断点 ID。

DEBUG_SYMINFO_IMAGEHLP_MODULEW64

设置为零。

DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE

符号的 PDB 分类。 Arg32 必须是 Dbghelp.h 中定义的 SymTagEnum 枚举中的值之一。 有关详细信息,请参阅 PDB 文档。

DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS

符号的 PDB 分类。 Arg32 必须是 Dbghelp.h 中定义的 SymTagEnum 枚举中的值之一。 有关详细信息,请参阅 PDB 文档。

[out, optional] Buffer

接收请求的符号信息。 返回的数据类型取决于 Which 的值。 如果 BufferNULL,则不返回此信息。

[in] BufferSize

指定缓冲区 缓冲区的大小(以字节为单位)。

[out, optional] InfoSize

如果此方法返回S_OK,InfoSize 将接收返回到 Buffer 的符号信息的大小(以字节为单位)。 如果此方法返回 S_FALSE,则提供的缓冲区不够大, 并且 InfoSize 接收所需的缓冲区大小。 如果 InfoSizeNULL,则不返回此信息。

[out, optional] StringBuffer

接收请求的字符串。 此字符串的解释取决于 Which 的值。 如果 StringBufferNULL,则不返回此信息。

[in] StringBufferSize

指定字符串缓冲区 StringBuffer 的大小(以字符为单位)。

[out, optional] StringSize

接收返回给 StringBuffer 的字符串的大小(以字符为单位)。 如果 StringSizeNULL,则不返回此信息。

返回值

此方法也可能返回错误值。 有关更多详细信息 ,请参阅返回值

返回代码 说明
S_OK
方法成功。
S_FALSE
方法成功。 但是,该信息无法容纳在 缓冲区 Buffer 中,或者字符串无法容纳在缓冲区 StringBuffer 中,因此信息或名称被截断。

要求

要求
目标平台 桌面
标头 dbgeng.h (包括 Dbgeng.h)