mikechen_1000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-15
  • 最后登录2009-02-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望29点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
阅读:1330回复:4

Driver 与 APP 交互多重开檔造成死结

楼主#
更多 发布于:2008-05-06 16:22
各位大大您们好, 小弟目前在开发文件驱动时发现了一个问题, 就是当我开启了一个文件 (1.TXT) , 然后Driver 须等待 (Hold住) 并告诉 APP 己有档案被开启 , 此时 APP 去执行某些动作(比如拷贝,搬移或删除其它档案)直到完成, 并且回头通知 Driver 己动作完毕 , 则 Driver 才可继续动作 , 但 Driver 在等待时可能此时又再开启另外一个文件 (2.TXT) 或第三个文件 (3.TXT) , 在那之前等待 APP通知的 Driver 即可能会将控制权 (MJ_CREATE) 交给第二个文件 (2.TXT) or (3.TXT) 而造成之前的动作未完成而当机, 不知如何正确解决 Driver 与 APP 多重开檔时所造成的死结,而让 Driver 能持续等待 APP 动作完成又同时兼容开启别的文件(浅见: Driver可能需要排程) , 麻烦各位先进给我个意见, 谢谢 !!
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
沙发#
发布于:2008-05-07 06:58
重入问题,搜索一下老帖吧~~
没有战争就没有进步 X3工作组 为您提供最好的军火
dreamsity
驱动小牛
驱动小牛
  • 注册日期2006-09-01
  • 最后登录2013-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望821点
  • 贡献值1点
  • 好评度68点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2008-05-07 07:38
自己定义的文件锁吗?
我有点不理解你的意思,
我猜测可能是这样的。
比如某个杀毒软件,内部的处理流程应该是
进程A调用OpenFile打开文件b.exe
过滤驱动拦截到打开b.exe的IRP_MJ_CREATE
过滤驱动先锁定b.exe文件,然后通知杀毒AP,然后杀毒AP执行杀毒操作,杀完病毒后,告诉过滤驱动解锁b.exe文件,然以前挂起的IRP_MJ_CREATE继续执行。
这个锁的核心在于
放过我们的进程对某个文件的访问,阻塞其他进程对这个文件的访问。
一切都是时间问题!
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
地板#
发布于:2008-05-07 08:19
让Driver等待App的通知大多数时候会出问题的,如果这时Driver阻塞了OS的核心资源,肯定会造成操作系统宕机的,,,个人浅见。。。
mikechen_1000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-15
  • 最后登录2009-02-13
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望29点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-05-07 10:15
那么请问大大们有何方法可以解决这样的问题, 因为有可能同时会开启不同的文件而此时如果 Driver锁住第一个文件, 直到 AP 动作完毕再通知 Driver 解锁并从之前的位置继续执行, 但第二, 三个文件又陆续被开启是否就会造成系统当机(有可能OS 亦会被阻塞而不单单只有所开启的文件), 是否有可行的方案或方向可以解决目前头痛的问题, 万分感谢!!
游客

返回顶部