共用方式為


PnP 管理員會重新發佈系統資源

如果使用者將裝置新增至系統,且裝置需要 PnP 管理員已指派給另一部裝置的系統資源,PnP 管理員會嘗試重新指派資源。

在此程式期間,PnP 管理員會停止裝置,並將它們從其工作 (D0) 狀態移除。 然後,它會將新的資源清單傳遞給裝置,以便他們可以使用新的資源重新開機。

重新發佈資源時,如果其中一個裝置的驅動程式具有下列專案,PnP 管理員將不會改變裝置的資源指派:

Power-Down序列

針對支援停止裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次一個驅動程式,從驅動程式堆疊中最高的驅動程式開始:

  1. 如果驅動程式使用自我管理 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoSuspend 回呼函式。

  2. 架構會停止所有裝置的電源受控 I/O 佇列。

  3. 如果硬體和驅動程式支援 DMA,架構會針對每個已建立的 DMA 通道呼叫驅動程式的 EvtDmaEnablerSelfManagedIoStopEvtDmaEnablerFlushEvtDmaEnablerDisable 回呼函式。

  4. 如果驅動程式存在) 呼叫驅動程式的 EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisable 回呼 (函式,讓驅動程式可以停用裝置中斷。

  5. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Exit 回呼函式 (。

  6. 如果驅動程式存在,架構會呼叫驅動程式的 EvtDeviceReleaseHardware 回呼函式 () 傳遞 PnP 管理員指派給裝置的硬體資源清單。

匯流排驅動程式是堆疊中最低的驅動程式,最後稱為 。 當架構呼叫匯流排驅動程式的EvtDeviceD0Exit回呼函式時,它會將控制碼傳遞給架構裝置物件,代表裝置的 PDO 和WdfPowerDeviceD3FinalTargetState值。 匯流排驅動程式可以藉由呼叫WdfDeviceInitSetReleaseHardwareOrderOnFailure來控制架構何時呼叫其EvtDeviceReleaseHardware回呼函式。

Power-Up序列

第一個稱為 的驅動程式是匯流排驅動程式。 當架構呼叫匯流排驅動程式的 EvtDeviceD0Entry 回呼函式時,回呼函式會將裝置 (匯流排) 的子裝置還原至其運作 (D0) 狀態。

針對支援裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次執行一個驅動程式,從驅動程式堆疊中最低的驅動程式開始:

  1. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDevicePrepareHardware 回呼函式 (,並傳遞 PnP 管理員指派給裝置的硬體資源清單。

  2. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Entry 回呼函式 (。

  3. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabled 回呼函式 (,讓驅動程式能夠啟用裝置中斷。

  4. 如果硬體和驅動程式支援 DMA,架構會針對每個已建立的 DMA 通道呼叫驅動程式的EvtDmaEnablerFillEvtDmaEnablerEnablerSelfManagedIoStart回呼函式。

  5. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtChildListScanForChildren 回呼函式 (。

  6. 架構會重新開機所有裝置的電源受控 I/O 佇列。

  7. 如果驅動程式使用自我管理的 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoRestart 回呼函式。