阅读:1770回复:4
文件头的问题,各位好心妞妞帮帮忙,先谢谢了
情况是这样的,我现在写了个在文件头做标志的文件过滤,过滤了SetInformation,QueryInformation,read,write,FastIoReadWrite,FastQuery等操作,因为有些原因我在write里面接收管理Irp(IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO|IRP_NOCACHE)等的时候只是简单的把offset加上标志头大小,然后就让它pass了。
不过我在管理read的时候,对于(IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO|IRP_NOCACHE),我是通过自己构建IRP_MJ_READ的Irp去读取数据,然后在把数据填充在上面发送过来的Irp中的SystemBuffer(其他几个buffer也在)里面的。 我现在所面临的问题有以下几个: 1,标志头有时候可以隐藏,有时候隐藏不了; 2,当我打开notepad写内容,然后保存的时候会出现“不能打开文件:(路劲)xxx.txt,请确认指定的驱动器中是否有盘”; 3,当我在read派遣中不自己构建Irp去获取数据是,那个文件头根本就隐藏不了; 4,如果可以,能否告知我还应该处理那些问题; 5,那个FileSize,CurrentByteOffset,irp堆栈的ByteOffset是什么一种关系; 6,在read自己构建Irp获取数据的时候填充上层发来的Irp应该注意点什么; 由于本人水平有限,在文件过滤这一块研究的还不够透彻,又无法找到更好的资料来解析,只能来这请求大家帮帮我,希望各位妞妞不吝赐教,先拜谢了。 |
|
沙发#
发布于:2009-11-25 11:51
重新跟踪了一遍,发现我在Read派遣里构建的Irp怎么返回值Irp->IoStatus.Information总是0 ?的
不构建Irp去读取的一般都不为0的啊 |
|
板凳#
发布于:2009-11-26 11:26
加密标识放在文件头部,处理起来非常复杂,建议放在文件尾部,会简单很多!
|
|
地板#
发布于:2009-11-27 09:29
回 2楼(zhsh200) 的帖子
已经处理好了,谢谢大哥的答复。能不能问个问题,为什么我自己构建IRP发往底层去读取数据时,填写的Irp->UserIosb中的Status和Information的值不会改变的呢? 不过Irp->IoStatus.Status和Information的值都变了的。 |
|
地下室#
发布于:2009-12-11 14:19
能向楼主请教一下,你是怎么把加密标识添到文件头的吗???
|
|