struttura STORAGE_PROTOCOL_COMMAND (winioctl.h)
Questa struttura viene usata come buffer di input quando si usa il meccanismo pass-through per eseguire un comando specifico del fornitore a un dispositivo di archiviazione (tramite IOCTL_STORAGE_PROTOCOL_COMMAND).
Sintassi
typedef struct _STORAGE_PROTOCOL_COMMAND {
DWORD Version;
DWORD Length;
STORAGE_PROTOCOL_TYPE ProtocolType;
DWORD Flags;
DWORD ReturnStatus;
DWORD ErrorCode;
DWORD CommandLength;
DWORD ErrorInfoLength;
DWORD DataToDeviceTransferLength;
DWORD DataFromDeviceTransferLength;
DWORD TimeOutValue;
DWORD ErrorInfoOffset;
DWORD DataToDeviceBufferOffset;
DWORD DataFromDeviceBufferOffset;
DWORD CommandSpecific;
DWORD Reserved0;
DWORD FixedProtocolReturnData;
DWORD FixedProtocolReturnData2;
DWORD Reserved1[2];
BYTE Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;
Members
Version
Versione di questa struttura. Deve essere impostato su STORAGE_PROTOCOL_STRUCTURE_VERSION.
Length
Dimensione della struttura. Deve essere impostato su sizeof(STORAGE_PROTOCOL_COMMAND).
ProtocolType
Tipo di protocollo, di tipo STORAGE_PROTOCOL_TYPE.
Flags
Flag impostati per questa richiesta. Di seguito sono riportati flag validi.
Flag | Descrizione |
---|---|
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST | Questo flag indica la richiesta di destinazione di un adattatore anziché di un dispositivo. |
ReturnStatus
Stato della richiesta effettuata al dispositivo di archiviazione. In Windows 10 i valori possibili includono:
Valore di stato | Descrizione |
---|---|
STORAGE_PROTOCOL_STATUS_PENDING | La richiesta è in sospeso. |
STORAGE_PROTOCOL_STATUS_SUCCESS | La richiesta è stata completata correttamente. |
STORAGE_PROTOCOL_STATUS_ERROR | La richiesta ha rilevato un errore. |
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST | La richiesta non è valida. |
STORAGE_PROTOCOL_STATUS_NO_DEVICE | Un dispositivo non è disponibile per effettuare una richiesta. |
STORAGE_PROTOCOL_STATUS_BUSY | Il dispositivo è occupato a intervenire sulla richiesta. |
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN | Il dispositivo ha rilevato un sovraccarico dei dati durante l'azione sulla richiesta. |
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES | Il dispositivo non può completare la richiesta a causa di risorse insufficienti. |
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED | La richiesta non è supportata. |
ErrorCode
Codice di errore per questa richiesta. Questa impostazione è facoltativamente impostata.
CommandLength
Lunghezza del comando. Un valore diverso da zero deve essere impostato dal chiamante.
ErrorInfoLength
Lunghezza del buffer degli errori. Questa opzione è facoltativamente impostata e può essere impostata su 0.
DataToDeviceTransferLength
Dimensioni del buffer da trasferire al dispositivo. Viene usato solo con una richiesta WRITE.
DataFromDeviceTransferLength
Le dimensioni del buffer da trasferire dal dispositivo. Questa operazione viene usata solo con una richiesta READ.
TimeOutValue
Tempo di attesa del dispositivo fino al timeout. Questo valore viene impostato in unità di secondi.
ErrorInfoOffset
Offset del buffer degli errori. Deve essere allineato al puntatore.
DataToDeviceBufferOffset
Offset del buffer che deve essere trasferito al dispositivo. Deve essere allineato al puntatore e viene usato solo con una richiesta WRITE.
DataFromDeviceBufferOffset
Offset del buffer da trasferire dal dispositivo. Deve essere allineato al puntatore e viene usato solo con una richiesta READ.
CommandSpecific
Dati specifici del comando passati insieme al comando . Dipende dal comando del driver ed è facoltativamente impostato.
Reserved0
Riservato per utilizzi futuri.
FixedProtocolReturnData
Dati restituiti. Questa impostazione è facoltativamente impostata. Alcuni protocolli, ad esempio NVMe, possono restituire una piccola quantità di dati (DWORD0 dalla voce della coda di completamento) senza la necessità di un trasferimento separato dei dati del dispositivo.
FixedProtocolReturnData2
Reserved1[2]
Riservato per utilizzi futuri.
Command[ANYSIZE_ARRAY]
Comando specifico del fornitore che deve essere passato al dispositivo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Server minimo supportato | Windows Server 2016 |
Intestazione | winioctl.h (include Windows.h) |