SystemWake
DEVICE_CAPABILITIES 的 SystemWake 成员包含设备可从中唤醒系统的最低 (最低功率) 系统电源状态;如果设备无法唤醒系统,则包含 PowerSystemUnspecified。
总线驱动程序在枚举设备时设置此值。 较高级别的驱动程序可以将值更改为较高功率的状态,但不能将其更改为低功率状态。 例如,如果总线驱动程序将 SystemWake 设置为 S3,但设备堆栈上层的驱动程序仅支持从 S2 唤醒,则较高级别的驱动程序可以将值更改为 S2。 如果驱动程序更改 SystemWake,可能还必须更改 DeviceWake,如下一部分所述。
驱动程序很少需要将更改的值传播回设备堆栈。 由于更改使设备功能更加严格,因此较低的驱动程序看不到它们无法处理的请求。 在前面的示例中,较高级别的驱动程序使任何将系统从比 S2 低功率状态唤醒的请求都失败,因此较低级别的驱动程序永远不会看到此类请求。 但是,如果较低版本的驱动程序必须知道任何更改,则它可以在处理IRP_MN_START_DEVICE期间将 PnP IRP_MN_QUERY_CAPABILITIES发送到自己的设备堆栈。
如果 SystemWake 和 DeviceWake 成员都是非零 (即不是 PowerSystemUnspecified) ,则设备及其驱动程序支持在此系统上唤醒。
在非 ACPI 硬件上,此成员始终包含零 (PowerSystemUnspecified) 。