структура 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                 Reserved1[3];
  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 из записи очереди завершения) без необходимости отдельной передачи данных устройства.

Reserved1[3]

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

Command[ANYSIZE_ARRAY]

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

Требования

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

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

IOCTL_STORAGE_PROTOCOL_COMMAND