структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по