透明加密驱动开发心得

最近研究文件透明加密驱动的开发,基于MiniFilter
具体实现方式是在一文件尾加一块我自己的数据,
IRP_CREATE时中通过 FltSetInformationFile ()
去掉这个数据块
在CleanUp中再写上去,
在研究中发现,
若自己管理计数Ref则
在Create时Ref++
在CleanUp中Ref--
最后Ref为0,
 
同样也可以在Close中Ref--
 
区别在于CleanUp中Ref为0的时间要先于Close.
 
还发现在CleanUp中,
若FltWriteFile以NOCACHE的方式进行,则不能成功
返回STATUS_NO_IMPLEMENT.
奇怪,原因没有弄清楚.
 
原因弄清楚了,因为参数不对,
对于NONCACHE方式,
WriteBuf
Length
ByteOffset
都必须是SectorSize(一般为512)对齐的.
 
 
还有一问题是文件要对齐才好操作
若一个文件是300个字节的.
 
|0               300|-------------Pad------------512|--------------------------Encrypt Tail-----------1024|
这样处理才好,
方法有很多种的,
这只是我一家之言.
 
 
 
HaHaH...

你可能感兴趣的:(职场,休闲,透明加密)