Программирование драйверов Windows

       

Заголовок IRP


Ниже перечислены поля заголовка, к которым можно обращаться из программного кода драйвера. К другим полям заголовка обращаться не рекомендуется.

Таблица 8.5. Заголовок пакета IRP



Поля Описание
IO_STATUS_BLOCK IoStatus Код состояния (статус) запроса
PVOID AssociatedIrp.SystemBuffer Указатель на системный буфер для случая, если устройство поддерживает буферизированный ввод/вывод
PMDL MdlAddress Указатель на MDL список в случае, если устройство поддерживает прямой ввод/вывод
PVOID UserBuffer Адрес пользовательского буфера для ввода/вывода
BOOLEAN Cancel Индикатор того, что пакет IRP должен быть аннулирован

Фрагмент структуры IRP под названием IoStatus фиксирует окончательное состояние данной операции ввода/вывода. Когда драйвер готов завершить обработку пакета IRP, он устанавливает в поле IoStatus.Status значение STATUS_XXX. В поле IoStatus.Information этого блока записывается 0 (если произошла ошибка) или другое определенное операцией ввода/вывода значение, чаще всего &#8212 количество переданных/полученных байт данных (которое может быть и равно нулю).

Вопросы адресации и доступа к буферам данных, описываемых пакетом IRP, будут рассмотрены позже.



Содержание раздела