MiniFilter 工作原理

什么是 MiniFilter

minifilter 是 sfilter 后微软推出的过滤驱动框架。相比于sfilter,更容易使用,需要程序员做的编码更简洁。系统为minifilter专门制作了一个过滤管理器,这个管理器本身其实是一个传统过滤驱动,它向minifilter的使用者提供许多接口,让原本复杂的文件过滤驱动变得方便简单。之所以简单是因为传统的过滤驱动把大量的工作放在绑定设备上,而现在这些工作都交给minifilter中的过滤管理器来完成。

MiniFilter 和其他驱动的区别

普通驱动:
也叫文件系统驱动。

过滤驱动:
基于文件驱动中的操作进行手动过滤,可以理解成你 hook 了系统的 create 函数,然后如果你要拦截这个操作你就按要求返回不允许,否则就传给系统下一层去继续。

微过滤器:
首先,微过滤器不是驱动(可以理解为一个在 Filter Manager 的一个组件)。它通过向过滤管理器(Filter Manager)驱动进行注册自己需要过滤的一些操作,提供指定格式的回调函数让过滤管理器来进行调用,对于每一种操作,minifilter 都可以注册一个 “过滤前(pre)” 和 “过滤后(post)” 被调用的回调函数。

MiniFilter 的优点和缺点

优点:
(1)兼容性好
(2)简单易上手

缺点:
(1)编程自由度不大

加载顺序

minifilter的加载顺序是根据一个Altitude来决定的,可以理解成驱动所处的维度:
在这里插入图片描述
当FilterManager检测到要执行create的时候,就去调用注册了对该操作进行过滤的minifilter的回调函数,根据Altitude的值从大到小的顺序先调用preCreate函数。而FilterManager检测到create执行完成后,便按照Altitude的值从小到大的顺序去调用postCreate函数。

参考网址:
https://write-bug.com/article/2503.html

https://blog.csdn.net/qq_33504040/article/details/78458958

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值