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, um 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 Befehlsblock mit variabler Länge enthalten.
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_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;
Member
Version
Die Version dieser Struktur. Auf 0 festlegen.
Length
Die Größe dieser Struktur. Legen Sie auf sizeof(SCSI_PASS_THROUGH_DIRECT_EX) fest.
CdbLength
Gibt die Größe des SCSI-Befehlsdeskriptorblocks in Cdb in Bytes an.
StorAddressLength
Die Länge der Speichergeräteadressenstruktur am Offset von StorAddressOffset nach dieser Struktur. Dies ist auf sizeof(STOR_ADDR_BTL8) festgelegt.
ScsiStatus
Meldet die SCSI-status, die vom HBA oder dem Zielgerät zurückgegeben wurde.
SenseInfoLength
Gibt die Größe des Request-Sense-Puffers in Bytes an. Dieser Member ist optional und kann auf 0 festgelegt werden.
DataDirection
Dieses Feld muss über einen der folgenden Werte verfügen:
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 | 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 festlegen.
TimeOutValue
Gibt das Intervall in Sekunden an, das die Anforderung ausführen kann, bevor der Porttreiber ein Timeout für möglich hält.
StorAddressOffset
Der Speicherort der STOR_ADDR_BTL8 Adressstruktur des Zielgeräts in Bytes vom Anfang dieser Struktur.
SenseInfoOffset
Offset vom Anfang dieser Struktur zum Anforderungs-Sense-Puffer. Legen Sie auf 0 fest, wenn kein Anforderungssinnspuffer vorhanden ist.
DataOutTransferLength
Gibt die Größe des Ausgabedatenpuffers in Bytes an. Viele Geräte übertragen Datenblöcke vordefinierter Länge. Der Wert in DataOutTransferLength 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. Wenn kein Ausgabedatenpuffer vorhanden ist, wird dieser Member auf 0 festgelegt.
DataInTransferLength
Gibt die Größe des Eingabedatenpuffers in Bytes an. Viele Geräte übertragen Datenblöcke vordefinierter Länge. Der Wert in DataInTransferLength 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. Wenn kein Eingabedatenpuffer vorhanden ist, wird dieser Member 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.
Hinweise
Die SCSI_PASS_THROUGH_DIRECT_EX-Struktur wird mit IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 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_EX und SCSI_PASS_THROUGH_EX.
Hinweis
Treiber, die unter einer 64-Bit-Version von Windows ausgeführt werden, müssen die SCSI_PASS_THROUGH_DIRECT32_EX-Struktur als Anforderungsdatentyp verwenden, wenn sie eine IOCTL_SCSI_PASS_THROUGH_DIRECT_EX Anforderung aus einem 32-Bit-Prozess verarbeiten.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 8. |
Kopfzeile | ntddscsi.h (include Ntddscsi.h) |
Weitere Informationen
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX