rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
阅读:3614回复:20

IRP_READ和IRP_WRITE问题

楼主#
更多 发布于:2003-01-22 17:27


我在读Word文件时,出现了BSOD。读Txt文件没问题。

另外,在处理IRP_WRITE时,需要申请NonpagedPool还是PagedPool?

谢谢各位老师!

最新喜欢:

cyliucyliu
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-23 09:44
NonpagedPool
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-23 13:44
NonpagedPool

谢谢,我如何给你分数?
另外,我还有一个问题,在对Word的IRP_Write处理时,是否也只处理Paging_IO?

再次感谢!
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-23 14:03
是的,write和read基本上一样处理
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-23 17:02
是的,write和read基本上一样处理

可是,我Read可以,但是,Write却不行,发现,Write后的Doc文件,不能再读了。这是什么原因?谢谢。
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-23 17:16
Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理?
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-01-23 17:29
Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理?

是这样的,我用应用程序先把Word文件加密,然后把该文件放在测试目录中,然后重启动机器。机器启动后运行filemon,再用Word打开加密后的文件,能够看到明文,但是,一旦我保存一下打开的文件,退出,再重启动机器,再重复上述步骤就不能够打开保存后的Word文件了。

你明白我的做法吗?

感谢你对我的帮助。有机会小第一定请客。



rsman
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-01-23 17:36
[quote]Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理?

是这样的,我用应用程序先把Word文件加密,然后把该文件放在测试目录中,然后重启动机器。机器启动后运行filemon,再用Word打开加密后的文件,能够看到明文,但是,一旦我保存一下打开的文件,退出,再重启动机器,再重复上述步骤就不能够打开保存后的Word文件了。

你明白我的做法吗?

感谢你对我的帮助。有机会小第一定请客。



 [/quote]

补充一下,我在保存时,也使用了和应用程序一样的加密算法。
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-01-23 17:58
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-01-23 18:10
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。


Word对临时文件的访问也采用Pagin_IO吗?我的加密是对测试目录下的所有文件,所以,临时文件应该也不例外。
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-01-24 10:21
你前面提到了“我用应用程序先把Word文件加密”,在Driver里当这个目录有新的文件被创建时,有没有自动加密?还有,当有文件从别的目录移动到这个目录里时,有没有自动加密?

以上都是常见的情况。
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-01-24 15:49
你前面提到了“我用应用程序先把Word文件加密”,在Driver里当这个目录有新的文件被创建时,有没有自动加密?还有,当有文件从别的目录移动到这个目录里时,有没有自动加密?

以上都是常见的情况。


都没有,我是分开进行的。另外,我在跟踪时发现,对Word临时文件的IRP_WRITE操作,Flags不是PAGING_IO,而是IRP_DEFER_IO_COMPLETION|IRP_WRIET_OPERATION。你对这种情况怎么处理的?
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-01-24 16:52
不会啊,肯定有PAGING_IO的
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-01-24 20:51
不会啊,肯定有PAGING_IO的


是的,肯定有Paging_IO。我想,是不是完成例程有问题。在处理写完成例程时,如果IRP->IoStatus.status == STATUS_PENDING怎么办?
rsman
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-01-24 20:54
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。


我试了,在没有加密驱动的情况下,也打不开。你说的抓住最后一个动作,什么意思?我要在这里处理吗?
rsman
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-01-27 12:17
“在没有加密驱动的情况下,也打不开”就可以排除我提到的那个原因,剩下最可能的原因就是漏了IRP(也可能多处理了),或漏了处理某种情况,最好把加解密的数据及步骤都跟踪分析一下
rsman
驱动小牛
驱动小牛
  • 注册日期2003-01-14
  • 最后登录2016-01-22
  • 粉丝0
  • 关注0
  • 积分969分
  • 威望101点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-01-27 12:29
“在没有加密驱动的情况下,也打不开”就可以排除我提到的那个原因,剩下最可能的原因就是漏了IRP(也可能多处理了),或漏了处理某种情况,最好把加解密的数据及步骤都跟踪分析一下


现在都可以了,谢谢你和vcmfc。
另外,在MJ_READ和MJ_WRITE里,目录和文件是怎么区分的?
rsman
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-01-30 11:41
重要提示:
  在IRP_MJ_WRITE:只处理Irp->Flag & NOCACHE,中要自已分配buffer,将原数据copy再encrypt,后,再传给filesystem就可以。

记住:word的临时文件不可加密,否则WORD死机或bsd.
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-01-30 11:59
vcmfc,不好意思,又和你有不同观点:
word的临时文件可以加密,我试过没有问题
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-01-30 12:19
我试过,有一个临时文件是不能加密的,否则word死机,有几个是可以的,我们在9x已完全跟踪出来了。但我认为临时文件没有必要去加密,没有意义。

  不知道你的功能支不支持目录加密,如果有的话,你试一下。有一个是不能加密的。
上一页
游客

返回顶部