【问题标题】:How to view DbgPrint messages from a Windows filesystem minifilter?如何从 Windows 文件系统微过滤器中查看 DbgPrint 消息?
【发布时间】:2017-11-19 14:25:24
【问题描述】:

我正在尝试运行此处提供的 Microsoft 微过滤器示例之一:https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/passThrough

我不知道这个微过滤器应该做什么(文档不是很好),但对于初学者来说,如果我能看到DbgPrint() 语句的输出,我会很高兴的。在以管理员身份运行 Sysinternals DebugView 时,我执行了 fltmc load passthroughfltmc unload passthrough,但没有看到过滤器的任何输出。我知道至少代码中与卸载功能对应的函数有DbgPrint()消息:

PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
("PassThrough!PtUnload: Entered\n") );

我应该看到这些消息吗?如果是这样,怎么做?如果没有,我该如何调试微过滤器开发?

PS:我确实在这里定义了建议的注册表项:https://www.danclarke.com/debugview

【问题讨论】:

    标签: wdk minifilter debugview


    【解决方案1】:

    您可以从附加的调试器中使用:

    ed nt!Kd_DEFAULT_Mask 0x8
    

    或者检查this链接,因为您也可以从注册表中启用它。

    【讨论】:

      【解决方案2】:

      确保您在 Capture 下拉菜单下启用了“Capture Kernel”,而不是您链接到我们的文章中提到的“Capture Global Win32”。

      至于您链接到的文件系统微型过滤器设备驱动程序示例,MSDN 上有大量关于过滤器管理器驱动程序开发的文档。

      如果您盲目地使用 Microsoft 示例进行驱动程序开发,您无法真正指望通过点击手指就能理解它是如何工作的……这与用户模式开发非常不同,您将再次从底部开始。

      【讨论】:

        【解决方案3】:

        查看源代码中的 PT_DBG_PRINT 宏:

        #define PT_DBG_PRINT( _dbgLevel, _string )          \
        (FlagOn(gTraceFlags,(_dbgLevel)) ?              \
            DbgPrint _string :                          \
            ((int)0))
        

        有一个条件检查 gTraceFlags 变量。默认情况下 gTraceFlags 为 0。因此只需将该变量设置为启用 DbgPrint,例如:

        ULONG gTraceFlags = PTDBG_TRACE_ROUTINES;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-08
          • 2012-03-04
          • 2012-08-11
          • 1970-01-01
          • 1970-01-01
          • 2021-08-19
          • 1970-01-01
          相关资源
          最近更新 更多