Freigeben über


STORAGE_REQUEST_BLOCK-Struktur (minitape.h)

Die STORAGE_REQUEST_BLOCK ist die Struktur des erweiterten SCSI-Anforderungsblocks (SCSI Request Block, SRB). Die -Struktur ermöglicht das Hinzufügen erweiterter Daten, die einer SRB-Funktion zugeordnet sind.

Hinweis

Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle sind möglicherweise geändert oder in Zukunft nicht mehr verfügbar. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.

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;

Member

Length

Gibt die Größe des SRB-Headers zur Kompatibilität mit der SCSI_REQUEST_BLOCK-Struktur an. Dies entspricht dem Offset des Signature-Elements 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_BLOCK befindet sich der SRB-Funktionsbezeichner stattdessen im SrbFunction-Member .

SrbStatus

Gibt den status der abgeschlossenen Anforderung zurück. Dieser Member sollte vom Miniporttreiber festgelegt werden, bevor er den betriebssystemspezifischen Treiber benachrichtigt, dass die Anforderung durch Aufrufen von StorPortNotification mit RequestComplete abgeschlossen wurde. SrbStatus kann einer der folgenden Werte sein.

Wert Bedeutung
SRB_STATUS_PENDING Gibt an, dass die Anforderung ausgeführt wird. Der betriebssystemspezifische Porttreiber initialisiert SrbStatus mit diesem Wert.
SRB_STATUS_SUCCESS Gibt an, dass die Anforderung erfolgreich abgeschlossen wurde.
SRB_STATUS_ABORTED Gibt an, dass die Anforderung wie vom Porttreiber angewiesen abgebrochen wurde. Ein Miniporttreiber legt diese status im NextSrb-Member für eine erfolgreiche SRB_FUNCTION_ABORT_COMMAND-Anforderung fest.
SRB_STATUS_ABORT_FAILED Gibt an, dass der Versuch, die Anforderung abzubrechen, fehlgeschlagen ist. Geben Sie 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-Bus-status 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 übermittelt die Anforderung später erneut.
SRB_STATUS_INTERNAL_ERROR Gibt an, dass der Storport-Treiber die Anforderung nicht an den Miniporttreiber oder das Zielgerät übermitteln konnte. In solchen Fällen wird status in InternalStatus aufgezeichnet.
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 ein Timeout für die Anforderung an.
SRB_STATUS_SELECTION_TIMEOUT Gibt an, dass das Timeout für die Auswahl des SCSI-Geräts unterbrochen wurde.
SRB_STATUS_COMMAND_TIMEOUT Gibt an, dass das Ziel den Befehl nicht innerhalb des Zeitlimits abgeschlossen hat.
SRB_STATUS_MESSAGE_REJECTED Gibt an, dass das Ziel eine Nachricht abgelehnt hat. Dies wird normalerweise nur für Nachrichtentypanforderungen wie SRB_FUNCTION_TERMINATE_IO zurückgegeben.
SRB_STATUS_BUS_RESET Gibt an, dass ein Bus zurückgesetzt wurde, während diese Anforderung ausgeführt wurde.
SRB_STATUS_PARITY_ERROR Gibt an, dass ein Paritätsfehler auf dem SCSI-Bus aufgetreten ist und dass bei einer Wiederholung ein Fehler aufgetreten ist.
SRB_STATUS_REQUEST_SENSE_FAILED Gibt an, dass der Befehl request-sense fehlgeschlagen ist. Dies wird nur zurückgegeben, wenn der Hostbusadapter (Host Bus Adapter, HBA) die automatische Anforderungsoptimierung ausführt und der Miniporttreiber AutoRequestSense im PORT_CONFIGURATION_INFORMATION für diesen HBA auf TRUE festgelegt hat.
SRB_STATUS_NO_HBA Gibt an, dass der HBA nicht reagiert.
SRB_STATUS_DATA_OVERRUN Gibt an, dass ein Datenüberlauf- oder Unterlauffehler aufgetreten ist. Der Miniporttreiber muss auch das DataTransferLength-Element des SRB aktualisieren, um anzugeben, wie viele Daten tatsächlich übertragen wurden, wenn ein Unterlauf 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 fehlerhaften Fehler bei der Phasensequenz erkannt hat.
SRB_STATUS_REQUEST_FLUSHED Gibt an, dass die Anforderung für status beendet wurde.
SRB_STATUS_BAD_FUNCTION Gibt an, dass der SRB-Funktionscode 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 in der SCSI-Bus-status abgeschlossen wurde und dass die SCSI INITIATE RECOVERY-Nachricht empfangen wurde.
SRB_STATUS_AUTOSENSE_VALID Gibt an, dass die im SenseInfoBuffer zurückgegebenen Informationen gültig sind.
SRB_STATUS_QUEUE_FROZEN Ein Miniporttreiber sollte den SrbStatus-Member niemals auf diesen Wert festlegen. Der Windows-Porttreiber kann diesen Wert festlegen, um einen Speicherklassentreiber darüber zu informieren, dass seine Anforderungswarteschlange für ein bestimmtes Peripheriegerät gesperrt wurde.
SRB_STATUS_NOT_POWERED Ein gibt an, dass die Anforderung fehlgeschlagen ist, weil das Ziel nicht mit Strom versorgt wird. Bei Anforderungen mit SRB_FLAGS_NO_KEEP_AWAKE, die in SrbFlags festgelegt sind, schlagen Anforderungen, die an heruntergefahrene LUNs gesendet werden, mit diesem status fehl.
SRB_STATUS_LINK_DOWN Gibt an, dass die Anforderung fehlgeschlagen ist, weil der Link ausgefallen ist.
SRB_STATUS_BAD_SRB_BLOCK_LENGTH Gibt an, dass die Anforderung fehlgeschlagen ist, weil die SRB-Länge ungültig war.

