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