Freigeben über


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)

Weitere Informationen

ExFreePool

ExInterlockedFreeToZone

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_WMI_REQUEST_BLOCK

SRB_IO_CONTROL

ScsiPortGetPhysicalAddress

ScsiPortGetSrb

ScsiPortIoMapTransfer

ScsiPortNotification