阅读:1868回复:5
加密标识文件头的问题
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中的两个锁,但是仍然不能解决问题。 |
|
沙发#
发布于:2009-10-13 18:46
还没有搞定啊?
|
|
板凳#
发布于:2009-10-13 20:42
回 1楼(qianjunhua) 的帖子
在Pre-Write操作中写文件头标识,设置文件长度死锁如何解决啊? |
|
地板#
发布于:2009-10-13 20:43
兄弟加我哈。18175842。没有问题。
|
|
地下室#
发布于:2009-10-14 10:56
为啥要在write 里面设置文件长度呢?奇怪
|
|
5楼#
发布于:2009-10-17 02:07
SetInformation 设定大小啊,怎么会在Write里设置呢?create里抓到那个fileobject就可以了。
|
|