структура SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)
Структура SCSI_PASS_THROUGH_DIRECT_EX используется вместе с запросом IOCTL_SCSI_PASS_THROUGH_DIRECT_EX, чтобы указать драйверу порта отправить внедренную команду SCSI на целевое устройство. SCSI_PASS_THROUGH_DIRECT_EX может содержать двунаправленные передачи данных и блок данных командной длины переменной длины.
Заметка
В будущем драйвер портов SCSI и модели драйверов мини-порта SCSI могут быть изменены или недоступны. Вместо этого мы рекомендуем использовать драйвера Storport и минипорта Storport модели драйверов.
Синтаксис
typedef struct _SCSI_PASS_THROUGH_DIRECT_EX {
ULONG Version;
ULONG Length;
ULONG CdbLength;
ULONG StorAddressLength;
UCHAR ScsiStatus;
UCHAR SenseInfoLength;
UCHAR DataDirection;
UCHAR Reserved;
ULONG TimeOutValue;
ULONG StorAddressOffset;
ULONG SenseInfoOffset;
ULONG DataOutTransferLength;
ULONG DataInTransferLength;
VOID *DataOutBuffer;
VOID *DataInBuffer;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;
Члены
Version
Версия этой структуры. Установите значение 0.
Length
Размер этой структуры. Задайте значение sizeof(SCSI_PASS_THROUGH_DIRECT_EX).
CdbLength
Указывает размер в байтах блока дескриптора команды SCSI в Cdb.
StorAddressLength
Длина структуры адресов устройства хранилища по смещением StorAddressOffset после этой структуры. Для этого задано значение sizeof(STOR_ADDR_BTL8).
ScsiStatus
Сообщает состояние SCSI, возвращаемое HBA или целевым устройством.
SenseInfoLength
Указывает размер в байтах буфера запроса. Этот элемент является необязательным и может иметь значение 0.
DataDirection
Это поле должно иметь одно из следующих значений:
Тип передачи данных | Значение |
---|---|
SCSI_IOCTL_DATA_IN | Чтение данных с устройства. |
SCSI_IOCTL_DATA_OUT | Запись данных на устройство. |
SCSI_IOCTL_DATA_UNSPECIFIED | Данные не передаются. |
SCSI_IOCTL_DATA_BIDIRECTIONAL | Данные допустимы как для входных, так и для выходных данных. |
Reserved
Скрытный. Установите значение 0.
TimeOutValue
Указывает интервал в секундах, когда запрос может выполняться до истечения времени ожидания драйвера порта.
StorAddressOffset
Расположение STOR_ADDR_BTL8 адресной структуры целевого устройства в байтах с начала этой структуры.
SenseInfoOffset
Смещение от начала этой структуры к буферу запроса. Установите значение 0, если буфер смысла запроса отсутствует.
DataOutTransferLength
Указывает размер в байтах буфера выходных данных. Многие устройства передают блоки данных предопределенной длины. Значение в DataOutTransferLength должно быть целой частью этой предопределенной минимальной длины, указанной устройством. При возникновении недозапуска драйвер минипорта должен обновить этот элемент до количества байтов, которые фактически были переданы. Если буфер выходных данных отсутствует, этот элемент имеет значение 0.
DataInTransferLength
Указывает размер в байтах входного буфера данных. Многие устройства передают блоки данных предопределенной длины. Значение в DataInTransferLength должно быть целой частью этой предопределенной минимальной длины, указанной устройством. При возникновении недозапуска драйвер минипорта должен обновить этот элемент до количества байтов, которые фактически были переданы. Если входной буфер данных отсутствует, этот элемент имеет значение 0.
DataOutBuffer
Указатель на выходной буфер данных.
DataInBuffer
Указатель на входной буфер данных.
Cdb[ANYSIZE_ARRAY]
Указывает блок дескриптора команды SCSI для отправки на целевое устройство.
Замечания
Структура SCSI_PASS_THROUGH_DIRECT_EX используется с IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. С помощью этого запроса система блокирует буфер в памяти пользователя, а устройство обращается к этой памяти напрямую. Для двойного буферизованного эквивалента этого запроса на управление устройством см. IOCTL_SCSI_PASS_THROUGH_EX и SCSI_PASS_THROUGH_EX.
Заметка
Драйверы, выполняемые в 64-разрядной версии Windows, должны использовать структуру SCSI_PASS_THROUGH_DIRECT32_EX в качестве типа данных запроса при обработке запроса IOCTL_SCSI_PASS_THROUGH_DIRECT_EX запроса из 32-разрядного процесса.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8. |
заголовка | ntddscsi.h (include Ntddscsi.h) |
См. также
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX