文件过滤驱动-FSFilter



读写过滤

读操作
文件的长度: Length = IrpSp->Parameters.Read.Length;

文件的偏移量: Offser.QuadPart = IrpSp->Parameters.Read.ByteOffset.QuadPart

文件内容: Irp-> MdlAddress不为空,则使用Irp-> MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp-> MdlAddres),否则直接使用Irp-> UserBuffer
类型和逻辑
加密指定后缀
加密不区分后缀
重定向原理
重定向原理+加密指定后缀(1)
重定向原理+加密不区分后缀(2)
透明加解密原理
动态加解密原理+加密指定后缀(3)
动态加解密原理+加密不区分后缀(4)
基本流程

读流程
基本流程

写流程
基本数据结构


FileObject,打开一个文件,io 管理器为其创建一个文件对象 结构 FCB,一个文件可能被多个程 序同时打开,这样会生成多个 FileObject,但是只存在一个 FCB 段对象指针
分发函数

主功能IRP



DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FsControl; DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL]= DispatchDirectoryControl; DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate; DriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead; DriverObject->MajorFunction[IRP_MJ_WRITE] = DispatchWrite; DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = DispatchSetInfo; DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose; DriverObject->MajorFunction[IRP_MJ_CLEANUP] = DispatchClean; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchDeviceIoControl;
稳定周期较长 兼容性测试最重要(各种防火墙软件、防病毒软件、主动 防御软件、Rookit技术软件等等) Windows操作系统的升级导致驱动不能平滑过渡( win98/wind2000/winxp/vista/windows 7)
周期长
驱动开发



字符串操作 进程空间、线程上下文 内存分配 线程互斥访问 数据结构(双链表) 中断优先级 DeviceObject、DriverObject Irp理解
学习曲线
驱动层
文件过滤驱动
应用层
Windows系统 Windows开发
C/C++ MFC机制 COM机制 进程、线程、内存管理 PE文件格式、SHE机制 HOOK技术、反汇编 。。。
文件系统 进程、线程、内存机制 核心数据结构 。。。 驱动开发 缓存管理 文件头标识存放 密钥、策略管理 读写加解密处理 。。。
被动加密
使用者并不知道或者并不想文件变成加 密状态,系统自动将文件加密,称之为 被动加密。
类型和逻辑

1、加密指定后缀: 通过指定后缀加密是指保密程序对生成的某一类文档进行加密,而
对其他后缀仍然采用明文。其优点是只加密制定类型的文档,而不影响其 它文件,在加密范围上相对较小,系统的稳定性容易提高;缺点是可能产 生“另存为其他类型的文档”的泄密漏洞,因为此时存储的结果并不是被指 定加密的文件类型。即使把程序可能产生的后缀格式都指定也没有用,因 为有很多办法另存出来 ,例如在Word中可以点击另存为然后在文件名栏输 入2个双引号(“),然后在这2个双引号之间输入任意后缀(例如test.123),那么 保存后的文件就是明文的,拷贝出来文件名改回doc后缀就可能导致文档 泄密。
文件路径获取

在文件创建时获取文件路径
透明加解密简介
1. 2. 3. 4. 5.
概念 类型和逻辑 流程 基本数据结构 重要技术难点
概念


透明指的是用户在 操作的时候,虽然后台 在自动的进行加解密, 但是用户根本就不知道 加密的存在,就像中间 隔了一层透明的玻璃一样。 透明的好处在于不改 变用户的操作,一切都和加 密之前一样,甚至在有些企 业安装加密后都无需通知所 有的员工,就像加密并不存 在一样,只是加密文件到了 企业安全环境的外部才会发 现文件无法打开
而且有些程序的文件格式没有定式,甚至可以保存为任意后缀,例如记 事本,这样加密指定的文件后缀就带来了安全漏洞。

2、加密不区分后缀: 加密不区分后缀是指保密程序对生成的所有文件都进行加密。这种加密
方式由于对指定进程产生的任何文件都加密从而堵住“另存为其他类型的文档” 的漏洞,可保证不论用户如何将文件另存都不会出现明文文件。其工作原理为指 定进程只要发生写操作就加密被写的文件,任何中间文件和临时文件都会被加密 。不区分文件后缀有更高的安全性,技术难度也大得多。


读写过滤

如何获取到读取的内容,取决于 irp操作的io方式:缓冲方式、直 接方式、其他方式
缓冲方式:在文件读写请求中没 有出现过,这种方式的特点是缓 冲从发出irp的应用程序的用户空 间,拷贝一份到内核空间,不同 进程空间的内存各自生效,但是 需要拷贝一份,效率较低


直接方式是用MDL来传递缓冲区 ,将用户空间的地址范围直接映 射到内核空间,这里面要修改页 表的属性 其他方式就是直接把用户空间的 指针传递到内核空间,不做任何 处理,这个指针就是irp>UserBuffer
重要技术难点

缓存管理


单缓存
合法进程打开存在文件,关闭文档,明文保存在缓存, 此时缓存没有刷 至硬盘,也没有清空内存中的资源。此时非法进程再打开文档,在 IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码 合法进程打开存在文件,明文保存在缓存, 此时缓存没有刷至硬盘,也 没有清空内存中的资源。此时非法进程再打开文档,如果是word这种占着句 柄没有关闭的文档,判断为非法进程,禁止打开;如果是notedpad采用内存 映射文件的方式的,句柄关闭,则非法进程打开正在被合法进程打开的文档 ,在IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码 非法进程打开未打开过的加密文档,密文。合法进程再打开加密文档,会先 刷新缓存。 合法进程打开加密文档,在关闭的时候在IRP_MJ_CLEANUP例程中对新 建的文件才刷新缓存
文件过滤驱动 FSFilter
引言



文件系统程序是操作系统核心的部分,对 于Windows操作系统来讲,文件系统和网 络部分并列为驱动程序中最难的部分,难 度大大超过声卡、显卡之类的硬件驱动程 序。 深入学习和调试文件驱动程序,文件过滤 驱动程序,更有助于学习Windows系统底 层核心技术。 本胶片主要介绍文件过滤驱动开发和其应 用:透明加解密,胶片内容比较广泛,希 望能够普及这方面的知识,希望更多有兴 趣的人一起研究,一起进步。

#define CdMapUserBuffer(IC, UB) { \ *(UB) = (PVOID) ( ((IC)->MdlAddress == NULL) ? \ (IC)->UserBuffer : \ (MmGetSystemAddressForMdlSafe( (IC)->MdlAddress, HighPagePriority))); \ }
类型和逻辑
加密类型
静态加密 动态加密
加密原理
把整个文件加密掉、或者把整个文件加 密掉。 文件整体是加密状态,需要解密时读取 多少就解密多少,写入多少就加密多少 ,而不需要把整个文件都解密掉。 由使用者自行要求文件变成加密状态称 之为主动加密
举例
主动加密
主动加密的方式很多,例如用WinRar 把文件压缩并定义一个口令,或者给 Word、Excel文件一个打开或者修改的 口令,这样其他人使用时必须由正确的 口令才能打开,这是使用者主动进行的 加密,如果使用者不进行加密则文件不 会在加密状态。只针对某些文件夹加密 的方式也可以理解为主动加密方式。主 动加密主要应用于个人的文件保护。 被动加密主要用于企业内部防止文件泄 密,即使使用者不想文件被加密,系统 还是会根据定义加密文件,这样文件被 拷贝等各种方法脱离企业环境后,由于 文件在加密状态而无法打开。被动加密 具有另一个特性就是透明操作,即使用 者并不需要进行加密和解密操作,一切 都是后台自动完成,使用者可以不知道 加密的存在。被动加密与作者的意愿无 关,相关文件都会被加密,磁盘加密和 文件透明加解密属于此类。

#define CdMapUserBuffer(IC, UB) { \ *(UB) = (PVOID) ( ((IC)->MdlAddress == NULL) ? \ (IC)->UserBuffer : \ (MmGetSystemAddressForMdlSafe( (IC)->MdlAddress, HighPagePriority))); \
合集下载

文件系统过滤驱动

文件系统过滤驱动

1 引言文件系统过滤概述文件安全性问题已成为当今信息科学领域最重要的课题之一。

目前,解决这个问题的主要技术手段有两种:一是利用应用层HOOK(钩子)技术,对Windows 提供的文件操作函数(API)及由文件操作所触发的Windows消息进行HOOK,经过适当的处理达到预期目的,缺点是效率低、稳定性和一致性差,不适合于大型系统的开发;另一种是开发文件过滤驱动程序,文件过滤驱动作为一种内核态中间层驱动,不需要改变下层驱动或用户程序而增加新的功能,具有效率高、可靠性强、可扩充等特点,成为现阶段信息安全技术研究的热点。

1.1 文件过滤驱动在信息安全领域的应用1 文件加/解密文件过滤驱动程序可以实现对指定文件、目录,甚至整个逻辑盘的加/解密功能。

当文件在写入磁盘的过程中,截获所有对该文件的IRP_MJ_WRITE,在其分发例程中对IRP携带的数据进行加密处理后写入磁盘;文件被从磁盘读取的过程中,截获所有对该文件的IRP_MJ_READ,在其分发例程中对IRP携带的数据进行解密处理后向上层返回。

加密后的文件在磁盘中以密文形式存储,保证了数据存储的安全性。

2 病毒防护应用程序在创建一个新文件或打开一个已存在文件时,文件系统过滤驱动程序截获IRP_MJ_create,判断被打开文件是否存在和病毒特征代码库相匹配的特征,若存在,说明文件感染了病毒,失败掉该IRP,拒绝打开;否则,使IRP继续向下传递,完成正常的打开操作。

3 进程控制为了防止恶意进程的破坏,有时需要规定只允许某些经过安全验证的特定进程对受保护的文件进行访问,其他不在规则范围内的进程不允许访问。

我们可以通过系统提供的PsGetCurrentProcessId、PsGetCurrentThreadId等API函数得到发起I/O请求的进程及线程的相关信息,如:获得发起进程名称,与安全访问规则(进程白名单)中的可信进程相比较,若该进程位于规则中,说明信任其行为是安全的,允许访问受保护文件;否则,拒绝访问。

文件系统驱动和设备驱动的区别 以及介绍

文件系统驱动和设备驱动的区别 以及介绍

文件系统过滤驱动以及设备驱动的区别一、何谓文件系统过滤驱动?文件系统过滤驱动是一种可选的,为文件系统提供具有附加值功能的驱动程序。

文件系统过滤驱动是一种核心模式组件,它作为Windows NT执行体的一部分运行。

文件系统过滤驱动可以过滤一个或多个文件系统或文件系统卷的I/O操作。

按不同的种类划分,文件系统过滤驱动可以分成日志记录、系统监测、数据修改或事件预防几类。

通常,以文件系统过滤驱动为核心的应用程序有防毒软件、加密程序、分级存储管理系统等。

二、文件系统过滤驱动并不是设备驱动设备驱动是用来控制特定硬件I/O设备的软件组件。

例如:DVD存储设备驱动是一个DVD驱动。

相反,文件系统过滤驱动与一个或多个文件系统协同工作来处理文件I/O操作。

这些操作包括:创建、打开、关闭、枚举文件和目录;获取和设置文件、目录、卷的相关信息;向文件中读取或写入数据。

另外,文件系统过滤驱动必须支持文件系统特定的功能,例如缓存、锁定、稀疏文件、磁盘配额、压缩、安全、可恢复性、还原点和卷装载等。

下面两部分详细的阐述了文件系统过滤驱动和设备驱动之间的相似点与不同点。

1、文件系统过滤驱动同设备驱动的相似点:下列部分描述了Windows操作系统中文件系统过滤驱动和设备驱动之间的相似点:(1)、类似的结构类似于设备驱动,文件系统过滤驱动有着属于自己的DriverEntry、Dispatch和I/O组件例程。

文件系统过滤驱动同设备驱动一样调用许多相同的系统核心例程,它们都会过滤发送给它们所关联的设备的I/O请求。

(2)、类似的功能:文件系统过滤驱动和设备驱动都是I/O子系统的组成部分,因此它们都接收和作用于I/O请求包(IRP)。

类似于设备驱动,文件系统过滤驱动同样可以创建它们自己的IRP并将该IRP发送到低层驱动。

这两种驱动均可以通过注册回调函数来接收多种系统事件的通知。

