如何从Windows文件系统minifilter查看DbgPrint消息?

时间:2017-11-19 14:25:25

标签: wdk minifilter debugview

我正在尝试运行Microsoft提供的一个minifilter示例:https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/passThrough

我不知道这个minifilter应该做什么(文档不是很好),但对于初学者来说,如果我能看到 val recyclerView = findViewById<RecyclerView>(R.id.RecyclerView) recyclerView.layoutManager = GridLayoutManager(this, 3) val workouts = ArrayList<workout>() workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) workouts.add(workout("12.09.2018", "Kniebeugen und Bizeps + Rücken")) val adapter = CustomAdapter(workouts) recyclerView.adapter = adapter 语句的输出,我会很高兴。以管理员身份运行 Sysinternals DebugView 时,我执行了DbgPrint()fltmc load passthrough,但未看到过滤器的任何输出。我知道至少代码中与卸载功能相对应的功能有fltmc unload passthrough消息:

DbgPrint()

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

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

3 个答案:

答案 0 :(得分:2)

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

ed nt!Kd_DEFAULT_Mask 0x8

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

答案 1 :(得分:1)

确保您已启用“捕获核心”&#39;在Capture下拉菜单下,而不是“Capture Global Win32&#39;这就是你把我们联系起来的文章。

至于您链接我们的文件系统迷你过滤器设备驱动程序示例,有大量关于MSDN上可用的过滤器管理器驱动程序开发的文档。

如果你盲目地使用微软样本进入驱动程序开发,你真的不希望通过点击手指来理解它是如何工作的......这与用户模式开发非常不同,你&# 39;再次从底部开始。

答案 2 :(得分: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;