Если су- ществует, то где
Таблица 7
METHOD BUFFERED |
METHOD IN DIRECT |
METHOD OUT DIRECT |
METHOD NEITHER |
||
InBuffer |
Метод передачи |
Buffered I/O |
Buffered I/O |
Buffered I/O |
Виртуальный адрес инициатора запроса |
Если су- ществует, то где располо- жен |
Адрес промежуточного буфера в фиксированной части IRP в поле Irp->AssociatedIrp. SystemBuffer |
В стеке размещения ввода/вывода вир- туальный адрес инициатора запроса в Parame ters. Devicelo- Control. TypeSInputBuffer |
|||
Длина |
Длина в байтах в поле Parameters.DeviceloControl.InputBuffer Length в текущем стеке размещения ввода/вывода. |
||||
Out- Buffer |
Метод передачи |
Buffered I/O |
Direct I/O |
Direct I/O |
Виртуальный адрес инициатора запроса |
Если су- ществует, то где располо- жен |
Адрес промежуточного буфера в фиксированной части IRP в поле Irp->Associate-dlrp.SystemB uffer |
MDL, адрес в Irp->MdlAd- dress |
MDL, адрес в Irp->MdlAd- dress |
Виртуальный адрес инициатора запроса в Irp->UserBuffer |
|
Длина |
Длина в байтах в поле Parameters.DeviceloControl.OutputBufferLength в текущем стеке раз- мещения ввода/вывода. |
Для завершения запроса IRP необходимо установить поле Irp->IoStatus.Information равным числу прочитанных/записанных в буфер байт. В случае буферизованного ввода/вывода это поле укажет Диспетчеру ввода/вывода, сколько
байт нужно скопировать из промежуточного буфера в невыгружаемой области системного адресного пространства в пользовательский буфер.