(3)、其它类似点:同设备驱动类似,文件系统过滤驱动可以接收传入的I/O控制码(IOCTLs)。

filealterationobserver filefilter -回复

filealterationobserver filefilter -回复

filealterationobserver filefilter -回复什么是文件更改观察器(File Alteration Observer)?如何使用文件过滤器(File Filter)来优化文件更改观察器的功能?文件更改观察器(File Alteration Observer)是一种软件工具,它可以监视特定目录或文件,检测并记录文件的更改、添加或删除操作。

这个工具在许多情况下都非常有用,比如监控配置文件的更改、检查文件完整性、比对文件版本等。

文件过滤器(File Filter)可以进一步优化文件更改观察器的功能,通过设置特定的过滤规则,只关注特定类型或特定名称的文件更改。

接下来,我们将一步一步回答有关文件更改观察器和文件过滤器的问题。

第一步:了解文件更改观察器(File Alteration Observer)文件更改观察器是一个监控工具,它可以实时监视特定目录或文件的更改情况。

当文件发生更改、添加或删除时,观察器会记录这些变化并生成相应的报告。

这个工具可以帮助我们了解文件的变更历史,追踪问题的源头,或者确保文件的完整性和安全性。

第二步:掌握文件过滤器(File Filter)文件过滤器是用于优化文件更改观察器功能的工具。

通过设置文件过滤器,我们可以筛选出我们关心的文件,并忽略其他不重要的文件更改。

过滤器可以根据文件的类型、名称、大小或修改日期等属性来进行设置。

第三步:使用文件过滤器来优化文件更改观察器的功能以下是一些使用文件过滤器优化文件更改观察器功能的方法:1. 根据文件类型进行过滤:通过设置文件过滤器,只关注特定类型的文件更改。

比如,如果我们只关心文本文件的更改,我们可以设置过滤器只监视.txt或.doc文件。

2. 根据文件名称进行过滤:设置文件过滤器,只监视特定名称的文件更改。

这在处理特定配置文件的更改时特别有用。

比如,我们可以设置过滤器只监视名为"config.properties"的文件。

Windows 文件过滤驱动经验总结

Windows 文件过滤驱动经验总结

本上所有设备栈相关 IRP 处理工作都是在它那里完成的。 包括 IRP->Flags 的一些标志的判断,对 APC 的处理,抛出 MULTIPL
E_IRP_COMPLETE_REQUESTS 错误等。当它延设备栈一直 调用驱动所安装的 CompleteRoutine时,如果发现 STA
TUS_MORE_PROCESSING_REQUIRED 这个标志,则会停止 向上继续回滚。这也是为什么在 CompleteRoutine 中
pleteRoutine 中使用 IoFreeIrp()来释放掉这个 IRP,并不让 它继续传递。这里一定要注意,在 CompleteRout
ine函数返回后,这个 IRP 已经释放了,如果这个时候在 有任何关于这个 IRP 的操作那么后果是灾难性的,必定导 致 BSOD 错误。前面
1) 小节给出的例子只完成了第一步这里继续讲第二步, 第一步我重用这个 IRP 得到了文件大小,那么这个时候虽 然知道大小,但我还是无法知道这个
FCB (File Control Block)的。 2、从头建立 IRP 发送关注点 无论你建立什么样的 IRP,是 IRP
_MJ_CREATE 也好还是 IRP_MJ_DIRECTORY_CONTROL也罢, 最要提醒的就是一些标志。不同的标志会代来不同的结 果,有
些结果是直接返回失败。这里指的标志不 光是 IRP->Flags, 还要考虑 IO_STACK_LOCATION->Flags还有其它等等。尤
tine 中绝大多数就这么两种情况,你需要使用其中的一种 情况。那么为什么需要安装 CompleteRoutine 呢?那是因 为我们对其 IR
P 从上层驱动,经过我们驱动,在经过底层设备栈返回到 我们这一层驱动时需要得到其中内容作为参考依据的, 还有对其中内容需要进行修改的。再有一种情

Windows文件系统的过滤器驱动程序设计

Windows文件系统的过滤器驱动程序设计

Windows文件系统的过滤器驱动程序设计过滤器驱动程序是Windows操作系统中的一种特殊类型的驱动程序,用于实现文件系统层面的数据过滤和处理。

