我刚学windows驱动程序开发,想尝试在sfilter基础上设计一个实现文件加密解密的驱动程序,有几个问题:1)sfilter没有处理IRP_MJ_READ和IRP_MJ_WRITE,而是使用了fastio回调函数,我应该在IRP_MJ_READ和IRP_MJ_WRITE的处理...
全文
回复(7) 2009-03-20 16:40 来自版块 - 文件系统(过滤)驱动程序开发
表情
zzbwang如果你的驱动只过滤Paging io,那么长度都是4096,这是一个簇的大小。如果还要处理cached io,进来的数据长度可以是任意值,你只能先把数据读出来,用新数据部分覆盖后再写回去。(2009-04-15 19:43)
rong1028Read的部份我瞭解了! 谢谢!但是现在疑问是在 pre-write时,每次进来的iopb->Parameters.Write.Length都不一样 不知道如何让它进来就是固定的size. 如:4096(2009-04-15 15:21)
zzbwang把readLen = iopb->Parameters.Read.Length以及ByteOffset设置成你想读的值,然后向底层驱动发送IRP读就行了。 如果用minifilter,在preread中设置参数后调用FltSetCallbackDataDirty()就行了...(2009-04-12 22:07)
rong1028引用楼主zzbwang于2009-03-20 16:40发表的 初学驱动,关于文件过滤驱动程序的几个问题 : 我刚学windows驱动程序开发,想尝试在sfilter基础上设计一个实现文件加密解密的驱动程序,有几个问题: 对于读文件的操作,如果应用程序要求读文件的offset不是...(2009-04-12 19:37)
zzbwang关于第五个问题的答案: 我看了tooflat的sfilter程序,是这样处理的: 对于任何一个新打开的文件,根据规则判断这个文件以前是否加密了,现在是否需要加密,然后根据要求更新整个文件:以前没加密现在需要加密的,全部读出来,加密后再写回去(在sfWrite完成),以前加密了...(2009-03-22 19:31)
zzbwang楚狂人的回复(他只回答了4个问题): (1)中的“不是”“而是”是错误的。sfilter没有处理irp_mj_read和irp_mj_write,是因为所有的read和write都被默认的分发函数处理了。默认分发函数的功能就是直接下发。 fast io read write也...(2009-03-22 17:40)
sichuanwww(2009-03-22 14:20)

返回顶部