阅读:4104回复:24
2000下过滤FSD为什么说只要处理PagingI/O就可以了?Coolice大大帮忙阿...用户被禁言,该主题自动屏蔽! |
|
最新喜欢:ljmmar... |
沙发#
发布于:2003-01-13 17:54
别把Paging IO和SL_OPEN_PAGING_FILE搞混了。
SL_OPEN_PAGING_FILE是指Paging File Paging IO是Read/Write时的 IRP_PAGING_IO IRP_SYNCHRONOUS_PAGING_IO 两个标记 关于第二点,你自己试试可能会更明白,做个应用程序,用CreateFileMapping来读文件,在Filter层跟踪Read/Write,会让你对Filter理解更深。 |
|
板凳#
发布于:2003-01-14 19:10
给你点提示:
notepad打开.txt,一般是用page io,使用MDL方式,你只要处理Irp->MdlAddress就可以了。绝对有效,我这边已实现了。 |
|
地板#
发布于:2003-01-14 19:13
lists.osr.com上有一个较完整的代码来处理IRP_MJ_READ的代码,对你绝对是有帮助的,我的加解密就是参考里面的。
这个论坛人真少,妈的,不来了。 |
|
地下室#
发布于:2003-01-14 21:16
lists.osr.com上有一个较完整的代码来处理IRP_MJ_READ的代码,对你绝对是有帮助的,我的加解密就是参考里面的。 呵呵! :D 不过,你sina的信箱也太滥了!经常被退信!俺的最后一封信,你就没有收到吧? |
|
|
5楼#
发布于:2003-01-14 23:37
to rayyang2000:
我的新浪油箱可是付费的任你邮呀!!!!! 可能收到了,谢谢你在这段时间的帮助,再次感谢!!!! |
|
6楼#
发布于:2003-01-15 10:21
给你点提示: 任何应用程序的文件读写最终都是Paging IO,而且也都只有MDL一种方式。Notepad当然没有例外 |
|
7楼#
发布于:2003-01-15 16:11
用户被禁言,该主题自动屏蔽! |
|
8楼#
发布于:2003-01-15 22:17
coolice:好多程序是不产生pageio的,是用userbuffer,Irp->MdlAddress就是null,.rar就是一例,全是UserBuffer正在头脑中...........
|
|
9楼#
发布于:2003-01-16 10:11
不是不产生,是产生了你没看见
|
|
10楼#
发布于:2003-01-16 17:13
我将三种状态全部print出来了,除非还有其它方式!!!
|
|
11楼#
发布于:2003-01-29 17:53
只假定只要PAGE IO绝对是错误的. 从来没有FSD规范说一定只用PAGE IO的. 一般情况下, FSD本身读数据请求的量一定是512的倍数倒是正确的.
我手头上有几个DRIVER就是自己发IRP进行读写的. 绝对不是PAGE IO的. |
|
|
12楼#
发布于:2003-01-30 10:08
老兄,拜托如果没有做过Filter就不要误导!
“我手头上有几个DRIVER就是自己发IRP进行读写的. 绝对不是PAGE IO的.”-> 我们在说加密驱动需要处理的IRP !!! |
|
13楼#
发布于:2003-01-30 11:32
目前我只处理nocache与sijun的buffer:FO_NO_INTERMEDIATE,还没有发现哪种类型文件不支持,且发现大部分是nocache,也就是pageio,coolice说的也有道理,pageio对于文件,可以说是解决了95%的Encrypt的问题。
|
|
14楼#
发布于:2003-02-01 23:42
Coolice: 如果一定要坚持假定存在
IRP_PAGING_IO IRP_SYNCHRONOUS_PAGING_IO 我并没有意见. 但是只能说明你见到的状况还不够多. 开发了几个FILTER就以为遇到了所有的状况. :) 目前大部分的FSD调用FSRTL来处理RW状况. 这样,CACHE MANAGER就会产生你所需要的条件. 但是并不是绝对如此. 我并不打算提供更详细的状况. 如果你一生都没有遇到其他状况, 算你运气. :D |
|
|
15楼#
发布于:2003-02-02 15:41
陆板主,是否可以给我们一些参考资料连接,说明你的观点。我看了vcmfc所提到的nt file system,觉得应该处理NOCAHCE和PAGING_IO两种情况就够了。
[编辑 - 2/2/03 by rsman] |
|
|
16楼#
发布于:2003-02-10 10:46
\"目前大部分的FSD调用FSRTL来处理RW状况\"
作为版主能说出这样的话,真让人哭笑不得哦~ |
|
17楼#
发布于:2003-02-12 12:49
这个DRIVER的文件控制部分全部是DIRECT SEND IRP TO FSD. 与其搭配的USER MODE部分没有ATTACH进来.
我可以给你们讲述一下 1. ATTACH SYSTEM PROCESS. 打开文件, 参数为FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|FILE_NO_INTERMEDIATE_BUFFERING; 2. 获取FILE_OBJ 3. 任意的进程会访问打开的文件. 4. 自行组合IRP. RW部分Irp->Flags = IRP_WRITE_OPERATION|IRP_NOCACHE; 没有IRP_PAGING_IO IRP_SYNCHRONOUS_PAGING_IO的FLAG!!! 另外,每次对文件操作时, 都会获取文件操作时刻TOP LEVEL的FILE SYSTEM DEVICE OBJECT. 这样, 任意的FILTER均会有机会执行. 这是一个产品中的DRIVER. 务必不要傻眼. 经验这个东西, 可不是说有就有的. [编辑 - 2/12/03 by lu0] |
|
|
18楼#
发布于:2003-02-12 13:01
NOCACHE的情况当然要处理,paging io是基于cached irp而提出的,两种没有任何矛盾。
对于非标准的FSD来说,除了这种FSD自己的应用程序,Windows永远不会DIRECT SEND IRP TO FSD,所有的文件读写还是通过标准的IRP进行。如果这种FSD不支持标准的IRP,根本不在加密Filter考虑之列! |
|
19楼#
发布于:2003-02-12 13:06
OSR中有个自己组合IRP的例子RYO.ZIP想必COOLICE也看过. 里面是使用的RW操作也并不设定IRP_PAGING_IO IRP_SYNCHRONOUS_PAGING_IO的FLAG.
static VOID KfcWrite(PFILE_OBJECT FileObject, PLARGE_INTEGER Offset, ULONG Length, PMDL Mdl, PIO_STATUS_BLOCK IoStatusBlock) { ... // // Set up the event we\'ll use. // ... // // Allocate and build the IRP we\'ll be sending to the FSD. // ... // // Indicate that this is a WRITE operation. // irp->Flags = IRP_WRITE_OPERATION; // // Set up the next I/O stack location. These are the parameters // that will be passed to the underlying driver. // ... // // We use a completion routine to keep the I/O Manager from doing // \"cleanup\" on our IRP - like freeing our MDL. // // // Send it on. Ignore the return code. // ... // // Wait for the I/O to complete. // ... // // Done. Return results are in the io status block. // return; } |
|
|
上一页
下一页