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


Функция PoSetPowerState (ntifs.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 .

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

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
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL См. раздел "Примечания".

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

IRP_MN_START_DEVICE

PoStartNextPowerIrp