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