Condividi tramite


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)

Vedi anche

IOCTL_STORAGE_PROTOCOL_COMMAND