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


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

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

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

Синтаксис

typedef struct _SCSI_PASS_THROUGH {
  USHORT    Length;
  UCHAR     ScsiStatus;
  UCHAR     PathId;
  UCHAR     TargetId;
  UCHAR     Lun;
  UCHAR     CdbLength;
  UCHAR     SenseInfoLength;
  UCHAR     DataIn;
  ULONG     DataTransferLength;
  ULONG     TimeOutValue;
  ULONG_PTR DataBufferOffset;
  ULONG     SenseInfoOffset;
  UCHAR     Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;

Члены

Length

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

ScsiStatus

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

PathId

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

TargetId

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

Lun

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

CdbLength

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

SenseInfoLength

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

DataIn

Это поле должно иметь одно из трех значений:

#######

DataTransferLength

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

TimeOutValue

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

DataBufferOffset

Содержит смещение от начала этой структуры к буферу данных. Смещение должно соответствовать требованиям к выравниванию данных устройства.

SenseInfoOffset

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

Cdb[16]

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

Комментарии

Структура SCSI_PASS_THROUGH используется с IOCTL_SCSI_PASS_THROUGH, которая представляет собой запрос на управление буферизацией устройства. Чтобы обойти буферизацию в системной памяти, вызывающие должны использовать IOCTL_SCSI_PASS_THROUGH_DIRECT. При обработке запроса IOCTL_SCSI_PASS_THROUGH_DIRECT система блокирует буфер в памяти пользователя, и устройство обращается к этой памяти напрямую.

Члены SCSI_PASS_THROUGH примерно соответствуют членам 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_DIRECT

SCSI_REQUEST_BLOCK