[問題] Driver進入睡眠前如何處理正在進行的IRP

看板C_and_CPP作者 (阿哩他命EX PLUS)時間6年前 (2018/06/07 16:33), 編輯推噓1(101)
留言2則, 1人參與, 6年前最新討論串1/1
各位好 小弟正在練習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

06/09 16:39, 6年前 , 1F
中斷處理中不能睡眠,睡眠要先卸載中斷處理
06/09 16:39, 1F

06/09 16:40, 6年前 , 2F
系統會幫你卸載,移除阻止睡眠的flag就好
06/09 16:40, 2F
文章代碼(AID): #1R6EtV4t (C_and_CPP)