IOCTL_MPIO_PASS_THROUGH_PATH IOCTL (ntddscsi.h)
Этот код элемента управления ввода-вывода позволяет приложению или драйверу ядра отправлять команду SCSI в назначенный реальный LUN. Следующие ограничения применяются к использованию этого кода элемента управления ввода-вывода:
- Если существует драйвер класса для псевдо LUN, приложение должно отправить запрос в этот драйвер класса. Таким образом, приложение может отправлять этот запрос непосредственно в MPIO, только если для устройства нет драйвера класса.
- Все сквозные запросы должны быть синхронными.
- Приложениям не требуются права администратора для отправки сквозного запроса на устройство, но у них должен быть доступ на чтение и запись на устройство.
- Запрос состоит из сквозного запроса SCSI (в внедренной SCSI_PASS_THROUGH структуре), а также некоторых директив.
- Структура сквозной передачи SCSI должна соответствовать таким требованиям, как описано в SCSI_PASS_THROUGH.
- Если запрос будет отправлен через DSM, который утверждал реальный LUN, необходимо указать. В таком случае сам DSM должен указывать тот же реальный LUN. В противном случае запрос завершится ошибкой.
- Запрос должен указать реальный LUN, состоящий из псевдо LUN с точки зрения адреса SCSI бывшего или его MPIO PathId, но не оба.
Основной код
Входной буфер
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера в байтах в Irp->AssociatedIrp.SystemBuffer.
Длина входного буфера
Буфер должен быть по крайней мере размер(MPIO_PASS_THROUGH_PATH) или, если отправлено 32-разрядное приложение в 64-разрядной операционной системе, sizeof(MPIO_PASS_THROUGH_PATH32).
Выходной буфер
Драйвер порта возвращает все данные с чувством запроса и все данные, передаваемые с устройства на буфер в Irp->AssociatedIrp.SystemBuffer.
Длина выходного буфера
Элементы SenseInfoLength и DataTransferLeng th в внедренной структуре SCSI_PASS_THROUGH обновляются, чтобы указать объем передаваемых данных.
Блок состояния
В поле сведений задано количество байтов, возвращаемых в выходном буфере в Irp->AssociatedIrp.SystemBuffer. Поле состояния имеет значение STATUS_SUCCESS или, возможно, STATUS_BUFFER_TOO_SMALL или STATUS_INVALID_PARAMETER, если входное значение Length в внедренном SCSI_PASS_THROUGH неправильно задано.
Требования
Требование | Ценность |
---|---|
заголовка | ntddscsi.h (include Ntddscsi.h) |