Share via


SCSI_PASS_THROUGH_DIRECT-Struktur (ntddscsi.h)

Die SCSI_PASS_THROUGH_DIRECT-Struktur wird in Verbindung mit einer IOCTL_SCSI_PASS_THROUGH_DIRECT-Anforderung verwendet, um den Porttreiber anzuweisen, einen eingebetteten SCSI-Befehl an das Zielgerät zu senden.

Hinweis

Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht mehr verfügbar sein. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.

Syntax

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;

Member

Length

Enthält den Wert von sizeof(SCSI_PASS_THROUGH_DIRECT).

ScsiStatus

Meldet die SCSI-status, die vom HBA oder dem Zielgerät zurückgegeben wurde.

PathId

Gibt den SCSI-Port oder Bus für die Anforderung an.

TargetId

Gibt den Zielcontroller oder das Zielgerät auf dem Bus an.

Lun

Gibt die Nummer der logischen Einheit des Geräts an.

CdbLength

Gibt die Größe des SCSI-Befehlsdeskriptorblocks in Bytes an.

SenseInfoLength

Gibt die Größe des Request-Sense-Puffers in Bytes an.

DataIn

Gibt an, ob der SCSI-Befehl Daten liest oder schreibt. Dieses Feld muss einen von drei Werten aufweisen:

Datenübertragungstyp Bedeutung
SCSI_IOCTL_DATA_IN Lesen Sie Daten vom Gerät.
SCSI_IOCTL_DATA_OUT Schreiben Sie Daten auf das Gerät.
SCSI_IOCTL_DATA_UNSPECIFIED Keine Übertragenen Daten.

DataTransferLength

Gibt die Größe des Datenpuffers in Bytes an. Viele Geräte übertragen Datenblöcke vordefinierter Länge. Der Wert in DataTransferLength muss ein integrales Vielfaches dieser vordefinierten Mindestlänge sein, die vom Gerät angegeben wird. Wenn eine Unterausführung auftritt, muss der Miniporttreiber diesen Member auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.

TimeOutValue

Gibt das Intervall in Sekunden an, das die Anforderung ausführen kann, bevor der betriebssystemspezifische Porttreiber ein Timeout für möglich hält.

DataBuffer

Zeiger auf den Datenpuffer.

SenseInfoOffset

Enthält einen Offset vom Anfang dieser Struktur zum Anforderungs-Sense-Puffer.

Cdb[16]

Gibt den SCSI-Befehlsdeskriptorblock an, der an das Zielgerät gesendet werden soll.

Hinweise

Die SCSI_PASS_THROUGH_DIRECT-Struktur wird mit IOCTL_SCSI_PASS_THROUGH_DIRECT verwendet. Mit dieser Anforderung sperrt das System den Puffer im Benutzerspeicher, und das Gerät greift direkt auf diesen Speicher zu. Eine doppelt gepufferte Entsprechung dieser Gerätesteuerungsanforderung finden Sie unter IOCTL_SCSI_PASS_THROUGH und SCSI_PASS_THROUGH.

Die Elemente von SCSI_PASS_THROUGH_DIRECT entsprechen ungefähr den Elementen einer SCSI_REQUEST_BLOCK Struktur. Die Werte des DataIn-Members entsprechen den SCSI_IOCTL_DATA_IN-, SCSI_IOCTL_DATA_OUT- und SCSI_IOCTL_DATA_UNSPECIFIED Flags, die dem SrbFlags-Member von SCSI_REQUEST_BLOCK zugewiesen sind.

Anforderungen

Anforderung Wert
Header ntddscsi.h (include Ntddscsi.h)

Weitere Informationen

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK