首页
社区
课程
招聘
[原创]文件系统过滤驱动流程与要点总结
发表于: 2019-2-17 14:50 10178

[原创]文件系统过滤驱动流程与要点总结

2019-2-17 14:50
10178

前段时间一直自己闷着头学驱动,也时常做总结。本篇文章是最先发在我的博客上的,但无奈看的人比较少,无法讨论,也不知道自己的理解是否有错误。第一次发帖,如果有错误或者不严谨的地方请各位大佬帮忙指出或补充,谢谢~ (隔壁吾爱也发了一份)


开发环境:Visual studio 2017
运行环境:Win7 sp1
工具:DeviceTree 2.30
开发环境:Visual studio 2017
运行环境:Win7 sp1
工具:DeviceTree 2.30
过滤驱动的原理大致都相同,关键就是如何绑到目标设备上。文件系统过滤驱动比起之前的串口过滤驱动有些复杂,复杂点主要就在设备绑定上
下面菜鸟就总结下整个流程和要点,方便大家理解,有错误的话欢迎大家指出~

1. 计算机上像C:、D:这种逻辑盘都属于卷设备
2. 卷设备由卷管理器创建
3. 当一个卷设备使用了某中文件系统(例如NTFS或FAT32),则由文件系统驱动为这个卷设备生成无名的设备对象
4. 存储媒介被扫描到后,卷管理器创会建卷设备,设备会请求挂载,然后文件系统创建卷设备对象。
5. 文件系统驱动还会生成控制设备,用来修改内部配置。
6. 通常一个文件系统只会有一个控制设备。
7. 只有第一个采用了某一个文件系统的卷加载到系统中时,文件系统的驱动程序才会被加载。

三、整体流程

1. 创建过滤驱动的文件系统控制设备作为和外界的通信接口(可能现在还用不到,暂时留出)。
2. 设置IRP分发函数与快速IO分发函数
3. 注册系统变动回调函数,在其中创建过滤控制设备对象绑定到激活的文件系统控制设备上
4. 处理IRP_MJ_FILE_SYSTEM_CONTROL的子IRP,在有卷设备挂载完成时对其绑定。
1. 计算机上像C:、D:这种逻辑盘都属于卷设备
2. 卷设备由卷管理器创建
3. 当一个卷设备使用了某中文件系统(例如NTFS或FAT32),则由文件系统驱动为这个卷设备生成无名的设备对象
4. 存储媒介被扫描到后,卷管理器创会建卷设备,设备会请求挂载,然后文件系统创建卷设备对象。
5. 文件系统驱动还会生成控制设备,用来修改内部配置。
6. 通常一个文件系统只会有一个控制设备。
7. 只有第一个采用了某一个文件系统的卷加载到系统中时,文件系统的驱动程序才会被加载。

1. 创建过滤驱动的文件系统控制设备作为和外界的通信接口(可能现在还用不到,暂时留出)。
2. 设置IRP分发函数与快速IO分发函数
3. 注册系统变动回调函数,在其中创建过滤控制设备对象绑定到激活的文件系统控制设备上
4. 处理IRP_MJ_FILE_SYSTEM_CONTROL的子IRP,在有卷设备挂载完成时对其绑定。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-2-18 12:58 被菜就一个字编辑 ,原因:
收藏
免费 3
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  Editor   +1.00 2019/02/18 感谢分享~
最新回复 (7)
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-2-17 22:35
0
雪    币: 635
活跃值: (1016)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2019-2-18 09:08
0
雪    币: 26245
活跃值: (63297)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
4
感谢分享~
2019-2-18 09:37
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2019-2-18 10:29
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享
2019-2-18 10:30
0
雪    币: 635
活跃值: (1016)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2019-2-25 13:39
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢分享
2019-12-18 10:37
0
游客
登录 | 注册 方可回帖
返回
//