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 更改为 PowerSystemSleeping1WakeFromDxDeviceDx 设置也是如此。 驱动程序必须确保对 SystemWake 或 DeviceWake 所做的任何更改不会与 WakeFromDxDeviceDx 值冲突。 WakeFromDxDeviceDx 的值反映了驱动程序无法更改的硬件特征。

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

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