Condividi tramite


STORAGE_PROTOCOL_COMMAND struttura (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;

Members

Version

Versione di questa struttura. Impostare questa opzione per essere STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Dimensione della struttura. Impostare questa opzione su sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Tipo di protocollo.

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é un dispositivo.

ReturnStatus

Stato della richiesta effettuata nel 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 agire sulla richiesta.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN Il dispositivo ha rilevato un overrun dei dati durante l'esecuzione della 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 del buffer ErrorCode , in byte. Questa opzione è impostata facoltativamente e può essere impostata su 0.

DataToDeviceTransferLength

Dimensioni del buffer da trasferire nel dispositivo.

DataFromDeviceTransferLength

Le dimensioni del buffer che devono essere trasferite dal dispositivo.

TimeOutValue

Specifica la durata dell'attesa del dispositivo fino al timeout. Questo valore viene impostato in unità di secondi.

ErrorInfoOffset

Offset del buffer ErrorCode . Questo deve essere allineato al puntatore.

DataToDeviceBufferOffset

Offset del buffer che deve essere trasferito al dispositivo. Questa operazione deve essere allineata al puntatore e viene usata solo con una richiesta WRITE.

DataFromDeviceBufferOffset

Offset del buffer da trasferire dal dispositivo. Questa operazione deve essere allineata al puntatore e viene usata solo con una richiesta READ.

CommandSpecific

Dati specifici dei comandi aggiuntivi passati insieme al comando. Ciò dipende dal comando dal driver ed è facoltativamente impostato.

Reserved0

Riservato per utilizzi futuri.

FixedProtocolReturnData

I 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 di dati di dispositivo separato.

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 i dati del dispositivo separati.

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 ntddstor.h (include Ntddstor.h)

Vedi anche