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


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

См. также

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH