Freigeben über


STORAGE_REQUEST_BLOCK Struktur (srb.h)

Die STORAGE_REQUEST_BLOCK ist die erweiterte SCSI-Anforderungsblock-Struktur (SRB). Die Struktur ermöglicht das Hinzufügen erweiterter Daten, die einer SRB-Funktion zugeordnet sind.

Anmerkung

Die SCSI-Porttreiber- und SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht verfügbar sein. Verwenden Sie stattdessen den Storport-Treiber und Storport Miniport Treibermodelle.

Syntax

typedef struct _STORAGE_REQUEST_BLOCK {
  USHORT                               Length;
  UCHAR                                Function;
  UCHAR                                SrbStatus;
  ULONG                                ReservedUlong1;
  ULONG                                Signature;
  ULONG                                Version;
  ULONG                                SrbLength;
  ULONG                                SrbFunction;
  ULONG                                SrbFlags;
  ULONG                                ReservedUlong2;
  ULONG                                RequestTag;
  USHORT                               RequestPriority;
  USHORT                               RequestAttribute;
  ULONG                                TimeOutValue;
  union {
    ULONG SystemStatus;
    ULONG RequestTagHigh4Bytes;
  } DUMMYUNIONNAME;
  ULONG                                SystemStatus;
  ULONG                                ZeroGuard1;
  ULONG                                AddressOffset;
  ULONG                                NumSrbExData;
  ULONG                                DataTransferLength;
  PVOID POINTER_ALIGN                  DataBuffer;
  PVOID POINTER_ALIGN                  ZeroGuard2;
  PVOID POINTER_ALIGN                  OriginalRequest;
  PVOID POINTER_ALIGN                  ClassContext;
  PVOID POINTER_ALIGN                  PortContext;
  PVOID POINTER_ALIGN                  MiniportContext;
  _STORAGE_REQUEST_BLOCK POINTER_ALIGN *NextSrb;
  struct                               _STORAGE_REQUEST_BLOCK;
  ULONG                                SrbExDataOffset[ANYSIZE_ARRAY];
} STORAGE_REQUEST_BLOCK, *PSTORAGE_REQUEST_BLOCK;

Angehörige

Length

Gibt die Größe des SRB-Headers zur Kompatibilität mit der SCSI_REQUEST_BLOCK-Struktur an. Dies entspricht dem Offset des Signatur- Mitglieds dieser Struktur.

Function

Legen Sie auf SRB_FUNCTION_STORAGE_REQUEST_BLOCK fest, um anzugeben, dass es sich um einen erweiterten SRB handelt. Im Gegensatz zu SCSI_REQUEST_BLOCKbefindet sich der SRB-Funktionsbezeichner stattdessen im SrbFunction Member.

SrbStatus

Gibt den Status der abgeschlossenen Anforderung zurück. Dieses Element sollte vom Miniporttreiber festgelegt werden, bevor er den betriebssystemspezifischen Treiber benachrichtigt, dass die Anforderung durch Aufrufen ScsiPortNotification mit RequestCompleteabgeschlossen wurde. Der Wert dieses Elements kann eine der folgenden Sein:

