DeviceWake
DEVICE_CAPABILITIES的DeviceWake成員包含裝置可發出喚醒事件訊號的最低 (最低電源) 裝置電源狀態,如果裝置無法喚醒以回應外部訊號,則為 PowerDeviceUnspecified。
匯流排驅動程式會設定此值。 較高層級的驅動程式可以將值變更為更高電源的狀態。 例如,如果匯流排驅動程式將 DeviceWake 設定為 D3,但進一步啟動裝置堆疊的驅動程式僅支援從 D2 喚醒,則較高層級驅動程式可以將值變更為 D2。
請注意,如果驅動程式變更 DeviceWake,可能也必須變更 SystemWake ,以避免 與 DeviceState 陣列中的系統對裝置對應發生衝突。 例如,假設匯流排驅動程式會設定下列各項:
DeviceState[PowerSystemSleeping1] = PowerDeviceD1
DeviceState[PowerSystemSleeping2] = PowerDeviceD3
DeviceWake = PowerDeviceD3
SystemWake = PowerSystemSleeping2
如果較高層級的驅動程式判斷其裝置無法從 D3 喚醒系統,但只能從 D2 或更高版本喚醒,它可以將 DeviceWake 變更為 D2。 不過,這項變更會導致無法從 S2 對應到 D3。 請記住, DeviceState 陣列會列出裝置可支援指定系統電源狀態的最高裝置電源狀態。 如果範例中的系統電源狀態是 PowerSystemSleeping2,則裝置電源狀態不能是 PowerDeviceD2。 若要消除這個問題,驅動程式也必須將 SystemWake 變更為 PowerSystemSleeping1。 WakeFromDx和DeviceDx設定也是如此。 驅動程式必須確定對 SystemWake 或 DeviceWake 所做的任何變更不會與 WakeFromDx 和 DeviceDx 值衝突。 WakeFromDx和DeviceDx的值反映驅動程式無法變更的硬體特性。
如果 SystemWake 和 DeviceWake 成員都是非零 (,而不是 PowerSystemUnspecified) ,則裝置及其驅動程式支援此系統上的喚醒。
在非 ACPI 硬體上, DeviceWake 成員包含零 (PowerSystemUnspecified) 。