Condividi tramite


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)

Vedere anche