PnP 管理員會在 IRQL = PASSIVE_LEVEL 呼叫通知回呼函數。
若要確保 PnP 子系統的順利運作,PnP 通知回呼例程必須遵循下列指導方針:
通知回呼例程不得封鎖。
通知回呼例程不得呼叫或導致呼叫產生 PnP 事件的同步例程,或阻止等待裝置安裝或移除的任何例程。
在通知回呼期間呼叫這類例程可能會導致系統死結。
例如,驅動程式不得在通知回呼例程中呼叫 IoReportTargetDeviceChange 。 請改為呼叫 IoReportTargetDeviceChangeAsynchronous 。
通知回呼例程應該會針對未明確失敗的任何事件傳回成功。
當驅動程式註冊事件類別目錄的通知時,PnP 管理員會通知該類別中所有事件的驅動程式、目前和未來。 如果驅動程式針對它未處理的事件傳回錯誤狀態,則驅動程式可能會錯誤地失敗新的查詢事件。
例如,當驅動程式失敗查詢通知以否決所提議的事件時,驅動程式會正確傳回錯誤狀態。
通知回呼例程應該是分頁程序代碼。