它可以截取文件系统操作,对文件或目录的访问进行拦截和修改,以实现特定的功能或策略。

1. 过滤器驱动程序的种类:Windows操作系统支持多种类型的过滤器驱动程序,包括文件系统过滤器驱动程序、网络过滤器驱动程序和通用过滤器驱动程序等。

其中,文件系统过滤器驱动程序是最常见的类型,用于截获和处理文件系统操作。

2.过滤器驱动程序的工作原理:过滤器驱动程序通过在文件系统的驱动栈中插入自身的过滤器层,来截获文件系统的操作。

当应用程序对文件或目录进行操作时,过滤器驱动程序可以截获这些操作并进行相关处理,比如拒绝访问、修改文件内容等。

3. 过滤器驱动程序的开发工具:Windows提供了一些开发工具和框架,可以帮助开发者设计和实现过滤器驱动程序。

比如,Windows Driver Kit (WDK)中包含了一些示例代码和文档,可以帮助开发者快速入门;而Windows Filter Manager (FltMgr)提供了一个高级的API接口,用于编写和管理过滤器驱动程序。

4.过滤器驱动程序的功能:过滤器驱动程序通常用于实现一些文件系统相关的功能或策略,比如文件加密、访问控制、实时监控等。

开发者可以根据需求设计和实现不同的功能模块,并在过滤器驱动程序中进行集成和管理。

5.过滤器驱动程序的资源管理:过滤器驱动程序在运行过程中需要占用一定的系统资源,包括内存、CPU等。

开发者需要合理地管理这些资源,避免造成系统性能下降或不稳定。

总之,Windows文件系统的过滤器驱动程序设计是一个相对复杂的任务,需要开发者对Windows操作系统的内部机制有一定的了解和掌握。

通过合理的设计和实现,可以实现各种不同的功能和策略,提升系统的安全性和稳定性。

Windows文件系统过滤驱动开发教程(第二版)

Windows文件系统过滤驱动开发教程(第二版)
前我在驱动开发网上发表了一组描述如何开发 Windows 文件系统过滤驱动的文章。非常庆幸这些文章能 给大家带来帮助。
原本的文章中我使用了自己编写的代码。我不打算在这里论述代码风格的优劣并发起一场辩论,无可怀疑的是,读者们 大多喜欢看到类似微软范例的代码。为此我把文章中的代码换成微软标准的文件过滤驱动范例 sfilter 的代码。赠于喜欢此 书的读者和驱动开发的后来者们。
网友们帮我整理的原版已经非常流行。为了区别起见,称为第二版。
0. 作者,楚狂人自述
我感觉 Windows 文件系统驱动的开发能找到的资料比较少。为了让技术经验不至于遗忘和引起大家交流的兴趣我以 我的工作经验撰写本教程。
我的理解未必正确,有错误的地方望多多指教。我在一家软件公司从事安全软件相关的开发工作。我非常庆幸和许多优 秀的同事一起工作,特别要提到 wowocock,陆麟,jiurl 和曾经的同事 Cardmagic.非常乐意与您交流。有问题欢迎与我 联系。邮箱为 MFC_Tan_Wen@。
学习文件系统驱动开发之前,应该在机器上安装 ifsddk。ddk 版本越高级,其中头文件中提供的系统调用也越多。一 般的说用高版本的 ifsddk 都可以编译在低版本操作系统上运行的驱动(使用对应的编译环境即可)。ifsddk 可以在某些 ftp 上免费下载。请不要发邮件向我索取。
我的使用的是 ifs ddk for 2003,具体版本号为 3790,但是我实际用来开发的两台机器有一台是 windows 2000, 另一台是 windows 2003.我尽量使我编译出来的驱动,可以在 2000\xp\2003 三种系统上都通过测试。
对于这本教程,您可以免费获得并随意修改,向任何网站转贴。但是不得使用任何内容作为任何赢利出版物的全部或者 部分。

文件过滤驱动学习笔记1

文件过滤驱动学习笔记1文件系统过滤驱动,是在驱动级别上实现的,对文件系统的一举一动进行检测的一种技术。

这里仅指windows操作系统。

