Отправка IRP ожидания или пробуждения
Незначительный код IRP питания IRP_MN_WAIT_WAKE обеспечивает пробуждение устройства или пробуждение системы. Драйверы устройств, которые могут самостоятельно пробуждения или система, отправляют запросы IRP_MN_WAIT_WAKE . Система отправляет IRP_MN_WAIT_WAKE запросы только на устройства, которые всегда активит систему, например переключатель питания.
Драйвер отправляет запрос IRP_MN_WAIT_WAKE по одной из двух причин:
Устройство должно иметь возможность вернуться в рабочее состояние из спящего режима в ответ на внешний сигнал пробуждения.
Например, драйвер модема может отправить ему IRP ожидания или пробуждения перед установкой его в состояние питания D1 для экономии энергии. IRP ожидания и пробуждения позволяет модему отвечать на входящий звонок.
Его устройство должно иметь возможность разбудить систему в ответ на сигнал пробуждения.
Когда система переходит в спящий режим, модем может оставаться в состоянии D1 с ожиданием IRP_MN_WAIT_WAKE . В этом случае входящий звонок будет вызывать пробуждение системы, а также модема.
Независимо от того, подготовлено ли устройство к пробуждению себя или системы, его драйверы должны выполнять те же действия. Основное различие заключается в том, как устройство и системное оборудование реагируют на начальный сигнал пробуждения. Поведение драйвера в любом случае одинаково.