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