ReservedUlong1

Reserviert. Auf 0 festlegen.

Signature

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

Version

Die Version der verwendeten Struktur. Die aktuelle Version ist STORAGE_REQUEST_BLOCK_VERSION_1.

SrbLength

Die Länge dieses erweiterten SRB in Byte, 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 für die logische Zieleinheit ausgeführt werden. Bei NumSrbExData> 0 befinden sich mindestens eine der folgenden erweiterten Anforderungsblockstrukturen an den in SrbExDataOffset angegebenen Offsets: SRBEX_DATA_SCSI_CDB16, SRBEX_DATA_SCSI_CDB32, SRBEX_DATA_SCSI_CDB_VAR, SRBEX_DATA_BIDIRECTIONAL, SRBEX_DATA_IO_INFO
SRB_FUNCTION_ABORT_COMMAND (0x10) Es sollte eine SCSIMESS_ABORT Nachricht gesendet werden, um die Anforderung abzubrechen, auf die das NextSrb-Element verweist. Wenn es sich um eine getaggte Warteschlangenanforderung handelt, sollte stattdessen eine SCSIMESS_ABORT_WITH_TAG Nachricht verwendet werden. Wenn die angegebene Anforderung abgeschlossen wurde, sollte diese Anforderung normal ausgeführt werden. Erweiterte SRB-Daten sind für diese Funktion nicht 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-Meldung zurückgesetzt werden. Der Miniporttreiber sollte alle aktiven Anforderungen für den Zielcontroller ausführen. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich.
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. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich. Storport unterstützt diese Art des Zurücksetzens, der SCSI-Port jedoch nicht.
SRB_FUNCTION_RESET_BUS (0x12) Der SCSI-Bus sollte mithilfe der SCSIMESS_BUS_DEVICE_RESET-Meldung zurückgesetzt werden. Ein Miniporttreiber empfängt diese Anforderung nur, wenn für eine bestimmte Anforderung ein Timeout aufgetreten ist und eine nachfolgende Anforderung zum Abbrechen der Timeoutanforderung ebenfalls ein Timeout aufweist. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich.
SRB_FUNCTION_TERMINATE_IO (0x14) Es sollte eine SCSIMESS_TERMINATE_IO_PROCESS Nachricht gesendet werden, um die Anforderung abzubrechen, auf die das NextSrb-Element verweist. Wenn die angegebene Anforderung bereits abgeschlossen ist, sollte diese Anforderung normal ausgeführt werden. Erweiterte SRB-Daten sind für diese Funktion nicht 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. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich. HINWEIS: Diese Funktion wird von Storport nicht an den Miniport gesendet.
SRB_FUNCTION_RECEIVE_EVENT (0x03) Der HBA sollte darauf vorbereitet sein, eine asynchrone Ereignisbenachrichtigung vom adressierten Ziel zu empfangen. Das SRB DataBuffer-Element 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 die gesamte Systemaktivität tatsächlich beendet wird. Die letzte Benachrichtigung zum Herunterfahren erfolgt jedoch nach der letzten Start-E/A. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich.
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 CachesData im PORT_CONFIGURATION_INFORMATION für den HBA auf TRUE festgelegt wurde. Erweiterte SRB-Daten sind für diese Funktion nicht erforderlich.
SRB_FUNCTION_IO_CONTROL (0x02) Die Anforderung ist eine E/A-Steuerungsanforderung, die aus einer Benutzermodusanwendung mit einem dedizierten HBA stammt. Der SRB DataBuffer zeigt auf einen SRB_IO_CONTROL-Header gefolgt vom Datenbereich. Der Wert in DataBuffer kann vom Treiber unabhängig vom Wert von MapBuffers verwendet werden. Nur die Member SRB Function, SrbFlags, TimeOutValue, DataBuffer und DataTransferLength sind gültig, zusammen mit dem SrbExtension-Member , wenn der Miniporttreiber bei der Initialisierung SRB-Erweiterungen angefordert hat. Wenn ein Miniporttreiber einen anwendungsspezifischen HBA steuert, damit er diese Anforderung unterstützt, sollte der Miniporttreiber die Anforderung ausführen und den betriebssystemspezifischen Porttreiber benachrichtigen, wenn der SRB abgeschlossen ist. Dabei wird der normale Mechanismus von Aufrufen von StorPortNotification mit RequestComplete und NextRequest verwendet.
SRB_FUNCTION_LOCK_QUEUE (0x18) Enthält Anforderungen, die vom Porttreiber für eine bestimmte logische Einheit in die Warteschlange gestellt werden, normalerweise während einer Energieanforderung verarbeitet wird. Nur die Elemente SRB Length, Function, SrbFlags und OriginalRequest sind gültig. Wenn die Warteschlange gesperrt ist, werden nur Anforderungen mit SrbFlags ORed 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 war. Die SrbFlags der Entsperranforderung müssen mit SRB_FLAGS_BYPASS_LOCKED_QUEUE ausgelöst werden. Nur die Elemente SRB Length, Function, SrbFlags und OriginalRequest 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. Weitere Informationen finden Sie in der MINIPORT_DUMP_POINTERS-Struktur . Ein physischer Miniporttreiber muss das STOR_FEATURE_DUMP_POINTERS-Flag im FeatureSupport-Member seines HW_INITIALIZATION_DATA festlegen, um eine Anforderung mit dieser Funktion zu empfangen.
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 zugewiesen wurden.
SRB_FUNCTION_QUIESCE_DEVICE (0x1A) Die Anforderung erfolgt nur zwischen einer Speicherklasse und dem Speicherporttreiber und wird nicht an den Miniport gesendet. Diese Funktion dient als Warten des Klassentreibers auf den Porttreiber, um alle ausstehenden E/A-Vorgänge abzuschließen.
SRB_FUNCTION_PNP (0x25) Die Anforderung ist eine erweiterte PnP-Anforderung, die als SRBEX_DATA_PNP-Struktur formatiert ist. Der Offset zu erweiterten Anforderungsdaten befindet sich unter SrbExDataOffset[0].
SRB_FUNCTION_POWER (0x24) Die Anforderung ist eine power extended Request, die als SRBEX_DATA_POWER-Struktur formatiert ist. Der Offset zu erweiterten Anforderungsdaten befindet sich unter SrbExDataOffset[0].
SRB_FUNCTION_WMI (0x17) Die Anforderung ist eine power extended Request, die als SRBEX_DATA_WMI-Struktur formatiert ist. Der Offset zu erweiterten Anforderungsdaten befindet sich unter SrbExDataOffset[0].

