структура 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) |