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 仅在某些条件适用时发送消息。 具体而言,它的行为类似于使用 DEFAULT 组件 KdPrintEx,以及DPFLTR_INFO_LEVEL的消息重要性级别。 换句话说,以下两个函数调用是相同的:
KdPrint (( Format, arguments ))
KdPrintEx (( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments ))
有关消息筛选、组件和消息重要性级别的详细信息,请参阅 读取和筛选调试消息。
无论使用哪种版本的 Windows,建议使用 KdPrintEx 而不是 KdPrint,因为 KdPrintEx 允许你控制消息发送的条件。
除非绝对必要,否则不应从用户输入或其他进程获取字符串,并将其传递给 KdPrint。 如果使用未创建的字符串,则必须验证这是有效的格式字符串,并且格式代码是否与类型和数量的参数列表匹配。 最佳编码做法是将所有 格式 字符串设置为静态,并在编译时定义。
Format 字符串的大小或参数数没有上限。 但是,对 KdPrint 的任何单个调用将仅传输 512 字节的信息。 还有 DbgPrint 缓冲区的大小限制。 有关详细信息,请参阅 DbgPrint 缓冲区和调试器。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | wdm.h (包括 Wdm.h) |
库 | NtosKrnl.lib (请参阅 DbgPrint.) |
DLL | NtosKrnl.exe |