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) 。