文件过滤驱动拦截的IRP主要包括以下几个:
IRP_MJ_CREATE,文件创建操作,文件的任何操作,都是从这里开始的。
IRP_MJ_CLEANUP,文件的HANDLE句柄全部关闭会触发这个消息
IRP_MJ_CLOSE,文件对象 FILE_OBJECT引用减为0,文件对象即将被删除时触发。
IRP_MJ_READ、IRP_MJ_WRITE, 文件的读写操作
IRP_MJ_QUERY_INFORMATION 查询文件信息,比如文件创建修改时间,文件大小等等。
IRP_MJ_SET_INFORMATION 设置文件信息,比如删除文件,重名文件,更改文件大小等等。
IRP_MJ_DIRECTORY_CONTROL 查询某个目录下的文件和子目录信息。

还有几个也需要处理的,如果不处理可能某些文件操作不正常。
IRP_MJ_QUERY_VOLUME_INFORMATION ,查询目录所在的卷设备信息。
IRP_MJ_QUERY_SECURITY 查询安全信息,在win7系统得处理这个,否则exe程序无法执行。
(还包括其他需要处理的IRP)。

看起来处理的IRP不算多,我当初也是这么想的,可是处理的细节却挺多。
(查看 WDK的实例里边的 fastfat目录 ,微软实现FAT32文件系统的源代码,那里边除了代码还是代码,而且还是异常的多)

我在前几篇文章中讲过虚拟磁盘驱动, 虚拟磁盘驱动加载的时候,会在Windows磁盘管理器出现一个新的磁盘,把这个磁盘分区格式化之后,可以正常的把他当成一个真正的磁盘来操作,可以在上边存放,删除文件目录等。
这些操作,经过Windows系统重重解析处理,最后会转换成对虚拟磁盘驱动单纯的对磁盘扇区的偏移读写操作,
然后把对扇区的偏移读写,通过多种途径比如是一个真正的文件,保存起来。操作这个虚拟磁盘,最终就变成操作一个单纯文件。
类似的概念,比如 Windows自带的vhd或vhdx格式的虚拟磁盘文件。

http://blog.csdn.net/fanxiushu/article/details/43636575

文件过滤驱动实现目录重定向(一)good的更多相关文章

  1. Windows 文件过滤驱动经验总结

    Windows 文件过滤驱动经验总结作者:sinister 本文转载自驱动开发网 看了 ChuKuangRen 的第二版<文件过滤驱动开发教程>后,颇有感触.我想,交流都是建立在平等的基础 ...

  2. 基于Minifilter框架的文件过滤驱动理解

    概述 Minifilter即File System Minifilter Drivers,是Windows为了简化第三方开发人员开发文件过滤驱动而提供的一套框架,这个框架依赖于一个称之为Filter ...

  3. [转载]文件过滤驱动 文件系统激活通知 IoRegisterFsRegistrationChange函数实现

    IoRegisterFsRegistrationChange 注册一个文件系统变动回调函数,用来被通知文件系统的激活和注销,激活是指第一次加载文件系统,当一个文件系统已经加载后,当加载一个同种文件系统 ...

  4. 文件过滤驱动框架Minispy解析一

    因工作需要,研究minispy文件过滤框架,上图为我整理出的其内核部分代码的逻辑.

  5. File System Minifilter Drivers(文件系统微型过滤驱动)入门

    问题: 公司之前有一套文件过滤驱动,但是在实施过程中经常出现问题,现在交由我维护.于是在边看代码的过程中,一边查看官方资料,进行整理. 这套文件过滤驱动的目的只要是根据应用层下发的策略来控制对某些特定 ...

  6. 驱动开发:内核枚举Minifilter微过滤驱动

    Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的sfilter文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使 ...

  7. 一个文件系统过滤驱动的demo

    因为没写过FSD过滤驱动,所以拿来练练手,没有什么技术含量.参考自Win内核安全与驱动开发. 先梳理一下大概的流程,就是怎么去绑定设备栈.怎么去过滤各种请求的. 首先肯定是要绑定设备栈的,来看下怎么绑 ...

  8. 常用命令(过滤、管道、重定向、ping 命令、netstat 命令、ps命令)

    常用命令 过滤 过滤出 /etc/passwd 文件中包含 root 的记录 grep 'root' /etc/passwd 递归地过滤出 /var/log/ 目录中包含 linux 的记录 grep ...

  9. Windbg对过滤驱动DriverEntry函数下断点技巧

    方法1: 1> 先用DeviceTree.exe查看指定的过滤驱动的Load Address(加载地址) 2> 再用LordPE.EXE查看指定过滤驱动文件的入口点地址 3> 计算过 ...

随机推荐

  1. procedure的over(partition by ) function

    转载自:http://www.2cto.com/database/201310/249722.html oracle的分析函数over(Partition by...)   Sql代码       o ...

  2. C#中常用修饰符

    1.存取修饰符 public:(公有的)存取不受限制 protected:(受保护的)只有包含该成员的类以及派生类可以存取  private:(私有的)只有包含该成员的类可以使用 2.类修饰符 abs ...

  3. (转) VS2012程序打包部署详解

    程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的.     经过翻阅资料发现 ...

  4. Express安装与调试

    Express 是基于Node.Js平台,快速.开放.极简的 web 开发框架. 1.安装 Express的安装通过cmd来进行,过程如下: 首先,先在本地建立一个项目文件夹,取名Nodejs. 然后 ...

  5. linq递归

    public class Comment { public int Id { get; set; } public int ParentId { get; set; } public string T ...

  6. hdu 5056 Boring count

    贪心算法.需要计算分别以每个字母结尾的且每个字母出现的次数不超过k的字符串,我们设定一个初始位置s,然后用游标i从头到尾遍历字符串,使用map记录期间各个字母出现的次数,如果以s开头i结尾的字符串满足 ...

  7. 关于NPC和NP-Hard问题

    参考链接: 1. P.NP.NPC和NP-hard问题的理解 参考:<算法导论>

  8. entity framework mysql 那些写法你碰不得

    记 几次 ef 数据查询踩到的坑......未完待续

  9. C#实现登录窗口(不用隐藏)

    C#登录窗口的实现,特点就是不用隐藏,感兴趣的朋友不要错过 (1).在程序入口处,打开登录窗口 复制代码代码如下: static void Main()  {  Application.EnableV ...

  10. object-c 1

    多个参数的写法 (方法的数据类型)函数名:(参数1数据类型)参数1的数值的名字 参数2的名字: (参数2数据类型) 参数2值的名字 …. ; 举个例子,一个方法的定义: -(void) setKids ...