文件系统Minifilter驱动.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 28 文件系统Minifilter驱动 声明: 本系列文章源于WDK,所有权利归原作者所有,翻译的目的只为交流和学习。除了商用你可以随意地使用这篇译文。但请不要删除声明。???——by?jununfly 说明:? 所有preoperation及postoperation均简写为pre-oper和post-oper 所有文件系统过滤驱动均简写为FSFD(文件系统过滤驱动) 所有基于IRP的I/O即IRP-based?I/O均简写为IRP-I/O ? 版本Filter管理器和Minifilter驱动架构 Filter 管理器是一个内核模式驱动,它遵照legacy文件系统filter模型并具有FSFD必需的功能。利用这些功能,第三方开发者可以写 minifilter驱动,这样的驱动比legacy(陈旧的) FSFD更易于开发,因此缩短了开发过程同时制造出更高质量、更灵活的驱动。本章包括:? 一、Filter管理器概念 Filter管理器随Windows一起被安装,但它只在minifilter驱动被加载时才起作用。Filter管理器被绑定到目标卷的文件系统栈上。当Minifilter驱动要执行过滤I/O操作时,必须先向filter管理器注册来间接绑定到文件系统栈上。 Legacy 过滤驱动在文件系统I/O栈中的位置,相对于其他过滤驱动来说是在系统启动时由它的加载顺序组决定的。例如,一个antivirus过滤驱动在栈中的位置应该高于一个“复制操作”的过滤驱动,因而它能在文件被复制到远程服务器之前探测病毒并消除文件中的病毒。因此,FSFilter Anti- Virus加载顺序组中的过滤驱动的加载要先于FSFilter?Replication组中的过滤驱动。每一个加载顺序组都有一个相应的系统定义的类和INF文件中要使用的类GUID。 像legacy过滤驱动一样,minifilter驱动的绑定也按照一定的顺序。不过,绑定顺序是由altitude这个唯一标识符决定。Minifilter驱动绑定在某一卷上时,对应有一个特定的altitude,此时该绑定体被称为这个minifilter驱动的一个instance。 ?Minifilter驱动的altitude确保它的实例总是在相应的位置被加载,它决定filter管理器以什么顺序来调用minifilter驱动来处理I/O。Altitudes由微软分配和管理。下图展示了一个用filter管理器简化后的I/O栈和三个minifilter驱动。 用Filter管理器简化后的I/O栈和Minifilter驱动 ??Minifilter 驱动能过滤IRP-I/O操作、fast I/O和FSFilter callback操作,并可以为每一个它要过滤的I/O操作注册一个pre-oper callback例程或一个post-oper callback 例程。当处理一个I/O操作时,filter管理器调用每个minifilter为此操作注册的callback例程。当该callback例程返回时,filter管理器调用下一minifilter驱动为此操作注册的callback例程。 举个例子,假设上图中的三个minifilter驱动都为同一I/O操作注册了callback例程,则filter管理器会根据altitude由高到低的顺序(A,B,C)来调用它们的pre-oper callback例程,然后把此I/O操作转寄给下一较低级的驱动进一步处理。当filter管理器接收到此I/O请求的完成时,它以相反的顺序即由低到高(C,B,A)调用每一个minifilter驱动的post-oper callback例程。 为了同legacy过滤驱动协同工作,filter管理器可以把filter设备对象绑定到同一个文件系统I/O栈的多个位置。每一个filter管理器的 filter设备对象都叫做一个frame。从legacy过滤驱动的角度来说,每一个filter管理器frame仅仅是另外的一个legacy过滤驱 动。 每一个filter管理器frame都表示一个altitude区间。如果某个legacy过滤驱动被绑定到文件系统栈上,系统就为在该legacy过滤驱动 之上或之下的altitude范围绑定一个filter管理器frame,来确保minifilter驱动绑定到正确的位置上。 如果某个minifilter驱动被卸载并重加载,则它会被重加载到同一frame(它从其中被卸载)中的同一altitude上。 用两个Filter管理器Frame和一个legacy过滤驱动简化后的I/O栈 二、Filter管理器模型的优势 Filter管理器模型比现有的legacy过滤驱动模型具备以下优势:?

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档