struttura STORAGE_PROTOCOL_COMMAND (ntddstor.h)
Questa struttura viene usata con il meccanismo pass-through IOCTL_STORAGE_PROTOCOL_COMMAND che rilascia un comando del protocollo specifico del fornitore a un dispositivo di archiviazione.
Sintassi
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;
Membri
Version
Versione di questa struttura. Impostare questa proprietà su come STORAGE_PROTOCOL_STRUCTURE_VERSION.
Length
Dimensione di questa struttura. Impostare questa proprietà su sizeof(STORAGE_PROTOCOL_COMMAND).
ProtocolType
Tipo di protocollo.
Flags
Flag impostati per questa richiesta. Di seguito sono riportati i flag validi.
Bandiera | 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 che possono essere restituiti 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 del protocollo specifico del bus da restituire per questa richiesta. Questa opzione è impostata facoltativamente.
CommandLength
Lunghezza del comando, in byte. Il chiamante deve impostare questo valore su un valore diverso da zero.
ErrorInfoLength
Lunghezza in byte del buffer ErrorCode. Questa opzione è facoltativamente impostata e può essere impostata su 0.
DataToDeviceTransferLength
Dimensioni del buffer da trasferire al dispositivo.
DataFromDeviceTransferLength
Le dimensioni del buffer da trasferire dal dispositivo.
TimeOutValue
Specifica per quanto tempo attendere il timeout del dispositivo. Questo valore viene impostato in unità di secondi.
ErrorInfoOffset
Offset del buffer di ErrorCode. Deve essere allineato al puntatore.
DataToDeviceBufferOffset
Offset del buffer da trasferire 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 aggiuntivi specifici del comando passati insieme a Comando. Questo dipende dal comando dal driver ed è facoltativamente impostato.
Reserved0
Riservato per uso futuro.
FixedProtocolReturnData
Dati restituiti. Questa opzione è impostata facoltativamente. Alcuni protocolli come 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
Dati restituiti2. Questa opzione è impostata facoltativamente. Alcuni protocolli come NVMe possono restituire una piccola quantità di dati (DWORD1 dalla voce della coda di completamento) senza la necessità di trasferire dati del dispositivo separati.
Reserved1[2]
Riservato per uso futuro.
Command[ANYSIZE_ARRAY]
Comando specifico del fornitore da passare al dispositivo.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 |
server minimo supportato | Windows Server 2016 |
intestazione | ntddstor.h (include Ntddstor.h) |