IDebugAdvanced2::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) 。
不返回任何字符串, StringBuffer、 StringBufferSize 和 StringSize 必须全部设置为零。 |
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 的值。 如果 Buffer 为 NULL,则不返回此信息。
[in] BufferSize
指定缓冲区 缓冲区的大小(以字节为单位)。
[out, optional] InfoSize
如果此方法返回S_OK,InfoSize 将接收返回到 Buffer 的符号信息的大小(以字节为单位)。 如果此方法返回 S_FALSE,则提供的缓冲区不够大, 并且 InfoSize 接收所需的缓冲区大小。 如果 InfoSize 为 NULL,则不返回此信息。
[out, optional] StringBuffer
接收请求的字符串。 此字符串的解释取决于 Which 的值。 如果 StringBuffer 为 NULL,则不返回此信息。
[in] StringBufferSize
指定字符串缓冲区 StringBuffer 的大小(以字符为单位)。
[out, optional] StringSize
接收返回给 StringBuffer 的字符串的大小(以字符为单位)。 如果 StringSize 为 NULL,则不返回此信息。
返回值
此方法也可能返回错误值。 有关更多详细信息 ,请参阅返回值 。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
方法成功。 但是,该信息无法容纳在 缓冲区 Buffer 中,或者字符串无法容纳在缓冲区 StringBuffer 中,因此信息或名称被截断。 |
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | dbgeng.h (包括 Dbgeng.h) |