阅读:1529回复:0
关于Section的flush问题(通过PageIO)
当UserMode调用FlushViewOfFile时,内核下会去做IoAsynchronousPageWrite。
我的目标是,当做Flush时,我的filter将原来的目标文件替换掉。 但是,如果仅仅在WriteDispatch中,替换掉irp->Tail.Overlay.OriginalFileObject 及irpStack->FileObject,原来的目标文件仍然会被写入进去。 于是,我追踪源代码,发现系统的操作有如下顺序: FsRtlAcquireFileForCcFlushEx; IoAsynchronousPageWrite; FsRtlReleaseFileForCcFlush; 现在,我的filter,加入了对AcquireFileForCcFlush和ReleaseFileForCcFlush的callback,并且在这些callback中,也对FileObject做了替换。但是,原来的目标文件仍然会被写入。 希望高手能够指点迷津。 |
|