SCSI_REQUEST_BLOCK Struktur (srb.h)
Die SCSI_REQUEST_BLOCK Struktur ist einer SRB-Funktion zugeordnet.
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_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR QueueTag;
UCHAR QueueAction;
UCHAR CdbLength;
UCHAR SenseInfoBufferLength;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
union {
ULONG InternalStatus;
ULONG QueueSortKey;
ULONG LinkTimeoutValue;
};
ULONG Reserved;
UCHAR Cdb[16];
} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;
Angehörige
Length
Gibt die Größe in Byte dieser Struktur an.
Function
Gibt den auszuführenden Vorgang an, bei dem es sich um einen der folgenden Werte handeln kann:
Wert | Operation |
---|---|
SRB_FUNCTION_EXECUTE_SCSI (0x00) | Eine SCSI-Geräte-E/A-Anforderung sollte auf der logischen Zieleinheit ausgeführt werden. |
SRB_FUNCTION_ABORT_COMMAND (0x10) | Eine SCSIMESS_ABORT Nachricht sollte gesendet werden, um die Anforderung abzubrechen, auf die das NextSrb Mitglied verweist. Wenn es sich um eine markierte Warteschlangenanforderung handelt, sollte stattdessen eine SCSIMESS_ABORT_WITH_TAG Nachricht verwendet werden. Wenn die angegebene Anforderung abgeschlossen wurde, sollte diese Anforderung normal abgeschlossen werden. Nur die SRB Function, PathId, TargetId, Lunund NextSrb Member sind gültig. |
SRB_FUNCTION_RESET_DEVICE (0x13) | Der ScsiPort-Treiber sendet diesen SRB nicht mehr an seine Miniports. Nur Storport-Miniporttreiber verwenden diesen SRB. Der SCSI-Zielcontroller sollte mithilfe der SCSIMESS_BUS_DEVICE_RESET Nachricht zurückgesetzt werden. Der Miniporttreiber sollte alle aktiven Anforderungen für den Zielcontroller ausführen. Nur die SRB Function, TargetIdund PathId Member sind gültig. |
SRB_FUNCTION_RESET_LOGICAL_UNIT (0x20) | Die logische Einheit sollte nach Möglichkeit zurückgesetzt werden. Der HBA-Miniporttreiber sollte alle aktiven Anforderungen für die logische Einheit ausführen. Nur die Function, PathId, TargetIdund Lun Member des SRB sind gültig. Storport unterstützt diese Art der Zurücksetzung, aber SCSI-Port nicht. |
SRB_FUNCTION_RESET_BUS (0x12) | Der SCSI-Bus sollte mithilfe der SCSIMESS_BUS_DEVICE_RESET Nachricht zurückgesetzt werden. Ein Miniporttreiber empfängt diese Anforderung nur, wenn eine bestimmte Anforderung timeouts und eine nachfolgende Anforderung zum Abbrechen der Timeoutanforderung auch einen Timeout hat. Nur die SRB Function und PathId Member sind gültig. |
SRB_FUNCTION_TERMINATE_IO (0x14) | Eine SCSIMESS_TERMINATE_IO_PROCESS Nachricht sollte gesendet werden, um die Anforderung abzubrechen, auf die das NextSrb Mitglied verweist. Wenn die angegebene Anforderung bereits abgeschlossen ist, sollte diese Anforderung normal abgeschlossen werden. Nur die SRB Function, PathId, TargetId, Lunund NextSrb Member sind gültig. |
SRB_FUNCTION_RELEASE_RECOVERY (0x11) | Eine SCSIMESS_RELEASE_RECOVERY Nachricht sollte an den Zielcontroller gesendet werden. Nur die SRB Function, PathId, TargetIdund Lun Member sind gültig. |
SRB_FUNCTION_RECEIVE_EVENT (0x03) | Die HBA sollte darauf vorbereitet sein, eine asynchrone Ereignisbenachrichtigung vom adressierten Ziel zu erhalten. Der SRB DataBuffer Member gibt an, wo die Daten platziert werden sollen. |
SRB_FUNCTION_SHUTDOWN (0x07) | Das System wird heruntergefahren. Diese Anforderung wird nur an einen Miniporttreiber gesendet, wenn sie CachesData- auf TRUE- im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt hat. Ein solcher Miniporttreiber kann mehrere dieser Benachrichtigungen empfangen, bevor alle Systemaktivitäten tatsächlich beendet werden. Die letzte Benachrichtigung zum Herunterfahren tritt jedoch nach dem letzten Start-E/A auf. Nur die SRB Function, PathId, TargetId und Lun Member sind gültig. |
SRB_FUNCTION_FLUSH (0x08) | Der Miniporttreiber sollte alle zwischengespeicherten Daten für das Zielgerät leeren. Diese Anforderung wird nur dann an den Miniporttreiber gesendet, wenn sie CachesData- auf "TRUE" im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt hat. Nur die SRB Function, PathId, TargetId und Lun Member sind gültig. |
SRB_FUNCTION_IO_CONTROL (0x02) | Die Anforderung ist eine E/A-Steuerelementanforderung, die aus einer Benutzermodusanwendung mit einer dedizierten HBA stammt. Der SRB DataBuffer verweist auf eine SRB_IO_CONTROL Kopfzeile, gefolgt vom Datenbereich. Der Wert in DataBuffer- kann vom Treiber verwendet werden, unabhängig vom Wert MapBuffers. Nur die SRB Function, SrbFlags, TimeOutValue, DataBufferund DataTransferLength Member sind gültig, zusammen mit dem SrbExtension Member, wenn der Miniporttreiber SRB-Erweiterungen beim Initialisieren angefordert hat. Wenn ein Miniporttreiber eine anwendungsdedienliche HBA steuert, sodass diese Anforderung unterstützt wird, sollte der Miniporttreiber die Anforderung ausführen und den betriebssystemspezifischen Porttreiber benachrichtigen, wenn der SRB abgeschlossen ist. Verwenden Sie dazu den normalen Mechanismus von Aufrufen an ScsiPortNotification mit RequestComplete und NextRequest. |
SRB_FUNCTION_LOCK_QUEUE (0x18) | Enthält Anforderungen, die vom Porttreiber für eine bestimmte logische Einheit in die Warteschlange gestellt werden, in der Regel, während eine Energieanforderung verarbeitet wird. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member sind gültig. Wenn die Warteschlange gesperrt ist, werden nur Anforderungen mit SrbFlags mit SRB_FLAGS_BYPASS_LOCKED_QUEUE verarbeitet. SCSI-Miniporttreiber verarbeiten keine SRB_FUNCTION_LOCK_QUEUE Anforderungen. |
SRB_FUNCTION_UNLOCK_QUEUE (0x19) | Gibt die Warteschlange des Porttreibers für eine logische Einheit frei, die zuvor mit SRB_FUNCTION_LOCK_QUEUE gesperrt wurde. Die SrbFlags- der Entsperranforderung muss mit SRB_FLAGS_BYPASS_LOCKED_QUEUE aufgehoben werden. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member sind gültig. SCSI-Miniporttreiber verarbeiten keine SRB_FUNCTION_UNLOCK_QUEUE Anforderungen. |
SRB_FUNCTION_UNLOCK_QUEUE (0x19) | Gibt die Warteschlange des Porttreibers für eine logische Einheit frei, die zuvor mit SRB_FUNCTION_LOCK_QUEUE gesperrt wurde. Die SrbFlags- der Entsperranforderung muss mit SRB_FLAGS_BYPASS_LOCKED_QUEUE aufgehoben werden. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member sind gültig. SCSI-Miniporttreiber verarbeiten keine SRB_FUNCTION_UNLOCK_QUEUE Anforderungen. |
SRB_FUNCTION_DUMP_POINTERS (0x26) | Eine Anforderung mit dieser Funktion wird an einen Storport-Miniporttreiber gesendet, der zum Steuern des Datenträgers verwendet wird, der die Absturzabbilddaten enthält. Die Anforderung sammelt Informationen, die vom Miniporttreiber benötigt werden, um Absturzabbild und Ruhezustand zu unterstützen. Siehe MINIPORT_DUMP_POINTERS Struktur. Ein physischer Miniporttreiber muss das STOR_FEATURE_DUMP_POINTERS Flag im FeatureSupport- Mitglied seiner HW_INITIALIZATION_DATA festlegen, um eine Anforderung mit dieser Funktion zu erhalten. |
SRB_FUNCTION_FREE_DUMP_POINTERS (0x27) | Eine Anforderung mit dieser Funktion wird an einen Storport-Miniporttreiber gesendet, um alle Ressourcen freizugeben, die während einer vorherigen Anforderung für SRB_FUNCTION_DUMP_POINTERS zugeordnet wurden. |
SrbStatus
Gibt den Status der abgeschlossenen Anforderung zurück. Dieses Element sollte vom Miniporttreiber festgelegt werden, bevor der betriebssystemspezifische Treiber benachrichtigt wird, dass die Anforderung durch Aufrufen ScsiPortNotification mit RequestComplete-abgeschlossen wurde. Der Wert dieses Elements kann eine der folgenden Sein:
Wert | Bedeutung |
---|---|
SRB_STATUS_PENDING | Gibt an, dass die Anforderung ausgeführt wird. Der betriebssystemspezifische Porttreiber initialisiert SrbStatus- zu diesem Wert. |
SRB_STATUS_SUCCESS | Gibt an, dass die Anforderung erfolgreich abgeschlossen wurde. |
SRB_STATUS_ABORTED | Gibt an, dass die Anforderung vom Porttreiber abgebrochen wurde. Ein Miniporttreiber legt diesen Status im NextSrb- für eine erfolgreiche SRB_FUNCTION_ABORT_COMMAND-Anforderung fest. |
SRB_STATUS_ABORT_FAILED | Gibt einen Versuch an, die Anforderung abzubrechen. Gibt diesen Status für eine SRB_FUNCTION_ABORT_COMMAND Anforderung zurück, wenn die angegebene Anforderung nicht gefunden werden kann. |
SRB_STATUS_ERROR | Gibt an, dass die Anforderung mit einem Fehler im SCSI-Busstatus abgeschlossen wurde. |
SRB_STATUS_BUSY | Gibt an, dass der Miniporttreiber oder das Zielgerät die Anforderung zu diesem Zeitpunkt nicht annehmen konnte. Der betriebssystemspezifische Porttreiber sendet die Anforderung später erneut. |
SRB_STATUS_INTERNAL_ERROR | Gibt an, dass der SCSI-Porttreiber die Anforderung nicht an den Miniporttreiber oder das Zielgerät übermitteln konnte. In solchen Fällen wird der Status in InternalStatusaufgezeichnet. |
SRB_STATUS_INVALID_REQUEST | Gibt an, dass der Miniporttreiber die angegebene Anforderung nicht unterstützt. |
SRB_STATUS_NO_DEVICE | Gibt an, dass das Gerät nicht reagiert hat. |
SRB_STATUS_TIMEOUT | Gibt das Timeout der Anforderung an. |
SRB_STATUS_SELECTION_TIMEOUT | Gibt das Timeout der SCSI-Geräteauswahl an. |
SRB_STATUS_COMMAND_TIMEOUT | Gibt an, dass der Befehl nicht innerhalb des Zeitlimits abgeschlossen wurde. |
SRB_STATUS_MESSAGE_REJECTED | Gibt an, dass das Ziel eine Nachricht abgelehnt hat. Dies wird normalerweise nur für solche Nachrichtentypanforderungen wie SRB_FUNCTION_TERMINATE_IO zurückgegeben. |
SRB_STATUS_BUS_RESET | Gibt an, dass eine Buszurücksetzung während der Ausführung dieser Anforderung aufgetreten ist. |
SRB_STATUS_PARITY_ERROR | Gibt an, dass im SCSI-Bus ein Paritätsfehler aufgetreten ist und ein Wiederholungsfehler aufgetreten ist. |
SRB_STATUS_REQUEST_SENSE_FAILED | Gibt an, dass der Befehl für die Anforderungsoptimierung fehlgeschlagen ist. Dies wird nur zurückgegeben, wenn die HBA die automatische Anforderungsoptimierung ausführt und der Miniporttreiber AutoRequestSense- auf TRUE- im PORT_CONFIGURATION_INFORMATION für diese HBA festgelegt wird. |
SRB_STATUS_NO_HBA | Gibt an, dass die HBA nicht reagiert. |
SRB_STATUS_DATA_OVERRUN | Gibt an, dass ein Datenüberlauf- oder Unterlauffehler aufgetreten ist. Der Miniporttreiber muss auch das DataTransferLength Mitglied des SRB aktualisieren, um anzugeben, wie viele Daten tatsächlich übertragen wurden, wenn eine Unterlauf-Ausführung auftritt. |
SRB_STATUS_UNEXPECTED_BUS_FREE | Gibt an, dass das Ziel unerwartet getrennt wurde. |
SRB_STATUS_PHASE_SEQUENCE_FAILURE | Gibt an, dass der HBA einen fehler bei ungültigen Phasensequenzfehlern festgestellt hat. |
SRB_STATUS_REQUEST_FLUSHED | Gibt an, dass die Anforderung für den Status beendet wurde. |
SRB_STATUS_BAD_FUNCTION | Gibt an, dass der SRB---Code nicht unterstützt wird. |
SRB_STATUS_INVALID_PATH_ID | Gibt an, dass die im SRB angegebene PathId- nicht vorhanden ist. |
SRB_STATUS_INVALID_TARGET_ID | Gibt an, dass der TargetID- Wert im SRB ungültig ist. |
SRB_STATUS_INVALID_LUN | Gibt an, dass der Lun Wert im SRB ungültig ist. |
SRB_STATUS_ERROR_RECOVERY | Gibt an, dass die Anforderung mit einem Fehler im SCSI-Busstatus abgeschlossen wurde und dass die SCSI INITIATE RECOVERY-Nachricht empfangen wurde. |
SRB_STATUS_AUTOSENSE_VALID | Gibt informationen an, die im SenseInfoBuffer- zurückgegeben werden, ist gültig. |
SRB_STATUS_QUEUE_FROZEN | Ein Miniporttreiber sollte nie den SrbStatus Member auf diesen Wert festlegen. Der Windows-Porttreiber kann diesen Wert festlegen, um einen Speicherklassentreiber darüber zu informieren, dass die Warteschlange von Anforderungen für ein bestimmtes Peripheriegerät fixiert wurde. |
ScsiStatus
Gibt den SCSI-Status zurück, der vom HBA- oder Zielgerät zurückgegeben wurde. Wenn der Status nicht ERFOLGREICH ist, sollte der Miniporttreiber den SrbStatus- Mitglied auf SRB_STATUS_ERROR festlegen.
PathId
Gibt den SCSI-Port oder -Bus für die Anforderung an. Dieser Wert ist nullbasiert.
TargetId
Gibt den Zielcontroller oder das Gerät auf dem Bus an.
Lun
Gibt die logische Einheitennummer des Geräts an.
QueueTag
Enthält den warteschlangenspezifischen Porttreiber zugewiesenen Warteschlangentagwert. Wenn dieses Element für die markierte Warteschlange verwendet wird, unterstützt die HBA die interne Warteschlange von Anforderungen an LUs und der Miniporttreiber TaggedQueueing auf TRUE- im PORT_CONFIGURATION_INFORMATION für diese HBA festgelegt.
QueueAction
Gibt die markierte Warteschlange an, die verwendet werden soll, wenn das SRB_FLAGS_QUEUE_ACTION_ENABLE Flag festgelegt ist. Der Wert kann eine der folgenden Werte sein: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST oder SRB_ORDERED_QUEUE_TAG_REQUEST gemäß der SCSI-Spezifikation definiert.
CdbLength
Gibt die Größe in Byte des SCSI-2- oder höher-Befehlsdeskriptorblocks an.
SenseInfoBufferLength
Gibt die Größe in Byte des Anforderungsoptimierungspuffers an. Wenn ein Unterlauf auftritt, muss der Miniporttreiber dieses Element auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.
SrbFlags
Gibt verschiedene Parameter und Optionen für die Anforderung an. SrbFlags schreibgeschützt ist, außer wenn SRB_FLAGS_UNSPECIFIED_DIRECTION festgelegt ist und Miniporttreiber untergeordneter DMA-Adapter erforderlich sind, um SRB_FLAGS_DATA_IN oder SRB_FLAGS_DATA_OUT zu aktualisieren. Dieses Element kann mindestens eins der folgenden Flags festlegen:
Flagge | Bedeutung |
---|---|
SRB_FLAGS_QUEUE_ACTION_ENABLE | Gibt an, dass markierte Warteschlangenaktionen aktiviert werden sollen. |
SRB_FLAGS_DISABLE_AUTOSENSE | Gibt an, dass Informationen zur Anforderungsoptimierung nicht zurückgegeben werden sollen. |
SRB_FLAGS_DATA_IN | Gibt an, dass Daten vom Gerät an das System übertragen werden. |
SRB_FLAGS_DATA_OUT | Gibt an, dass Daten vom System auf das Gerät übertragen werden. |
SRB_FLAGS_UNSPECIFIED_DIRECTION | Für die Abwärtskompatibilität mit den ASPI/CAM-SCSI-Schnittstellen definiert, gibt dieses Flag an, dass die Übertragungsrichtung eines der vorherigen Flags sein könnte, da beide der vorherigen Flags festgelegt sind. Wenn dieses Kennzeichen festgelegt ist, sollte ein Miniporttreiber die Übertragungsrichtung ermitteln, indem die Datenphase für das Ziel im SCSI-Bus untersucht wird. Wenn es sich bei der HBA um ein untergeordnetes DMA-Gerät handelt, muss ein solcher Miniporttreiber SRB_FLAGS_DATA_OUT oder SRB_FLAGS_DATA_IN auf den richtigen Wert aktualisieren, bevor er ScsiPortIoMapTransferaufruft. |
SRB_FLAGS_NO_DATA_TRANSFER | Gibt keine Datenübertragung mit dieser Anforderung an. Wenn dies festgelegt ist, sind die Flags SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN und SRB_FLAGS_UNSPECIFIED_DIRECTION klar. |
SRB_FLAGS_DISABLE_SYNCH_TRANSFER | Gibt die HBA an, falls möglich, sollte für diese Übertragungsanforderung asynchrone E/A-Vorgänge ausführen. Wenn zuvor synchrone E/A ausgehandelt wurde, muss die HBA vor der Durchführung der Übertragung erneut für asynchrone E/A-Vorgänge verhandeln. |
SRB_FLAGS_DISABLE_DISCONNECT | Gibt an, dass das Ziel während der Verarbeitung dieser Anforderung nicht vom SCSI-Bus getrennt werden soll. |
SRB_FLAGS_BYPASS_FROZEN_QUEUE | Ist für Miniporttreiber irrelevant. |
SRB_FLAGS_NO_QUEUE_FREEZE | Ist für Miniporttreiber irrelevant. |
SRB_FLAGS_IS_ACTIVE | Ist für Miniporttreiber irrelevant. |
SRB_FLAGS_ALLOCATED_FROM_ZONE | Ist für Miniporttreiber irrelevant und ist für aktuelle Windows-Klassentreiber veraltet. Für einen Windows-Legacyklassentreiber gibt dies an, ob der SRB aus einem Zonenpuffer zugewiesen wurde. Wenn dieses Kennzeichen festgelegt ist, muss der Klassentreiber ExInterlockedFreeToZone- aufrufen, um den SRB freizugeben; andernfalls muss ExFreePoolaufgerufen werden. Neue Klassentreiber sollten Lookaside-Listen anstelle von Zonenpuffern verwenden. |
SRB_FLAGS_SGLIST_FROM_POOL | Ist für Miniporttreiber irrelevant. Für einen Windows-Klassentreiber gibt dies an, dass speicher für eine Punkt/Gather-Liste aus einem nicht ausseitigen Pool zugewiesen wurde. Wenn dieses Flag festgelegt ist, muss der Klassentreiber ExFreePool- aufrufen, um den Speicher nach Abschluss des SRB freizugeben. |
SRB_FLAGS_BYPASS_LOCKED_QUEUE | Ist für Miniporttreiber irrelevant. Für den Porttreiber gibt dieses Flag an, dass die Anforderung verarbeitet werden soll, ob die Warteschlange für logische Einheiten gesperrt ist. Ein Treiber auf höherer Ebene muss dieses Kennzeichen festlegen, um eine SRB_FUNCTION_UNLOCK_QUEUE Anforderung zu senden. |
SRB_FLAGS_NO_KEEP_AWAKE | Ist für Miniporttreiber irrelevant. Ein Windows-Klassentreiber verwendet dieses Flag, um anzugeben, dass der Porttreiber im Leerlauf angezeigt wird, anstatt das Gerät zum Verarbeiten dieser Anforderung zu aktivieren. |
SRB_FLAGS_FREE_SENSE_BUFFER | Gibt an, dass entweder der Port oder der Miniporttreiber einen Puffer für Sense-Daten zugewiesen hat. Dadurch wird der Klassentreiber informiert, dass er den Sinnesdatenpuffer nach dem Extrahieren der Daten freigeben muss. |
DataTransferLength
Gibt die Größe in Byte des Datenpuffers an. 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. Miniporttreiber sind für Zeitanforderungen nicht erforderlich, da der Porttreiber bereits ausgeführt wird.
DataBuffer
Verweist auf den Datenpuffer. Miniporttreiber sollten diesen Wert nicht als Datenzeiger verwenden, es sei denn, der Miniporttreiber MapBuffers auf TRUE- im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt. Bei SRB_FUNCTION_IO_CONTROL Anforderungen können Miniporttreiber diesen Wert jedoch unabhängig vom Wert MapBuffersals Datenzeiger verwenden.
SenseInfoBuffer
Verweist auf den Anforderungsoptimierungspuffer. Ein Miniporttreiber ist nicht erforderlich, um anforderungsbezogene Daten nach einer CHECK-BEDINGUNG bereitzustellen.
NextSrb
Gibt die SCSI_REQUEST_BLOCK an, für die diese Anforderung gilt. Nur eine kleine Teilmenge von Anforderungen verwendet einen zweiten SRB, z. B. SRB_FUNCTION_ABORT_COMMAND.
OriginalRequest
Verweist auf das IRP für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.
SrbExtension
Verweist auf die Srb-Erweiterung. Ein Miniporttreiber darf dieses Element nicht verwenden, wenn er SrbExtensionSize- auf Null im SCSI_HW_INITIALIZATION_DATA festgelegt hat. Der Speicher bei SrbExtension wird nicht vom betriebssystemspezifischen Porttreiber initialisiert, und auf die vom Miniporttreiber ermittelten Daten kann direkt vom HBA zugegriffen werden. Die entsprechende physische Adresse kann durch Aufrufen ScsiPortGetPhysicalAddress mit dem SrbExtension Zeiger abgerufen werden.
InternalStatus
Wird vom SCSI-Porttreiber anstelle von SrbStatus-verwendet, um den Status der abgeschlossenen Anforderung zu melden, wenn die Anforderung nicht an den Miniporttreiber übermittelt werden kann. In solchen Fällen wird SrbStatus- auf SRB_STATUS_INTERNAL_ERROR festgelegt. Dieses Mitglied wird ausschließlich für die Kommunikation zwischen dem SCSI-Port und dem Klassentreiber verwendet und sollte nicht von Miniporttreibern verwendet werden.
QueueSortKey
Gibt den Offset vom Anfang des Mediums oder null abhängig vom Typ des Zielgeräts an.
LinkTimeoutValue
Linktimeoutwert.
Reserved
Reserviert.
Cdb[16]
Gibt den SCSI-2- oder höher-Befehlsdeskriptorblock an, der an das Zielgerät gesendet werden soll.
Bemerkungen
Windows-Speicherklassen- und Filtertreiber können SRBs mit den folgenden Function- Werten an den Systemporttreiber senden:
- SRB_FUNCTION_CLAIM_DEVICE anzugeben, dass der Klassentreiber ein peripheriegerät unterstützt, das im SRB durch die PathId-, TargetId-und Lun Member identifiziert wird.
- SRB_ATTACH_DEVICE, um anzugeben, dass ein Filtertreiber, der über einem Klassentreiber angeordnet ist, Anforderungen für ein bestimmtes Peripheriegerät zuerst an den Filtertreiber weitergeleitet werden soll.
- SRB_FUNCTION_RELEASE_DEVICE anzugeben, dass ein Klassentreiber seinen Anspruch auf ein bestimmtes Peripheriegerät freigibt.
- SRB_FUNCTION_FLUSH_QUEUE, den Abbruch aller Anforderungen anzufordern, die derzeit im Porttreiber an ein bestimmtes Peripheriegerät in die Warteschlange gestellt werden.
- SRB_FUNCTION_RELEASE_QUEUE, um anzufordern, dass der Porttreiber eine fixierte Warteschlange von Anforderungen an ein bestimmtes Peripheriegerät freigibt.
Die oben SRB_FUNCTION_XXX- werden nie in SRBs festgelegt, die an SCSI-Miniporttreiber gesendet werden. SRB_FUNCTION_REMOVE_DEVICE ist für die Verwendung in zukünftigen Versionen des Systems definiert. Sie wird auch nie in SRBs festgelegt, die an SCSI-Miniporttreiber gesendet werden. SRB_FUNCTION_WMI_REQUEST ist nur in SCSI_WMI_REQUEST_BLOCK gültig. Eine Speicherklasse oder ein Filtertreiber verwendet diese, um WMI-Anforderungen an den Porttreiber zu senden.
Anforderungen
Anforderung | Wert |
---|---|
Header- | srb.h (include Srb.h, Minitape.h, Storport.h) |
Siehe auch
HW_INITIALIZATION_DATA (SCSI)-