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


Обработка power IRP

Драйверы обрабатывают irp питания в подпрограмме DispatchPower . Все запросы на управление питанием содержат основной код IRP IRP_MJ_POWER и один из следующих дополнительных кодов:

IRP_MN_QUERY_POWER — запросы, чтобы определить, возможно ли изменение состояния питания

IRP_MN_SET_POWER — запрашивает переход от одного состояния питания к другому.

IRP_MN_WAIT_WAKE — запрашивает, чтобы устройство было включено для пробуждения себя или системы.

IRP_MN_POWER_SEQUENCE — запрашивает сведения для оптимизации восстановления питания на определенном устройстве.

Требуется поддержка IRP_MN_SET_POWER и IRP_MN_QUERY_POWER . Все драйверы должны быть готовы к обработке этих IRP.

Поддержка IRP_MN_WAIT_WAKE требуется для всех драйверов в стеке устройств для любого устройства, которое может пробуждаться в ответ на внешний сигнал. Драйвер отправляет этот IRP, чтобы включить пробуждение устройства.

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

IRP питания может указать операцию питания системы или операцию питания устройства. IrP питания для системы и irp питания для отдельных устройств проходят несколько разными путями в стеке устройств, как описано в следующих разделах.