Сбой системного Query-Power IRP в фильтре или драйвере функции
Драйвер фильтра или функции (который не является владельцем политики питания для устройства) может завершиться сбоем запроса IRP_MN_QUERY_POWER , если выполняется одно из следующих действий:
Устройство включено для пробуждения, а запрошенное состояние питания системы меньше, чем значение SystemWake, указывающее состояние с наименьшим энергопотреблением, из которого устройство может разбудить систему. Например, устройство, которое может разбудить систему из S2, но не из S3, завершится ошибкой запроса S3, но успешно завершит запрос на S2.
Ввод состояния питания устройства, соответствующего запрашиваемому состоянию, приведет к тому, что драйвер откажется от операции, которая приведет к потере данных, например от открытого модемного подключения. По этой причине драйвер редко завершает запрос; в большинстве случаев приложение обрабатывает такие случаи.
Чтобы завершить запрос IRP_MN_QUERY_POWER состоянием питания системы, драйвер должен выполнить следующие действия:
Вызовите PoStartNextPowerIrp , чтобы указать, что драйвер готов к обработке следующего IRP питания. (Только Windows Server 2003, Windows XP и Windows 2000)
Задайте для параметра Irp-IoStatus.Status> состояние сбоя и вызовите IoCompleteRequest, указав IO_NO_INCREMENT. Не передавайте IRP дальше по стеку устройств.
Вызовите IoReleaseRemoveLock , чтобы освободить ранее полученную блокировку.
Возвращает состояние сбоя из подпрограммы DispatchPower .