Partager via


structure STORAGE_PROTOCOL_COMMAND (ntddstor.h)

Cette structure est utilisée avec le mécanisme pass-through IOCTL_STORAGE_PROTOCOL_COMMAND qui émet une commande de protocole spécifique au fournisseur sur un appareil de stockage.

Syntaxe

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;

Membres

Version

Version de cette structure. Définissez cette valeur sur STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Taille de cette structure. Définissez cette valeur sur sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Type de protocole.

Flags

Indicateurs définis pour cette requête. Les indicateurs suivants sont valides.

Drapeau Description
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST Cet indicateur indique la demande de cibler un adaptateur au lieu de l’appareil.

ReturnStatus

État de la demande adressée à l’appareil de stockage. Dans Windows 10, les valeurs possibles qui peuvent être retournées sont les suivantes :

Valeur d’état Description
STORAGE_PROTOCOL_STATUS_PENDING La demande est en attente.
STORAGE_PROTOCOL_STATUS_SUCCESS La demande s’est terminée avec succès.
STORAGE_PROTOCOL_STATUS_ERROR La demande a rencontré une erreur.
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST La demande n’est pas valide.
STORAGE_PROTOCOL_STATUS_NO_DEVICE Un appareil n’est pas disponible pour effectuer une demande.
STORAGE_PROTOCOL_STATUS_BUSY L’appareil est occupé à agir sur la demande.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN L’appareil a rencontré un dépassement de données lors de l’action sur la demande.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES L’appareil ne peut pas terminer la requête en raison de ressources insuffisantes.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED La demande n’est pas prise en charge.

ErrorCode

Code d’erreur du protocole spécifique au bus à retourner pour cette requête. Cette option est éventuellement définie.

CommandLength

Longueur de la commande, en octets. L’appelant doit définir cette valeur sur une valeur différente de zéro.

ErrorInfoLength

Longueur de la mémoire tampon ErrorCode, en octets. Cette valeur est éventuellement définie et peut être définie sur 0.

DataToDeviceTransferLength

Taille de la mémoire tampon à transférer vers l’appareil.

DataFromDeviceTransferLength

Taille de la mémoire tampon à transférer à partir de l’appareil.

TimeOutValue

Spécifie la durée d’attente de l’appareil jusqu’à ce qu’il expire. Cette valeur est définie en unités de secondes.

ErrorInfoOffset

Décalage de la mémoire tampon ErrorCode. Il doit s’agir d’un pointeur aligné.

DataToDeviceBufferOffset

Décalage de la mémoire tampon à transférer vers l’appareil. Cela doit être aligné sur le pointeur et est utilisé uniquement avec une requête WRITE.

DataFromDeviceBufferOffset

Décalage de la mémoire tampon à transférer à partir de l’appareil. Cela doit être aligné sur le pointeur et est utilisé uniquement avec une requête READ.

CommandSpecific

Données supplémentaires spécifiques à la commande passées avec commande. Cela dépend de la commande du pilote et est éventuellement définie.

Reserved0

Réservé pour une utilisation ultérieure.

FixedProtocolReturnData

Données de retour. Cette option est éventuellement définie. Certains protocoles comme NVMe peuvent retourner une petite quantité de données (DWORD0 à partir de l’entrée de file d’attente d’achèvement) sans avoir besoin d’un transfert de données d’appareil distinct.

FixedProtocolReturnData2

Données de retour2. Cette option est éventuellement définie. Certains protocoles tels que NVMe peuvent retourner une petite quantité de données (DWORD1 à partir de l’entrée de file d’attente d’achèvement) sans avoir besoin de transfert de données d’appareil distinct.

Reserved1[2]

Réservé pour une utilisation ultérieure.

Command[ANYSIZE_ARRAY]

Commande spécifique au fournisseur qui doit être transmise à l’appareil.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10
serveur minimum pris en charge Windows Server 2016
d’en-tête ntddstor.h (include Ntddstor.h)

Voir aussi