wesley2005
驱动牛犊
驱动牛犊
  • 注册日期2007-06-16
  • 最后登录2011-03-29
  • 粉丝1
  • 关注0
  • 积分34分
  • 威望327点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1529回复:0

关于Section的flush问题(通过PageIO)

楼主#
更多 发布于:2008-12-01 16:02
当UserMode调用FlushViewOfFile时,内核下会去做IoAsynchronousPageWrite。
我的目标是,当做Flush时,我的filter将原来的目标文件替换掉。

但是,如果仅仅在WriteDispatch中,替换掉irp->Tail.Overlay.OriginalFileObject 及irpStack->FileObject,原来的目标文件仍然会被写入进去。
于是,我追踪源代码,发现系统的操作有如下顺序:
FsRtlAcquireFileForCcFlushEx;
IoAsynchronousPageWrite;
FsRtlReleaseFileForCcFlush;
现在,我的filter,加入了对AcquireFileForCcFlush和ReleaseFileForCcFlush的callback,并且在这些callback中,也对FileObject做了替换。但是,原来的目标文件仍然会被写入。

希望高手能够指点迷津。
游客

返回顶部