Поделиться через


структура 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

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8