作者v00623 (阿哩他命EX PLUS)
看板C_and_CPP
標題[問題] Driver進入睡眠前如何處理正在進行的IRP
時間Thu Jun 7 16:33:30 2018
各位好 小弟正在練習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? 而又如何知道目前是什麼情況?
抱歉 還不完全了解機制 問題寫得有點饒
還請前輩指教 任何建議都相當感謝~
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.39.226.12
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1528360415.A.137.html
推 hizuki: 中斷處理中不能睡眠,睡眠要先卸載中斷處理 06/09 16:39
→ hizuki: 系統會幫你卸載,移除阻止睡眠的flag就好 06/09 16:40