阅读:1722回复:3
文件系统过滤驱动sfilter菜鸟问题!
本人是菜鸟,刚刚被分配了一个活,啥都不懂 :(,硬着头皮看了几天,遇到一堆问题!
阅读了楚狂人的文章,里面提到 “ 而读取文件的长度则是: ULONG length; length = irpsp->Parameters.Read.Length; ” 不知道为什么我每次进入sfread调试到这个值都是0,等到sfread里面设置IoCompletion函数结束返回以后,IO_STATUS里面的Information才是正确的文件长度,有没有大牛遇到类似的问题?? sfilter过滤驱动里面应该如何得到这个信息?? 各位给点提示吧,谢谢! |
|
沙发#
发布于:2007-05-04 14:22
1. 遇到每次进入sfread调试到这个值都是0,可能是你的sread写的有问题;(可贴出代码)
2. 获取真正read、write的真实长度比较困难; |
|
|
板凳#
发布于:2007-05-04 18:33
谢谢!
好像是卡巴斯基的问题,把机器整挂了一次,重装了一次没有装咔吧,然后调试这个值就不是0了,我拿了一个很小的TXT文件测试的。 论坛前面也有很多xd问到对大文件的读写如何处理,就是如何得到是对我的文件进行的读写?? 过滤文件名可以么??我在create里面比较的文件名设置的flag,在IRP_MJ_READ的dispatch里面却没有设置这个flag,查了一下前面的帖子,是不是对文件的IRP_MJ_READ请求可能发生在IRP_MJ_CREATE之前?? |
|
地板#
发布于:2007-05-05 10:17
对文件的IRP_MJ_READ请求可能发生在IRP_MJ_CREATE之前??
应该IRP_MJ_CREATE在IRP_MJ_READ之前发生。此类问题分析一下文件操作过程就可以明白了:没有打开文件,怎么去读?在应用空间,没有文件句柄怎么读文件?好像还没有提供read(file_name,buf,len)之类的api啊! |
|
|