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