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


структура SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)

Структура SCSI_PASS_THROUGH_DIRECT_EX используется вместе с запросом IOCTL_SCSI_PASS_THROUGH_DIRECT_EX, чтобы указать драйверу порта отправить внедренную команду SCSI на целевое устройство. SCSI_PASS_THROUGH_DIRECT_EX может содержать двунаправленные передачи данных и блок данных командной длины переменной длины.   

Заметка

В будущем драйвер портов SCSI и модели драйверов мини-порта SCSI могут быть изменены или недоступны. Вместо этого мы рекомендуем использовать драйвера Storport и минипорта Storport модели драйверов.

Синтаксис

typedef struct _SCSI_PASS_THROUGH_DIRECT_EX {
  ULONG Version;
  ULONG Length;
  ULONG CdbLength;
  ULONG StorAddressLength;
  UCHAR ScsiStatus;
  UCHAR SenseInfoLength;
  UCHAR DataDirection;
  UCHAR Reserved;
  ULONG TimeOutValue;
  ULONG StorAddressOffset;
  ULONG SenseInfoOffset;
  ULONG DataOutTransferLength;
  ULONG DataInTransferLength;
  VOID  *DataOutBuffer;
  VOID  *DataInBuffer;
  UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;

Члены

Version

Версия этой структуры. Установите значение 0.

Length

Размер этой структуры. Задайте значение sizeof(SCSI_PASS_THROUGH_DIRECT_EX).

CdbLength

Указывает размер в байтах блока дескриптора команды SCSI в Cdb.

StorAddressLength

Длина структуры адресов устройства хранилища по смещением StorAddressOffset после этой структуры. Для этого задано значение sizeof(STOR_ADDR_BTL8).

ScsiStatus

Сообщает состояние SCSI, возвращаемое HBA или целевым устройством.

SenseInfoLength

Указывает размер в байтах буфера запроса. Этот элемент является необязательным и может иметь значение 0.

DataDirection

Это поле должно иметь одно из следующих значений:

Тип передачи данных Значение
SCSI_IOCTL_DATA_IN Чтение данных с устройства.
SCSI_IOCTL_DATA_OUT Запись данных на устройство.
SCSI_IOCTL_DATA_UNSPECIFIED Данные не передаются.
SCSI_IOCTL_DATA_BIDIRECTIONAL Данные допустимы как для входных, так и для выходных данных.

Reserved

Скрытный. Установите значение 0.

TimeOutValue

Указывает интервал в секундах, когда запрос может выполняться до истечения времени ожидания драйвера порта.

StorAddressOffset

Расположение STOR_ADDR_BTL8 адресной структуры целевого устройства в байтах с начала этой структуры.

SenseInfoOffset

Смещение от начала этой структуры к буферу запроса. Установите значение 0, если буфер смысла запроса отсутствует.

DataOutTransferLength

Указывает размер в байтах буфера выходных данных. Многие устройства передают блоки данных предопределенной длины. Значение в DataOutTransferLength должно быть целой частью этой предопределенной минимальной длины, указанной устройством. При возникновении недозапуска драйвер минипорта должен обновить этот элемент до количества байтов, которые фактически были переданы. Если буфер выходных данных отсутствует, этот элемент имеет значение 0.

DataInTransferLength

Указывает размер в байтах входного буфера данных. Многие устройства передают блоки данных предопределенной длины. Значение в DataInTransferLength должно быть целой частью этой предопределенной минимальной длины, указанной устройством. При возникновении недозапуска драйвер минипорта должен обновить этот элемент до количества байтов, которые фактически были переданы. Если входной буфер данных отсутствует, этот элемент имеет значение 0.

DataOutBuffer

Указатель на выходной буфер данных.

DataInBuffer

Указатель на входной буфер данных.

Cdb[ANYSIZE_ARRAY]

Указывает блок дескриптора команды SCSI для отправки на целевое устройство.

Замечания

Структура SCSI_PASS_THROUGH_DIRECT_EX используется с IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. С помощью этого запроса система блокирует буфер в памяти пользователя, а устройство обращается к этой памяти напрямую. Для двойного буферизованного эквивалента этого запроса на управление устройством см. IOCTL_SCSI_PASS_THROUGH_EX и SCSI_PASS_THROUGH_EX.

Заметка

Драйверы, выполняемые в 64-разрядной версии Windows, должны использовать структуру SCSI_PASS_THROUGH_DIRECT32_EX в качестве типа данных запроса при обработке запроса IOCTL_SCSI_PASS_THROUGH_DIRECT_EX запроса из 32-разрядного процесса.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
заголовка ntddscsi.h (include Ntddscsi.h)

См. также

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8