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