The SystemWake member of DEVICE_CAPABILITIES contains the lowest (least-powered) system power state from which the device can wake the system, or PowerSystemUnspecified if the device cannot wake the system.
总线驱动程序在枚举设备时设置此值。 较高级别的驱动程序可以将值更改为高功率状态,但不能将其更改为低功率状态。 For example, if the bus driver sets SystemWake to S3 but a driver further up the device stack supports wake-up only from S2, the higher-level driver can change the value to S2. If a driver changes SystemWake, it might also have to change DeviceWake, as explained in the next section.
驱动程序很少需要将更改的值传回设备堆栈。 由于更改使设备功能更具限制性,因此较低的驱动程序看不到它们无法处理的请求。 在前面的示例中,较高级别的驱动程序无法从比 S2 低功率状态唤醒系统的任何请求,因此较低驱动程序永远不会看到此类请求。 However, if a lower driver must be aware of any changes, it can send a PnP IRP_MN_QUERY_CAPABILITIES to its own device stack during its processing of an IRP_MN_START_DEVICE.
If both the SystemWake and DeviceWake members are nonzero (that is, not PowerSystemUnspecified), then the device and its drivers support wake-up on this system.
On non-ACPI hardware, this member always contains zero (PowerSystemUnspecified).