看板 C_and_CPP 關於我們 聯絡資訊
各位好 小弟正在練習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