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


структура 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, возвращенное адаптером безопасности или целевым устройством.

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 (включая Ntddscsi.h)

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

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK