用户模式和内核模式代码使用不同的例程将输出发送到调试器。
User-Mode 输出例程
OutputDebugString 例程向调用进程的调试器发送以 null 结尾的字符串。 在用户模式驱动程序中, OutputDebugString 在调试器命令窗口中显示字符串。 如果调试器未运行,则此例程不起作用。 OutputDebugString 不支持 printf 格式字符串的变量参数。
此例程的原型如下所示:
VOID OutputDebugString(
LPCTSTR lpOutputString
);
有关此例程的完整文档,请参阅 与调试器通信。
Kernel-Mode 输出例程
DbgPrint 例程在调试器窗口中显示输出。 此例程支持基本的 printf 格式参数。 只有内核模式驱动程序可以调用 DbgPrint。
DbgPrintEx 例程类似于 DbgPrint,但它允许“标记”消息。 运行调试器时,只能允许发送具有特定标记的消息。 这样,你只能查看你感兴趣的消息。 有关详细信息,请参阅 读取和筛选调试消息。
在选中的生成环境中编译时, KdPrint 和 KdPrintEx 宏分别与 DbgPrint 和 DbgPrintEx 相同。 在免费生成环境中编译时,它们不起作用。