阅读:1375回复:2
system进程延时写入数据产生的严重问题
我现在在做一个程序,功能是监视某个目录下所有文件的写操作,并且将每个写操作的偏移和长度记录下来,然后根据这些记录将数据提出来,打包成一个文件。用Filemon的驱动做,基本完工了,但现在发现一个很严重原问题,比如用VC编译程序的时候,有些数据不是由link.exe、msdev.exe、cl.exe这些程序写入的,而是由system进程写入的,比如生成的*.exe。system写的数据有些有延时,比如编译完成后2秒,system进程还在往*.pdb和*idb写数据。在system的每个IRP_MJ_WRITE事件中
(Irp->Flags & IRP_PAGING_IO) || (Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO) 为真,我不知道是什么意思,是不是Windows为了优化而这样做的。这个问题对我的影响是如果在VC编译完后1秒内结束监视,那我得到的结果是不完整的。有没有什么方法能让system进程将那结准备延时写入的数据立即写入,以保证在我结束监视前能得到完整的结果。 |
|
沙发#
发布于:2004-10-25 17:27
OS为了提高对磁盘操作效率,使用了缓冲,所以这是正常的,如果这个时候系统崩溃,那么就有大麻烦了,我写驱动旧经常遇见这样,所以通常我会不断备份数据,以减少这样的灾难
|
|
|
板凳#
发布于:2004-10-18 11:41
本来这些操作就是system做得呀
|
|