wythern
驱动牛犊
驱动牛犊
  • 注册日期2007-04-13
  • 最后登录2008-09-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望12点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1723回复:3

文件系统过滤驱动sfilter菜鸟问题!

楼主#
更多 发布于:2007-05-02 11:26
本人是菜鸟,刚刚被分配了一个活,啥都不懂 :(,硬着头皮看了几天,遇到一堆问题!

阅读了楚狂人的文章,里面提到

而读取文件的长度则是:
ULONG length;
length = irpsp->Parameters.Read.Length;

不知道为什么我每次进入sfread调试到这个值都是0,等到sfread里面设置IoCompletion函数结束返回以后,IO_STATUS里面的Information才是正确的文件长度,有没有大牛遇到类似的问题??

sfilter过滤驱动里面应该如何得到这个信息??

各位给点提示吧,谢谢!
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2007-05-04 14:22
1. 遇到每次进入sfread调试到这个值都是0,可能是你的sread写的有问题;(可贴出代码)
2. 获取真正read、write的真实长度比较困难;
人总在矛盾中徘徊。。。
wythern
驱动牛犊
驱动牛犊
  • 注册日期2007-04-13
  • 最后登录2008-09-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望12点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-04 18:33
谢谢!

好像是卡巴斯基的问题,把机器整挂了一次,重装了一次没有装咔吧,然后调试这个值就不是0了,我拿了一个很小的TXT文件测试的。

论坛前面也有很多xd问到对大文件的读写如何处理,就是如何得到是对我的文件进行的读写??
过滤文件名可以么??我在create里面比较的文件名设置的flag,在IRP_MJ_READ的dispatch里面却没有设置这个flag,查了一下前面的帖子,是不是对文件的IRP_MJ_READ请求可能发生在IRP_MJ_CREATE之前??
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地板#
发布于:2007-05-05 10:17
对文件的IRP_MJ_READ请求可能发生在IRP_MJ_CREATE之前??

应该IRP_MJ_CREATE在IRP_MJ_READ之前发生。此类问题分析一下文件操作过程就可以明白了:没有打开文件,怎么去读?在应用空间,没有文件句柄怎么读文件?好像还没有提供read(file_name,buf,len)之类的api啊!
走走看看开源好 Solaris vs Linux
游客

返回顶部