SrbFlags

Gibt verschiedene Parameter und Optionen für die Anforderung an. SrbFlags ist schreibgeschützt, 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. Für dieses Element können mindestens eine dieser Flags festgelegt sein.

Flag Bedeutung
SRB_FLAGS_QUEUE_ACTION_ENABLE Gibt an, dass Aktionen für getaggte Warteschlangen aktiviert werden sollen.
SRB_FLAGS_DISABLE_AUTOSENSE Gibt an, dass Anforderungssinninformationen nicht zurückgegeben werden sollten.
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 eine der vorherigen sein kann, da beide vorherigen Flags festgelegt sind. Wenn dieses Flag festgelegt ist, sollte ein Miniporttreiber die Übertragungsrichtung bestimmen, indem er die Datenphase für das Ziel auf dem SCSI-Bus untersucht.
SRB_FLAGS_NO_DATA_TRANSFER Gibt an, dass bei dieser Anforderung keine Datenübertragung erfolgt. Wenn dies festgelegt ist, sind die Flags SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN und SRB_FLAGS_UNSPECIFIED_DIRECTION eindeutig.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER Gibt an, dass der HBA nach Möglichkeit asynchrone E/A-Vorgänge für diese Übertragungsanforderung ausführen soll. Wenn synchrone E/A zuvor ausgehandelt wurde, muss der HBA für asynchrone E/A-Vorgänge neu verhandeln, bevor die Übertragung ausgeführt wird.
SRB_FLAGS_DISABLE_DISCONNECT Gibt an, dass der HBA das Ziel während der Verarbeitung dieser Anforderung nicht vom SCSI-Bus trennen darf.
SRB_FLAGS_BYPASS_FROZEN_QUEUE Dieses Flag ist für Miniporttreiber irrelevant.
SRB_FLAGS_NO_QUEUE_FREEZE Dieses Flag ist für Miniporttreiber irrelevant.
SRB_FLAGS_IS_ACTIVE Dieses Flag ist für Miniporttreiber irrelevant.
SRB_FLAGS_ALLOCATED_FROM_ZONE Dieses Flag ist für Miniporttreiber irrelevant und für neue Windows-Klassentreiber veraltet. Für einen Windows-Legacyklassentreiber gibt dies an, ob der SRB aus einem Zonenpuffer zugeordnet wurde. Wenn dieses Flag festgelegt ist, muss der Klassentreiber ExInterlockedFreeToZone aufrufen, um den SRB freizugeben. Andernfalls muss ExFreePool aufgerufen werden. Neue Klassentreiber sollten Lookaside-Listen anstelle von Zonenpuffern verwenden.
SRB_FLAGS_SGLIST_FROM_POOL Dieses Flag ist für Miniporttreiber irrelevant. Für den Klassentreiber gibt dies an, dass Arbeitsspeicher für eine Scatter/Gather-Liste aus einem nicht auslagerten Pool zugewiesen wurde. Wenn dieses Flag festgelegt ist, muss der Klassentreiber ExFreePool aufrufen, um den Arbeitsspeicher nach Abschluss des SRB freizugeben.
SRB_FLAGS_BYPASS_LOCKED_QUEUE Dieses Flag ist für Miniporttreiber irrelevant. Für den Porttreiber gibt dieses Flag an, dass die Anforderung verarbeitet werden soll, unabhängig davon, ob die Warteschlange für logische Einheiten gesperrt ist oder nicht. Ein Treiber auf höherer Ebene muss dieses Flag festlegen, um eine SRB_FUNCTION_UNLOCK_QUEUE Anforderung zu senden.
SRB_FLAGS_NO_KEEP_AWAKE Dieses Flag ist für Miniporttreiber irrelevant. Ein Windows-Klassentreiber verwendet dieses Flag, um dem Porttreiber anzugeben, dass die Anforderung fehlschlägt, anstatt das Gerät hochzuschalten, um diese Anforderung zu verarbeiten.
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 darüber informiert, dass der Sense-Datenpuffer nach dem Extrahieren der Daten freigegeben werden muss.
SRB_FLAGS_D3_PROCESSING Gibt an, dass die Anforderung Teil der D3-Verarbeitung ist. Miniports, die die Energiesteuerung der Laufzeit unterstützen, sollten storPortPoFxActivateComponent oder StorPortPoFxIdleComponent mit diesen Anforderungen nicht aufrufen.
SRB_FLAGS_ADAPTER_CACHE_ENABLE Gibt an, dass der Adapter Daten zwischenspeichern kann.

