如何从Windows文件系统微过滤器查看DbgPrint消息?

问题描述 投票:0回答:3

我试图运行从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
3个回答
2
投票

您可以使用附带的调试器做到这一点:

ed nt!Kd_DEFAULT_Mask 0x8

或检查this链接了,你也可以从注册表中启用它。


1
投票

请确保您已启用“捕获内核”下的捕获下拉菜单,而不是“捕捉全球的Win32”这是你的文章链接我们提到的内容。

至于你联系我们的文件系统微过滤设备驱动程序样本,有很多围绕在可在MSDN过滤管理器驱动程序的开发文档。

如果你去与微软的样本驱动程序的开发盲目,你真的不能指望明白这一切是如何工作的,用手指的点击......这是用户模式的发展是非常不同的,你会从首发再次底部。


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;
© www.soinside.com 2019 - 2024. All rights reserved.