20楼#
发布于:2010-07-05 16:59
文件透明加密/解密与文件无关,如果你一些文件类型能正确加解密,另一些不能,肯定是你的控制有问题.
|
|
21楼#
发布于:2010-07-08 16:59
不是控制的问题,跟文件类型也无关,是跟应用有关。
同一个加密文件,用记事本打开正确,用写字板打开就有多文件头长度的空格,就是这样 |
|
22楼#
发布于:2010-07-15 16:26
写字板是通过映射读取的,写字板是通过IO读取的,如果映射读取都没问题,IO读取应该也不会有问题。大致看了下你的代码, 好像在PostRead/Write FileObject->CurrentOffset没有修改回来,由于你在PreRead/Write中ByteOffset+4K, 如果是同步IO需要修改FileObject->CurrentOffset为正确的值。在文件系统中 FileObject->CurrentOffset = ByteOffset + IoStatus.Information, 需要相应的减去4K。
|
|
23楼#
发布于:2010-07-17 20:34
参照这个地址提供的解决方法,治了标,不知道会不会有什么问题。
http://bbs.driverdevelop.com/read.php?tid-111958-keyword-notepad%7Cwordpad.html 读取的前后事件中处理 if (!(Data->Iopb->IrpFlags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO))) { 如果是读取前,判断偏移量超过文件除去加密标志后的大小,则直接返回STATUS_END_OF_FILE,并退出,否则留待读取后回调事件处理 在读取后事件中,判断如果返回的Data->IoStatus.Information加上读取偏移量超过了文件除去标志后的大小,则修改Data->IoStatus.Information为文件大小减去便宜量后的大小。 } 这样处理目前来说解决了wordpad的读取问题,但是写还是有问题,写入后文件内有乱码。 可喜的是UltraEdit已经解决,读写都没有问题。 感谢dionysus77兄提供的思路。目前这个方法只能治标,不能治本,请使用的同志小心测试。 |
|
24楼#
发布于:2010-09-05 13:22
能否传一个给我jjhoncy@yahoo.com.cn
|
|
25楼#
发布于:2010-09-05 14:39
能否传一个给我,谢谢啦,新手学习下~
306142767@qq.com |
|
26楼#
发布于:2010-09-23 20:20
楼主在隐藏长度的时候只处理的你说到的那几个吗?(query(set)information)都一样的吗
我在tooflat的代码中用《寒江独钓》的方法(文件头)处理加密标志,也是处理了你说的那几个请求,可是在新建word时获取长度总不对,需要重新设定 而且对tmp文件处理感觉文件长度也不对,导致word无法编辑 希望楼主能解答一下,谢谢! |
|
上一页
下一页