Partager via


structure SCSI_PASS_THROUGH (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.

Remarque 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 {
  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 de sizeof(SCSI_PASS_THROUGH).

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

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 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 considère qu’il 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 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 est utilisée avec IOCTL_SCSI_PASS_THROUGH, 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. Lors de la gestion d’une demande de IOCTL_SCSI_PASS_THROUGH_DIRECT, le système verrouille la mémoire tampon en 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 affectés à membre de SCSI_REQUEST_BLOCK.

Exigences

Exigence Valeur
d’en-tête ntddscsi.h (include Ntddscsi.h)

Voir aussi

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH_DIRECT

SCSI_REQUEST_BLOCK