wdk minifilter 自带示例的简要说明

   最近要用wdk 7 的minifilter做一个文件过滤的东西,苦于没有资料可用,明明知道 winDDK/src/filesys/minifilter的范例很有用,但就是无从下手,google了半天(SB google.cn刚换马夹变成了google.hk,速度叫个慢哟),最终还是抱上了msdn的大腿, 居然在MSDN library> win32 and com development >windiws Driver Kit > device and driver technologies> installable file system drivers> IFSK samples 找到了英文简介。

  没办法,自已翻译吧,虽然咱的E文水平一般,可好歹也算是“填补国内空白”不是? 不要埋怨哥,哥没有传说......

  

     原文地址:http://msdn.microsoft.com/en-us/library/dd445225.aspx

      转载请注明来源!http://blog.csdn.net/jykj_007

 

cancelSafe minifilter sample
描述: 如果你要使用cancel-safe(什么意思?)队列 ,就用cancelsafe minifilter sample吧。  
操作原理:当cancelsafe minifilter 附属于一个卷时,将初始化一个cancel-safe 队列。 当这个minifilter销毁时,监控器读取通过i/o栈的操作。如果这个读操作已经在一个名叫csqdemo.txt文件上运行, 这个操作将被排到cancel-safe 队裂, 排队操作将在短暂的停顿(通过一个单独的运行在系统上下文的工作线程)之后完成  (去死啊,搞那么多that)


minispy minifilter sample
描述:本示例是一种监控和记录任何 I/O以及重现系统内部事务活动 的工具。这个例子类似大名鼎鼎的filespy,不过它是用minifilter实现的。


  操作原理: minispy由用户模式和内核模式组成,内核模式组件注册(相当于各种利用过滤管理器 进行i/o和事务操做
)的回调函数,这些回调函数帮助minispy记录任何系统的i/o和事务动作事件。当一个用户能够访问记录信息时,这个记录信息通过用户模式组件,即可以输出到屏幕上也可以输入到磁盘上的log文件里
   要观察一个设备上的i/o 活动,你必须明确地指定minispy和这个设备的联系,同样,也可以要求minispy停止对一个特定设备记录日志。

 


ctx minifilter sample
描述: 本例用来说明如何指派你的minifilter和实例、文件、流或流句柄的上下文。
  操作原理:ctx minifilter展示如何从和实例、文件、流或流句柄指派上下文或移除上下文,无论一个或多个对象被创建,ctx都会指派一个上下文。 当指派一个文件的上下文时,例子同样创建一个流和流句构的上下文。所有的上下文将完全被过滤管理器用minifilter提供的回调函数删除。

 

passThrough minifilter sample

   描述: passThrough  minifilter 说明 如何为不同类型的irp指定回调函数

   操作原理: passThrough minifilter没有任何真正的功能.对于每种i/o操作
,预回调和后回调函数同样被调用,这些回调函数仅仅在堆栈的下一个过滤器之前。

 

fastfat file system
 discription :你可以用它来写全新的文件系统(if U want....)
  I had never think of to write a new file system...even the Boss kill me

 

scanner minifilter sample
  discription: 本例适用于 有志于写检测文件数据过滤器的“developers”,尤其是反病毒就是属于这个领域滴(ms 卡巴斯基就用到minifilter)!

 操作原理:sanner包括用户模式和内核模式组件,内核组件识别合适的时机去扫描一个文件的数据并且传递数据到用户模式组件做更多的确认。用户模式组件创建一个线程的编号去等待内核组件的确认??  在批描到脏数据字符后,用户模式发送一个合适的反应给内核模式组件。

   内核模式组件仅用特定的扩展名(extensions)扫描文件.文件首先在成功的打时扫描。如果文件被写访问打开,扫描将在文件关闭前重新执行。 扫描同样可以运行在将被写入到文件的数据上,当数据里发现脏字符串时写将被拒绝。当脏字符在文件关闭期间发现,打印一个debug 消息。


swapbuffers minifilter sample

description: swapbuffer minifilter 展示 如何交换读和写数据之间的缓存。这项技术在加密过滤时相当有用,因为你必须在数据写到磁盘上之前加密,在数据从磁盘上读取后解密。 由于加解密必须透明,你不能直接使用系统提供的缓存,因此中间缓存是必须引进滴。

操作原理:swapbuffer minifilter 在读/写或目录控制操作前引进一个新缓存,对应的操作随即运行在新缓存,以代替初始提供的缓存, 在操作完成后, 新缓存的内容被拷贝回初始缓存
 
  

    转载请注明来源!http://blog.csdn.net/jykj_007

 

   

现在很多做透明加解密的初学者都比较困惑,不知从何下手,我也是如此,从什么都不会开始,慢慢肯文件系统内幕,到OSR上面请教,四个月的时间还是收获颇丰。其实真正研究以后会发现,很多都是体力活,要不断的去跟踪文件的操作流程。在这里发一个基于minifilter的透明加解密驱动源码仅供大家参考,其中也实现了对文件标识的处理,文件标识放在文件尾部。算是抛砖引玉吧。坦白的说,这个代码并不稳定(偶尔与norton杀毒软件会有冲突),但是我觉得整个流程是正确的,可能有些细节还没有考虑清楚,我觉得对初学者还是有一定帮助吧,当然大虾们可以跳过,呵呵。另外,有关加解密算法的代码由于不是我写的,也不好公开,所以我把相关代码用“\\\”给注释掉了(但没有去掉),请大家见谅,不过不会对整个流程产生影响。大家可以重点看一下各个派遣函数的实现。 欢迎大家拍砖,觉得有点意思就顶一下啊,在看代码的过程中如果有什么好的建议,也希望能告诉我。 最后非常感谢XiangXiangRen,zzbwang,neak47等网友在这段时间内对我的帮助。XiangXiangRen的书以及zzbwang的帖子对我完成这项工作有很大的帮助和参考价值,在此谨与大家分享。 编译环境:WDK6001.18002 XP x86 PS: 您可以将附件中的代码进行修改和转发,但转发时请注明出处。 http://bbs.driverdevelop.com/htm_data/39/1001/119736.html
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值