共用方式為


支援具有單一或多個功能電源狀態的 Multiple-Component 裝置

[僅適用於 KMDF]

多元件裝置的 KMDF 驅動程式可以為每個元件定義一或多個功能電源狀態。

在此情況下,驅動程式會直接向電源管理架構註冊, (PoFx) 。 若要指定 WDF 不應該向 PoFx 註冊,驅動程式會呼叫 WdfDeviceAssignS0IdleSettings,並將 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 結構的 IdleTimeoutType 成員設定為 DriverManagedIdleTimeout。 一般而言,驅動程式會從其 EvtDriverDeviceAdd 回呼函式呼叫這個方法。

接下來,驅動程式必須向PoFx註冊。 若要這樣做,驅動程式會呼叫 PoFxRegisterDevice ,然後呼叫 PoFxStartDevicePowerManagement。 第一次啟動裝置時,您的驅動程式只能向PoFx註冊一次。 其中一個做法是從驅動程式提供的 EvtDeviceSelfManagedIoInit 函式呼叫這些例程。 EvtDeviceSelfManagedIoInit 只會在第一次啟動裝置時呼叫。

拿掉裝置時,驅動程式必須呼叫 PoFxUnregisterDevice 以從PoFx 取消註冊裝置。 若要只取消註冊一次,我們建議驅動程式從驅動程式提供的 EvtDeviceSelfManagedIoFlush 函式呼叫此例程。 只有在移除裝置時,才會呼叫 EvtDeviceSelfManagedIoFlush。 藉由在 EvtDeviceSelfManagedIoFlush 中取消註冊,驅動程式會在睡眠和重新平衡轉換期間保留電源註冊,而且不需要針對在這些轉換期間保持擱置的 I/O 要求維護電源參考。

當驅動程式呼叫 PoFxRegisterDevice 時,它會收到電源註冊句柄, (POHANDLE) 它可用來直接與 PoFx 互動,如下列主題所述:

此外,驅動程式可以直接呼叫 電源架構例程 來傳送電源控制要求,並指定延遲、落地和喚醒需求。

如需PoFx的詳細資訊,請參閱 Power Management Framework 概觀