structure SCSI_PASS_THROUGH_EX (ntddscsi.h)
La structure SCSI_PASS_THROUGH_EX est utilisée conjointement avec une demande de IOCTL_SCSI_PASS_THROUGH_EX pour indiquer au pilote de port d’envoyer une commande SCSI incorporée à l’appareil cible. SCSI_PASS_THROUGH_EX peut contenir des transferts de données bidirectionnels et un bloc de données de commande de longueur variable.
Note
Le pilote de port SCSI et les modèles de pilotes miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Utilisez plutôt le pilote Storport et miniport Storport modèles de pilotes.
Syntaxe
typedef struct _SCSI_PASS_THROUGH_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;
ULONG_PTR DataOutBufferOffset;
ULONG_PTR DataInBufferOffset;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;
Membres
Version
Version de cette structure. Défini sur 0.
Length
Taille de cette structure, en octets. Défini sur sizeof(SCSI_PASS_THROUGH_EX)
.
CdbLength
Taille du bloc de descripteur de commande SCSI dans Cdb , en octets.
StorAddressLength
Longueur, en octets, de la structure d’adresse de l’appareil de stockage au décalage de StorAddressOffset après cette structure.
ScsiStatus
Signale l’état SCSI retourné par l’adaptateur HBA ou l’appareil cible.
SenseInfoLength
Taille en octets de la mémoire tampon de sens de la requête. Ce membre est facultatif et peut être défini sur 0.
DataDirection
Indique si la commande SCSI lit ou écrit des données. Ce champ doit être l’une des valeurs suivantes :
Valeur | Signification |
---|---|
SCSI_IOCTL_DATA_OUT | Écrivez des données sur l’appareil. |
SCSI_IOCTL_DATA_IN | Lit les données de 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éfini sur 0.
TimeOutValue
Indique l’intervalle en secondes que la requête peut exécuter avant que le pilote de port considère qu’il a expiré.
StorAddressOffset
Emplacement de la structure d’adresse de l’appareil de stockage cible, en octets, à partir du début de cette structure.
SenseInfoOffset
Décalage entre le début de cette structure et la mémoire tampon de sens de la requête. Défini sur 0 si aucune mémoire tampon de 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 de 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 a la valeur 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 de 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 a la valeur 0.
DataOutBufferOffset
Contient un décalage entre le début de cette structure et la mémoire tampon de données de sortie. Le décalage doit respecter les exigences d’alignement des données de l’appareil.
DataInBufferOffset
Contient un décalage entre le début de cette structure et la mémoire tampon de données d’entrée. Le décalage doit respecter les exigences d’alignement des données de l’appareil.
Cdb[ANYSIZE_ARRAY]
Spécifie le bloc de descripteur de commande SCSI à envoyer à l’appareil cible.
Remarques
La structure SCSI_PASS_THROUGH_EX est utilisée avec le code de contrôle IOCTL_SCSI_PASS_THROUGH_EX, qui est une demande de contrôle d’appareil mis en mémoire tampon. Pour contourner la mise en mémoire tampon dans la mémoire système, les appelants doivent utiliser IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. Lors de la gestion d’une demande de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX, le système verrouille la mémoire tampon en mémoire utilisateur et l’appareil accède directement à cette mémoire.
Note
Les pilotes s’exécutant sur une version 64 bits de Windows doivent utiliser la structure SCSI_PASS_THROUGH32_EX comme type de données de requête lors de la gestion d’une requête IOCTL_SCSI_PASS_THROUGH_EX à partir d’un processus 32 bits.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8. |
d’en-tête | ntddscsi.h (include Ntddscsi.h) |