DeviceState
DEVICE_CAPABILITIES 的 DeviceState 成员是DEVICE_POWER_STATE值的数组,这些值按从 PowerSystemWorking 到 PowerSystemShutdown的SYSTEM_POWER_STATE值编制索引。 数组的每个元素都包含最大 (最高功率) 设备电源状态,设备可以支持索引表示的系统电源状态;如果不支持系统电源状态,则包含 PowerDeviceUnspecified 。
例如,在仅支持 S0、S4 和 S5 系统电源状态的系统上,仅支持 D0 和 D3 状态的设备的 DeviceState 数组包含下表中显示的值。
DeviceState 元素 | 值 |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping2] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping3] |
PowerDeviceUnspecified |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
在支持所有系统电源状态的系统上,下表列出了数组将包含的设备的值,只要系统进入任何中间睡眠状态,当系统进入任何中间睡眠状态时处于 D3 状态,当系统休眠时,这些设备必须处于 D2 或更低状态。
DeviceState 元素 | 值 |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping2] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping3] |
PowerDeviceD2 |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
请注意, DeviceState 数组中的条目表示设备可针对相应的系统电源状态支持的最高设备电源状态。 在前面的示例中,对于任何系统电源状态,设备可能处于状态 D3,状态 D2 表示系统电源状态 PowerSystemWorking (通过 PowerSystemSleeping3)和状态 D1(对于系统状态 PowerSystemWorking)。
总线驱动程序或 ACPI 筛选器根据父设备节点的功能设置这些值。
一般情况下,更高级别的驱动程序不应更改这些值。 但是,在极少数需要这种更改的情况下,驱动程序可以指定比最初返回的总线驱动程序或 ACPI 筛选器低 (低功率) 状态。 例如,假设 DeviceState[PowerSystemSleeping1] 映射到 PowerDeviceD2,如上表所示。 驱动程序可以将此值更改为 PowerDeviceD3,但不能更改为 PowerDeviceD1 或 PowerDeviceD0。