structure SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)
La structure SCSI_PASS_THROUGH_DIRECT_EX est utilisée conjointement avec une demande de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX pour indiquer au pilote de port d’envoyer une commande SCSI incorporée à l’appareil cible. SCSI_PASS_THROUGH_DIRECT_EX peut contenir un transfert de données bidirectionnel et un bloc de données de commande de longueur variable.
Notes
Les modèles de pilote de port SCSI et de pilote miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser les modèles de pilote Storport et de pilote Miniport Storport .
Syntaxe
typedef struct _SCSI_PASS_THROUGH_DIRECT_EX {
ULONG Version;
ULONG Length;
ULONG CdbLength;
ULONG StorAddressLength;
UCHAR ScsiStatus;
UCHAR SenseInfoLength;
UCHAR DataDirection;
UCHAR Reserved;
ULONG TimeOutValue;
ULONG StorAddressOffset;
ULONG SenseInfoOffset;
ULONG DataOutTransferLength;
ULONG DataInTransferLength;
VOID *DataOutBuffer;
VOID *DataInBuffer;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;
Membres
Version
Version de cette structure. Définit la valeur 0.
Length
La taille de cette structure. Définissez sur sizeof(SCSI_PASS_THROUGH_DIRECT_EX).
CdbLength
Indique la taille en octets du bloc descripteur de commande SCSI dans Cdb.
StorAddressLength
Longueur de la structure d’adresse de périphérique de stockage au décalage de StorAddressOffset après cette structure. Cette valeur est définie sur sizeof(STOR_ADDR_BTL8).
ScsiStatus
Signale le status SCSI retourné par l’adaptateur HBA ou l’appareil cible.
SenseInfoLength
Indique la taille en octets de la mémoire tampon request-sense. Ce membre est facultatif et peut être défini sur 0.
DataDirection
Ce champ doit avoir l’une des valeurs suivantes :
Type de transfert de données | Signification |
---|---|
SCSI_IOCTL_DATA_IN | Lisez les données de l’appareil. |
SCSI_IOCTL_DATA_OUT | Écrire des données sur l’appareil. |
SCSI_IOCTL_DATA_UNSPECIFIED | Aucune donnée n’est transférée. |
SCSI_IOCTL_DATA_BIDIRECTIONAL | Les données sont valides pour l’entrée et la sortie. |
Reserved
Réservé. Définit la valeur 0.
TimeOutValue
Indique l’intervalle en secondes que la demande peut exécuter avant que le pilote de port considère qu’elle a expiré.
StorAddressOffset
Emplacement de la structure d’adresse STOR_ADDR_BTL8 de l’appareil cible, en octets, depuis le début de cette structure.
SenseInfoOffset
Décalage entre le début de cette structure et la mémoire tampon request-sense. Défini sur 0 si aucune mémoire tampon d’sens de requête n’est présente.
DataOutTransferLength
Indique la taille en octets de la mémoire tampon de données de sortie. De nombreux appareils transfèrent des blocs de données de longueur prédéfinie. La valeur dans DataOutTransferLength doit être un multiple intégral de cette longueur minimale prédéfinie spécifiée par l’appareil. Si une sous-exécution se produit, le pilote miniport doit mettre à jour ce membre avec le nombre d’octets réellement transférés. Si aucune mémoire tampon de données de sortie n’est présente, ce membre est défini sur 0.
DataInTransferLength
Indique la taille en octets de la mémoire tampon de données d’entrée. De nombreux appareils transfèrent des blocs de données de longueur prédéfinie. La valeur dans DataInTransferLength doit être un multiple intégral de cette longueur minimale prédéfinie spécifiée par l’appareil. Si une sous-exécution se produit, le pilote miniport doit mettre à jour ce membre avec le nombre d’octets réellement transférés. Si aucune mémoire tampon de données d’entrée n’est présente, ce membre est défini sur 0.
DataOutBuffer
Pointeur vers une mémoire tampon de données de sortie.
DataInBuffer
Pointeur vers une mémoire tampon de données d’entrée.
Cdb[ANYSIZE_ARRAY]
Spécifie le bloc de descripteur de commande SCSI à envoyer à l’appareil cible.
Remarques
La structure SCSI_PASS_THROUGH_DIRECT_EX est utilisée avec IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. Avec cette requête, le système verrouille la mémoire tampon dans la mémoire utilisateur et l’appareil accède directement à cette mémoire. Pour obtenir un équivalent à double mise en mémoire tampon de cette demande de contrôle d’appareil , consultez IOCTL_SCSI_PASS_THROUGH_EX et SCSI_PASS_THROUGH_EX.
Notes
Les pilotes s’exécutant sur une version 64 bits de Windows doivent utiliser la structure SCSI_PASS_THROUGH_DIRECT32_EX comme type de données de requête lors de la gestion d’une requête IOCTL_SCSI_PASS_THROUGH_DIRECT_EX à partir d’un processus 32 bits.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8. |
En-tête | ntddscsi.h (inclure Ntddscsi.h) |
Voir aussi
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX