阅读:1894回复:6
怎么截获硬盘与高速缓存之间的数据
怎么截获硬盘与高速缓存之间的数据?
是IRP_MJ_WRITE, IRP_MJ_READ中带PAGE_IO标记的吗? |
|
沙发#
发布于:2003-01-16 23:05
OSR 上说,处理page Io就可以了。
我就是这样处理.txt,.exe的。 |
|
板凳#
发布于:2003-01-16 23:06
IRP_MJ_WRITE我还没实现,我只实现IRP_MJ_READ。
|
|
地板#
发布于:2003-01-18 00:46
是不是可以这样说:如果IRP中带有IRP_PAGING_IO或IRP_SYNCHRONOUS_PAGING_IO,就是硬盘上数据与高速缓冲之间进行数据交换;若不带此二者标志,就不是。
但我有个问题:如果有个Write_Through(写穿透)的IRP_MJ_WRITE,它不经过缓存,直接写到硬盘上,此时系统怎样及时更新缓存中的数据? 这个问题我想微软已经解决了,不过我并不了解这其中的机制,麻烦vcmfc大侠解释一下好吗? |
|
地下室#
发布于:2003-01-18 10:42
这部分好像是跟fast io有关,由于我的功能没有这项功能,无法给你答案。
好像你在IRP_MJ_READ中进行解密,此时cache也是解密的数据,就像.txt,我解密一下,以后打开txt,只会读cache的数据,而cache就是解密的东东。 在irp_mj_write中进行加密,应该不用更新cache吧!,否则,你就麻烦,在fastioread又要解密。 思路: IRP_MJ_READ:解密 IRP_MJ_WRITE:加密 |
|
5楼#
发布于:2003-01-18 10:44
你对于你的问题,matt说,解决之道是:
当irp_mj_read/irp_mj_write中,只处理Irp->Flags == IRP_NOCACHE就可以了。 |
|
6楼#
发布于:2003-01-18 10:46
其它sjsun说的是对了,可以我现在才理解,真是笨呀!!!
|
|