过滤包括文件打开、读写、重命名、删除,目录的操作等。

文件过滤非常有用,大多数实时监控的杀毒软件都会利用到这个技术。

从今天开始,分享在学习过程中的一些心得。

Wdk提供了一个sfile例子,供我们参考。

微软的习惯很好,在抛出一个新的东西之后,它的文档肯定有一个同步的跟进。

并且文档做得非常好,msdn,各种help。

比起google的android,微软的脚步走得更加坚实。

言归正传。

源文件在我电脑的路径是C:\WinDDK\6001.18002\src\filesys\filter\sfilter。

这个目录下有乱七八糟8个文件,而真正的代码只有sfilter.c一个。

让我们开始揭开它神秘的面纱吧。

看代码一般从入口开始看起。

DriverEntry。

sfilter的DriverEntry 做了三件事。

1填充MajorFunction,2填充fastIoDispatch,3注册文件系统变化回调。

1.填充MajorFunction这个不多说了,上层应用程序调用驱动时,就是利用这些接口。

比如CreateFile时候,会调用IRP_MJ_CREATE。

我们要进行过滤,就需要在这些例程中做事情。

2.填充fastIoDispatch这个我至今没看懂啥意思。

不过看雪上的高人都说,这个东西没必要管它,最多只是速度上的损失。

3.注册系统变化回调status = IoRegisterFsRegistrationChange( DriverObject, SfFsNotification );SfFsNotification这个函数是绑定设备控制对象的关键所在。

其重要性就在于,它能探测动态加载的卷设备,包括u盘等。

这里着重说说这个东西。

我们知道,驱动中实现过滤的一般方法就是绑定。

绑定一个我们自己的设备对象到设备栈顶,所有的IRP信息到来后首先到达我们的设备对象,从而可以优先获取系统信息。

文件系统Minifilter驱动

文件系统Minifilter驱动声明:本系列文章源于WDK,所有权利归原作者所有,翻译的目的只为交流和学习。

除了商用你可以随意地使用这篇译文。

但请不要删除声明。

——by jununfly说明:所有preoperation及postoperation均简写为pre-oper和post-oper所有文件系统过滤驱动均简写为FSFD(文件系统过滤驱动)所有基于IRP的I/O即IRP-based I/O均简写为IRP-I/O版本:20090220Filter管理器和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这个唯一标识符决定。

如何安装WDM驱动

为了让这个驱动被系统加载,必须创建一个 inf 文件。

由于是使用现成的例子,因此这一步也可以省下来。

直接右键点击例子中的 inf 文件,在弹出的菜单中选择 “安装 ”即可。

这里要注意的是, inf 中的 StartType 参数,它可以控制驱动被加载 的方式:因为是测试,我使用 SERVICE_DEMAND_START ,即由手动加载 驱动。

例子是 miniFilter 驱动,因此可以在命令提示行中用 “fltmcload 驱动名称 ”来加载,相应的卸载是 “fltmc unload ”。

如果是其它驱动,则 用"net start 驱动名称"来加载,相应的卸载是"net stop 驱动名称”。

注 意驱动名称不是文件名, 而是inf 中[Settings ]的ServiceName 值。

驱动 要发布时,也可以通过 CreateService & StartService API 来动态安 Inf 文件的写法,可以参考例子,或者拿现成的改一改。

下面的是摘 自驱动开发网的XiangXiangRen 整理的 Inf 文件, 改起来比较方便, 谢谢 XiangXiangR en 。

文件过滤驱动安装 inf 文件简易获得法不少同仁获得 inf 文件都是直接修改 sfilter.inf, 这个修改很需要耐性, 不小心 敲错 又不能编译调试,改错难度不小。

有些同仁不加修改,结果 sfilter 满天飞:)。

我修改了一下 sfilter 的安装文件,这样你只要修改最后的字符 串列表,就可以 轻松得到自己的安装文件了。

