структура SCSI_PASS_THROUGH (ntddscsi.h)
Структура SCSI_PASS_THROUGH используется в сочетании с запросом IOCTL_SCSI_PASS_THROUGH , чтобы указать драйверу порта отправить внедренную команду SCSI на целевое устройство.
Синтаксис
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) |