Поделиться через


IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL (ntddscsi.h)

Запрос кода управления IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX — это расширенная версия запроса IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT . Этот запрос обеспечивает поддержку двунаправленной передачи данных и позволяет использовать командный блок данных (CDB) > размером 16 байт.

Этот код управления вводом-выводом позволяет приложению или драйверу ядра отправлять команду SCSI в назначенный реальный LUN. К использованию этого кода элемента управления вводом-выводом применяются следующие ограничения:

  • Если существует драйвер класса для псевдо LUN, приложение должно отправить запрос в этот драйвер класса. Таким образом, приложение может отправить этот запрос непосредственно в MPIO, только если для устройства нет драйвера класса.
  • Все сквозные запросы должны быть синхронными.
  • Приложениям не требуются права администратора для отправки сквозного запроса на устройство, но они должны иметь доступ на чтение и запись к устройству.
  • Запрос состоит из сквозного запроса SCSI (во встроенной SCSI_PASS_THROUGH_DIRECT структуре), а также некоторых директив.
  • Структура сквозной передачи SCSI должна соответствовать таким требованиям, как описано в SCSI_PASS_THROUGH_DIRECT.
  • Если запрос должен быть отправлен через DSM, которое утверждало реальный LUN, это должно быть указано. В этом случае сама DSM должна указывать тот же самый реальный LUN. В противном случае запрос не будет выполнен.
  • В запросе должен быть указан реальный LUN, состоящий из псевдо LUN, с точки зрения адреса SCSI SCSI или идентификатора пути MPIO, но не обоих.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Parameters.DeviceIoControl.InputBufferLength указывает размер буфера в байтах в Irp-AssociatedIrp.SystemBuffer>.

Длина входного буфера

Буфер должен быть по крайней мере sizeof(MPIO_PASS_THROUGH_PATH_DIRECT_EX) или sizeof(MPIO_PASS_THROUGH_PATH_DIRECT32_EX) при отправке 32-разрядным приложением в 64-разрядной операционной системе.

Выходной буфер

Драйвер порта возвращает все данные о запросе и данные, передаваемые с устройства в буфер по адресу Irp-AssociatedIrp.SystemBuffer>.

Длина выходного буфера

SenseInfoLength и DataOutTransferLength во внедренной структуре SCSI_PASS_THROUGH_DIRECT_EX обновляются для указания объема передаваемых данных.

Блок состояния

В поле Information задается число байтов, возвращаемых в выходном буфере в Irp-AssociatedIrp.SystemBuffer>. Для поля Состояние задано значение STATUS_SUCCESS или, возможно, значение STATUS_BUFFER_TOO_SMALL или STATUS_INVALID_PARAMETER, если входное значение Length во внедренном SCSI_PASS_THROUGH_DIRECT_EX задано неправильно.

Требования

Требование Значение
Заголовок ntddscsi.h (включая Ntddscsi.h)

См. также раздел

MPIO_PASS_THROUGH_PATH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT_EX