文件系统Minifilter驱动(六)

二、Minifilter驱动的加载顺序和Altitudes

Microsoft Windows XP, Windows 2000 SP4 with Update Rollup 1, 和较新的OS专门为在系统启动时加载的FSFD和minifilter驱动提供了一套加载顺序组. 

Legacy FSFD可以只绑定到一个现有FSD 栈的顶部,但不可以绑定到某个栈的中间.其结果是,驱动的启动类型和加载顺序组对legacy FSFD来说很重要,因为一个过滤驱动越早加载,它就可以绑定到FSD栈上越低的位置. 

驱动的加载首先基于它的表示系统引导阶段的启动类型.更多关于启动类型的信息参考What Determines When a Driver Is Loaded一文中的"Driver Start Types". 所有启动类型为SERVICE_BOOT_START的FSFD和minifilter驱动都将会在启动类型为SERVICE_SYSTEM_START或 SERVICE_AUTO_START的驱动之前加载.启动类型由用于安装minifilter驱动的INF文件的ServiceInstall 项中的StartType入口指定.在每一种启动类型类别中,加载顺序组决定了FSFD和minifilter驱动什么时候会被加载.

一个minifilter驱动可以在任何时间加载.minifilter驱动仍然需要加载顺序组的概念来与legacy FSFD协同工作.每一个minifilter驱动必须有一个叫做altitude的唯一标识符.一个minifilter驱动的altitude定义了它加载时在I/O栈中相对其他minifilter驱动的位置. Altitude是一个无限精密的串就像小数一样.altitude数字低的minifilter驱动加载到I/O栈中的位置要低于一个altitude数字高的minifilter驱动.

每一个加载顺序组都有一个定义好的altitude范围.minifilter驱动的altitude的分配由微软管理.要想为你的minifilter驱动请求一个altitude,去 WHDC Minifilter Altitude Allocation 网址看看. 

Minifilter驱动必须从表示某个加载顺序组的一个altitude范围中指定一个altitude值.minifilter驱动的altitude值在用于安装这个minifilter驱动的INF文件的Strings 项的实例定义中指定.实例定义也可以在对InstanceSetupCallback例程的调用中的FLT_REGISTRATION结构里指定.一个minifilter驱动可以有多个实例和altitude.这些实例定义的应用跨越所有的卷.

以下启动类型和加载顺序组的规则决定了一个minifilter驱动什么时候会被加载: 

· 启动类型相同且在同一加载顺序组中的minifilter驱动和其他FSFD会在同一时间被加载. 

· 在每一个加载顺序组中,FSFD和minifilter驱动一般都以随机顺序加载.这就导致了驱动的加载基于驱动的安装顺序. 

· 如果某个FSFD或minifilter驱动没有指定一个加载顺序组,那它就会在拥有相同启动类型(就是指定了加载顺序组)的所有其他驱动加载之后加载. 

下表是系统定义的minifilter驱动的加载顺序组和altitude范围.对每一个加载顺序组来说,加载顺序组栏包含了应该被指定给minifilter的INF文件ServiceInstall 项LoadOrderGroup入口中的组的值. Altitude范围栏包含一个特定的加载顺序组的altitude范围.一个minifilter驱动必须请求微软在适当的加载顺序组或组中分配的一个altitude. 

注意加载顺序组和Altitude范围的罗列顺序与它们出现在栈中的顺序相同而于它们的加载顺序相反.

加载顺序组

Altitude范围

描述

Filter

420000-429999

此组与WIN2K及更早的OS中的Filter 加载顺序组一样. 它最后加载,因此绑定位置离文件系统最远. 

FSFilter Top

400000-409999

此组是为必须绑定在所有其他FSFilter类型的驱动之上的过滤驱动准备的. 

FSFilter Activity Monitor

360000-389999

此组包括观测和报告文件I/O的过滤驱动,比如FileSpy 和SFilter驱动例子. 

FSFilter Undelete

340000-349999

此组包括恢复已删除的文件的过滤器. 

FSFilter Anti-Virus

320000-329999

此组包括在文件I/O期间探测并杀毒的过滤驱动. 

FSFilter Replication

300000-309999

此组包括复制文件数据给远程服务器的过滤驱动. 

FSFilter Continuous Backup

280000-289999

此组包括复制文件数据给backup媒体的过滤驱动. 

FSFilter Content Screener

260000-269999

此组包括阻止指定文件或文件内容的创建的过滤驱动. 

FSFilter Quota Management

240000-249999

此组包括提供增强的文件系统quota的过滤驱动. 

FSFilter System Recovery

220000-229999

此组包括执行操作来维护OS完整性比如System Restore (SR) filter的过滤驱动. 

FSFilter Cluster File System

200000-209999

此组包括用于那些跨网络提供文件服务器元数据的的产品的过滤驱动. 

FSFilter HSM

180000-189999

此组包括执行分层的存储器管理的过滤驱动. 

FSFilter Imaging

170000-175000

此组包括像ZIP一样提供一个虚拟名字空间的过滤驱动.

此加载组在Vista及以后版本的OS上可用. 

FSFilter Compression

160000-169999

此组包括执行文件数据压缩的过滤驱动. 

FSFilter Encryption

140000-149999

此组包括在文件I/O期间加密和解密数据的过滤驱动. 

FSFilter Virtualization

130000- 139999

此组包括虚拟化文件路径比如Vista中添加的Least Authorized User (LUA) 过滤驱动这样的过滤驱动.

此加载组在Vista及以后版本的OS上可用.

FSFilter Physical Quota Management

120000-129999

此组包括通过用物理块计数管理quota的过滤驱动. 

FSFilter Open File

100000-109999

此组包括提供已经打开的文件的快照的过滤驱动. 

FSFilter Security Enhancer

80000-89999

此组包括申请lockdown并增强访问控制列表(ACLs)的过滤驱动. 

FSFilter Copy Protection

60000-69999

此组包括做媒体上数据是否超出边界的检查的过滤驱动. 

FSFilter Bottom

40000-49999

此组是为必须绑定在所有其他FSFilter类型的驱动之下的过滤驱动准备的. 

FSFilter System

20000-29999

保留为内部使用.

FSFilter Infrastructure

 

保留为内部使用. 此组首先加载,因此绑定位置最接近文件系统. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值