Wert Bedeutung
SRB_STATUS_PENDING (0x00) Gibt an, dass die Anforderung ausgeführt wird. Der betriebssystemspezifische Porttreiber initialisiert SrbStatus- zu diesem Wert.
SRB_STATUS_SUCCESS (0x01) Gibt an, dass die Anforderung erfolgreich abgeschlossen wurde.
SRB_STATUS_ABORTED (0x02) Gibt an, dass die Anforderung vom Porttreiber abgebrochen wurde. Ein Miniporttreiber legt diesen Status im NextSrb Mitglied für eine erfolgreiche SRB_FUNCTION_ABORT_COMMAND Anforderung fest.
SRB_STATUS_ABORT_FAILED (0x03) 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 (0x04) Gibt an, dass die Anforderung mit einem Fehler im SCSI-Busstatus abgeschlossen wurde.
SRB_STATUS_BUSY (0x05) 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_INVALID_REQUEST (0x06) Gibt an, dass der Miniporttreiber die angegebene Anforderung nicht unterstützt.
SRB_STATUS_INVALID_PATH_ID (0x07) Gibt an, dass die im SRB angegebene PathId- nicht vorhanden ist.
SRB_STATUS_NO_DEVICE (0x08) Gibt an, dass das Gerät nicht reagiert hat.
SRB_STATUS_TIMEOUT (0x09) Gibt das Timeout der Anforderung an.
SRB_STATUS_SELECTION_TIMEOUT (0x0A) Gibt das Timeout der SCSI-Geräteauswahl an.
SRB_STATUS_COMMAND_TIMEOUT (0x0B) Gibt an, dass der Befehl nicht innerhalb des Zeitlimits abgeschlossen wurde.
SRB_STATUS_MESSAGE_REJECTED (0x0D) 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 (0x0E) Gibt an, dass eine Buszurücksetzung während der Ausführung dieser Anforderung aufgetreten ist.
SRB_STATUS_PARITY_ERROR (0x0F) Gibt an, dass im SCSI-Bus ein Paritätsfehler aufgetreten ist und ein Wiederholungsfehler aufgetreten ist.
SRB_STATUS_REQUEST_SENSE_FAILED (0x10) Gibt an, dass der Befehl für die Anforderungsoptimierung fehlgeschlagen ist. Dies wird nur zurückgegeben, wenn der Hostbusadapter (HBA) die automatische Anforderungsoptimierung ausführt und der Miniporttreiber AutoRequestSense in der PORT_CONFIGURATION_INFORMATION für diese HBA auf TRUE festgelegt ist.
SRB_STATUS_NO_HBA (0x11) Gibt an, dass die HBA nicht reagiert.
SRB_STATUS_DATA_OVERRUN (0x12) 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 (0x13) Gibt an, dass das Ziel unerwartet getrennt wurde.
SRB_STATUS_PHASE_SEQUENCE_FAILURE (0x14) Gibt an, dass der HBA einen fehler bei ungültigen Phasensequenzfehlern festgestellt hat.
SRB_STATUS_BAD_SRB_BLOCK_LENGTH (0x15) Gibt an, dass die Anforderung fehlgeschlagen ist, da die SRB-Länge ungültig war.
SRB_STATUS_REQUEST_FLUSHED (0x16) Gibt an, dass die Anforderung für den Status beendet wurde.
SRB_STATUS_INVALID_LUN (0x20) Gibt an, dass der Lun Wert im SRB ungültig ist.
SRB_STATUS_INVALID_TARGET_ID (0x21) Gibt an, dass der TargetID- Wert im SRB ungültig ist.
SRB_STATUS_BAD_FUNCTION (0x22) Gibt an, dass der SRB---Code nicht unterstützt wird.
SRB_STATUS_ERROR_RECOVERY (0x23) Gibt an, dass die Anforderung mit einem Fehler im SCSI-Busstatus abgeschlossen wurde und dass die SCSI INITIATE RECOVERY-Nachricht empfangen wurde.
SRB_STATUS_NOT_POWERED (0x24) A gibt an, dass die Anforderung fehlgeschlagen ist, da das Ziel nicht unterstützt wird. Für Anforderungen mit SRB_FLAGS_NO_KEEP_AWAKE in SrbFlags-festgelegte Anforderungen treten mit diesem Status auf, die an LUNs gesendet werden, die heruntergefahren werden.
SRB_STATUS_LINK_DOWN (0x25) Gibt an, dass die Anforderung fehlgeschlagen ist, da der Link nach unten ist.
SRB_STATUS_INTERNAL_ERROR (0x30) Gibt an, dass der Storport-Treiber die Anforderung nicht an den Miniporttreiber oder das Zielgerät übermitteln konnte. In solchen Fällen wird der Status in InternalStatusaufgezeichnet.
SRB_STATUS_QUEUE_FROZEN (0x40) 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.
SRB_STATUS_AUTOSENSE_VALID (0x80) Gibt informationen an, die im SenseInfoBuffer- zurückgegeben werden, ist gültig.

ReservedUlong1

Reserviert. Auf 0 festgelegt.

Signature

Die Signatur des erweiterten SRB-Formats. Dies ist auf SRB_SIGNATURE festgelegt.

Version

Die verwendete Strukturversion. Die aktuelle Version ist STORAGE_REQUEST_BLOCK_VERSION_1.

SrbLength

Die Länge dieses erweiterten SRB in Bytes, einschließlich dieser Struktur, Adresse und alle erweiterten SRB-Daten.

SrbFunction

Gibt den auszuführenden Vorgang an, der einer der folgenden Werte sein kann:

Wert Bedeutung
SRB_FUNCTION_EXECUTE_SCSI (0x00) Eine SCSI-Geräte-E/A-Anforderung sollte auf der logischen Zieleinheit ausgeführt werden. Wenn NumSrbExData> 0, befinden sich mindestens eine der folgenden erweiterten Anforderungsblockstrukturen an den Offsets, die in SrbExDataOffsetangegeben sind: SRBEX_DATA_SCSI_CDB16, SRBEX_DATA_SCSI_CDB32, SRBEX_DATA_SCSI_CDB_VAR, SRBEX_DATA_BIDIRECTIONAL, SRBEX_DATA_IO_INFO
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, damit diese Anforderung unterstützt wird, sollte der Miniporttreiber die Anforderung ausführen und den betriebssystemspezifischen Porttreiber benachrichtigen, wenn der SRB abgeschlossen ist. Dabei wird der normale Mechanismus von Aufrufen an ScsiPortNotification mit RequestComplete und NextRequest.
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. HINWEIS: Diese Funktion wird von Storport nicht an den Miniport gesendet.
SRB_FUNCTION_SHUTDOWN (0x07) Das System wird heruntergefahren. Ein 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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich.
SRB_FUNCTION_FLUSH (0x08) Der Miniporttreiber sollte alle zwischengespeicherten Daten für das Zielgerät leeren. Diese Anforderung wird nur an den Miniporttreiber gesendet, wenn sie CachesData- auf TRUE- im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt hat. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich.
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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich. HINWEIS: Diese Funktion wird von Storport nicht an den Miniport gesendet.
SRB_FUNCTION_RELEASE_RECOVERY (0x11) Eine SCSIMESS_RELEASE_RECOVERY Nachricht sollte an den Zielcontroller gesendet werden. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich. HINWEIS: Diese Funktion wird von Storport nicht an den Miniport gesendet.
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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich.
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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich. HINWEIS: Diese Funktion wird von Storport nicht an den Miniport gesendet.
SRB_FUNCTION_RESET_DEVICE (0x16) 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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich.
SRB_FUNCTION_WMI (0x17) Die Anforderung ist eine erweiterte Energieanforderung, die als SRBEX_DATA_WMI-Struktur formatiert ist. Der Offset für erweiterte Anforderungsdaten befindet sich in SrbExDataOffset[0].
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_QUEUEgesperrt wurde. Die SrbFlags- der Entsperranforderung muss mit SRB_FLAGS_BYPASS_LOCKED_QUEUEausgelassen werden. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member sind gültig. SCSI-Miniporttreiber verarbeiten keine SRB_FUNCTION_UNLOCK_QUEUE Anforderungen.
SRB_FUNCTION_QUIESCE_DEVICE (0x1A) Die Anforderung liegt nur zwischen einer Speicherklasse und einem Speicherporttreiber und wird nicht an miniport gesendet. Diese Funktion dient als Wartezeit des Klassentreibers, bis der Porttreiber alle ausstehenden E/A-Vorgänge abschließen kann.
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. Für diese Funktion sind keine erweiterten SRB-Daten erforderlich. Storport unterstützt diese Art der Zurücksetzung, aber SCSI-Port nicht.
SRB_FUNCTION_POWER (0x24) Die Anforderung ist eine erweiterte Energieanforderung, die als SRBEX_DATA_POWER Struktur formatiert ist. Der Offset für erweiterte Anforderungsdaten befindet sich in SrbExDataOffset[0].
SRB_FUNCTION_PNP (0x25) Die Anforderung ist eine erweiterte PnP-Anforderung, die als SRBEX_DATA_PNP Struktur formatiert ist. Der Offset für erweiterte Anforderungsdaten befindet sich in SrbExDataOffset[0].
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.

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_OUTzu aktualisieren. Dieses Element kann mindestens eine dieser Flags festgelegt haben.

