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