PnP 管理員會重新發佈系統資源
如果使用者將裝置新增至系統,且裝置需要 PnP 管理員已指派給另一部裝置的系統資源,PnP 管理員會嘗試重新指派資源。
在此程式期間,PnP 管理員會停止裝置,並將它們從其工作 (D0) 狀態移除。 然後,它會將新的資源清單傳遞給裝置,以便他們可以使用新的資源重新開機。
重新發佈資源時,如果其中一個裝置的驅動程式具有下列專案,PnP 管理員將不會改變裝置的資源指派:
稱為 WdfDeviceSetSpecialFileSupport, 並在裝置上開啟特殊檔案。
提供 EvtDeviceQueryStop 回呼函式,而回呼函式已撤銷重新指派。
Power-Down序列
針對支援停止裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次一個驅動程式,從驅動程式堆疊中最高的驅動程式開始:
如果驅動程式使用自我管理 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoSuspend 回呼函式。
架構會停止所有裝置的電源受控 I/O 佇列。
如果硬體和驅動程式支援 DMA,架構會針對每個已建立的 DMA 通道呼叫驅動程式的 EvtDmaEnablerSelfManagedIoStop、 EvtDmaEnablerFlush和 EvtDmaEnablerDisable 回呼函式。
如果驅動程式存在) 呼叫驅動程式的 EvtDeviceD0ExitPreInterruptsDisabled 和 EvtInterruptDisable 回呼 (函式,讓驅動程式可以停用裝置中斷。
如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Exit 回呼函式 (。
如果驅動程式存在,架構會呼叫驅動程式的 EvtDeviceReleaseHardware 回呼函式 () 傳遞 PnP 管理員指派給裝置的硬體資源清單。
匯流排驅動程式是堆疊中最低的驅動程式,最後稱為 。 當架構呼叫匯流排驅動程式的EvtDeviceD0Exit回呼函式時,它會將控制碼傳遞給架構裝置物件,代表裝置的 PDO 和WdfPowerDeviceD3Final的TargetState值。 匯流排驅動程式可以藉由呼叫WdfDeviceInitSetReleaseHardwareOrderOnFailure來控制架構何時呼叫其EvtDeviceReleaseHardware回呼函式。
Power-Up序列
第一個稱為 的驅動程式是匯流排驅動程式。 當架構呼叫匯流排驅動程式的 EvtDeviceD0Entry 回呼函式時,回呼函式會將裝置 (匯流排) 的子裝置還原至其運作 (D0) 狀態。
針對支援裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次執行一個驅動程式,從驅動程式堆疊中最低的驅動程式開始:
如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDevicePrepareHardware 回呼函式 (,並傳遞 PnP 管理員指派給裝置的硬體資源清單。
如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Entry 回呼函式 (。
如果驅動程式存在) ,架構會呼叫驅動程式的 EvtInterruptEnable 和 EvtDeviceD0EntryPostInterruptsEnabled 回呼函式 (,讓驅動程式能夠啟用裝置中斷。
如果硬體和驅動程式支援 DMA,架構會針對每個已建立的 DMA 通道呼叫驅動程式的EvtDmaEnablerFill、EvtDmaEnablerEnablerSelfManagedIoStart回呼函式。
如果驅動程式存在) ,架構會呼叫驅動程式的 EvtChildListScanForChildren 回呼函式 (。
架構會重新開機所有裝置的電源受控 I/O 佇列。
如果驅動程式使用自我管理的 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoRestart 回呼函式。