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


структура STORAGE_PROTOCOL_COMMAND (ntddstor.h)

Эта структура используется с IOCTL_STORAGE_PROTOCOL_COMMAND механизмом сквозной передачи, который передает на устройство хранения команду протокола, зависят от поставщика.

Синтаксис

typedef struct _STORAGE_PROTOCOL_COMMAND {
  ULONG                 Version;
  ULONG                 Length;
  STORAGE_PROTOCOL_TYPE ProtocolType;
  ULONG                 Flags;
  ULONG                 ReturnStatus;
  ULONG                 ErrorCode;
  ULONG                 CommandLength;
  ULONG                 ErrorInfoLength;
  ULONG                 DataToDeviceTransferLength;
  ULONG                 DataFromDeviceTransferLength;
  ULONG                 TimeOutValue;
  ULONG                 ErrorInfoOffset;
  ULONG                 DataToDeviceBufferOffset;
  ULONG                 DataFromDeviceBufferOffset;
  ULONG                 CommandSpecific;
  ULONG                 Reserved0;
  ULONG                 FixedProtocolReturnData;
  ULONG                 FixedProtocolReturnData2;
  ULONG                 Reserved1[2];
  UCHAR                 Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;

Члены

Version

Версия этой структуры. Задайте для этого параметра значение STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Размер этой структуры. Задайте для параметра значение sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Тип протокола.

Flags

Флаги, заданные для этого запроса. Ниже приведены допустимые флаги.

Flag Описание
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST Этот флаг указывает, что запрос предназначен для адаптера, а не устройства.

ReturnStatus

Состояние запроса, выполненного к устройству хранения. В Windows 10 возможные значения, которые можно вернуть:

Значение состояния Описание
STORAGE_PROTOCOL_STATUS_PENDING Запрос находится в состоянии ожидания.
STORAGE_PROTOCOL_STATUS_SUCCESS Запрос успешно завершен.
STORAGE_PROTOCOL_STATUS_ERROR В запросе произошла ошибка.
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST Недопустимый запрос.
STORAGE_PROTOCOL_STATUS_NO_DEVICE Устройство недоступно для выполнения запроса.
STORAGE_PROTOCOL_STATUS_BUSY Устройство занято, выполняя запрос.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN Устройство обнаружило переполнение данных при выполнении запроса.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES Устройство не может выполнить запрос из-за нехватки ресурсов.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED Запрос не поддерживается.

ErrorCode

Код ошибки протокола шины, возвращаемый для этого запроса. Этот параметр устанавливается необязательно.

CommandLength

Длина команды в байтах. Вызывающий объект должен присвоить ей значение, отличное от нуля.

ErrorInfoLength

Длина буфера ErrorCode (в байтах). При необходимости устанавливается значение 0.

DataToDeviceTransferLength

Размер буфера, который должен быть передан на устройство.

DataFromDeviceTransferLength

Размер буфера, который необходимо передать с устройства.

TimeOutValue

Указывает время ожидания устройства до истечения времени ожидания. Это значение задается в единицах секунд.

ErrorInfoOffset

Смещение буфера ErrorCode . Он должен быть выровнен по указателю.

DataToDeviceBufferOffset

Смещение буфера, передаваемого на устройство. Он должен быть выровнен по указателю и использоваться только с запросом WRITE.

DataFromDeviceBufferOffset

Смещение буфера, передаваемого с устройства. Он должен быть выровнен по указателю и использоваться только с запросом READ.

CommandSpecific

Дополнительные данные, относящиеся к командам, передаются вместе с Командой. Это зависит от команды драйвера и устанавливается при необходимости.

Reserved0

Зарезервировано для последующего использования.

FixedProtocolReturnData

Возвращаемые данные. Этот параметр устанавливается необязательно. Некоторые протоколы, такие как NVMe, могут возвращать небольшой объем данных (DWORD0 из записи очереди завершения) без необходимости отдельной передачи данных устройства.

FixedProtocolReturnData2

Возвращаемые данные2. Этот параметр устанавливается необязательно. Некоторые протоколы, такие как NVMe, могут возвращать небольшой объем данных (DWORD1 из записи очереди завершения) без необходимости отдельной передачи данных устройства.

Reserved1[2]

Зарезервировано для последующего использования.

Command[ANYSIZE_ARRAY]

Команда поставщика, которая должна быть передана на устройство.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Верхняя часть ntddstor.h (включая Ntddstor.h)

См. также раздел