vectra
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2010-04-18
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1373回复:2

system进程延时写入数据产生的严重问题

楼主#
更多 发布于:2004-10-16 22:11
我现在在做一个程序,功能是监视某个目录下所有文件的写操作,并且将每个写操作的偏移和长度记录下来,然后根据这些记录将数据提出来,打包成一个文件。用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进程将那结准备延时写入的数据立即写入,以保证在我结束监视前能得到完整的结果。
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-18 11:41
本来这些操作就是system做得呀
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-25 17:27
OS为了提高对磁盘操作效率,使用了缓冲,所以这是正常的,如果这个时候系统崩溃,那么就有大麻烦了,我写驱动旧经常遇见这样,所以通常我会不断备份数据,以减少这样的灾难
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部