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


Предотвращение изменения состояния питания системы

Хотя драйверы не могут напрямую задать политику управления питанием системы, диспетчер управления питанием предоставляет три процедуры, с помощью которых драйвер может предотвратить переход системы из рабочего состояния: PoSetSystemState, PoRegisterSystemState и PoUnregisterSystemState.

Вызывая PoRegisterSystemState или PoSetSystemState, драйвер может уведомить диспетчер питания о наличии пользователя или о том, что драйвер требует использования системы или дисплея.

PoRegisterSystemState позволяет драйверу регистрировать состояние непрерывной занятости. Он возвращает дескриптор, с помощью которого драйвер может позже изменить свои параметры. До тех пор, пока действует государственная регистрация, диспетчер питания не пытается переводить систему в спящий режим. Драйвер отменяет регистрацию состояния, вызывая PoUnregisterSystemState.

При использовании PoSetSystemState драйвер уведомляет диспетчер питания о одинаковых условиях (присутствует пользователь, требуется система, требуется дисплей), но этот параметр не является непрерывным. Это действие вызывает перезапуск всех бездействующих отсчетов, связанных с указанными условиями.

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