[问题] Driver进入睡眠前如何处理正在进行的IRP

楼主: v00623 (阿哩他命EX PLUS)   2018-06-07 16:33:30
各位好 小弟正在练习WDM Driver的Power Manager
目前有个问题:
当Function Driver被Power Manager通知要进入休眠时
如果正好有其他IRP正在进行 该如何处理?
不过在这个问题之前 想先请教要如何知道有IRP正在进行?
目前我知道在I/O operation时要使用Remove Locks
所以是透过Remove Locks来得知的吗?
不过好像没有"取得是否有IRP正在执行"的Routine??
或是内部有其他机制 不需要程式判断?
另外 当系统要求driver进入睡眠时会送出下面两个IRP
IRP_MN_QUERY_POWER
IRP_MN_SET_POWER
想问是在哪个阶段得知还有IRP正在执行?
回到最初的问题~
我认为应该根据情况来判断是要cancel IRP或是不进行睡眠
不过又有疑问 怎样情况才是要cancel? 而又如何知道目前是什么情况?
抱歉 还不完全了解机制 问题写得有点饶
还请前辈指教 任何建议都相当感谢~
谢谢
作者: hizuki (ayaka)   2018-06-09 16:39:00
中断处理中不能睡眠,睡眠要先卸载中断处理系统会帮你卸载,移除阻止睡眠的flag就好

Links booklink

Contact Us: admin [ a t ] ucptt.com