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


События пробуждения системы

Следующие сведения относятся к пробуждению из спящего режима (S3) и гибернации (S4). Сведения о выходе из режима ожидания (S0 Low Power Idle) см. в разделе Переход между состоянием простоя и активным состоянием.

Приложение может восстановить компьютер, который находится в спящем режиме, до рабочего состояния с помощью запланированного таймера или события устройства. Это называется событием пробуждения. Используйте объект таймера ожидания , чтобы указать время пробуждения системы. Чтобы создать объект, используйте функцию CreateWaitableTimer . Чтобы задать таймер, используйте функцию SetWaitableTimer . Параметр pDueTime указывает, когда будет подан сигнал таймера. Чтобы указать, что система должна проснуться при сигнале таймера, задайте для параметра fResumeзначение TRUE.

Когда система автоматически выходит из спящего режима из-за события (кроме выключения питания или действий пользователя), система автоматически устанавливает автоматический таймер простоя не менее 2 минут. Этот таймер предоставляет приложениям достаточно времени для вызова функции SetThreadExecutionState , чтобы указать, что они заняты. Это позволяет системе быстро вернуться в спящий режим после того, как компьютер больше не требуется. Следующие критерии определяют, возвращается ли система в спящий режим.

  • Если система автоматически выходит из спящего режима (т. е. действия пользователя отсутствуют), она завершает работу сразу после истечения срока действия таймера автоматического простоя, предполагая, что ни в каких приложениях не был вызван Метод SetThreadExecutionState , чтобы указать, что система требуется.
  • Пробуждение на основе устройства активирует автоматический таймер простоя по умолчанию, если драйвер устройства не указывает на присутствие пользователя. Если драйвер указывает на присутствие пользователя, используется системный таймер простоя.
  • Если система выходит из спящего режима автоматически, но пользователь предоставляет новые входные данные во время обработки события, система не возвращается в спящий режим автоматически на основе таймера автоматического простоя. Вместо этого система возвращается в спящий режим на основе таймера простоя системы.
  • Если система выходит из-за действий пользователя, система не возвращается в спящий режим автоматически на основе таймера автоматического простоя. Вместо этого система возвращается в спящий режим на основе системного таймера простоя.

Когда система автоматически выходит из спящего режима, она транслирует событие PBT_APMRESUMEAUTOMATIC всем приложениям. Так как пользователь отсутствует, большинство приложений не должны выполнять никаких действий. Приложения для обработки событий, такие как факс-серверы, должны обрабатывать свои события. Чтобы определить, находится ли система в этом состоянии, вызовите функцию IsSystemResumeAutomatic . При автоматическом пробуждении системы дисплей не включается автоматически.

Если система выходит из-за действий пользователя, система сначала будет транслировать событие PBT_APMRESUMEAUTOMATIC , а затем событие PBT_APMRESUMESUSPEND . Кроме того, система включит дисплей. Приложение должно повторно открыть файлы, которые оно закрыло, когда система вошла в спящий режим, и подготовиться к вводу данных пользователем.

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

Системные критерии спящего режима