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


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, но не оба.

Основной код

IRP_MJ_DEVICE_CONTROL

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

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)

См. также

MPIO_PASS_THROUGH_PATH

SCSI_PASS_THROUGH