Состояние устройства

Элемент DeviceStateDEVICE_CAPABILITIES представляет собой массив значений DEVICE_POWER_STATE , индексированных SYSTEM_POWER_STATE значениями, от PowerSystemWorking до PowerSystemShutdown. Каждый элемент массива содержит максимальное (самое высокое) состояние питания устройства, которое устройство может поддерживать для системного состояния питания, обозначенного индексом, или PowerDeviceUnspecified, если системное состояние питания не поддерживается.

Например, в системе, поддерживающей только состояния питания системы S0, S4 и S5, массив DeviceState для устройства, поддерживающего только состояния D0 и D3, содержат значения, показанные в следующей таблице.

Элемент DeviceState Ценность

DeviceState[PowerSystemWorking]

PowerDeviceD0

DeviceState[PowerSystemSleeping1]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping2]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping3]

PowerDeviceUnspecified

DeviceState[PowerSystemHibernate]

PowerDeviceD3

DeviceState[PowerSystemShutdown]

PowerDeviceD3

В системе, поддерживающей все состояния питания системы, в следующей таблице перечислены значения, которые массив будет содержать для устройства, которое должно находиться в состоянии D2 или ниже, когда система переходит в любое промежуточное состояние сна и в состоянии D3 при переходе системы в спящий режим.

Элемент 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.