События пробуждения системы
Следующие сведения относятся к пробуждению от спящего режима (S3) и гибернации (S4). Для пробуждения от современного резервного копирования (S0 Low Power Idle) обратитесь к переход между неактивными и активными состояниями.
Приложение может восстановить компьютер, который находится в состоянии спящего режима в рабочем состоянии с помощью запланированного таймера или события устройства. Это называется событием пробуждения . Используйте объект таймера ожидания, чтобы указать время пробуждения системы. Чтобы создать объект, используйте функцию CreateWaitableTimer. Чтобы задать таймер, используйте функцию SetWaitableTimer. Параметр pDueTime указывает, когда таймер будет сигнализировать. Чтобы указать, что система должна проснуться при сигнале таймера, задайте параметру fResume значение TRUE.
При автоматическом пробуждении системы из-за события (кроме действия power switch или пользователя) система автоматически устанавливает автоматическое таймер простоя как минимум 2 минуты. Этот таймер предоставляет приложениям достаточно времени для вызова функции SetThreadExecutionState, чтобы указать, что они заняты. На этот раз система может быстро вернуться в состояние спящего режима после того, как компьютер больше не требуется. Следующие критерии определяют, возвращается ли система в состояние сна:
- Если система автоматически просыпается (т. е. действие пользователя отсутствует), оно завершает работу сразу после истечения срока действия автоматического таймера простоя, предполагая, что приложения не вызвали SetThreadExecutionState, чтобы указать, что система требуется.
- Пробуждение на основе устройств активирует автоматический таймер простоя по умолчанию, если драйвер устройства не указывает на присутствие пользователя. Если драйвер указывает на присутствие пользователя, используется таймер простоя системы.
- Если система просыпается автоматически, но пользователь предоставляет новые входные данные во время обработки события, система не возвращается в спящий режим на основе автоматического таймера простоя. Вместо этого система возвращается в спящий режим на основе таймера простоя системы.
- Если система просыпается из-за активности пользователя, система не возвращается в спящий режим на основе автоматического таймера простоя. Вместо этого система возвращается в спящий режим на основе таймера простоя системы.
Когда система просыпается автоматически, она передает событие PBT_APMRESUMEAUTOMATIC всем приложениям. Так как пользователь отсутствует, большинство приложений не должны ничего делать. Приложения обработки событий, такие как факс-серверы, должны обрабатывать их события. Чтобы определить, находится ли система в этом состоянии, вызовите функцию IsSystemResumeAutomatic. При автоматическом пробуждении системы дисплей не включается автоматически.
Если система просыпается из-за действия пользователя, система сначала будет транслировать событие PBT_APMRESUMEAUTOMATIC, за которым следует событие PBT_APMRESUMESUSPEND. Кроме того, система включает отображение. Приложение должно повторно открыть файлы, закрытые при входе системы в спящий режим и подготовиться к входным данным пользователя.
Связанные разделы
-
о управления питанием