ScsiPortWmiDispatchFunction-Funktion (scsiwmi.h)
Die ScsiPortWmiDispatchFunction-Routine ist eine Dispatchroutine für Miniporttreiber, die WMI unterstützen.
Syntax
BOOLEAN ScsiPortWmiDispatchFunction(
[in] PSCSI_WMILIB_CONTEXT WmiLibInfo,
[in] UCHAR MinorFunction,
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] PVOID DataPath,
[in] ULONG BufferSize,
[in] PVOID Buffer
);
Parameter
[in] WmiLibInfo
Zeiger auf eine SCSI_WMILIB_CONTEXT-Struktur , die Registrierungsinformationen für die Daten- und Ereignisblöcke eines Miniporttreibers enthält und Einstiegspunkte für die Rückrufroutinen der WMI-Bibliothek des Miniporttreibers definiert.
[in] MinorFunction
Gibt die auszuführende WMI-Aktion an. Der Miniporttreiber legt MinorFunction aus dem Eingabe-SRB auf Srb-WmiSubFunction> fest.
[in] DeviceContext
Zeiger auf einen vom Miniporttreiber definierten Kontextwert. Der Porttreiber übergibt DeviceContext an die HwScsiWmiXxx-Rückrufroutine des Miniporttreibers. Dieser Wert verweist in der Regel auf eine HW_DEVICE_EXTENSION-Struktur.
[in] RequestContext
Zeiger auf eine SCSIWMI_REQUEST_CONTEXT-Struktur, die Kontextinformationen für den WMI-SRB enthält. Wenn der SRB stiften kann, muss der Miniporttreiber diese Struktur aus der SRB-Erweiterung zuordnen, da der Anforderungskontext gültig bleiben muss, bis ScsiPortWmiPostProcess mit der endgültigen SRB-Rückgabe status und Puffergröße zurückgegeben wird. ScsiPortWmiDispatchFunction übergibt RequestContext an die Rückrufroutine des Miniporttreibers, die diese Anforderung verarbeitet.
[in] DataPath
Zeiger auf eine GUID, die den der Anforderung zugeordneten Datenblock darstellt. Der Miniporttreiber legt DataPath aus dem Eingabe-SRB auf Srb-DataPath> fest.
[in] BufferSize
Gibt die Größe des Datenpuffers in Byte an. Der Miniporttreiber legt BufferSize vom Eingabe-SRB auf Srb-DataTransferLength> fest.
[in] Buffer
Zeiger auf den Datenpuffer. Der Miniporttreiber legt Buffer aus dem Eingabe-SRB auf Srb-DataBuffer> fest.
Rückgabewert
ScsiPortWmiDispatchFunction gibt TRUE zurück, wenn die Anforderung aussteht, oder FALSE , wenn die Anforderung abgeschlossen wurde.
Hinweise
Wenn ein Miniporttreiber einen SRB empfängt, in dem der Function-Member auf SRB_FUNCTION_WMI festgelegt ist, ruft er ScsiPortWmiDispatchFunction mit Anforderungsparametern auf, einschließlich eines Zeigers auf eine initialisierte SCSI_WMILIB_CONTEXT-Struktur. Diese Struktur enthält Informationen zu den Daten- und Ereignisblöcken des Miniporttreibers und definiert Einstiegspunkte für die HwScsiWmiXxx-Rückrufroutinen des Miniporttreibers.
ScsiPortWmiDispatchFunction bestätigt, dass der SRB eine WMI-Anforderung ist, und bestimmt, ob der in der Anforderung angegebene Block für den Miniporttreiber gültig ist. Wenn diese Bedingungen erfüllt sind, verarbeitet ScsiPortWmiDispatchFunction den SRB, indem der entsprechende HwScsiWmiXxx-Einstiegspunkt in der SCSI_WMILIB_CONTEXT-Struktur des Miniporttreibers aufgerufen wird. Wenn der Miniporttreiber keinen Einstiegspunkt für eine optionale HwScsiWmiXxx-Routine definiert, verarbeitet der Porttreiber die Anforderung.
In beiden Fällen sollte der Miniporttreiber nach der Rückgabe von ScsiPortWmiDispatchFunction die folgenden Schritte für Anforderungen ausführen, die er nicht angibt:
- Legen Sie Srb->DataTransferLength auf den Wert fest, der von ScsiPortWmiGetReturnSize zurückgegeben wird.
- Legen Sie Srb->SrbStatus auf den von ScsiPortWmiGetReturnStatus zurückgegebenen Wert fest.
- Aufrufen von ScsiPortNotification mit RequestComplete und erneut mit NextRequest
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | scsiwmi.h (einschließlich Miniport.h, Scsi.h) |