Функция WdfDeviceGetSystemPowerAction (wdfdevice.h)

[Относится к KMDF и UMDF]

Метод WdfDeviceGetSystemPowerAction возвращает действие питания системы, если таковое имеется, которое выполняется в данный момент для компьютера.

Синтаксис

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

Параметры

[in] Device

Дескриптор объекта устройства платформы.

Возвращаемое значение

WdfDeviceGetSystemPowerAction возвращает POWER_ACTION типизированное значение перечислителя. Значение указывает на действие питания системы , которое в настоящее время выполняется для компьютера. Дополнительные сведения см. в разделе "Примечания". Перечисление POWER_ACTION определено в wdm.h.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Начиная с WDF версии 1.31/2.31 (называемой "v31"), WdfDeviceGetSystemPowerAction был обновлен для более точного отчета о действиях системы управления питанием, когда устройство является владельцем политики управления питанием. Чтобы получить следующее новое поведение, необходимо перекомпилировать драйверы с помощью версии 31 или более поздней версии:

  • Если устройство входит в D0 или выходит из нее из-за S0 Idle (см. раздел WdfDeviceAssignS0IdleSettings) во время несвязанного перехода питания системы, WdfDeviceGetSystemPowerAction может вернуть PowerActionSleep. Это исправлено в версии 31 и теперь возвращает PowerActionNone.

  • Когда система выходит из гибридного спящего режима (спящего режима с файлом гибернации), до версии 31 WdfDeviceGetSystemPowerAction всегда возвращала PowerActionHibernate. Это исправлено в версии 31 и теперь возвращается:

    • PowerActionSleep , если он выходит из спящего режима без потери питания, что означает, что система остается в S3
    • PowerActionHibernate , если он выходит из спящего режима после потери питания, что означает возобновление работы системы из файла гибернации

Метод WdfDeviceGetSystemPowerAction позволяет драйверу определить, происходит ли переход питания устройства из-за простоя (или пробуждения) или из-за того, что весь компьютер переходит (или покидает) состояние с низким энергопотреблением.

Драйвер должен вызывать WdfDeviceGetSystemPowerAction только из функций обратного вызова событий, вызываемых платформой, когда устройство входит в состояние с низким энергопотреблением или возвращается в рабочее состояние.

Значение, возвращаемое WdfDeviceGetSystemPowerAction , зависит от следующих ситуаций:

  • Если компьютер находится в состоянии низкого энергопотребления, когда драйвер вызывает WdfDeviceGetSystemPowerAction, метод возвращает причину, по которой компьютер входит в состояние с низким энергопотреблением. Например, метод возвращает PowerActionSleep , если компьютер входит в состояние с низким энергопотреблением S1, S2 или S3.
  • Если компьютер возвращается в рабочее состояние (S0) из состояния с низким энергопотреблением, когда драйвер вызывает WdfDeviceSystemPowerAction, метод возвращает причину, по которой компьютер перешел в состояние с низким энергопотреблением. Например, метод возвращает PowerActionSleep , если компьютер покидает состояние S1, S2 или S3 с низким энергопотреблением.
  • Если компьютер включается (после выключения), когда драйвер вызывает WdfDeviceGetSystemPowerAction, метод возвращает PowerActionNone.
  • Если устройство входит в состояние простоя с низким энергопотреблением или возвращается в рабочее (D0) состояние, когда драйвер вызывает WdfDeviceGetSystemPowerAction, в то время как остальная часть системы остается в рабочем состоянии (S0), метод возвращает PowerActionNone.
  • Если компьютер и устройство находятся в рабочем состоянии, когда драйвер вызывает WdfDeviceGetSystemPowerAction, метод возвращает PowerActionNone.
Дополнительные сведения о состояниях с низким энергопотреблением см. в разделе Устройство переходит в состояние Low-Power.

Примеры

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

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,9
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)