STORAGE_REQUEST_BLOCK-Struktur (storport.h)
Die STORAGE_REQUEST_BLOCK ist die Struktur des erweiterten SCSI-Anforderungsblocks (SRB). Die -Struktur ermöglicht das Hinzufügen erweiterter Daten, die einer SRB-Funktion zugeordnet sind.
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 _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 für die Kompatibilität mit der SCSI_REQUEST_BLOCK-Struktur an. Dies entspricht dem Offset des Signaturelements 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-Element .
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 abgeschlossen wurde, indem StorPortNotification mit RequestComplete aufgerufen wird. Der Wert dieses Members kann einer der folgenden sein:
Wert | Bedeutung |
---|---|
SRB_STATUS_PENDING | Gibt an, dass die Anforderung ausgeführt wird. Der betriebssystemspezifische Porttreiber initialisiert SrbStatus für diesen Wert. |
SRB_STATUS_SUCCESS | Gibt an, dass die Anforderung erfolgreich abgeschlossen wurde. |
SRB_STATUS_ABORTED | Gibt an, dass die Anforderung gemäß Anweisung des Porttreibers abgebrochen wurde. Ein Miniporttreiber legt diesen 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 diese 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 sendet 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 das Zeitlimit der Anforderung an. |
SRB_STATUS_SELECTION_TIMEOUT | Gibt an, dass die SCSI-Geräteauswahl ein Timeout hat. |
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 während der Ausführung dieser Anforderung eine Busrücksetzung erfolgt ist. |
SRB_STATUS_PARITY_ERROR | Gibt an, dass ein Paritätsfehler auf dem SCSI-Bus aufgetreten ist und dass ein Wiederholungsversuch fehlgeschlagen 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 Anforderungssuche 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über- oder Unterlauffehler aufgetreten ist. Der Miniporttreiber muss auch das DataTransferLength-Element des SRB aktualisieren, um anzugeben, wie viele Daten tatsächlich übertragen wurden, wenn eine Unterausfü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 beim Fehler der illegalen 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 Code der SRB-Funktion 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-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 eingefroren 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 Bytes, einschließlich dieser Struktur, adresse und aller 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 Strukturen für erweiterte Anforderungsblocks 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_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_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_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_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_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_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_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]. |
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_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_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_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_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_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. |
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 Laufzeitenergiesteuerung 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. Kann einer der folgenden Werte sein.
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 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
Eingebettete Union.
DUMMYUNIONNAME.SystemStatus
Dient zum Speichern von Systemfehlerinformationen status in SrbStatus-Fehlerbedingungen (z. B. SRB_STATUS_INTERNAL_ERROR).
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) | Verfügbar in Windows 8 und höheren Versionen von Windows. |
Kopfzeile | storport.h (einschließlich Storport.h, Srb.h, Minitape.h) |