Filter Manager andMinifilter Driver架构
Filter Manager简介
Filter Manager 是随着window而安装的,但是只有在minifilter driver 被加载的时候才变成active的状态。 FilterManger联系着文件系统和特定的volume,minifilter driver 是并不是直接和文件系统stack联系的。
操作系统在启动的时候,根据加载次序分组(loadorder group)来决定其他老的文件系统过滤驱动在文件系统stack中的位置。例如反病毒过滤驱动(antivirusfilter driver )应该比复制驱动驱动(replication filter driver)在文件系统stack中的位置高些,这样才可以在文件复制到远程服务器之间就对文件进行检查、杀毒。因此在“FSFilterAnti-Virus”组中的过滤驱动应该在”FSFiter Replicaton”组中的过滤驱动之前加载。每一个加载次序组(load order group)都在系统中有相应的定义类(system-defined class)以及类的GUID需要在过滤驱动的INF中使用。
像老的过滤驱动一样,minifilterdriver也是按照一定顺序排列的,排列的位置由一个标识符来决定,这个标识符被称为altitude。以某一个altitude到某个volume上的连接叫做instance.一个minifilter可能有很多instance。
Minitfilter driver的altitude 可以保证驱动被加载到正确的位置,以及确定对I/O的处理顺序。Altitude 是由microsoft分配和管理的。下图说明了一个简单的I/O stack以及filtermanger 和三个minifilterdriver。
Minifilter driver 可以处理基于IRP的I/O 操作、fast I/O以及 FSFilter的回调操作。