Функция PoSetPowerState (wdm.h)

Подпрограмма PoSetPowerState уведомляет систему об изменении состояния питания устройства .

Синтаксис

POWER_STATE PoSetPowerState(
  [in] PDEVICE_OBJECT   DeviceObject,
  [in] POWER_STATE_TYPE Type,
  [in] POWER_STATE      State
);

Параметры

[in] DeviceObject

Указатель на целевой DEVICE_OBJECT.

[in] Type

Указывает значение POWER_STATE_TYPE . Драйверы должны указывать DevicePowerState.

[in] State

Указывает состояние питания, которое необходимо задать. Драйверы должны указывать значение DEVICE_POWER_STATE .

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

В Windows 2000 и более поздних версиях операционной системы PoSetPowerState возвращает предыдущее состояние питания. В Windows 98/Me PoSetPowerState возвращает состояние, переданное в состояние.

Комментарии

PoSetPowerState уведомляет диспетчер питания о новом состоянии питания для устройства. Каждый драйвер в стеке устройств (фильтры, функции и драйверы шины) должен вызывать PoSetPowerState , чтобы сообщить диспетчеру питания об изменении состояния питания соответствующего объекта устройства. Пример:

  • Драйвер вызывает эту подпрограмму после получения запроса на настройку питания устройства и перед вызовом PoStartNextPowerIrp. При обработке запроса IRP_MN_START_DEVICE PnP драйвер должен вызвать PoSetPowerState , чтобы уведомить диспетчер питания о том, что устройство находится в состоянии D0.
  • Если устройство выключено, драйвер должен вызвать PoSetPowerState , прежде чем выйти из состояния D0. Кроме того, драйвер должен иметь возможность обрабатывать клиентские запросы до возврата PoSetPowerState .
  • Если устройство выключено, драйвер должен вызвать PoSetPowerState после успешного переключения устройства в состояние D0.
Дополнительные сведения о том, как выключать устройство, см. в разделе Обработка IRP_MN_SET_POWER для состояний питания устройства.

Вызывающие операторы PoSetPowerState должны выполняться в среде IRQL <= APC_LEVEL за исключением случаев, когда для состояния задано значение D0. При установке состояния D0 вызывающие абоненты могут выполняться в irQL <= DISPATCH_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL См. раздел "Примечания".

См. также раздел

IRP_MN_START_DEVICE

PoStartNextPowerIrp