微过滤器 PRE_OP_CALLBACK 未被调用

Minifilter PRE_OP_CALLBACK not being called

我正在尝试编写一个基本的 minifilter 驱动程序,我根据 Minispy 中的示例整理了以下内容(因为它有很多代码,我将 link 概括为要点)

https://gist.github.com/anonymous/9dce7c550b028fa308a48d36c6098095

如果我使用 WinDBG 附加到内核,我可以看到 DriverEntry 被调用并且我的注册成功完成,如果我调用它,我也可以看到卸载发生。但是,当我 open/create 一个文件时,我从来没有看到我的 PRE_OP_CALLBACK 或我的 POST_OP_CALLBACK 被调用。我不确定我错过了什么。

我建议与工作正常的 minispy 样本进行比较 github : minispy

在 DriverEntry 中它有一个注册...

    status = FltRegisterFilter( DriverObject,
                                &FilterRegistration,
                                &MiniSpyData.Filter );

以及

    status = FltStartFiltering( MiniSpyData.Filter );

其实我也想通了,跟我的INF文件有关。具体来说,如下一行:

Instance1.Flags         = 0x1          ; Suppress automatic attachments

删除该行,或将其设置为 0,允许它自动附加。出于我的目的,因为我想监视所有卷,所以我将其设置为 0。在同一个帐户上,minispy 示例仅在 Instance3 标志上设置了 0x1,所以这是有道理的。