阅读:3614回复:20
IRP_READ和IRP_WRITE问题我在读Word文件时,出现了BSOD。读Txt文件没问题。 另外,在处理IRP_WRITE时,需要申请NonpagedPool还是PagedPool? 谢谢各位老师! |
|
最新喜欢:cyliu
|
沙发#
发布于:2003-01-23 09:44
NonpagedPool
|
|
板凳#
发布于:2003-01-23 13:44
NonpagedPool 谢谢,我如何给你分数? 另外,我还有一个问题,在对Word的IRP_Write处理时,是否也只处理Paging_IO? 再次感谢! |
|
|
地板#
发布于:2003-01-23 14:03
是的,write和read基本上一样处理
|
|
地下室#
发布于:2003-01-23 17:02
是的,write和read基本上一样处理 可是,我Read可以,但是,Write却不行,发现,Write后的Doc文件,不能再读了。这是什么原因?谢谢。 |
|
|
5楼#
发布于:2003-01-23 17:16
Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理?
|
|
6楼#
发布于:2003-01-23 17:29
Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理? 是这样的,我用应用程序先把Word文件加密,然后把该文件放在测试目录中,然后重启动机器。机器启动后运行filemon,再用Word打开加密后的文件,能够看到明文,但是,一旦我保存一下打开的文件,退出,再重启动机器,再重复上述步骤就不能够打开保存后的Word文件了。 你明白我的做法吗? 感谢你对我的帮助。有机会小第一定请客。 |
|
|
7楼#
发布于:2003-01-23 17:36
[quote]Write后的Doc文件,不能再读了?什么意思,具体操作怎样?你做了什么处理? 是这样的,我用应用程序先把Word文件加密,然后把该文件放在测试目录中,然后重启动机器。机器启动后运行filemon,再用Word打开加密后的文件,能够看到明文,但是,一旦我保存一下打开的文件,退出,再重启动机器,再重复上述步骤就不能够打开保存后的Word文件了。 你明白我的做法吗? 感谢你对我的帮助。有机会小第一定请客。 [/quote] 补充一下,我在保存时,也使用了和应用程序一样的加密算法。 |
|
|
8楼#
发布于:2003-01-23 17:58
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。
|
|
9楼#
发布于:2003-01-23 18:10
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。 Word对临时文件的访问也采用Pagin_IO吗?我的加密是对测试目录下的所有文件,所以,临时文件应该也不例外。 |
|
|
10楼#
发布于:2003-01-24 10:21
你前面提到了“我用应用程序先把Word文件加密”,在Driver里当这个目录有新的文件被创建时,有没有自动加密?还有,当有文件从别的目录移动到这个目录里时,有没有自动加密?
以上都是常见的情况。 |
|
11楼#
发布于:2003-01-24 15:49
你前面提到了“我用应用程序先把Word文件加密”,在Driver里当这个目录有新的文件被创建时,有没有自动加密?还有,当有文件从别的目录移动到这个目录里时,有没有自动加密? 都没有,我是分开进行的。另外,我在跟踪时发现,对Word临时文件的IRP_WRITE操作,Flags不是PAGING_IO,而是IRP_DEFER_IO_COMPLETION|IRP_WRIET_OPERATION。你对这种情况怎么处理的? |
|
|
12楼#
发布于:2003-01-24 16:52
不会啊,肯定有PAGING_IO的
|
|
13楼#
发布于:2003-01-24 20:51
不会啊,肯定有PAGING_IO的 是的,肯定有Paging_IO。我想,是不是完成例程有问题。在处理写完成例程时,如果IRP->IoStatus.status == STATUS_PENDING怎么办? |
|
|
14楼#
发布于:2003-01-24 20:54
DOC文件被打开编辑时,WORD会先建立临时文件,保存时把源文件删除,再把临时文件拷贝回去,如果没有抓住最后一个动作,文件就会被覆盖掉,你看一下,如果修改后的文件在没有加密驱动时可以正常打开,没有加密,就是这种情况,否则问题可能在别处。 我试了,在没有加密驱动的情况下,也打不开。你说的抓住最后一个动作,什么意思?我要在这里处理吗? |
|
|
15楼#
发布于:2003-01-27 12:17
“在没有加密驱动的情况下,也打不开”就可以排除我提到的那个原因,剩下最可能的原因就是漏了IRP(也可能多处理了),或漏了处理某种情况,最好把加解密的数据及步骤都跟踪分析一下
|
|
16楼#
发布于:2003-01-27 12:29
“在没有加密驱动的情况下,也打不开”就可以排除我提到的那个原因,剩下最可能的原因就是漏了IRP(也可能多处理了),或漏了处理某种情况,最好把加解密的数据及步骤都跟踪分析一下 现在都可以了,谢谢你和vcmfc。 另外,在MJ_READ和MJ_WRITE里,目录和文件是怎么区分的? |
|
|
17楼#
发布于:2003-01-30 11:41
重要提示:
在IRP_MJ_WRITE:只处理Irp->Flag & NOCACHE,中要自已分配buffer,将原数据copy再encrypt,后,再传给filesystem就可以。 记住:word的临时文件不可加密,否则WORD死机或bsd. |
|
18楼#
发布于:2003-01-30 11:59
vcmfc,不好意思,又和你有不同观点:
word的临时文件可以加密,我试过没有问题 |
|
19楼#
发布于:2003-01-30 12:19
我试过,有一个临时文件是不能加密的,否则word死机,有几个是可以的,我们在9x已完全跟踪出来了。但我认为临时文件没有必要去加密,没有意义。
不知道你的功能支不支持目录加密,如果有的话,你试一下。有一个是不能加密的。 |
|
上一页
下一页