IRP_MN_QUERY_PNP_DEVICE_STATE
Этот запрос могут обрабатываться драйверами функций, фильтров и автобусов.
Значение47
0x14
Основной код
При отправке
Диспетчер PnP отправляет этот IRP после того, как драйверы для устройства возвращаются успешно из запроса IRP_MN_START_DEVICE , отправленного при первом запуске устройства. Этот IRP не отправляется на начальном экране после остановки для перебалансирования ресурсов. Диспетчер PnP также отправляет этот IRP, когда драйвер для устройства вызывает IoInvalidateDeviceState.
Диспетчер PnP отправляет этот IRP на PASSIVE_LEVEL IRQL в контексте произвольного потока.
Входные параметры
Нет
Выходные параметры
Возвращается в блоке состояния ввода-вывода.
Блок состояния ввода-вывода
Драйвер задает для Irp-IoStatus.Status> значение STATUS_SUCCESS или соответствующее состояние ошибки, например STATUS_UNSUCCESSFUL.
При успешном выполнении драйвер присваивает Irp-IoStatus.Information>значение битовой маски PNP_DEVICE_STATE.
Если драйвер функции или фильтра не обрабатывает этот IRP, он вызывает IoSkipCurrentIrpStackLocation, не задает подпрограмму IoCompletion и передает IRP следующему драйверу. Такой драйвер не должен изменять Irp-IoStatus> и не должен завершить IRP.
Если водитель автобуса не обрабатывает этот IRP, он оставляет Irp-IoStatus.Status> как есть и завершает IRP.
Операция
Этот IRP обрабатывается сначала драйвером в верхней части стека устройств, а затем каждым следующим более низким драйвером в стеке.
Драйвер обрабатывает этот IRP, если у него есть сведения о состоянии PnP устройства. Драйвер может устанавливать или очищать флаги в битовой маске PNP_DEVICE_STATE. Если другой драйвер установил PNP_DEVICE_STATE в Irp-IoStatus.Information>, драйвер должен позаботиться о том, чтобы изменить флаги в этой битовой маске, а не перезаписывать всю структуру.
Общие правила обработки Plug and Play дополнительных irP см. в Plug and Play.
Отправка этого IRP
Зарезервировано для системного использования. Драйверы не должны отправлять этот IRP.
Требования
Заголовок |
Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h) |