ReservedUlong2

Reserviert. Auf 0 festlegen.

RequestTag

Enthält den Warteschlangentagwert, der vom betriebssystemspezifischen Porttreiber zugewiesen wird. Wenn dieser Member für getaggte Warteschlangen verwendet wird, unterstützt der HBA interne Warteschlangen von Anforderungen an logische Einheiten (LUs), und der Miniporttreiber legt TaggedQueueing im PORT_CONFIGURATION_INFORMATION für diesen HBA auf TRUE fest.

RequestPriority

Die Prioritätszuweisung für den SRB.

RequestAttribute

Gibt die Getaggt-Warteschlangennachricht an, die beim Festlegen des SRB_FLAGS_QUEUE_ACTION_ENABLE-Flags verwendet werden soll. Der Wert kann einer der folgenden Sein: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST oder SRB_ORDERED_QUEUE_TAG_REQUEST.

TimeOutValue

Gibt das Intervall in Sekunden an, das die Anforderung ausführen kann, bevor der betriebssystemspezifische Porttreiber ein Timeout für möglich hält. Miniporttreiber sind nicht erforderlich, um Anforderungen zu zeitieren, da der Porttreiber dies bereits tut.

DUMMYUNIONNAME

Union mit Windows 10 und höheren Feldern.

