lzh_zhb
驱动牛犊
驱动牛犊
  • 注册日期2010-03-12
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分38分
  • 威望381点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2010-07-05 16:59
文件透明加密/解密与文件无关,如果你一些文件类型能正确加解密,另一些不能,肯定是你的控制有问题.
ander5115
驱动牛犊
驱动牛犊
  • 注册日期2009-12-23
  • 最后登录2012-08-17
  • 粉丝6
  • 关注3
  • 积分76分
  • 威望681点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2010-07-08 16:59
不是控制的问题,跟文件类型也无关,是跟应用有关。

同一个加密文件,用记事本打开正确,用写字板打开就有多文件头长度的空格,就是这样
bannerman
驱动牛犊
驱动牛犊
  • 注册日期2010-01-26
  • 最后登录2014-05-29
  • 粉丝2
  • 关注1
  • 积分41分
  • 威望341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分22分
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。
ander5115
驱动牛犊
驱动牛犊
  • 注册日期2009-12-23
  • 最后登录2012-08-17
  • 粉丝6
  • 关注3
  • 积分76分
  • 威望681点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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兄提供的思路。目前这个方法只能治标,不能治本,请使用的同志小心测试。
wonjhoncy
驱动牛犊
驱动牛犊
  • 注册日期2006-06-07
  • 最后登录2011-05-18
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望182点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2010-09-05 13:22
能否传一个给我jjhoncy@yahoo.com.cn
hfz8867879
驱动牛犊
驱动牛犊
  • 注册日期2010-07-31
  • 最后登录2021-03-06
  • 粉丝0
  • 关注0
  • 积分286分
  • 威望321点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分4分
  • 社区居民
  • 忠实会员
25楼#
发布于:2010-09-05 14:39
能否传一个给我,谢谢啦,新手学习下~
306142767@qq.com
xiaoguangzaia
驱动牛犊
驱动牛犊
  • 注册日期2010-08-12
  • 最后登录2012-03-17
  • 粉丝2
  • 关注0
  • 积分33分
  • 威望291点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2010-09-23 20:20
楼主在隐藏长度的时候只处理的你说到的那几个吗?(query(set)information)都一样的吗
我在tooflat的代码中用《寒江独钓》的方法(文件头)处理加密标志,也是处理了你说的那几个请求,可是在新建word时获取长度总不对,需要重新设定
而且对tmp文件处理感觉文件长度也不对,导致word无法编辑
希望楼主能解答一下,谢谢!
上一页 下一页
游客

返回顶部