《Windows内核安全与驱动编程》-第十章-磁盘的过滤学习-day1

磁盘的过滤

10.1 磁盘过滤驱动的概念

10.1.1 设备过滤和类过滤

​ 在前面学习过键盘过滤,建立一个过滤设备并将其绑定在一个有名字的设备上,这叫做设备过滤。但是在Windows中有一些情况,例如设备刚插入的时候,如何在这些设备刚加入时就自动的进行绑定呢?这就要用到类过滤了。这种类过滤驱动的驱动程序,能够在某一类特定的设备建立时由PnP管理器调用指定的过滤驱动代码,并且允许用户在此时对这一类设备进行绑定。根据用户设备在整个设备栈上相对系统本来存在设备的不同位置,可以分为上层过滤和下层过滤。其中以上层过滤最为常见,因为这时过滤设备在设备栈上位于实际功能设备的上面,会首先获得 Windows系统发下来的IRP请求,便于过滤设备的实现者进行处理。

10.1.2 磁盘设备和磁盘卷设备过滤驱动

​ 在Windows的存储系统中,最底层的是磁盘,而在磁盘上层的是卷,卷虽然只是逻辑上的一个概念,但是Window仍然为其建立了设备。所以会有磁盘设备和磁盘卷设备两种类型。

​ 磁盘卷并不仅仅是只对应一个磁盘,有时会出现跨磁盘的现象。所以我们必须将这两种设备区分开来。

​ 从驱动的角度上来说,这两种设备收到的读写请求都是针对磁盘大小或者在卷大小范围之内的请求,都是以扇区大小对齐的,处理起来没有太大的区别。所以本章主要讲解磁盘卷设备的上层过滤驱动,因为对于用户来说,卷是最直接看到的现象。而对于开发人员来说,使用卷过滤会在一定程度上减少工作量。因为不需要处理磁盘设备中才会遇到的一些问题,但是同时也限制了一些功能的实现,原因同样是不能处理磁盘设备上的问题,正所谓有利有弊!

10.1.3 注册表和磁盘卷设备过滤驱动

​ 在实际的系统运行过程中,一个普通的驱动程序是如何告知Windows操作系统它是一个类过滤驱动,并且如何和相应的设备联系起来呢?这就需要注册表的帮忙了。

​ 我们应该熟悉一个驱动程序作为服务是如何在注册表中存在的,在 HKEY\LOCAL\MACHINE\SYSTEM\CurrentSet\Services 下服务键的名字也就是这个服务的名字了。同时在HKEY\LOCAL\MACHINE\SYSTEM\Control\Class 下也会有许多类的名字,这些类的名字都是一长串数字,根据上一章的内容,这一长串数字实际上是一个ClassGUID,随意选择一个键,下面都会有一个叫做Class的值,这就是一个累。在这些键中,可以找到一个Class值为“Volume”的键,这就是磁盘卷类。在本章中最关键的是其中一个叫做 UpperFilters 的值,这个值起了最关键的作用——说明这个类的上层过滤驱动都有哪些。到此为止,我们应该明白,只需要在这个 UpperFilter 值中填入相应的驱动名,这个驱动就会作为这一类设备的上层过滤驱动被Windows操作系统是被,实际上这样也就完成了上层过滤驱动的安装工作了。

10.2 具有还原功能的磁盘卷过滤驱动

10.2.1 简介

​ 这个过滤驱动为讲解而写,需要使用 Windows XP系统,还有许多其他的限制。但是作为学习,还是了解到大致的框架即可。后续需要的时候,再去查相关的文档实现。这里实现的功能为,将磁盘还原到某一时刻的功能,在该时间点之后的所有操作将被抹去。

10.2.2 基本思想

​ 为了实现还原,一种简单的思路如下:

  • 在开启还原之后,所有对还原卷的操作将被写到另一个地方,而不会真正的写在还原卷上。这里所说的另一个地方也被称为转存处。
  • 在开启还原之后,所有对还原卷的读操作将分为两种情况处理。一种是读了开启还原之前就存在的内容,这种情况就按照正常的读取方式从还原卷上读取;另一种情况是读了开启还原卷之后还写到还原卷上的内容,这种情况将会从转存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值