【问题标题】:Where would a driver "output" to if using printf?如果使用 printf,驱动程序将“输出”到哪里?
【发布时间】:2011-10-26 01:48:47
【问题描述】:

如果我要创建一个驱动程序,比如说挂钩打开文件的 windows 函数。如果在我的驱动程序中我告诉钩子 printf("something"),当驱动程序打开并打开一个文件时,printf 会将文本显示到哪里?

【问题讨论】:

    标签: c windows kernel driver


    【解决方案1】:

    如果您想从驱动程序输出文本以进行调试和实验,请使用DbgPrintEx。可以通过 Sysinternals DebugView 或调试器查看输出。

    【讨论】:

      【解决方案2】:

      printf 被写入 stdio.h 中声明的流 stdout。它在您第一次接触标准流 stdin、stdout、stderr 时打开。标准流 stdin、stdout 和 stderr 是调用 stdio 库函数的宏,该函数打开流并返回这些流的数组。宏定义索引数组以获取正确的流。如果应用程序没有控制台,则输出到“空”设备。

      【讨论】:

        【解决方案3】:

        您可以查看驱动程序的调试输出(使用调试配置编译)

        使用 DbgView 或 Microsoft 网站上提供的 WinDbg 实用程序

        还可以使用 wdm.h 中定义的以下函数来提供打印语句

        DbgPrint(...)

        DbgPrintEx(...)

        【讨论】:

          猜你喜欢
          • 2020-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-10
          • 2021-06-24
          相关资源
          最近更新 更多