Сведения об управлении питанием

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

Современное проектирование резервных и приложений

Современная резервная версия (S0 с низкой мощностью бездействия) — это модель спящего режима по умолчанию на большинстве устройств Windows 11. В отличие от традиционного спящего режима S3, система остается частично запущенной— сетевое подключение может поддерживаться, и система может мгновенно проснуться. Это изменяет способ обработки фоновой работы приложений.

Important

Распространенные антипаттерны, разряжающие батарею в режиме Modern Standby:

  • Удерживание ES_SYSTEM_REQUIRED непрерывно — это предотвращает переход системы в режим бездействия с низким энергопотреблением. Удерживайте этот флаг только при активном выполнении работы, а затем немедленно очистите его.
  • Периодические пробуждения таймера — таймеры , которые запускают каждые несколько секунд, сохраняют активность ЦП. Вместо этого используйте коалесцирующие таймеры или архитектуры, управляемые событиями.
  • Несвязанный опрос сети — для упакованных приложений используйте push-уведомления (WNS). Для неупакованных приложений Win32 используйте сокеты, управляемые событиями, или уведомления об изменении списка сетей, а не опрос конечного узла.
  • Оставленные открытыми аудио-/медиапотоки — даже беззвучные потоки не позволяют отключить питание аудиоустройства. Освобождать звуковые устройства, когда не выполняется активная отрисовка.

Рекомендации по современному резервному режиму

  1. Зарегистрируйтесь для уведомлений питания для обнаружения переходов . Используйте PowerSettingRegisterNotification с GUID_MONITOR_POWER_ON и GUID_POWER_SAVING_STATUS.
  2. Отложите несрочные задачи до тех пор, пока устройство не будет подключено к сети питания. Прежде чем запускать крупные операции, обратитесь к GetSystemPowerStatus .
  3. Используйте SetThreadExecutionState только при необходимости — вызывайте с ES_CONTINUOUS | ES_SYSTEM_REQUIRED только для активных операций (передачи файлов, записи мультимедиа) и обязательно сбрасывайте с SetThreadExecutionState(ES_CONTINUOUS) после завершения операции.
  4. Операции пакетной сети — объединение нескольких небольших запросов в один сеанс, чтобы свести к минимуму время радиосвязи.
  5. Соблюдайте экономию батареи . Когда GUID_POWER_SAVING_STATUS указывает, что экономия батареи активна, уменьшает или устраняет фоновое действие.

Функции и сообщения управления питанием получают состояние системы, уведомляют приложения о событиях управления питанием и уведомляют систему требований к мощности каждого приложения. В этом обзоре содержатся следующие разделы:

Управление питанием