PWINDBG_OUTPUT_ROUTINE回调函数 (wdbgexts.h)

回调函数实现将格式化字符串打印到调试器命令窗口的功能。

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

[arguments] - 指定格式字符串的参数,如 printf 中所示。 指定的参数数应与 FormatString 中的转换字符数匹配。 每个参数都是一个表达式,由默认表达式计算器 (MASM 或 C++) 计算。 有关详细信息,请参阅 数值表达式语法

返回值

备注

生成非常大的输出字符串时,可能会达到调试器引擎或操作系统的限制。 例如,某些版本的调试器引擎对单个输出的字符数限制为 16K。 如果发现非常大的输出被截断,可能需要将输出拆分为多个请求。

要求

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