阅读:4000回复:20
急救呀!-关于文件驱动程序的问题,请大家指点!
问题如下:
1.我有一个VXD,其功能是进行文件过滤,与znsoft的例子差不多,现我要把它改为2000/XP的IFS Filter driver,在VXD可以对所有磁盘文件进行拦截,好像是安装一个IFS HOOK,对于在2000里,使用IFS KIT来做驱动,驱动的功能如下:拦截所有文件操作,然后对文件进行比较,对于特殊的文件,还有处理用户读时进行解密,用户写文件时进行加密,对于用户来说,它不知道这个文件已加密了,但我希望它在磁盘上就是加密的文件,我该如何做?,对于文件拦截部分?有哪些东东可以让我参考?IFS KIT:filespy?,sfilter??,对于加解密部分,是不是处理IRP_MJ_READ/IRP_MJ_WRITE中进行加解密吗? 2.文件过滤驱动的加载是先于USB Client driver?,还是晚于USB client driver? 3.在文件过滤驱动中如何与USB Client driver通信?,user model 有createfile,read,write,deviceiocontrol?,那个驱动程序中呢? 等待大家的救命呀!!! :( |
|
沙发#
发布于:2003-05-27 13:27
顶!!!!!
|
|
|
板凳#
发布于:2003-05-26 20:47
vcmm 你搞定了没有,能否给点提示给我,我在读文件数据的时候,正常,如果不对文件编辑,直接关闭,这时也正常,可是一旦编辑了数据后保存,就出现问题,怎么回事啊?
|
|
地板#
发布于:2003-04-27 15:21
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2003-04-27 00:15
天呀!!!! 翻我老底..............^_^ 看一看发贴日期!!!!!!!! |
|
5楼#
发布于:2003-04-25 13:29
问题如下: USB Client driver是指什么? usb是pnp设备,当然是文件过滤驱动先加载 |
|
|
6楼#
发布于:2003-04-25 13:16
To vcmfc 及各位前辈:
我是个IFS新手,做了一年多USB DRIVER,现想学IFS,已跟综了FILESPY,有着和 当时vcmfc相同的问题.希望能获得前辈们的帮助. 我的MSN:xinjian_chen@hotmail.com 问题如下: 1.我有一个VXD,其功能是进行文件过滤,与znsoft的例子差不多,现我要把它改为2000/XP的IFS Filter driver,在VXD可以对所有磁盘文件进行拦截,好像是安装一个IFS HOOK,对于在2000里,使用IFS KIT来做驱动,驱动的功能如下:拦截所有文件操作,然后对文件进行比较,对于特殊的文件,还有处理用户读时进行解密,用户写文件时进行加密,对于用户来说,它不知道这个文件已加密了,但我希望它在磁盘上就是加密的文件,我该如何做?,对于文件拦截部分?有哪些东东可以让我参考?IFS KIT:filespy?,sfilter??,对于加解密部分,是不是处理IRP_MJ_READ/IRP_MJ_WRITE中进行加解密吗? 2.文件过滤驱动的加载是先于USB Client driver?,还是晚于USB client driver? 3.在文件过滤驱动中如何与USB Client driver通信?,user model 有createfile,read,write,deviceiocontrol?,那个驱动程序中呢? |
|
|
7楼#
发布于:2002-07-11 16:11
我遇到问题了:对映像文件(Mapping File)无法正确的处理。在IRP_MJ_READ中Irp.Flags包含IRP_PAGING_IO标志位的时候,表示I/O处理涉及到内存管理器换入页的操作,但是这时如何得到文件关联的映像对象(用户模式下的称呼)也就是Section对象(内核模式下的称呼)以及如何对它进行操作啊?
|
|
8楼#
发布于:2002-07-09 13:10
对于是否需要支持FastIo,这里有一个比较权威的解释:
出处:www.osr.com Must I support Fast I/O in my file system or filter, and where is Fast I/O documented? Fast I/O is optional for a file system. For a file system filter driver, it is required if any file system it filters supports fast I/O. Because all of the standard Windows NT/2000/XP file systems support fast I/O, essentially it is required of all filter drivers. Fast I/O is a mechanism that was introduced into Windows NT in order to optimize the handling of certain I/O operations. In addition, fast I/O routines are also used for a variety of communications channels between the FSD and various kernel components, including the I/O Manager, the File System Runtime Library, and the CIFS File Server. Unfortunately, at the present time Fast I/O is not documented, although future versions of the IFS Kit will include documentation on how the Fast I/O routines are used. |
|
9楼#
发布于:2002-07-09 09:46
1. 必须加入FastIO的处理。而且,慢慢的,你会发现有很多应用程序(尤其是MS的,比如Office),他们读写文件的方式简直是出人意表!这点,你只能在无数次的“BSOD“里面体会了。Norton也会让你大吃一惊!
2. 如果你不是写“Multi-function Driver“,基本上就是在你的USB Driver加载前。 3. 用IoCallDriver。一般都是用来调用Lower Device的,但也可以调用不在自己的栈链表里面的driver。至于这种调用应该是同步还是异步的,就要看你的Filter Driver所处的情况了。如果是在System Thread的环境下作同步调用,因为USB的速度慢,有可能会翘掉。 |
|
|
10楼#
发布于:2002-07-08 11:26
太具体我说不好。我看过ms一个人写的例子,大概是这样的。他在内核模式和用户模式之间做了个代理,将内核模式中要执行的函数放到用户模式中执行。是否适用目前的问题,请楼上的同志谈谈看法。
[编辑 - 7/8/02 by hanks] |
|
11楼#
发布于:2002-07-05 09:27
读写的请求由I/O manager产生,使用何种buffer也由I/O manager根据设备的属性(DeviceObject.Flags)决定,在你的驱动程序向下层驱动程序发送请求的时候,才有机会指定使用何种buffer。但下层区东读取buffer的时候,要检查上层驱动的属性,而上层驱动的属性(也就是你的驱动)一般在挂接的时候只是单纯复制被挂接驱动的原有属性(我所看过的所有例子均是如此,且不清楚如果属性不一致是否会有隐患存在),所以从这个意义上来说,使用何种buffer是固定的。
hanks,不知你基于COM体系的代理是怎么工作的?能否具体说说? |
|
12楼#
发布于:2002-07-05 08:51
我来说两句,希望各位指正。是否可以指定读写的buffer,对它进行加解密。如果做一个基于COM体系的代理,将KENRL mode 的转为user mode的是不是会对以后的工作有益?!
|
|
13楼#
发布于:2002-07-04 17:10
而且就我现在调试的情况:在dos窗口中用type列出一个文件的内容,第一个512字节,由IRP处理,后面的七个由FastIo处理,然后又是一个IRP,再是若干个FastIo,规律完全不可循。如果文件由Notepad打开,情况又不一样了,全部由IRP处理:先是8字节,然后是4k,然后又是8个字节(回到文件开始),然后是32k,且4k和32k时的数据报都无法用我已知的方法处理,systembuffer无效,mdl无效,userbuffer无效,郁闷中…… :(
|
|
14楼#
发布于:2002-07-04 16:43
不知道你是否已经开始编码,我遇到的情况是:如果不写FastIoDispatch,系统铁定崩溃。
|
|
15楼#
发布于:2002-07-04 16:35
看来还是有同命中人.............
to hanks,james_razor:即然大家做相同的事,能留个联系MAIL吗? 我的mail:vcmfc@sina.com to james_razor:是不是CSDN上的VCMFC都没有关系,重要的事大家站在同一条路上,而且我以前是做应用层的,现在改为底层,跟大家一样,以后还请大家多多指点呢! 我要我功能是: 在IRP_MJ_CREATE中判断文件是需要保护吗?,是的话,在IRP_MJ_READ/IRP_MJ_WRITE中对这个文件进行加解密,如不是,下传给下层文件系统处理。我想我应该不用处理FASTIO吧!,我只想在文件存储是进行控制。 谢谢大家的指点。 |
|
16楼#
发布于:2002-07-04 15:50
此vcmfc是否csdn里的那个vcmfc?如果是,那可就太巧了,赫赫。
你现在做的这个和我做得差不多,不过问题非常复杂,至少我现在感觉是,你不光需要处理IRP_MJ_READ和IRP_MJ_WRITE,而且需要处理FastIoDispatch,大约有25个函数。FastIoDispatch多归多,情况倒较为简单,它只适用于同步的缓冲的数据传输方式。IRP可就复杂多了,DO_BUFFERED_IO、DO_DIRECT_IO、或者都不是、同步、异步……我到现在都没搞出一个头绪来,系统频频死锁、重起,唉。 至于你说的那几个问题,第一个问题,由于你可以指定驱动程序装载的时机,所以,是不一定的。如果是以SERVICE_DEMAND_START,不用说,一般是在USB Client driver之后的,如果是选择SERVICE_BOOT_START或者SERVICE_SYSTEM_START,那你可以用softice察看装载的顺序。驱动程序之间如何通讯我不太清楚。user model有createfile,驱动程序下就是ZwCreateFile、ZwReadFile等了。 小弟也有许多问题,希望能共同交流。 |
|
17楼#
发布于:2002-07-04 12:22
vcmfc:
我还想问一句,你做加解密在哪一层做,还在驱动这一层吗? |
|
18楼#
发布于:2002-07-04 10:11
那我惨了............
|
|
19楼#
发布于:2002-07-03 18:19
vcmfc:
我和你做差不多的工作,我想IRP_MJ_READ/IRP_MJ_WRITE中不能加解密吧?要不然,你分析数据包就够你受的。你说呢? :) |
|
上一页
下一页