Freigeben über


SCSI_PASS_THROUGH_DIRECT Struktur (ntddscsi.h)

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

Anmerkung

Die SCSI-Porttreiber- und SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht verfügbar sein. Stattdessen empfehlen wir die Verwendung des Storport-Treibers und Storport Miniport Treibermodelle.

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;

Angehörige

Length

Enthält den Wert Sizeof(SCSI_PASS_THROUGH_DIRECT).

ScsiStatus

Meldet den SCSI-Status, der von der 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 Gerät auf dem Bus an.

Lun

Gibt die logische Einheitennummer des Geräts an.

CdbLength

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

SenseInfoLength

Gibt die Größe in Byte des Anforderungsoptimierungspuffers an.

DataIn

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

Datentyp der Datenübertragung Bedeutung
SCSI_IOCTL_DATA_IN Lesen von 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 in Byte des Datenpuffers an. Viele Geräte übertragen Datenblöcke mit vordefinierter Länge. Der Wert in DataTransferLength- muss ein integrales Vielfaches dieser vordefinierten Mindestlänge sein, die vom Gerät angegeben wird. Wenn ein Unterlauf auftritt, muss der Miniporttreiber dieses Element auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.

TimeOutValue

Gibt das Intervall in Sekunden an, das von der Anforderung ausgeführt werden kann, bevor der betriebssystemspezifische Porttreiber das Timeout in Betracht ziehen kann.

DataBuffer

Zeigen Sie auf den Datenpuffer.

SenseInfoOffset

Enthält einen Offset vom Anfang dieser Struktur bis zum Anforderungsoptimierungspuffer.

Cdb[16]

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

Bemerkungen

Die SCSI_PASS_THROUGH_DIRECT Struktur wird mit IOCTL_SCSI_PASS_THROUGH_DIRECTverwendet. Bei dieser Anforderung sperrt das System den Puffer im Benutzerspeicher und das Gerät greift direkt auf diesen Speicher zu. Ein doppelt gepuffertes Äquivalent dieser Gerätesteuerungsanforderung finden Sie unter IOCTL_SCSI_PASS_THROUGH und SCSI_PASS_THROUGH.

Die Mitglieder der SCSI_PASS_THROUGH_DIRECT entsprechen ungefähr den Mitgliedern einer SCSI_REQUEST_BLOCK Struktur. Die Werte des DataIn Members entsprechen dem SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT und SCSI_IOCTL_DATA_UNSPECIFIED Flags, die SrbFlags Mitglied der SCSI_REQUEST_BLOCK zugewiesen sind.

Anforderungen

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

Siehe auch

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK