Самоучитель по программированию систем защиты

       

Характеристики Прямого



Таблица 6. Характеристики Прямого ввода/вывода, Буферизованного ввода/вывода i и «никакого» ввода/вывода

Прямой ввод/вывод (Direct I/O)

Буферизованный ввод/вывод (Buffered I/O)

«Никакой» ввод/вывод (Neither I/O)

Буфер инициа тора запроса



Описывается с по- мощью MDL

Скопирован во вре- менный буфер в не- выгружаемой сис- темной памяти

Описывается виртуальным адресом инициатора запроса

Состояние буфера инициатора запроса в процессе обработки запроса ввода/вывода

Буфер блокирован в памяти Диспетче- ром ввода/вывода

Буфер не блокирован

Буфер не блокирован

Описание буфе ра в IRP

Irp->MdlAddress содержит указатель наМВЬ

Irp->Associate- dlrp. SystemBuffer содержит виртуальный адрес временно- го буфера в системной области памяти в области невыгру жаемой памяти (non- paged pool)

Irp->UserBuffer содержит не проверенный на доступ- ность виртуальный адрес буфера ини- циатора запроса ввода/вывода

Контекст, при котором буфер может быть ис- пользован

Случайный кон текст

Случайный контекст

Только контекст потока - инициатора запроса

Уровень IRQL, ipn котором буфер может быть использован

IRQL<DIS- PATCH_LEVEL

Любой

IRQL < DIS- PATCH_LEVEL

Для описания всех запросов чтения и записи, которые посылаются конкретному устройству, после создания объекта-устройства в его поле Flags Диспетчеру ввода/

вывода должен быть указан единственный метод для использования. Однако для каждого кода Управления Вводом/выводом Устройства (I/O Control Code, IOCTL), поддерживаемого драйвером, может использоваться любой другой метод.

 



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