KdPrintEx 巨集 (wdm.h)

如果满足指定的条件,KdPrintEx 巨集 会将字符串发送到内核调试器。

调用 KdPrintEx 需要双括号。

语法

void KdPrintEx(
   _x_
);

参数

_x_

指定格式字符串的参数,如 printf中所示。

返回值

没有

言论

KdPrintEx 与为调试配置编译的代码中的 DbgPrintEx 例程相同。 此例程在为发布版本编译的代码中不起作用。 只有内核模式驱动程序才能调用 KdPrintEx 例程。

KdPrintEx 将指定的字符串传递给内核调试器或根本不执行任何操作,具体取决于 ComponentIdLevel的值以及相应的组件筛选器掩码。 有关详细信息,请参阅 读取和筛选调试消息

除非绝对必要,否则不应从用户输入或其他进程获取字符串,并将其传递给 KdPrintEx。 如果使用未创建的字符串,则必须验证这是有效的格式字符串,并且格式代码是否与类型和数量的参数列表匹配。 最佳编码做法是将所有 格式 字符串设置为静态,并在编译时定义。

Format 字符串的大小或参数数没有上限。 但是,对 KdPrintEx 的任何单个调用将仅传输 512 字节的信息。 DbgPrint 缓冲区的大小也有限制。 有关详细信息,请参阅 DbgPrint 缓冲区和调试器

此例程在 ntddk.h 和 ndis.h 中定义;组件筛选器 ID 在 dpfilter.h、ndis.h 和 wdm.h 中定义。 包括 ntddk.h 或 ndis.h。

下面是参数:

  • ComponentId [in]

    指定调用此例程的组件。 这必须是 dpfilter.h 头文件中定义的组件名称筛选器 ID 之一。 为了避免将驱动程序的输出与 Windows 组件的输出混合,应仅对 ComponentId使用以下值:

    • DPFLTR_IHVVIDEO_ID

    • DPFLTR_IHVAUDIO_ID

    • DPFLTR_IHVNETWORK_ID

    • DPFLTR_IHVSTREAMING_ID

    • DPFLTR_IHVBUS_ID

    • DPFLTR_IHVDRIVER_ID

  • 格式 [in]

    指定要打印的格式字符串的指针。 Format 字符串支持大多数 printf样式 格式规范字段。 但是,Unicode 格式代码(%C%S%lc%ls%wc%ws%wZ)只能与 IRQL = PASSIVE_LEVEL一起使用。 KdPrintEx 例程不支持任何浮点类型(%f%e%E%g%G%a%A)。

  • 级别 [in]

    指定此消息的严重性。 这可以是任何 32 位整数。 0 和 31 之间的值(含)的处理方式不同于 32 和 0xFFFFFFFF 之间的值。 有关详细信息,请参阅 读取和筛选调试消息

要求

要求 价值
最低支持的客户端 Microsoft Windows XP 及更高版本中提供。
目标平台 桌面
标头 wdm.h (包括 Wdm.h)
NtosKrnl.lib (请参阅 DbgPrintEx.)
DLL NtosKrnl.exe

另请参阅

DbgPrint

DbgPrintEx

KdPrint