Flagge Bedeutung
SRB_FLAGS_NO_DATA_TRANSFER (0x00000000) Gibt keine Datenübertragung mit dieser Anforderung an. Wenn dies festgelegt ist, sind die Flags SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_INund SRB_FLAGS_UNSPECIFIED_DIRECTION klar.
SRB_FLAGS_QUEUE_ACTION_ENABLE (0x00000002) Gibt an, dass markierte Warteschlangenaktionen aktiviert werden sollen.
SRB_FLAGS_DISABLE_DISCONNECT (0x00000004) Gibt an, dass das Ziel während der Verarbeitung dieser Anforderung nicht vom SCSI-Bus getrennt werden soll.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER (0x00000008) 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_BYPASS_FROZEN_QUEUE (0x00000010) Diese Kennzeichnung ist für Miniporttreiber irrelevant.
SRB_FLAGS_DISABLE_AUTOSENSE (0x00000020) Gibt an, dass Informationen zur Anforderungsoptimierung nicht zurückgegeben werden sollen.
SRB_FLAGS_DATA_IN (0x00000040) Gibt an, dass Daten vom Gerät an das System übertragen werden.
SRB_FLAGS_DATA_OUT (0x00000080) Gibt an, dass Daten vom System auf das Gerät übertragen werden.
SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) 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 kann, 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.
SRB_FLAGS_NO_QUEUE_FREEZE (0x00000100) Diese Kennzeichnung ist für Miniporttreiber irrelevant.
SRB_FLAGS_ADAPTER_CACHE_ENABLE (0x00000200) Gibt an, dass der Adapter Daten zwischenspeichern kann.
SRB_FLAGS_FREE_SENSE_BUFFER (0x00000400) 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.
SRB_FLAGS_D3_PROCESSING (0x00000800) Gibt an, dass die Anforderung Teil der D3-Verarbeitung ist. Miniports, die laufzeitsteuerung unterstützen, sollten nicht StorPortPoFxActivateComponent oder StorPortPoFxIdleComponent mit diesen Anforderungen aufrufen.
SRB_FLAGS_SEQUENTIAL_REQUIRED (0x00001000) Gibt an, dass der LBA-Bereich in die sequenzielle Schreibschutzzone fällt.
SRB_FLAGS_IS_ACTIVE (0x00010000) Diese Kennzeichnung ist für Miniporttreiber irrelevant.
SRB_FLAGS_ALLOCATED_FROM_ZONE (0x00020000) Dieses Kennzeichen ist für Miniporttreiber irrelevant und ist für neue 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 (0x00040000) Diese Kennzeichnung ist für Miniporttreiber irrelevant. Für den Klassentreiber gibt dies an, dass speicher für eine Punkt-/Gather-Liste aus einem nicht seitengebundenen 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 (0x00080000) Diese Kennzeichnung 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 oder nicht. Ein Treiber auf höherer Ebene muss dieses Kennzeichen festlegen, um eine SRB_FUNCTION_UNLOCK_QUEUE Anforderung zu senden.
SRB_FLAGS_NO_KEEP_AWAKE (0x00100000) Diese Kennzeichnung ist für Miniporttreiber irrelevant. Ein Windows-Klassentreiber verwendet dieses Kennzeichen, um dem Porttreiber anzugeben, dass die Anforderung fehlschlägt, anstatt das Gerät zum Verarbeiten dieser Anforderung einzuschalten.
SRB_FLAGS_PORT_DRIVER_ALLOCSENSE (0x00200000) Der Porttreiber muss den Sinnpuffer für den SRB zuordnen.
SRB_FLAGS_PORT_DRIVER_SENSEHASPORT (0x00400000) Veraltet; nicht verwenden.
SRB_FLAGS_DONT_START_NEXT_PACKET (0x00800000) Veraltet; nicht verwenden.
SRB_FLAGS_PORT_DRIVER_RESERVED (0x0F000000) Reserviert für die Systemverwendung.
SRB_FLAGS_CLASS_DRIVER_RESERVED (0xF0000000) Reserviert für die Systemverwendung.

ReservedUlong2

Reserviert. Auf 0 festgelegt.

RequestTag

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 logische Einheiten (LUs) und den Miniporttreiber, der TaggedQueueing auf TRUE im PORT_CONFIGURATION_INFORMATION für diese HBA festgelegt.

RequestPriority

Die Prioritätszuweisung für den SRB. Dies ist einer der folgenden _STOR_IO_PRIORITY_HINT Werte:

Wert Bedeutung
StorIoPriorityVeryLow (0) Sehr niedrige Priorität.
StorIoPriorityLow (1) Niedrige Priorität.
StorIoPriorityNormal (2) Normale Priorität.
StorIoPriorityHigh (3) Hohe Priorität.
StorIoPriorityCritical (4) Kritische Priorität.

RequestAttribute

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 Sein: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUESToder SRB_ORDERED_QUEUE_TAG_REQUEST.

TimeOutValue

Gibt das Intervall in Sekunden an, das die Anforderung ausführen kann, bevor der betriebssystemspezifische Porttreiber es möglicherweise als Timeout betrachtet. Miniporttreiber sind für Zeitanforderungen nicht erforderlich, da der Porttreiber bereits ausgeführt wird.

DUMMYUNIONNAME

Eingebettete Vereinigung.

DUMMYUNIONNAME.SystemStatus

Wird verwendet, um Systemfehlerstatusinformationen in SrbStatus-Fehlerbedingungen zu speichern (z. B. SRB_STATUS_INTERNAL_ERROR).

DUMMYUNIONNAME.RequestTagHigh4Bytes

Wird verwendet, um hohe vier Bytes eindeutiger Tags zu speichern, wenn das Feature für eindeutige Tags aktiviert ist.

SystemStatus

Wird vom Storport-Treiber anstelle von SrbStatusverwendet, 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_ERRORfestgelegt. Dieses Mitglied wird ausschließlich für die Kommunikation zwischen dem Storport und dem Klassentreiber verwendet und sollte nicht von Miniporttreibern verwendet werden.

ZeroGuard1

Ein Schutzbereich zum Schutz vor Treibern, die diese Struktur als SCSI_REQUEST_BLOCKinterpretieren. Auf 0 festgelegt.

AddressOffset

Der Offset der Speicheranforderungsadresse vom Anfang dieser Struktur. Dieser Offset sucht eine STOR_ADDRESS Struktur, die die Adresse für die Anforderung enthält.

NumSrbExData

Die Anzahl der erweiterten SRB-Datenblöcke für diese Anforderung.

DataTransferLength

Gibt die Größe des Datenpuffers in Bytes an. Wenn ein Unterlauf auftritt, muss der Miniporttreiber dieses Element auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.

DataBuffer

Verweist auf den Datenpuffer. Miniport-Treiber 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.

ZeroGuard2

Ein Schutzbereich zum Schutz vor Treibern, die diese Struktur als SCSI_REQUEST_BLOCKinterpretieren. Auf 0 festgelegt.

OriginalRequest

Verweist auf das IRP für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

ClassContext

Verweist auf eine Klassentreiberkontextdaten für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

PortContext

Verweist auf eine Porttreiberkontextdaten für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

MiniportContext

Verweist auf die Srb-Erweiterung. Ein Miniporttreiber darf dieses Element nicht verwenden, wenn er SrbExtensionSize- in HW_INITIALIZATION_DATAauf Null festgelegt hat. Der Speicher bei MiniportContext- 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 von ScsiPortGetPhysicalAddress mit dem MiniportContext Zeiger abgerufen werden.

NextSrb

Gibt die STORAGE_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.

_STORAGE_REQUEST_BLOCK

SrbExDataOffset[ANYSIZE_ARRAY]

Ein Array von Offsets, die die Position erweiterter Datenblöcke für den SRB angeben. Dieses Array ist leer, wenn NumSrbExData = 0.

Bemerkungen

Ab Windows 8 wird ein erweiterter SRB-Typ mit der Verwendung der STORAGE_REQUEST_BLOCK-Struktur unterstützt. STORAGE_REQUEST_BLOCK erweitert SRB-Funktionen, sodass der Anforderung erweiterte Datenblöcke für die SRB-Funktion hinzugefügt werden können. Die Unterstützung für SRB-Anforderungen mithilfe der SCSI_REQUEST_BLOCK-Struktur wird fortgesetzt.

Wenn NumSrbExData> 0, befinden sich die Offsets für die erweiterten SRB-Datenblöcke im SrbExDataOffset Array. Jeder Offset ist relativ zum Anfang dieser Struktur und verweist auf eine SRBEX_DATA Struktur, die den erweiterten Datenblock enthält.

Die Zielgeräteadresse für den SRB befindet sich in einer STOR_ADDRESS Struktur, die durch AddressOffset-angegeben wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8
Header- srb.h (include Storport.h, Srb.h, Minitape.h)

Siehe auch