Share via


SCSI_PASS_THROUGH_EX structure (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 un transfert de données bidirectionnel et un bloc de données de commande de longueur variable.

Notes

Les modèles de pilote de port SCSI et de pilote miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Utilisez plutôt les modèles de pilote Storport et de pilote miniport Storport .

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éfinit la valeur 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 en Cdb, en octets.

StorAddressLength

Longueur, en octets, de la structure d’adresse du périphérique de stockage au décalage de StorAddressOffset après cette structure.

ScsiStatus

Signale le status SCSI qui a été retourné par l’adaptateur HBA ou l’appareil cible.

SenseInfoLength

Taille en octets de la mémoire tampon request-sense. 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 Écrire 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éfinit la valeur 0.

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é.

StorAddressOffset

Emplacement de la structure d’adresse du périphérique de stockage cible, en octets, depuis le début de cette structure.

SenseInfoOffset

Décalage du début de cette structure vers la mémoire tampon request-sense. Définissez sur 0 si aucune mémoire tampon d’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 dans 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 en fonction du nombre d’octets réellement transférés. Si aucune mémoire tampon de données de sortie n’est présente, ce membre est défini sur 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 dans 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 en fonction du 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 est défini sur 0.

DataOutBufferOffset

Contient un décalage entre le début de cette structure et la mémoire tampon des 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 dans la mémoire utilisateur et l’appareil accède directement à cette mémoire.

Notes

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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
En-tête ntddscsi.h (inclure Ntddscsi.h)

Voir aussi

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH