[問題] 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