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


Обработка WDM IRP за пределами платформы

[Относится только к KMDF]

Когда диспетчер ввода-вывода доставляет пакет запроса ввода-вывода (IRP) драйверу на основе платформы, платформа перехватывает IRP, а затем выполняет одно из следующих действий:

  • Обрабатывает IRP. Например, платформа обрабатывает irp, содержащие IRP_MJ_PNP и IRP_MJ_POWER основные коды функций ввода-вывода. При обработке этих irP платформа может взаимодействовать с драйвером, вызывая функции обратного вызова событий драйвера.

  • Создает объект запроса платформы для IRP и доставляет объект запроса в одну из очередей ввода-вывода драйвера, чтобы драйвер смог получить его (обычно в обработчике запросов) и обработать его. Таким образом платформа обрабатывает запросы на чтение, запись и управление вводом-выводом устройства.

  • Передает IRP в драйвер следующего уровня (если драйвер является драйвером фильтра) или завершает IRP со значением состояния STATUS_INVALID_DEVICE_REQUEST (если драйвер не является драйвером фильтра), так как IRP содержит код функции ввода-вывода, который платформа не поддерживает.

Иногда драйвер должен обрабатывать код функции ввода-вывода, который платформа не поддерживает.

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

В рамках предварительной обработки драйверу может потребоваться перенаправить IRP в определенную очередь ввода-вывода.

Эти ситуации описаны в следующих разделах: