Partager via


structure STORAGE_PROTOCOL_COMMAND (ntddstor.h)

Cette structure est utilisée avec le mécanisme de transmission directe IOCTL_STORAGE_PROTOCOL_COMMAND qui émet une commande de protocole spécifique au fournisseur sur un périphérique 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

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

ProtocolType

Type de protocole.

Flags

Indicateurs définis pour cette demande. Voici des indicateurs valides.

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

ReturnStatus

Status de la demande adressée au périphérique 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’exécution de la demande.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES L’appareil ne peut pas terminer la demande en raison de ressources insuffisantes.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED La demande n'est pas prise en charge.

ErrorCode

Code d’erreur de protocole spécifique au bus à retourner pour cette demande. Cette valeur 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’à expiration. Cette valeur est définie en unités de secondes.

ErrorInfoOffset

Décalage de la mémoire tampon ErrorCode . Il doit être aligné sur le pointeur.

DataToDeviceBufferOffset

Décalage de la mémoire tampon à transférer vers l’appareil. Il 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. Il doit être aligné sur le pointeur et est utilisé uniquement avec une requête READ.

CommandSpecific

Données supplémentaires spécifiques aux commandes transmises avec Command. Cela dépend de la commande du pilote et est éventuellement défini.

Reserved0

Réservé pour un usage futur.

FixedProtocolReturnData

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

FixedProtocolReturnData2

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

Reserved1[2]

Réservé pour un usage futur.

Command[ANYSIZE_ARRAY]

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
En-tête ntddstor.h (inclure Ntddstor.h)

Voir aussi