回调函数实现将格式化字符串打印到调试器命令窗口的功能。
wdbgexts.h 标头声明一个宏,打印格式化字符串的 dprintf。 它的工作方式类似于 c 语言例程 printf。
语法
PWINDBG_OUTPUT_ROUTINE PwindbgOutputRoutine;
void PwindbgOutputRoutine(
[in] PCSTR lpFormat,
[in] ... unnamedParam2
)
{...}
参数
[in] lpFormat
指定格式字符串,如 printf中所示。 一般情况下,转换字符的工作方式与 C 中完全相同。对于浮点转换字符,除非使用 l 修饰符,否则 64 位参数将解释为 32 位浮点数。
支持 %p 转换字符,但它表示目标虚拟地址空间中的指针。 它可能没有任何修饰符,并且它使用调试器的内部地址格式。 支持以下其他转换字符:
字符 | 参数类型 | 论点 | 打印的文本 |
---|---|---|---|
%p | ULONG64 | 目标虚拟地址空间中的指针 | 指针的值。 |
%N | DWORD_PTR(32 位或 64 位,具体取决于 主机的 体系结构) | 主机虚拟地址空间中的指针 | 指针的值。 (这相当于标准 C %p 字符。 |
%I | ULONG64 | 任何 64 位值 | 指定的值。 如果此地址大于0xFFFFFFFF则将其打印为 64 位地址,否则将其打印为 32 位地址。 |
%ma | ULONG64 | 目标虚拟地址空间中以 NULL 结尾的 ASCII 字符串的地址 | 指定的字符串。 |
%mu | ULONG64 | 目标虚拟地址空间中以 NULL 结尾的 Unicode 字符串的地址 | 指定的字符串。 |
%msa | ULONG64 | 目标虚拟地址空间中ANSI_STRING结构的地址 | 指定的字符串。 |
%msu | ULONG64 | 目标虚拟地址空间中UNICODE_STRING结构的地址 | 指定的字符串。 |
%y | ULONG64 | 目标虚拟地址空间中的调试器符号的地址 | 包含指定符号的名称(如果有)的字符串。 |
%ly | ULONG64 | 目标虚拟地址空间中的调试器符号的地址 | 包含指定符号的名称(如果有)以及任何可用的源行信息的字符串。 |
[in] unnamedParam2
[参数] - 指定格式字符串的参数,如 printf中所示。 指定的参数数应与 FormatString中的转换字符数匹配。 每个参数都是由默认表达式计算器(MASM 或 C++)计算的表达式。 有关详细信息,请参阅 数值表达式语法。
返回值
没有
言论
生成非常大的输出字符串时,可能会达到调试器引擎或作系统的限制。 例如,某些版本的调试器引擎对单个输出具有 16K 个字符的限制。 如果发现非常大的输出被截断,则可能需要将输出拆分为多个请求。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | wdbgexts.h(包括 Wdbgexts.h、Dbgeng.h) |