DeviceWake

DEVICE_CAPABILITIESDeviceWake 成员包含设备可发出唤醒事件信号的最低 () 设备电源状态;如果设备无法唤醒以响应外部信号,则包含 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。 对于 WakeFromDxDeviceDx 设置也是如此。 驱动程序必须确保对 SystemWakeDeviceWake 所做的任何更改都不会与 WakeFromDxDeviceDx 值冲突。 WakeFromDxDeviceDx 的值反映驱动程序无法更改的硬件特征。

如果 SystemWakeDeviceWake 成员都是非零 (即 PowerSystemUnspecified) ,则设备及其驱动程序支持在此系统上唤醒。

在非 ACPI 硬件上, DeviceWake 成员包含零 (PowerSystemUnspecified) 。