После того, как типичный драйвер завершает свою инициализацию в DriverEntry, его основная задача — обрабатывать запросы. Эти запросы упакованы в виде
полудокументированной структуры пакета запроса ввода-вывода (IRP).
В этой главе мы более подробно рассмотрим пакеты IRP и то, как драйвер обрабатывает стандартные типы пакетов IRP.
В этой главе:
• Введение в IRP.
• Узлы устройств.
• IRP и расположение стека ввода-вывода.
• Процедуры отправки.
• Доступ к пользовательским буферам.
• Собираем все вместе: Нулевой драйвер.
Введение в IRP
IRP - это структура, которая выделяется из невыгружаемого пула, как правило, одним из «менеджеров» (диспетчер ввода-вывода, диспетчер Plug & Play, диспетчер питания), но также может быть выделена драйвером, возможно, для передачи запроса другому
драйверу.
Как-бы IRP не выделялся, сервис который выделил эту структуру отвечает за его освобождение.
Когда драйвер получает IRP, он получает указатель на стек ввода-вывода в самой структуре IRP...