SCSI_WMI_REQUEST_BLOCK Struktur (srb.h)
Diese Struktur ist eine spezielle Version eines SCSI_REQUEST_BLOCK für die Verwendung mit WMI-Befehlen.
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) |