Freigeben über


SCSI_REQUEST_BLOCK Struktur (srb.h)

Die SCSI_REQUEST_BLOCK Struktur ist einer SRB-Funktion zugeordnet.

Anmerkung

Die SCSI-Porttreiber- und SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht verfügbar sein. Stattdessen empfehlen wir die Verwendung des Storport-Treibers und Storport Miniport Treibermodelle.

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;

Angehörige

Length

Gibt die Größe in Byte dieser Struktur an.

Function

Gibt den auszuführenden Vorgang an, bei dem es sich um einen der folgenden Werte handeln kann:

Wert Operation
SRB_FUNCTION_EXECUTE_SCSI (0x00) Eine SCSI-Geräte-E/A-Anforderung sollte auf der logischen Zieleinheit ausgeführt werden.
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. Nur die SRB Function, PathId, TargetId, Lunund NextSrb Member 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 Nachricht zurückgesetzt werden. Der Miniporttreiber sollte alle aktiven Anforderungen für den Zielcontroller ausführen. Nur die SRB Function, TargetIdund PathId Member 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 Function, PathId, TargetIdund Lun Member des SRB sind gültig. Storport unterstützt diese Art der Zurücksetzung, aber SCSI-Port nicht.
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. Nur die SRB Function und PathId Member sind gültig.
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. Nur die SRB Function, PathId, TargetId, Lunund NextSrb Member sind gültig.
SRB_FUNCTION_RELEASE_RECOVERY (0x11) Eine SCSIMESS_RELEASE_RECOVERY Nachricht sollte an den Zielcontroller gesendet werden. Nur die SRB Function, PathId, TargetIdund Lun Member sind gültig.
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.
SRB_FUNCTION_SHUTDOWN (0x07) Das System wird heruntergefahren. Diese Anforderung wird nur an einen Miniporttreiber gesendet, wenn sie CachesData- auf TRUE- im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt hat. Ein solcher 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. Nur die SRB Function, PathId, TargetId und Lun Member 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 sie CachesData- auf "TRUE" im PORT_CONFIGURATION_INFORMATION für die HBA festgelegt hat. Nur die SRB Function, PathId, TargetId und Lun Member sind gültig.
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, sodass diese Anforderung unterstützt wird, sollte der Miniporttreiber die Anforderung ausführen und den betriebssystemspezifischen Porttreiber benachrichtigen, wenn der SRB abgeschlossen ist. Verwenden Sie dazu den normalen Mechanismus von Aufrufen an ScsiPortNotification mit RequestComplete und NextRequest.
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_QUEUE gesperrt wurde. Die SrbFlags- der Entsperranforderung muss mit SRB_FLAGS_BYPASS_LOCKED_QUEUE aufgehoben werden. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member 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 wurde. Die SrbFlags- der Entsperranforderung muss mit SRB_FLAGS_BYPASS_LOCKED_QUEUE aufgehoben werden. Nur die SRB Length, Function, SrbFlagsund OriginalRequest Member 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. 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.

SrbStatus

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

Wert Bedeutung
SRB_STATUS_PENDING Gibt an, dass die Anforderung ausgeführt wird. Der betriebssystemspezifische Porttreiber initialisiert SrbStatus- zu diesem Wert.
SRB_STATUS_SUCCESS Gibt an, dass die Anforderung erfolgreich abgeschlossen wurde.
SRB_STATUS_ABORTED Gibt an, dass die Anforderung vom Porttreiber abgebrochen wurde. Ein Miniporttreiber legt diesen Status im NextSrb- für eine erfolgreiche SRB_FUNCTION_ABORT_COMMAND-Anforderung fest.
SRB_STATUS_ABORT_FAILED 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 Gibt an, dass die Anforderung mit einem Fehler im SCSI-Busstatus 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 SCSI-Porttreiber die Anforderung nicht an den Miniporttreiber oder das Zielgerät übermitteln konnte. In solchen Fällen wird der Status in InternalStatusaufgezeichnet.
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 Timeout der Anforderung an.
SRB_STATUS_SELECTION_TIMEOUT Gibt das Timeout der SCSI-Geräteauswahl an.
SRB_STATUS_COMMAND_TIMEOUT Gibt an, dass der Befehl nicht innerhalb des Zeitlimits abgeschlossen wurde.
SRB_STATUS_MESSAGE_REJECTED 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 Gibt an, dass eine Buszurücksetzung während der Ausführung dieser Anforderung aufgetreten ist.
SRB_STATUS_PARITY_ERROR Gibt an, dass im SCSI-Bus ein Paritätsfehler aufgetreten ist und ein Wiederholungsfehler aufgetreten ist.
SRB_STATUS_REQUEST_SENSE_FAILED Gibt an, dass der Befehl für die Anforderungsoptimierung fehlgeschlagen ist. Dies wird nur zurückgegeben, wenn die HBA die automatische Anforderungsoptimierung ausführt und der Miniporttreiber AutoRequestSense- auf TRUE- im PORT_CONFIGURATION_INFORMATION für diese HBA festgelegt wird.
SRB_STATUS_NO_HBA Gibt an, dass die HBA nicht reagiert.
SRB_STATUS_DATA_OVERRUN 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 Gibt an, dass das Ziel unerwartet getrennt wurde.
SRB_STATUS_PHASE_SEQUENCE_FAILURE Gibt an, dass der HBA einen fehler bei ungültigen Phasensequenzfehlern festgestellt hat.
SRB_STATUS_REQUEST_FLUSHED Gibt an, dass die Anforderung für den Status beendet wurde.
SRB_STATUS_BAD_FUNCTION Gibt an, dass der SRB---Code 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-Busstatus abgeschlossen wurde und dass die SCSI INITIATE RECOVERY-Nachricht empfangen wurde.
SRB_STATUS_AUTOSENSE_VALID Gibt informationen an, die im SenseInfoBuffer- zurückgegeben werden, ist gültig.
SRB_STATUS_QUEUE_FROZEN 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.

ScsiStatus

Gibt den SCSI-Status zurück, der vom HBA- oder Zielgerät zurückgegeben wurde. Wenn der Status nicht ERFOLGREICH ist, sollte der Miniporttreiber den SrbStatus- Mitglied 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 Gerät auf dem Bus an.

Lun

Gibt die logische Einheitennummer des Geräts an.

QueueTag

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

QueueAction

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 Werte sein: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST oder SRB_ORDERED_QUEUE_TAG_REQUEST gemäß der SCSI-Spezifikation definiert.

CdbLength

Gibt die Größe in Byte des SCSI-2- oder höher-Befehlsdeskriptorblocks an.

SenseInfoBufferLength

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

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_OUT zu aktualisieren. Dieses Element kann mindestens eins der folgenden Flags festlegen:

Flagge Bedeutung
SRB_FLAGS_QUEUE_ACTION_ENABLE Gibt an, dass markierte Warteschlangenaktionen aktiviert werden sollen.
SRB_FLAGS_DISABLE_AUTOSENSE Gibt an, dass Informationen zur Anforderungsoptimierung 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 eines der vorherigen Flags sein könnte, 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. Wenn es sich bei der 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 ScsiPortIoMapTransferaufruft.
SRB_FLAGS_NO_DATA_TRANSFER Gibt keine Datenübertragung mit dieser Anforderung an. Wenn dies festgelegt ist, sind die Flags SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN und SRB_FLAGS_UNSPECIFIED_DIRECTION klar.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER 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_DISABLE_DISCONNECT Gibt an, dass das Ziel während der Verarbeitung dieser Anforderung nicht vom SCSI-Bus getrennt werden soll.
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 ist für aktuelle 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 Ist für Miniporttreiber irrelevant. Für einen Windows-Klassentreiber gibt dies an, dass speicher für eine Punkt/Gather-Liste aus einem nicht ausseitigen 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 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. Ein Treiber auf höherer Ebene muss dieses Kennzeichen 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 anzugeben, dass der Porttreiber im Leerlauf angezeigt wird, anstatt das Gerät zum Verarbeiten dieser Anforderung zu aktivieren.
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 informiert, dass er den Sinnesdatenpuffer nach dem Extrahieren der Daten freigeben muss.

DataTransferLength

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

TimeOutValue

Gibt das Intervall in Sekunden an, das von der Anforderung ausgeführt werden kann, bevor der betriebssystemspezifische Porttreiber das Timeout in Betracht ziehen kann. Miniporttreiber sind für Zeitanforderungen nicht erforderlich, da der Porttreiber bereits ausgeführt wird.

DataBuffer

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

SenseInfoBuffer

Verweist auf den Anforderungsoptimierungspuffer. Ein Miniporttreiber ist nicht erforderlich, um anforderungsbezogene Daten nach einer CHECK-BEDINGUNG 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 das IRP für diese Anforderung. Dieses Element ist für Miniporttreiber irrelevant.

SrbExtension

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

InternalStatus

Wird vom SCSI-Porttreiber anstelle von SrbStatus-verwendet, 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_ERROR festgelegt. Dieses Mitglied wird ausschließlich für die Kommunikation zwischen dem SCSI-Port und dem Klassentreiber verwendet und sollte nicht von Miniporttreibern verwendet werden.

QueueSortKey

Gibt den Offset vom Anfang des Mediums oder null abhängig vom Typ des Zielgeräts an.

LinkTimeoutValue

Linktimeoutwert.

Reserved

Reserviert.

Cdb[16]

Gibt den SCSI-2- oder höher-Befehlsdeskriptorblock an, der an das Zielgerät gesendet werden soll.

Bemerkungen

Windows-Speicherklassen- und Filtertreiber können SRBs mit den folgenden Function- Werten an den Systemporttreiber senden:

  • SRB_FUNCTION_CLAIM_DEVICE anzugeben, dass der Klassentreiber ein peripheriegerät unterstützt, das im SRB durch die PathId-, TargetId-und Lun Member identifiziert wird.
  • SRB_ATTACH_DEVICE, um anzugeben, dass ein Filtertreiber, der über einem Klassentreiber angeordnet ist, Anforderungen für ein bestimmtes Peripheriegerät zuerst an den Filtertreiber weitergeleitet werden soll.
  • SRB_FUNCTION_RELEASE_DEVICE anzugeben, dass ein Klassentreiber seinen Anspruch auf ein bestimmtes Peripheriegerät freigibt.
  • SRB_FUNCTION_FLUSH_QUEUE, den Abbruch aller Anforderungen anzufordern, die derzeit im Porttreiber an ein bestimmtes Peripheriegerät in die Warteschlange gestellt werden.
  • SRB_FUNCTION_RELEASE_QUEUE, um anzufordern, dass der Porttreiber eine fixierte Warteschlange von Anforderungen an ein bestimmtes Peripheriegerät freigibt.

Die oben SRB_FUNCTION_XXX- werden nie in SRBs festgelegt, die an SCSI-Miniporttreiber gesendet werden. SRB_FUNCTION_REMOVE_DEVICE ist für die Verwendung in zukünftigen Versionen des Systems definiert. Sie 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 diese, um WMI-Anforderungen an den Porttreiber zu senden.

Anforderungen

Anforderung Wert
Header- srb.h (include Srb.h, Minitape.h, Storport.h)

Siehe auch

ExFreePool-

ExInterlockedFreeToZone-

HW_INITIALIZATION_DATA (SCSI)-

PORT_CONFIGURATION_INFORMATION (SCSI)-

SCSI_WMI_REQUEST_BLOCK

SRB_IO_CONTROL

ScsiPortGetPhysicalAddress-

ScsiPortGetSrb-

ScsiPortIoMapTransfer-

ScsiPortNotification-