neak47
驱动小牛
驱动小牛
  • 注册日期2009-05-25
  • 最后登录2016-01-09
  • 粉丝4
  • 关注0
  • 积分140分
  • 威望1221点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分1分
阅读:1868回复:5

加密标识文件头的问题

楼主#
更多 发布于:2009-10-13 16:45
1. Pre-Create中。对于受控文件,读取文件前4KB,如果和标识匹配,则标记该文件为加密文件,如果不匹配,则标记为待加密文件;
2. Pre-Read中。对于受控文件,若为加密文件,则移动偏移,否则不移动偏移;
3. Post-Read中。对于受控文件,若为加密文件,则解密,否则不解密;
4. Pre-Write中。对于受控文件,若为加密文件,则移动偏移,并加密,否则若为待加密文件,则在第一次非缓冲写时将头部标识先写入文件,并标记文件为加密文件,然后再进行后续的数据写操作(后续的读写操作都需要加密了);
5. Post-QueryInfo中。若受控文件为加密文件,则向上层隐藏文件长度,否则不隐藏;
6. Pre-SetInfo中。若受控文件为加密文件,则设置真正的文件长度(即加上文件头部长度),否则仅设置文件实际长度;
7. Pre-Close中。若受控文件引动计数为0,则清除缓存。
存在问题:
在第一次非缓冲写(通常都是paging io)时对文件进行打标,会对文件长度进行扩展,在NTFS下会导致死锁,但在FAT32下正常。而且我试图释放FsContext中的两个锁,但是仍然不能解决问题。
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-10-13 18:46
还没有搞定啊?
neak47
驱动小牛
驱动小牛
  • 注册日期2009-05-25
  • 最后登录2016-01-09
  • 粉丝4
  • 关注0
  • 积分140分
  • 威望1221点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分1分
板凳#
发布于:2009-10-13 20:42
回 1楼(qianjunhua) 的帖子
在Pre-Write操作中写文件头标识,设置文件长度死锁如何解决啊?
skymelai
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2010-01-29
  • 粉丝1
  • 关注0
  • 积分81分
  • 威望711点
  • 贡献值3点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-10-13 20:43
兄弟加我哈。18175842。没有问题。
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-10-14 10:56
为啥要在write 里面设置文件长度呢?奇怪
JeTus
驱动牛犊
驱动牛犊
  • 注册日期2007-09-22
  • 最后登录2010-01-17
  • 粉丝3
  • 关注0
  • 积分84分
  • 威望781点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-10-17 02:07
SetInformation 设定大小啊,怎么会在Write里设置呢?create里抓到那个fileobject就可以了。
游客

返回顶部