驱动器将在哪里“输出”?如果使用 printf?
如果我要创建一个驱动程序,例如挂钩用于打开文件的 Windows 函数。如果在我的驱动程序中我告诉挂钩 printf("something"),当驱动程序打开并且我打开一个文件时, printf 会将文本显示到哪里?
If I were to create a driver, which, say hooks the windows function for opening a file. If in my driver I told the hook to printf("something"), when the driver is switched on and I opened a file, where would printf display the text to?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果要从驱动程序输出文本用于调试和实验目的,请使用 DbgPrintEx。可以通过 Sysinternals DebugView 或调试器查看输出。
If you want to output text from a driver for debugging and experimental purposes, use DbgPrintEx. The output can be viewed via Sysinternals DebugView or a debugger.
printf 被写入 stdio.h 中声明的流 stdout。当您第一次接触标准流 stdin、stdout、stderr 之一时,它会打开。标准流 stdin、stdout 和 stderr 是调用 stdio 库函数的宏,该函数打开流并返回这些流的数组。宏定义对数组进行索引以获取正确的流。如果应用程序没有控制台,则输出将转到“空”设备。
printf is written to the stream stdout which is declared in stdio.h. It is opened the first time you touch one of the standard streams stdin, stdout, stderr. The standard streams stdin, stdout, and stderr are macros that call a stdio library function which opens the streams and returns an array those streams. The macro definitions index the array to get the right stream out. If the application has no console, the output goes to the "null" device.
查看驱动程序的调试输出(使用调试配置编译)
您可以使用 DbgView
或 Microsoft 网站上提供的 WinDbg 实用程序
也可以提供打印语句,您可以使用 wdm.h
DbgPrint(...)
DbgPrintEx(...)中定义的以下函数
You can view the debug output of your driver (compiled with debug config)
using DbgView
or WinDbg utility available on microsofts website
also to give print statements you could use following functions defined in wdm.h
DbgPrint(...)
DbgPrintEx(...)