IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL (ntddscsi.h)
Запрос кода элемента управления IOCTL_MPIO_PASS_THROUGH_PATH_EX — это расширенная версия запроса IOCTL_MPIO_PASS_THROUGH_PATH . Этот запрос обеспечивает поддержку двунаправленной передачи данных и позволяет использовать блок данных команд (CDB) > размером 16 байт.
Этот код управления вводом-выводом позволяет приложению или драйверу ядра отправлять команду SCSI в назначенный реальный LUN. К использованию этого кода элемента управления вводом-выводом применяются следующие ограничения:
- Если существует драйвер класса для псевдо LUN, приложение должно отправить запрос в этот драйвер класса. Таким образом, приложение может отправить этот запрос непосредственно в MPIO, только если для устройства нет драйвера класса.
- Все сквозные запросы должны быть синхронными.
- Приложениям не требуются права администратора для отправки сквозного запроса на устройство, но они должны иметь доступ на чтение и запись к устройству.
- Запрос состоит из сквозного запроса SCSI (во встроенной структуре SCSI_PASS_THROUGH_EX ), а также некоторых директив.
- Структура сквозной передачи SCSI должна соответствовать таким требованиям, как описано в SCSI_PASS_THROUGH_EX.
- Если запрос должен быть отправлен через DSM, который утверждал реальный LUN, это необходимо указать. В этом случае сама DSM должна указывать на то же реальное LUN. В противном случае запрос не будет выполнен.
- В запросе должен быть указан реальный LUN, состоящий из псевдо LUN с точки зрения адреса SCSI первого экземпляра или его MPIO PathId, но не оба.
Основной код
Входной буфер
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера в байтах в Irp-AssociatedIrp.SystemBuffer>.
Длина входного буфера
Буфер должен быть не менее sizeof(MPIO_PASS_THROUGH_PATH_EX) или sizeof(MPIO_PASS_THROUGH_PATH32_EX) при отправке 32-разрядным приложением в 64-разрядной операционной системе.
Выходной буфер
Драйвер порта возвращает все данные о смысле запроса и все данные, передаваемые с устройства в буфер по адресу Irp-AssociatedIrp.SystemBuffer>.
Длина выходного буфера
Элементы SenseInfoLength и DataOutTransferLength во встроенной структуре SCSI_PASS_THROUGH_EX обновляются, чтобы указать объем передаваемых данных.
Блок состояния
Для поля Information задано количество байтов, возвращаемых в выходном буфере по адресу Irp-AssociatedIrp.SystemBuffer>. Для поля Состояние задано значение STATUS_SUCCESS или, возможно, STATUS_BUFFER_TOO_SMALL или STATUS_INVALID_PARAMETER, если входное значение Length во встроенном SCSI_PASS_THROUGH_EX задано неправильно.
Требования
Требование | Значение |
---|---|
Заголовок | ntddscsi.h (включая Ntddscsi.h) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по