Freigeben über


SCSI_WMI_REQUEST_BLOCK Struktur (srb.h)

Diese Struktur ist eine spezielle Version eines SCSI_REQUEST_BLOCK für die Verwendung mit WMI-Befehlen.

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_WMI_REQUEST_BLOCK {
  USHORT Length;
  UCHAR  Function;
  UCHAR  SrbStatus;
  UCHAR  WMISubFunction;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  Reserved1;
  UCHAR  WMIFlags;
  UCHAR  Reserved2[2];
  ULONG  SrbFlags;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  PVOID  DataPath;
  PVOID  Reserved3;
  PVOID  OriginalRequest;
  PVOID  SrbExtension;
  ULONG  Reserved4;
  ULONG  Reserved6;
  UCHAR  Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;

Member

Length

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

Function

SRB_FUNCTION_WMI, der angibt, dass es sich bei der Anforderung um eine WMI-Anforderung handelt. Wenn dieser Member nicht auf SRB_FUNCTION_WMI festgelegt ist, sollte der Miniporttreiber die Anforderung nicht ausführen.

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 ein beliebiger Wert sein, der für SrbStatus in SCSI_REQUEST_BLOCK aufgeführt ist.

WMISubFunction

Gibt die auszuführende WMI-Aktion an. Ein Miniporttreiber ruft ScsiPortWmiDispatchFunction auf, wobei MinorFunction auf diesen Wert festgelegt ist. Der Unterfunktionswert entspricht der WMI-Neben-IRP-Nummer, die den WMI-Vorgang identifiziert.

PathId

Gibt den SCSI-Port oder Bus für die Anforderung an. Dieser Wert ist nullbasiert. Wenn SRB_WMI_FLAGS_ADAPTER_REQUEST in WMIFlags festgelegt ist, ist dieser Member reserviert.

TargetId

Gibt den Zielcontroller oder das Zielgerät auf dem Bus an. Wenn SRB_WMI_FLAGS_ADAPTER_REQUEST in WMIFlags festgelegt ist, ist dieser Member reserviert.

Lun

Gibt die Nummer der logischen Einheit des Geräts an. Wenn SRB_WMI_FLAGS_ADAPTER_REQUEST in WMIFlags festgelegt ist, ist dieser Member reserviert.

Reserved1

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar.

WMIFlags

Gibt an, dass die WMI-Anforderung für den Adapter gilt, wenn SRB_WMI_FLAGS_ADAPTER_REQUEST festgelegt ist und pathId, TargetId und Lun reserviert sind. Andernfalls ist WMIFlagsNULL, was angibt, dass die Anforderung für das gerät gilt, das durch PathId, TargetId und Lun angegeben wird.

Reserved2[2]

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar.

SrbFlags

Gibt verschiedene Parameter und Optionen für die Anforderung an. SrbFlags ist schreibgeschützt. Dieses Element wird auf mindestens eine der folgenden Flags festgelegt, die zusammen ORed sind:

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_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.

DataTransferLength

Gibt die Größe des Datenpuffers in Bytes an. Ein Miniporttreiber ruft ScsiPortWmiDispatchFunction auf, wobei BufferSize auf diesen Wert festgelegt ist. 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 sind nicht erforderlich, um Anforderungen zu zeitieren, da der Porttreiber dies bereits tut.

DataBuffer

Zeigt auf den Datenpuffer. Ein Miniporttreiber ruft ScsiPortWmiDispatchFunction auf, wobei Puffer auf diesen Wert festgelegt ist. Miniporttreiber können diesen Wert unabhängig vom Wert von MapBuffers im PORT_CONFIGURATION_INFORMATION für den HBA als Datenzeiger verwenden. Ein Miniporttreiber kann daten nicht direkt mit DMA in den Puffer übertragen.

DataPath

Gibt den WMI-Datenpfad für diese Anforderung an. Ein Miniporttreiber ruft ScsiPortWmiDispatchFunction auf, wobei DataPath auf diesen Wert festgelegt ist.

Reserved3

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar.

OriginalRequest

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

SrbExtension

Zeigt auf die Srb-Erweiterung. Ein Miniporttreiber darf diesen Member nicht verwenden, wenn er SrbExtensionSize im 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 abgerufen werden, indem Sie ScsiPortGetPhysicalAddress mit dem SrbExtension-Zeiger aufrufen.

Reserved4

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar.

Reserved6

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar. Dieser Member ist ab Windows Server 2003 mit SP1 gültig.

Reserved5[16]

Für die Systemverwendung reserviert und nicht für die Verwendung durch Miniporttreiber verfügbar.

Hinweise

Windows NT-Speicherklassen- und Filtertreiber können WMI-SRBs an den Systemporttreiber senden. Der Systemporttreiber verarbeitet bestimmte WMI-Anforderungen im Auftrag von Miniporttreibern. Wenn der Porttreiber eine WMI-Anforderung nicht verarbeiten kann, leitet er die Anforderung an den Miniporttreiber weiter.

Ein Miniporttreiber empfängt WMI-Anforderungen vom Porttreiber nur, wenn der Miniporttreiber WmiDataProvider in der PORT_CONFIGURATION_INFORMATION-Struktur festgelegt hat. Wenn der Miniporttreiber eine Anforderung unterstützt, sollte er sie verarbeiten und die Anforderung abschließen, indem er zweimal ScsiPortNotification aufruft, zuerst mit RequestComplete und dann mit NextRequest (oder NextLuRequest).

Informationen zur Unterstützung von WMI in Miniporttreibern finden Sie unter Windows-Verwaltungsinstrumentation.

Anforderungen

Anforderung Wert
Header srb.h (einschließlich Storport.h, Srb.h, Storport.h, Minitape.h)

Weitere Informationen

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction