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) |