Filter Manager Concepts 过滤管理器思想
过滤管理器被 windows 安装 ,但是仅当微过滤驱动被加载时才生效 。对于一个目标卷 ,过滤管理器依附文件系统栈 。微过滤驱动直接依附文件系统栈 ,通过注册微过滤驱动要过滤的I/O操作的过滤管理器
传统过滤驱动的在文件系统 I/O 栈的位置和其它过滤驱动的位置是由加载顺序组(load order group)决定的 。例如 ,病毒过滤驱动在栈中应该高于复制过滤驱动 ,因此它能探测病毒并且为文件消毒 ,在复杂到远程服务之前 。因此 ,病毒过滤驱动比复杂过滤驱动先加载 。每一个价值顺序组有一个对于系统定义的类和类的GUID ,INF 文件将用指定过滤驱动的类GUID 。
像传统的过滤驱动 ,微过滤驱动也有个特定的顺序 。然而,顺有一个唯一标识符叫做高度(altitude),在一个特定的卷 ,依附在特定高度的微过滤驱动被叫做微过滤驱动的一个实例
微过滤驱动的高度 确保微过滤驱动被加载在正确的位置,相对其他微过滤驱动 ,它决定过滤管理器调用微过滤驱动去控制I/O的顺序 。高度被微软分配和管理 。
下图展出一个简单的I/O栈 ,它有一个过滤管理器和三个微过滤驱动 。
微过滤驱动能过滤IRP-based I/O 、fast I/O和文件系统过滤回调操作 。对于每个选择过滤的I/O操作,微过滤驱动能注册前操作回调例程。后操作回调例程或都注册 。当处理一个I/O操作 ,过滤管理器将调用它的前操作回调例程按照高度的顺序从高到底(A,B, C),一次执行 。当过滤管理器收到I/O完成请求 ,它调用每个微过滤驱动的后操作回调例程,顺序正好相反(C,B,A)。
对于互操作性的传统的过滤驱动 ,过滤管理器能附加过滤设备对象到文件系统 I/O 栈多于一个位置 。每一个过滤管理器设备对象被叫做A型框架 。从传统的过滤驱动的观点 ,每一个过滤管理器框架 正是另一个传统过滤驱动 。
每一个过滤管理器框架代表一系列高度 。如果传统的过滤驱动附属于文件系统栈 ,系统附属过滤管理器框架 ,它有一系列高度在传统过滤驱动上面和下面 ,为了确保微过滤驱动附属在正确的位置上 。
如果微过滤驱动被卸载或重载 ,它被重载和卸载时在相同的高度相同的框架。
下图展示了一个简单的I/O栈有俩个过滤管理器架构 、微过滤驱动实例和一个传统的过滤驱动 。