SCSI_REQUEST_BLOCK-Struktur (srb.h)
Die SCSI_REQUEST_BLOCK-Struktur ist einer SRB-Funktion zugeordnet.
Hinweis
Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht mehr verfügbar sein. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.
Syntax
typedef struct _SCSI_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;
Member
Length
Gibt die Größe dieser Struktur in Bytes an.
Function
Gibt den auszuführenden Vorgang an, der einer der folgenden Werte sein kann:
Wert | Vorgang |
---|---|
SRB_FUNCTION_EXECUTE_SCSI (0x00) | Eine SCSI-Geräte-E/A-Anforderung sollte für die logische Zieleinheit ausgeführt werden. |
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. Nur die Member "SRB Function", "PathId", "TargetId", "Lun" und "NextSrb " 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-Meldung zurückgesetzt werden. Der Miniporttreiber sollte alle aktiven Anforderungen für den Zielcontroller ausführen. Nur die Member "SRB Function", "TargetId" und "PathId " 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 Elemente Function, PathId, TargetId und Lun des SRB sind gültig. 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. Nur die Elemente SRB-Funktion und PathId sind gültig. |
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. Nur die Member "SRB Function", "PathId", "TargetId", "Lun" und "NextSrb " sind gültig. |
SRB_FUNCTION_RELEASE_RECOVERY (0x11) | Eine SCSIMESS_RELEASE_RECOVERY Nachricht sollte an den Zielcontroller gesendet werden. Nur die Member "SRB Function", "PathId", "TargetId" und "Lun " sind gültig. |
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. |
SRB_FUNCTION_SHUTDOWN (0x07) | Das System wird heruntergefahren. Diese Anforderung wird nur an einen Miniporttreiber gesendet, wenn CachesData im PORT_CONFIGURATION_INFORMATION für den HBA auf TRUE festgelegt wurde. Ein solcher Miniporttreiber kann mehrere dieser Benachrichtigungen erhalten, bevor die gesamte Systemaktivität tatsächlich beendet wird. Die letzte Benachrichtigung zum Herunterfahren erfolgt jedoch nach der letzten Start-E/A. Nur die Elemente SRB-Funktion, PathId, TargetId und Lun 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 CachesData im PORT_CONFIGURATION_INFORMATION für den HBA auf TRUE festgelegt wurde. Nur die Elemente SRB-Funktion, PathId, TargetId und Lun sind gültig. |
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 ScsiPortNotification 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, in der Regel während der Verarbeitung einer Energieanforderung. 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_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. |
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 ScsiPortNotification 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 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 übermittelt 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 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 HBA die automatische Anforderungs sense 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-Memberniemals 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. |
ScsiStatus
Gibt den SCSI-status zurück, der vom HBA oder dem Zielgerät zurückgegeben wurde. Wenn der status nicht SUCCESS ist, sollte der Miniporttreiber den SrbStatus-Member 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 Zielgerät auf dem Bus an.
Lun
Gibt die Nummer der logischen Einheit des Geräts an.
QueueTag
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 LUs, und der Miniporttreiber legt TaggedQueueing auf TRUE im PORT_CONFIGURATION_INFORMATION für diesen HBA fest.
QueueAction
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, wie gemäß der SCSI-Spezifikation definiert.
CdbLength
Gibt die Größe des Befehlsdeskriptorblocks SCSI-2 oder höher in Bytes an.
SenseInfoBufferLength
Gibt die Größe des Request-Sense-Puffers in Bytes an. Wenn eine Unterausführung auftritt, muss der Miniporttreiber diesen Member auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.
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 der folgenden 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 Anforderungssinnsinformationen 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 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. Wenn es sich bei seinem 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 ScsiPortIoMapTransfer aufruft. |
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 | 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 für aktuelle 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 anstelle von Zonenpuffern Lookaside-Listen verwenden. |
SRB_FLAGS_SGLIST_FROM_POOL | Ist für Miniporttreiber irrelevant. Für einen Windows-Klassentreiber gibt dies an, dass Arbeitsspeicher für eine Punkt-/Sammlungsliste aus einem nicht ausseitigen Pool zugewiesen wurde. Wenn dieses Flag festgelegt ist, muss der Klassentreiber ExFreePool aufrufen, um den Arbeitsspeicher freizugeben, nachdem der SRB abgeschlossen wurde. |
SRB_FLAGS_BYPASS_LOCKED_QUEUE | 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. Ein Treiber auf höherer Ebene muss dieses Flag 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 dem Porttreiber anzuzeigen, um den Leerlauf zu melden, anstatt das Gerät zur Verarbeitung dieser Anforderung hochzuschalten. |
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 er den Sense-Datenpuffer nach dem Extrahieren der Daten freigeben muss. |
DataTransferLength
Gibt die Größe des Datenpuffers in Byte an. Wenn eine Unterausführung auftritt, muss der Miniporttreiber diesen Member auf die Anzahl der tatsächlich übertragenen Bytes aktualisieren.
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 müssen keine Zeitanforderungen ausführen, da der Porttreiber dies bereits tut.
DataBuffer
Verweist 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.
SenseInfoBuffer
Verweist auf den Anforderungsoptimierungspuffer. Ein Miniporttreiber ist nicht erforderlich, um Anforderungsoptimierungsdaten nach einer CHECK CONDITION 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 den IRP für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.
SrbExtension
Verweist auf die Srb-Erweiterung. Ein Miniporttreiber darf diesen Member nicht verwenden, wenn er SrbExtensionSize im SCSI_HW_INITIALIZATION_DATA auf 0 festgelegt hat. Der Arbeitsspeicher bei SrbExtension wird nicht vom betriebssystemspezifischen Porttreiber initialisiert, und der HBA kann direkt auf die vom Miniporttreiber ermittelten Daten zugreifen. Die entsprechende physische Adresse kann durch Aufrufen von ScsiPortGetPhysicalAddress mit dem SrbExtension-Zeiger abgerufen werden.
InternalStatus
Wird vom SCSI-Porttreiber 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. Dieser Member wird ausschließlich für die Kommunikation zwischen dem SCSI-Port und dem Klassentreiber verwendet und sollte nicht von Miniporttreibern verwendet werden.
QueueSortKey
Gibt je nach Typ des Zielgeräts den Offset vom Anfang des Mediums oder 0 (null) an.
LinkTimeoutValue
Linktimeoutwert.
Reserved
Reserviert.
Cdb[16]
Gibt den Befehlsdeskriptorblock SCSI-2 oder höher an, der an das Zielgerät gesendet werden soll.
Hinweise
Windows-Speicherklassen- und Filtertreiber können SRBs mit den folgenden Funktionswerten an den Systemporttreiber senden:
- SRB_FUNCTION_CLAIM_DEVICE, um anzugeben, dass der Klassentreiber ein Peripheriegerät unterstützt, das im SRB durch die Member PathId, TargetId und Lun identifiziert wird.
- SRB_ATTACH_DEVICE, um anzugeben, dass ein Filtertreiber, der über einem Klassentreiber liegt, Anforderungen für ein bestimmtes Peripheriegerät zuerst an den Filtertreiber weitergeleitet werden soll.
- SRB_FUNCTION_RELEASE_DEVICE, um anzugeben, dass ein Klassentreiber seinen Anspruch auf einem bestimmten Peripheriegerät freigibt.
- SRB_FUNCTION_FLUSH_QUEUE, um den Abbruch aller Anforderungen anzufordern, die sich derzeit im Porttreiber an ein bestimmtes Peripheriegerät in der Warteschlange befinden.
- SRB_FUNCTION_RELEASE_QUEUE, um anzufordern, dass der Porttreiber eine fixierte Warteschlange mit Anforderungen an ein bestimmtes Peripheriegerät freigibt.
Die obigen SRB_FUNCTION_XXX werden nie in SRBs festgelegt, die an SCSI-Miniporttreiber gesendet werden. SRB_FUNCTION_REMOVE_DEVICE wird für die Verwendung in zukünftigen Versionen des Systems definiert. Es 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 dies, um WMI-Anforderungen an den Porttreiber zu senden.
Anforderungen
Anforderung | Wert |
---|---|
Header | srb.h (include Srb.h, Minitape.h, Storport.h) |