Share via


SCSI_PASS_THROUGH_DIRECT structure (ntddscsi.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.

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 {
  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 sizeof(SCSI_PASS_THROUGH_DIRECT).

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

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 Écrire 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 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 spécifique au système d’exploitation puisse considérer qu’elle a expiré.

DataBuffer

Pointeur vers le tampon de données.

SenseInfoOffset

Contient un décalage entre le début de cette structure et 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_DIRECT est utilisée avec IOCTL_SCSI_PASS_THROUGH_DIRECT. 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 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 attribués au membre SrbFlags de SCSI_REQUEST_BLOCK.

Configuration requise

Condition requise Valeur
En-tête ntddscsi.h (inclure Ntddscsi.h)

Voir aussi

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK