SCSI_PASS_THROUGH structure (ntddscsi.h)
La structure SCSI_PASS_THROUGH est utilisée conjointement avec une demande de IOCTL_SCSI_PASS_THROUGH pour indiquer au pilote de port d’envoyer une commande SCSI incorporée à l’appareil cible.
Syntaxe
typedef struct _SCSI_PASS_THROUGH {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
Membres
Length
Contient la valeur sizeof(SCSI_PASS_THROUGH).
ScsiStatus
Signale le status SCSI qui a été retourné par l’adaptateur HBA ou l’appareil cible.
PathId
Indique le port ou le bus SCSI pour la requête.
TargetId
Indique le contrôleur ou l’appareil cible sur le bus.
Lun
Indique le numéro d’unité logique de l’appareil.
CdbLength
Indique la taille en octets du bloc de descripteur de commande SCSI.
SenseInfoLength
Indique la taille en octets de la mémoire tampon request-sense.
DataIn
Ce champ doit avoir l’une des trois valeurs suivantes :
#######
DataTransferLength
Indique la taille en octets de la mémoire tampon de données. De nombreux appareils transfèrent des blocs de données de longueur prédéfinie. La valeur dans DataTransferLength 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 en fonction du nombre d’octets réellement transférés.
TimeOutValue
Indique l’intervalle en secondes pendant lequel la requête peut s’exécuter avant que le pilote de port considère qu’elle a expiré.
DataBufferOffset
Contient un décalage entre le début de cette structure et la mémoire tampon de données. Le décalage doit respecter les exigences d’alignement des données de l’appareil.
SenseInfoOffset
Décalage du début de cette structure vers la mémoire tampon request-sense.
Cdb[16]
Spécifie le bloc de descripteur de commande SCSI à envoyer à l’appareil cible.
Remarques
La structure SCSI_PASS_THROUGH est utilisée avec IOCTL_SCSI_PASS_THROUGH, qui est une demande de contrôle d’appareil mise 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. Lors de la gestion d’une demande de IOCTL_SCSI_PASS_THROUGH_DIRECT, le système verrouille la mémoire tampon dans la mémoire utilisateur et l’appareil accède directement à cette mémoire.
Les membres de SCSI_PASS_THROUGH correspondent approximativement aux membres d’une structure SCSI_REQUEST_BLOCK . Les valeurs du membre DataIn correspondent aux indicateurs SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT et SCSI_IOCTL_DATA_UNSPECIFIED attribués au membre SrbFlags de SCSI_REQUEST_BLOCK.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ntddscsi.h (inclure Ntddscsi.h) |