文件系统Minifilter驱动(一)

周边任选+年卡加赠!下单送Coding Plan 卫衣/双肩包/T恤/羽绒服任选,赠CSDN会员年卡+Coding Plan,学习装备起拿下! 阅读详情

文件系统Minifilter驱动

 

 

声明

本系列文章源于WDK,所有权利归原作者所有,翻译的目的只为交流和学习。除了商用你可以随意地使用这篇译文。但请不要删除声明。
                                                     ——by jununfly

 

 

说明

 

所有preoperation及postoperation均简写为pre-oper和post-oper

所有文件系统过滤驱动均简写为FSFD

所有基于IRP的I/O即IRP-based I/O均简写为IRP-I/O

 

版本

 

20090220

 

Filter管理器和Minifilter驱动架构

Filter管理器是一个内核模式驱动,它遵照legacy文件系统filter模型并暴露了FSFD中必需的一般功能。利用这些功能,第三方开发者可以写minifilter驱动,这样的驱动比legacy FSFD更易于开发,因此缩短了开发过程同时制造出更高质量、更灵活的驱动。

本章包括: 

一、Filter管理器概念

Filter管理器随Windows一起被安装,但它只在一个minifilter驱动被加载时才会起作用。Filter管理器绑定到目标卷的文件系统栈上。Minifilter驱动为它要过滤的I/O操作而通过向filter管理器注册来间接绑定到文件系统栈上。

 

Legacy过滤驱动在文件系统I/O栈中的位置,相对于其他过滤驱动来说是在系统启动时由它的加载顺序组决定的。例如,一个antivirus过滤驱动在栈中的位置应该高于一个replication过滤驱动,因而它能在文件被复制到远程服务器之前探测病毒并消除文件中的病毒。因此,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栈

linux7下安装部署FastDFS(文件管理系统)详细教程+报错填坑 1.fastDFS介绍 fastDFS 是以C语言开发的项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等 2.下载 3.安装 wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz 参考: https://www.cnblogs.com/qiaolizhi/p/12461901.html ... 阅读详情

相关推荐

Win64 驱动内核编程-17. MINIFILTER(文件保护)

MINIFILTER(文件保护)     使用 HOOK 来监控文件操作的方法有很多,可以在 SSDT 上 HOOK 堆和 FILE 有关的函数,也可以对 FSD 进行 IRP HOOK,不过这些方法既不方便,也不安全。微软推荐的文件操作过滤方法是使用过滤驱动,在 VISTA 之后,推荐使用 MINIFILTER (字面翻译是迷你过滤器)。MINIFILTER 基于标准的文件过滤驱动,但是微软

天使也掉毛 1万+

FSFD(个比较价值的File system Filter Driver)

FSFD(个比较价值的File system Filter Driver)

windows内核驱动开发】文件系统微过滤驱动Minifilter——获取进程信息

【我的】文件系统微过滤驱动Minifilter——获取进程信息 作者:zcr214 时间:2016/4/22   在编写文件系统微过滤驱动minifilter的时候,除了绑定指定的磁盘分卷,对于指定的文件很可能还会有指定的应用程序,例如txt文件可以有很多编辑器可以使用,如wordpad,notepad,sublime,vim,notepad+等,doc文档可以使用office word或W

zcr214的博客 2569

透明加密minifilter

基于minifilter过滤驱动技术的透明加密源码 【注意下载完进行评论时,要选择评论框上面的星级,这样减掉的分不仅能原数返回,而且还能多赠1分】

FSFD入门 - 启

其实文件系统过滤驱动不难。假如你是新手,我可以先告诉你这句体会。然后是转折——难在业务结合。 在这个系列中我不准备长篇大论些虽然有限但确实已经很详尽的资料中阐述过的基础知识。最权威的资料:1、NTFSI; 2、WDK; 3、fastfat源码。第3其实就在2中,特意提出来是为了强调源码的重要性,osr上某位MVP说过这么句话:you should considered it a

听风 4041

分布式文件系统 (fsfd)

在linux系统上安装 fastdfs docker 官网 点击进入下载 docker images 查看 是否有容器 需要关闭 新形防火墙 或者 设置防火墙 find / -name selinux 可查看 看到 /etc/sysconfig/selinux 设置防火墙 请自行学习 编辑 vi /etc/sysconfig/selinux SELINUX= 改 disabled 在启动容器...

weixin_43729192的博客 888

FastDFS分布式存储

FastDFS是个开源的轻量级分布式文件系统,纯C实现,目前提供了C、Java和PHP API。功能包括:文件存储,文件同步,文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。Fast DFS系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)

henanxiaoman的博客 1814

【免费下载】 WinFsp 项目使用教程

WinFsp(Windows File System Proxy)是个为Windows操作系统提供文件系统开发和运行时支持的平台。它允许开发者编写用户模式下的文件系统程序,而无需了解Windows内核编程。WinFsp类似于Linux和其他UNIX-like系统中的FUSE(Filesystem in Userspace),使得开发者能够轻松创建自定义文件系统,并通过标准的Windows文件AP...

gitblog_00504的博客 3322

文件系统Minifilter驱动

1.Filter管理器和Minifilter驱动架构   Filter管理器是个内核模式驱动,它遵照legacy文件系统filter模型并暴露了FSFD中必需的般功能。利用这些功能,第三方开发者可以写minifilter驱动,这样的驱动比legacyFSFD更易于开发,因

pyq881120的专栏 1万+

windows内核驱动开发】文件系统微过滤驱动Minifilter——绑定指定的卷(磁盘分区)

【我的】文件系统微过滤驱动Minifilter——绑定指定的卷(磁盘分区) 作者:zcr214 时间:2016/4/21   在编写文件系统微过滤驱动minifilter的时候,很有可能我们只对某个特定的磁盘分区感兴趣,而其他的如系统盘的很多IRP对于我们要编写的驱动可能是不关注的,所以有必要使得我们的驱动只绑定指定的这个卷,从而减少其他的IRP带来的干扰,节省很多处理流程,比如系统盘的很

zcr214的博客 4419

Windows驱动_文件系统微小过滤驱动初识MiniFilter

人的生,就那么几十年,所有的人都无法知道下刻会发生什么,我们活在当下,只能努力将自己目前的工作或生活过好。船到桥头自然直,况且,自己这么多年,经历了多多少少的风浪太多了,说到底还是不够自信,我应该慢慢改正这个缺点。不要事事都杞人忧天,定的危机感是需要的,但是千万不要过了。           由于原始的文件系统过滤驱动些缺陷,它使用了些非常规的方法,有些驱动微软都无法做到全部的控

Z18_28_19的专栏 7274

Windows驱动_文件系统微小过滤驱动之五MiniFilter例程解析

今天,上了下看雪,好久没上去了,现在的看雪,跟之前不样了,刚毕业的那个时候,上面的大牛真是多,现在屈指可数了,可能这些大牛们,因为年纪的增长,已经不在线了,或许因为家庭,每时间在论坛上逛了,也许都已经在创业了,现在这个APP泛滥的年代,意念和想法,已经不靠技术了,也没有多少人在研究着技术,目前的中国还是有些浮躁,其实好好想想,现在所有的系统,芯片还是掌握在别人手上,不要谈Android,Win

Z18_28_19的专栏 7343

Win64 驱动内核编程-34.对抗与枚举MiniFilter

对抗与枚举MiniFilter MiniFilter是目前杀毒软件用来实现“文件系统自我保护”和“文件实时监控”的方法。 由于MiniFilter模型简单,开发快捷,通用性好,以前用FSDHOOK或者标准过滤驱动来实现相关功能的杀软纷纷改用MiniFilter,比如卡巴斯基。不过,枚举MiniFilter就跟之前枚举回调的方法不太相同了,因为MiniFilter的...

天使也掉毛 5136

[内核驱动Minifilter实现文件拒绝访问

基于Minifilter的小小拓展

C0ldstudy的博客 5401

Windows文件系统过滤驱动终极指南:MiniFilter文件监控实战解析

Windows文件系统过滤驱动是操作系统内核的关键组件,而MiniFilter驱动作为现代Windows驱动开发的首选框架,为开发者提供了高效、灵活的文件系统监控与过滤能力。本文将带你从零开始掌握MiniFilter技术,通过实战案例理解其核心原理与应用场景,让你快速上手开发自己的文件监控解决方案。 ## 为什么选择MiniFilter驱动? 传统文件系统过滤驱动开发复杂且兼容性差,而微软推出

gitblog_00701的博客 1037

Minifilter文件系统过滤框架

原理正常的IRP流程是R3 API调用时,会将请求封装成个IRP经过IO管理器到达文件系统,然后在发往磁盘存储系统,最后到达硬件。使用MiniFilter后会在IO栈中添加MiniFilter管理器。当IRP到达文件系统之前时,首先会被该管理器拦截。管理器会将IRP封装成CALLBACK_DATA,由管理器中存在的多个minifilter驱动依次处理。这些驱动位置是固定的,位置由altitude属

zyorz的博客 2209

MiniFilter文件系统学习

Minfilter与legacy filter区别 比sfilter加载顺序更易控制. altitude被绑定到合适的位置。  Minfilter在注册表服务项中有项Altitude值 此值越高位置越靠前 (待考证 每minifilter驱动必须有个叫做altitude的唯标识符.minifilter驱动的altitude定义了它加载时在I/O栈中相对其他minifi

zhuhuibeishadiao 1万+
下一篇: 文件系统Minifilter驱动(二)
jununfly
博客等级 码龄18年 41粉丝 2原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值