1

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

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

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

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

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

4

3 回答 3

2

您可以使用以下方法从附加的调试器中执行此操作:

ed nt!Kd_DEFAULT_Mask 0x8

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

于 2018-01-26T20:54:36.377 回答
1

查看源代码中的 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;
于 2019-02-08T12:02:03.820 回答
1

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

至于您链接到的 File-System Mini-Filter 设备驱动程序示例,在 MSDN 上有大量关于过滤器管理器驱动程序开发的文档。

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

于 2017-12-19T01:14:07.827 回答