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


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

Структура SCSI_PASS_THROUGH_DIRECT используется вместе с запросом IOCTL_SCSI_PASS_THROUGH_DIRECT для отправки встроенной команды SCSI на целевое устройство.

Заметка

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

Синтаксис

typedef struct _SCSI_PASS_THROUGH_DIRECT {
  USHORT Length;
  UCHAR  ScsiStatus;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  CdbLength;
  UCHAR  SenseInfoLength;
  UCHAR  DataIn;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  ULONG  SenseInfoOffset;
  UCHAR  Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;

Члены

Length

Содержит значение sizeof(SCSI_PASS_THROUGH_DIRECT).

ScsiStatus

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

PathId

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

TargetId

Указывает целевой контроллер или устройство на шине.

Lun

Указывает логический номер единицы устройства.

CdbLength

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

SenseInfoLength

Указывает размер в байтах буфера запроса.

DataIn

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

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

DataTransferLength

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

TimeOutValue

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

DataBuffer

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

SenseInfoOffset

Содержит смещение от начала этой структуры к буферу запроса.

Cdb[16]

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

Замечания

Структура SCSI_PASS_THROUGH_DIRECT используется с IOCTL_SCSI_PASS_THROUGH_DIRECT. С помощью этого запроса система блокирует буфер в памяти пользователя, а устройство обращается к этой памяти напрямую. Для двойного буферизованного эквивалента этого запроса на управление устройством см. IOCTL_SCSI_PASS_THROUGH и SCSI_PASS_THROUGH.

Члены SCSI_PASS_THROUGH_DIRECT соответствуют примерно элементам структуры SCSI_REQUEST_BLOCK. Значения элемента DataIn соответствуют флагам SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT и SCSI_IOCTL_DATA_UNSPECIFIED, назначенным SrbFlags члену SCSI_REQUEST_BLOCK.

Требования

Требование Ценность
заголовка ntddscsi.h (include Ntddscsi.h)

См. также

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK