KdPrint 宏 (wdm.h)
KdPrint 宏将消息发送到内核调试器。
KdPrint 仅在指定的条件适用时发送消息。 有关详细信息,请参阅以下部分。
调用 KdPrint 需要双括号。
语法
void KdPrint(
[in] _x_
);
参数
[in] _x_
指定指向要打印的格式字符串的指针。 Format 字符串支持大多数 printf 样式格式规范语法。 但是,Unicode 格式代码 (%C、 %S、 %lc、 %ls、 %wc、 %ws 和 %wZ) 只能与 IRQL = PASSIVE_LEVEL 一起使用。 KdPrint 例程不支持 (%f、%e、%E、%g、%G、%a 或 %A) 的任何浮点类型。
返回值
无
备注
KdPrint 与为调试配置编译的代码中的 DbgPrint 例程相同。 如果为发布配置编译,则此例程不起作用。 只有内核模式驱动程序可以调用 KdPrint 例程。
KdPrint 仅在某些条件适用时发送消息。 具体而言,它的行为类似于 KdPrintEx ,其 DEFAULT 组件和消息重要性级别DPFLTR_INFO_LEVEL。 换句话说,以下两个函数调用是相同的:
KdPrint (( Format, arguments ))
KdPrintEx (( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments ))
有关消息筛选、组件和消息重要性级别的详细信息,请参阅 读取和筛选调试消息。
无论你使用的是哪个版本的 Windows,都建议使用 KdPrintEx 而不是 KdPrint,因为 KdPrintEx 允许你控制发送消息的条件。
除非绝对必要,否则不应从用户输入或其他进程获取字符串并将其传递给 KdPrint。 如果确实使用了未创建的字符串,则必须验证这是有效的格式字符串,并且格式代码与类型和数量中的参数列表匹配。 最佳编码做法是,所有 格式 字符串都是静态的,并在编译时定义。
格式字符串的大小或参数数没有上限。 但是,对 KdPrint 的任何单个调用将仅传输 512 字节的信息。 DbgPrint 缓冲区的大小也有限制。 有关详细信息 ,请参阅 DbgPrint 缓冲区和调试器 。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | wdm.h (包括 Wdm.h) |
Library | NtosKrnl.lib (请参阅 DbgPrint.) |
DLL | NtosKrnl.exe |