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


Отправка IRP для ожидания и пробуждения

Второстепенный код IRP питания IRP_MN_WAIT_WAKE обеспечивает пробуждение устройства или пробуждение системы. Драйверы устройств, которые могут «будить» сами себя или систему, отправляют запросы IRP_MN_WAIT_WAKE. Система отправляет IRP_MN_WAIT_WAKE запросы только на устройства, которые всегда просят систему, например переключатель питания.

Драйвер отправляет запрос IRP_MN_WAIT_WAKE по одной из двух причин:

  1. Его устройство должно иметь возможность вернуться к рабочему состоянию из состояния спящего режима в ответ на внешний сигнал пробуждения.

    Например, драйвер модема может отправить ему IRP ожидания или пробуждения, прежде чем задать его в состоянии питания D1 для экономии энергии. IRP ожидания и пробуждения позволяет модему реагировать на входящий вызов.

  2. Его устройство должно иметь возможность пробуждения системы в ответ на сигнал пробуждения.

    Когда система переходит в спящий режим, модем может оставаться в состоянии D1 с IRP_MN_WAIT_WAKE ожидающих. В этом случае входящий звонок разбудит систему и модем.

Независимо от того, подготовлено ли устройство к пробуждению или системе, необходимы те же действия, которые должны выполняться его драйверами. Основное различие заключается в том, как устройство и системное оборудование реагируют на начальный сигнал пробуждения. Поведение драйвера одинаково в любом случае.