Поделиться через


DeviceState

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