structure SCSI_PASS_THROUGH_DIRECT (ntdddscsi.h)
La structure SCSI_PASS_THROUGH_DIRECT est utilisée conjointement avec une demande de IOCTL_SCSI_PASS_THROUGH_DIRECT pour indiquer au pilote de port d’envoyer une commande SCSI incorporée à l’appareil cible.
Note
Le pilote de port SCSI et les modèles de pilotes miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser le du pilote Storport et modèles de pilotes Storport miniport.
Syntaxe
typedef struct _SCSI_PASS_THROUGH_DIRECT {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
Membres
Length
Contient la valeur de sizeof(SCSI_PASS_THROUGH_DIRECT).
ScsiStatus
Signale l’état SCSI retourné par l’adaptateur HBA ou l’appareil cible.
PathId
Indique le port ou le bus SCSI de 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 de sens de la requête.
DataIn
Indique si la commande SCSI lit ou écrit des données. Ce champ doit avoir l’une des trois valeurs suivantes :
Type de transfert de données | Signification |
---|---|
SCSI_IOCTL_DATA_IN | Lit les données de l’appareil. |
SCSI_IOCTL_DATA_OUT | Écrivez des données sur l’appareil. |
SCSI_IOCTL_DATA_UNSPECIFIED | Aucune donnée transférée. |
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 de 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 avec le nombre d’octets réellement transférés.
TimeOutValue
Indique l’intervalle en secondes que la requête peut exécuter avant que le pilote de port spécifique au système d’exploitation puisse envisager d’expirer.
DataBuffer
Pointeur vers la mémoire tampon de données.
SenseInfoOffset
Contient un décalage entre le début de cette structure et la mémoire tampon de sens de la requête.
Cdb[16]
Spécifie le bloc de descripteur de commande SCSI à envoyer à l’appareil cible.
Remarques
La structure SCSI_PASS_THROUGH_DIRECT est utilisée avec IOCTL_SCSI_PASS_THROUGH_DIRECT. Avec cette requête, le système verrouille la mémoire tampon en mémoire utilisateur et l’appareil accède directement à cette mémoire. Pour obtenir un équivalent à deux mémoires tampons de cette demande de contrôle d’appareil, consultez IOCTL_SCSI_PASS_THROUGH et SCSI_PASS_THROUGH.
Les membres de SCSI_PASS_THROUGH_DIRECT 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 affectés à membre de SCSI_REQUEST_BLOCK.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddscsi.h (include Ntddscsi.h) |