共用方式為


撰寫 PnP 通知回呼例程的指導方針

PnP 管理員會在 IRQL = PASSIVE_LEVEL 呼叫通知回呼函數。

若要確保 PnP 子系統的順利運作,PnP 通知回呼例程必須遵循下列指導方針:

  1. 通知回呼例程不得封鎖。

  2. 通知回呼例程不得呼叫或導致呼叫產生 PnP 事件的同步例程,或阻止等待裝置安裝或移除的任何例程。

    在通知回呼期間呼叫這類例程可能會導致系統死結。

    例如,驅動程式不得在通知回呼例程中呼叫 IoReportTargetDeviceChange 。 請改為呼叫 IoReportTargetDeviceChangeAsynchronous

  3. 通知回呼例程應該會針對未明確失敗的任何事件傳回成功。

    當驅動程式註冊事件類別目錄的通知時,PnP 管理員會通知該類別中所有事件的驅動程式、目前和未來。 如果驅動程式針對它未處理的事件傳回錯誤狀態,則驅動程式可能會錯誤地失敗新的查詢事件。

    例如,當驅動程式失敗查詢通知以否決所提議的事件時,驅動程式會正確傳回錯誤狀態。

  4. 通知回呼例程應該是分頁程序代碼。