阅读:1329回复:4
Driver 与 APP 交互多重开檔造成死结
各位大大您们好, 小弟目前在开发文件驱动时发现了一个问题, 就是当我开启了一个文件 (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可能需要排程) , 麻烦各位先进给我个意见, 谢谢 !!
|
|
沙发#
发布于:2008-05-07 06:58
重入问题,搜索一下老帖吧~~
|
|
|
板凳#
发布于:2008-05-07 07:38
自己定义的文件锁吗?
我有点不理解你的意思, 我猜测可能是这样的。 比如某个杀毒软件,内部的处理流程应该是 进程A调用OpenFile打开文件b.exe 过滤驱动拦截到打开b.exe的IRP_MJ_CREATE 过滤驱动先锁定b.exe文件,然后通知杀毒AP,然后杀毒AP执行杀毒操作,杀完病毒后,告诉过滤驱动解锁b.exe文件,然以前挂起的IRP_MJ_CREATE继续执行。 这个锁的核心在于 放过我们的进程对某个文件的访问,阻塞其他进程对这个文件的访问。 |
|
|
地板#
发布于:2008-05-07 08:19
让Driver等待App的通知大多数时候会出问题的,如果这时Driver阻塞了OS的核心资源,肯定会造成操作系统宕机的,,,个人浅见。。。
|
|
地下室#
发布于:2008-05-07 10:15
那么请问大大们有何方法可以解决这样的问题, 因为有可能同时会开启不同的文件而此时如果 Driver锁住第一个文件, 直到 AP 动作完毕再通知 Driver 解锁并从之前的位置继续执行, 但第二, 三个文件又陆续被开启是否就会造成系统当机(有可能OS 亦会被阻塞而不单单只有所开启的文件), 是否有可行的方案或方向可以解决目前头痛的问题, 万分感谢!!
|
|