SCSI_PASS_THROUGH_DIRECT_EX Struktur (ntddscsi.h)
Die SCSI_PASS_THROUGH_DIRECT_EX-Struktur wird in Verbindung mit einer IOCTL_SCSI_PASS_THROUGH_DIRECT_EX Anforderung verwendet, den Porttreiber anzuweisen, einen eingebetteten SCSI-Befehl an das Zielgerät zu senden. SCSI_PASS_THROUGH_DIRECT_EX können bidirektionale Datenübertragungen und einen Datenblock mit variabler Länge enthalten.
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_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;
VOID *DataOutBuffer;
VOID *DataInBuffer;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;
Angehörige
Version
Die Version dieser Struktur. Auf 0 festgelegt.
Length
Die Größe dieser Struktur. Auf Größe(SCSI_PASS_THROUGH_DIRECT_EX) festgelegt.
CdbLength
Gibt die Größe des SCSI-Befehlsdeskriptorblocks in Cdb-an.
StorAddressLength
Die Länge der Adressstruktur des Speichergeräts beim Offset von StorAddressOffset nach dieser Struktur. Dies ist auf Größe(STOR_ADDR_BTL8) festgelegt.
ScsiStatus
Meldet den SCSI-Status, der von der HBA oder dem Zielgerät zurückgegeben wurde.
SenseInfoLength
Gibt die Größe in Byte des Anforderungsoptimierungspuffers an. Dieses Element ist optional und kann auf 0 festgelegt werden.
DataDirection
Dieses Feld muss einen der folgenden Werte 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 | Es werden keine Daten übertragen. |
SCSI_IOCTL_DATA_BIDIRECTIONAL | Daten sind sowohl für Die Eingabe als auch für die Ausgabe gültig. |
Reserved
Reserviert. Auf 0 festgelegt.
TimeOutValue
Gibt das Intervall in Sekunden an, das die Anforderung ausführen kann, bevor der Porttreiber es als Timeout betrachtet.
StorAddressOffset
Die Position der STOR_ADDR_BTL8 Adressstruktur des Zielgeräts in Byte ab dem Anfang dieser Struktur.
SenseInfoOffset
Versetzt vom Anfang dieser Struktur zum Anforderungsoptimierungspuffer. Legen Sie auf 0 fest, wenn kein Anforderungsoptimierungspuffer vorhanden ist.
DataOutTransferLength
Gibt die Größe in Bytes des Ausgabedatenpuffers an. Viele Geräte übertragen Datenblöcke mit vordefinierter Länge. Der Wert in DataOutTransferLength- 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. Wenn kein Ausgabedatenpuffer vorhanden ist, wird dieses Element auf 0 festgelegt.
DataInTransferLength
Gibt die Größe in Byte des Eingabedatenpuffers an. Viele Geräte übertragen Datenblöcke mit vordefinierter Länge. Der Wert in DataInTransferLength- 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. Wenn kein Eingabedatenpuffer vorhanden ist, wird dieses Element auf 0 festgelegt.
DataOutBuffer
Ein Zeiger auf einen Ausgabedatenpuffer.
DataInBuffer
Ein Zeiger auf einen Eingabedatenpuffer.
Cdb[ANYSIZE_ARRAY]
Gibt den SCSI-Befehlsdeskriptorblock an, der an das Zielgerät gesendet werden soll.
Bemerkungen
Die SCSI_PASS_THROUGH_DIRECT_EX-Struktur wird mit IOCTL_SCSI_PASS_THROUGH_DIRECT_EXverwendet. Bei dieser Anforderung sperrt das System den Puffer im Benutzerspeicher und das Gerät greift direkt auf diesen Speicher zu. Eine doppelpufferte Entsprechung dieser Gerätesteuerungsanforderung finden Sie unter IOCTL_SCSI_PASS_THROUGH_EX und SCSI_PASS_THROUGH_EX.
Anmerkung
Treiber, die in einer 64-Bit-Version von Windows ausgeführt werden, müssen die SCSI_PASS_THROUGH_DIRECT32_EX Struktur als Anforderungsdatentyp verwenden, wenn eine IOCTL_SCSI_PASS_THROUGH_DIRECT_EX Anforderung von einem 32-Bit-Prozess verarbeitet wird.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows 8. |
Header- | ntddscsi.h (include Ntddscsi.h) |
Siehe auch
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX