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