您的位置:首页 > 其它

Windows驱动_文件系统过滤驱动之二

2013-07-03 22:27 309 查看
最近的心情有点不好,之前因为很忙,没有时间去想很多事情,现在闲下来,很多事情就开始想了,我应该使用这段时间,好好的利用,可以继续提高一些,我们无法控制明天,那就请抓住今天。加油!

今天偶尔看到了,关于一些文件过滤驱动的代码,终于知道了,微软为什么,要把文件驱动,单独拿出来,作为驱动的另外一级。它非常复杂,所以,也给了我一些想征服它的勇气,我喜欢挑战,喜欢做有难度的事情。

今天我们还是看些基础知识,在看,文件系统过滤驱动如何附加在文件系统和文件卷之前,我们先来看一下,存储的设备堆栈,存储卷,以及文件系统堆栈。

首先来看一下存储设备堆栈,大多数的存储驱动都是PNP的设备驱动,它的装载和管理都是通过PNP管理器,这些设备在PNP管理的设备树上面都有物理设备结点。这里,我们需要强调的是,文件系统和文件系统过滤驱动都不是PNP设备驱动,当然PNP的设备树在也没有结点来代表它们。下面我们用SCSI上面附加着CD-ROM和DISK做为例子,来分析存储设备对象堆栈。



我们从最下面往上看:

1,首先PNP管理器创建为PCI创建一个PDO,然后存储总线驱动也就是PCI总线驱动创建一个FDO,附加在PDO上面.

2, PCI总线驱动枚举并创建PDO,来标识PCI总线是枚举到的存储适配器,这里也就是SCSI控制器。SCSI驱动,它是以Port/Miniport一起创建一个FDO,并附加在PDO上面。

3,SCSI Port驱动分别创建两个PDO,分别代表附加在上面的DISK和CD-ROM.

4, 一个或多个过滤设备对象,可以附加在通过存储SCSI Port驱动创建的PDO上面。这些过滤驱动可以修改一些请求的设置等等,比如修复已知的问题,而不用改变硬件。

5,存储的类驱动,这里指disk.sys,创建一个FDO,附加在下次FiDO的上面。这里有2个FDO,分别是CD-ROM设备,还有一个是分区0硬盘设备,分区0代表整个原始磁盘,一直存在,不管是不是格式化了。

6,这个类驱动,也扮演总线驱动,当PNP管理器查询它的子设备的时候,它需要返回信息。比如,一个移动磁盘驱动可能返回一组PDO代表它一共有多少个分区,好让更上层的驱动可以将FDO附加在其上面。对于一个固定的磁盘,磁盘管理器附加FDO到代表整个硬盘的分区0上面,它可以处理所有的PNP行为。

7,一个或多个过滤驱动可以附加在类驱动的上面,不想底层过滤驱动,上层过滤驱动可以解释发送给类驱动的IRP,可以有选择将其传到下层设备对象上,这个过滤驱动,如果需要的话,可以解释所有的读写请求,IOCTL等附加请求,比如,可以使能应用程序提供磁盘访问密码或其他的信息等。这里显示的,过滤驱动只是附加在物理PDO的分区1上面。

再来看一下,存储卷。

一个卷就是一个存储设备,类似与固定的磁盘,软盘,CD-ROM等,它是以一种固定的格式来存储目录和文件。一个大的卷可以分为很多逻辑卷,也可以叫做分区,每一个逻辑卷都可以格式化为基于NTFS,FAT,CDFS文件系统的媒体存储格式。

一个存储卷,或者存储设备对象都是一个设备,通常使用PDO来表示系统中的一个逻辑卷。存储设备对象在设备堆栈中,但是一般不在设备堆栈的最上层。当一个文件系统绑定在一个存储卷上面,它就创建一个文件卷设备对象,简称VDO来代表文件系统的卷。文件系统的VDO通过共享对象VPB(volume
parameter block)的方式被绑定在存储设备对象上。

绑定管理器(Mount Manager):

绑定管理器是I/O系统的一部分,它负责管理卷的信息,比如卷的名字,磁盘的字符,卷绑定的点。卷管理器被下面的方式被通知一个新的存储卷被增加到系统里。

创建存储卷的类驱动调用IoRegisterDeviceInterface注册一个新的接口在MOUNTDEV_MOUNTED_DEVICE_GUID 接口类中,当绑定发生,PNP设备接口通知卷管理器一个新卷被增加到系统里。

存储卷的驱动发送给绑定管理IRP_MJ_DEVICE_CONTROL, IOCTL 代码是 IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION器,这个请求可以通过IoBuildDeviceIoControlRequest函数创建。

唯一的卷名:

绑定管理器通过查询卷驱动的如下信息来响应一个新到的存储卷:

卷的设备对象的名字,在系统对象树的Device目录下。比如:"\Device\HarddiskVolume1"

卷的GUID,也叫做唯一的卷名。

卷的符号连接名,也就是symbolic link name.(for example, "\DosDevices\D:")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: