阅读:1655回复:8
为什么在保存文件时,FILEMON里总是有那么多进程名为system 的IRP_MJ_WRITE。
如题!
|
|
沙发#
发布于:2004-07-27 20:05
系统将cache中的数据写入硬盘的时候,
应该就是用system进程吧? 这种情况应该就是Paging I/O的情况。 如果是user nocache I/O, 那么就应该是由相应的应用程序进程来发起IRP_MJ_WRITE命令了。 到底是用那种,就与其采取的文件模式有关了:) 不知道这样理解对不对:) |
|
|
板凳#
发布于:2004-07-28 09:11
好像不一定,因为有些本地操作和来自网络的操作都是以进程system的名义进行保存的,如果我把所有的system都过滤,就会漏掉一些操作。
“与其采取的文件模式有关了”,这里的文件模式指的是什么?是文件的打开方式吗? |
|
地板#
发布于:2004-07-28 09:45
我不太清楚你说的不一定指的是哪个方面。
不过可以肯定的是,如果你把所有的system都过滤,会漏掉很多东西,因为我发现拷贝的写入过程几乎全都是由system完成的,而且例如打包rar文件之类的操作也几乎全都是system完成。 跟踪之后发现,以将文件打包成rar文件为例,首先是winrar程序进程通过fastIO将内容写入cache,然后system进程将cache中的内容写入disk。往往一个fastIO之后跟着好几个IRP_MJ_WRITE。 我说的文件模式指的是直接打开、还是通过内存映像文件、或者流文件等等。 |
|
|
地下室#
发布于:2004-07-29 13:51
那是不是可以这样说,拦截fastio中的所有的irp_mj_write!就基本上没漏的了!?
|
|
5楼#
发布于:2004-07-29 14:41
这么搞得话很可能会出现一些严重的问题,
呵呵,没试过,不好乱讲:) |
|
|
6楼#
发布于:2004-07-29 16:47
我试了试,很少能产生fastio的操作!不过,相关的东西的还是很有提示作用的,不管了,先给分!
|
|
7楼#
发布于:2004-07-29 19:51
你怎么试的,应该有好多fastio操作才对阿?
|
|
|
8楼#
发布于:2004-08-11 10:14
横多延迟写将由system 写入,通过fastio的只是写入cache或者写道网络上,如果写道cache,最终将会通过write到硬盘,这是进程名位system
|
|
|