可以用于任何打算静态加载的文件过滤驱动, 内容 如下:SERVICE_AUTO_START (2)SERVICE_BOOT_START (0) 会自动加载SERVICE_DEMAND_START(3) 安全模式下不会自动加载 在系统安全模式下启动时 驱动也则驱动不会自动加载[Version]signature = "$Windows NT$"Class = "ActivityMonitor" ;This is determined by the work this filter driver doesClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2} ;This value is determined by the ClassProvider = %MyName%DriverVer = 08/28/2005,1.0.0.1CatalogFile = Mycat.cat ; A CatalogFile entry is required for a WHQL sign ature.; The actual catalog file will be provided by WHQL. The; catalog file for this sample is not provided for use. [DestinationDirs]DefaultDestDir My.DriverFiles = 12= 12 ;%windir%\system32\drivers[SourceDisksNames]1 = %MyDisk%[SourceDisksFiles]%MySysFileName% = 1[DefaultInstall]OptionDesc = %MyServiceDesc%CopyFiles = My.DriverFiles[DefaultInstall.Services]AddService = %MyServiceName%,,My.Service AddReg = My.AddRegistry[DefaultUninstall]DelFiles = My.DriverFilesDelReg = My.DelRegistry[DefaultUninstall.Services]DelService = %MyServiceName%,0x200 [My.Service]DisplayName Description ServiceBinary= %MyServiceName%= %MyServiceDesc%= %12%\%MySysFileName%;%windir%\system32\drivers\JwFvfs.sysServiceType = 2 ;SERVICE_FILE_SYSTEM_DRIVERStartType = 0 ;SERVICE_BOOT_STARTErrorControl = 1 ;SERVICE_ERROR_NORMALLoadOrderGroup = "FSFilter Activity Monitor" ;"filter" if install to 2k.AddReg = My.AddRegistry[My.AddRegistry][My.DelRegistry][My.DriverFiles]%MySysFileName%[Strings]MyName = "Tan Wen"MyServiceDesc = "Tan Wen's File System Filter."MyServiceName = "TanWenFsF"MyRegistry = "system\currentcontrolset\services\TanWenFsF"MyDisk = "Tan Wen Source Media"MySysFileName = "TanWen.sys"修改的时候只要修改最后的字符串列表,依次是开发者名,服务描述,服务名,注册表位置,磁盘标签,驱动文件名。

#Windows文件系统过滤器之微过滤器驱动开发指南

微过滤器驱动开发指南0.译者序对我来说,中文永远是最美,最简洁,最精确和最高雅的文字。

本文翻译仅仅用做交流学习。

我不打算保留任何版权或者承担任何责任。

不要引用到赢利出版物中给您带来版权官司。

本文的翻译者是楚狂人,如果有任何问题,,或者是QQ16191935,或者是MSN 。

我翻译此文出于对文件系统技术的兴趣。

这就是新的文件系统过滤接口。

其实也不算什么新的东西,微软开发了另一个“旧模型的”过滤驱动,称之为过滤管理器<Filter Manager)。

从而提供了一系列新的接口来让你开发新的过滤器。

确实这套接口变简单清晰了。

你至少避免了包含无数个信息的IRP,避免了请求在各个部件中循环的发来发去,一个分发例程中处理无数中情况,一不小心系统崩溃。

我不知道花了多少时间才弄明白一个简单的缓冲读请求从用户到过滤到文件系统和缓冲管理器,虚拟内存管理器之间的关系!现在你也许不需要再管他们了,仅仅做好自己的过滤工作就可以。

这套接口强大吗?能实现你想要的功能吗?你很快就发现你没有研究过sfilter就看不懂Minifilter,或者是还得从sfilter开始做起更灵活一点。

微软就是这样,拿僵硬而且也不简单的东西来“简化”强大灵活但是设计上一团糟的东西,对于你来说是两者都必须学习,最后你的脑子被微软塞得满满的,不过没关系,我们已经习惯了.此文的原文是《Filter Driver Development Guide》,出自微软的网站。

我在以下这个地址下载得到此文:我尽量在翻译中使文章保持原貌。

如果您认为此文无法理解,建议您首先阅读旧的文件过滤驱动的相关资料。

我认为必须有文件系统和windows驱动的相关知识,才能阅读此文。

我未必总是使用规范的名词,但我总是使用最容易理解的名词。

一些常用的可能不翻译,比如IRP,MDL,有驱动开发经验的人应该可以理解。

另一些可能采用中文<英文)的方式。

一些解释如下:例程<Routine):我不懂得例程和函数有什么不同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档