DUMMYUNIONNAME.SystemStatus

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

DUMMYUNIONNAME.RequestTagHigh4Bytes

Wird verwendet, um hohe vier Bytes des eindeutigen Tags zu speichern, wenn die Funktion für eindeutige Tags aktiviert ist.

SystemStatus

Wird vom Storport-Treiber anstelle von SrbStatus verwendet, um die status der abgeschlossenen Anforderung zu melden, wenn die Anforderung nicht an den Miniporttreiber übermittelt werden kann. In solchen Fällen ist SrbStatus auf SRB_STATUS_INTERNAL_ERROR festgelegt. Dieses Element wird ausschließlich für die Kommunikation zwischen 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_BLOCK interpretieren. Auf 0 festlegen.

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 eine Unterausführung auftritt, muss der Miniporttreiber diesen Member auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.

DataBuffer

Zeigt auf den Datenpuffer. Miniporttreiber sollten diesen Wert nicht als Datenzeiger verwenden, es sei denn, der Miniporttreiber legt MapBuffers im PORT_CONFIGURATION_INFORMATION für den HBA auf TRUE fest. Bei SRB_FUNCTION_IO_CONTROL Anforderungen können Miniporttreiber diesen Wert jedoch unabhängig vom Wert von MapBuffers als Datenzeiger verwenden.

ZeroGuard2

Ein Schutzbereich zum Schutz vor Treibern, die diese Struktur als SCSI_REQUEST_BLOCK interpretieren. Auf 0 festlegen.

OriginalRequest

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

ClassContext

Verweist auf einen Klassentreiberkontext für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

PortContext

Verweist auf einen Porttreiberkontext für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

MiniportContext

Zeigt auf die Srb-Erweiterung. Ein Miniporttreiber darf diesen Member nicht verwenden, wenn er SrbExtensionSize in HW_INITIALIZATION_DATA auf 0 festgelegt hat. Der Arbeitsspeicher bei MiniportContext wird nicht vom betriebssystemspezifischen Porttreiber initialisiert, und der HBA kann direkt auf die vom Miniporttreiber ermittelten Daten zugreifen. Die entsprechende physische Adresse kann abgerufen werden, indem Sie StorportGetPhysicalAddress mit dem MiniportContext-Zeiger aufrufen.

NextSrb

Gibt den STORAGE_REQUEST_BLOCK an, für den 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, das den Speicherort erweiterter Datenblöcke für den SRB angibt. Dieses Array ist leer, wenn NumSrbExData = 0.

Hinweise

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, die die SCSI_REQUEST_BLOCK-Struktur verwenden, wird fortgesetzt.

Wenn NumSrbExData> 0 ist, 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 von AddressOffset angegeben wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Kopfzeile minitape.h (einschließlich Storport.h, Srb.h, Minitape.h)

Weitere Informationen