【发布时间】:2011-10-26 01:48:47
【问题描述】:
如果我要创建一个驱动程序,比如说挂钩打开文件的 windows 函数。如果在我的驱动程序中我告诉钩子 printf("something"),当驱动程序打开并打开一个文件时,printf 会将文本显示到哪里?
【问题讨论】:
如果我要创建一个驱动程序,比如说挂钩打开文件的 windows 函数。如果在我的驱动程序中我告诉钩子 printf("something"),当驱动程序打开并打开一个文件时,printf 会将文本显示到哪里?
【问题讨论】:
如果您想从驱动程序输出文本以进行调试和实验,请使用DbgPrintEx。可以通过 Sysinternals DebugView 或调试器查看输出。
【讨论】:
printf 被写入 stdio.h 中声明的流 stdout。它在您第一次接触标准流 stdin、stdout、stderr 时打开。标准流 stdin、stdout 和 stderr 是调用 stdio 库函数的宏,该函数打开流并返回这些流的数组。宏定义索引数组以获取正确的流。如果应用程序没有控制台,则输出到“空”设备。
【讨论】:
您可以查看驱动程序的调试输出(使用调试配置编译)
使用 DbgView 或 Microsoft 网站上提供的 WinDbg 实用程序
还可以使用 wdm.h 中定义的以下函数来提供打印语句
DbgPrint(...)
DbgPrintEx(...)
【讨论】: