Freigeben über


WmiSystemControl-Funktion (wmilib.h)

Die WmiSystemControl Routine ist eine Verteilerroutine für Treiber, die WMI-Bibliotheksunterstützungsroutinen zum Verarbeiten von WMI-IRPs verwenden.

Syntax

NTSTATUS WmiSystemControl(
  [in]      PWMILIB_CONTEXT         WmiLibInfo,
  [in]      PDEVICE_OBJECT          DeviceObject,
  [in, out] PIRP                    Irp,
  [out]     PSYSCTL_IRP_DISPOSITION IrpDisposition
);

Parameter

[in] WmiLibInfo

Ein Zeiger auf eine WMILIB_CONTEXT Struktur, die Registrierungsinformationen für die Datenblöcke und Ereignisblöcke eines Treibers enthält, und definiert Einstiegspunkte für die WMI-Bibliotheksrückrufroutinen des Treibers.

[in] DeviceObject

Ein Zeiger auf die DEVICE_OBJECTdes Treibers.

[in, out] Irp

Ein Zeiger auf das IRP-.

[out] IrpDisposition

Ein Zeiger auf einen Enumerationswert vom Typ SYSCTL_IRP_DISPOSITION, der angibt, wie das IRP verarbeitet wurde. WmiSystemControl diesen Wert immer festlegen, auch wenn er einen nicht erfolgreichen NTSTATUS-Code zurückgibt.

SYSCTL_IRP_DISPOSITION ist eine Aufzählung in Wmilib.h und enthält die folgenden Werte:

IrpProcessed

Das IRP wurde verarbeitet und möglicherweise abgeschlossen. Wenn die DpWmiXxx-Routine des Treibers, die von WmiSystemControl aufgerufen wird, das IRP nicht abgeschlossen hat, muss der Treiber WmiCompleteRequest- aufrufen, um das IRP abzuschließen, nachdem WmiSystemControl zurückgegeben wurde.

IrpNotCompleted

Das IRP wurde verarbeitet, aber nicht abgeschlossen, entweder weil WMI einen Fehler erkannt und das IRP mit einem entsprechenden Fehlercode eingerichtet hat, oder eine IRP_MN_REGINFO- oder IRP_MN_REGINFO_EX-Anforderung verarbeitet hat. Der Treiber muss das IRP abschließen, indem IoCompleteRequestaufgerufen wird.

IrpNotWmi

Das IRP ist keine WMI-Anforderung (d. h. WMI erkennt nicht den Nebencode des IRP). Wenn der Treiber IRP_MJ_SYSTEM_CONTROL Anforderungen mit diesem IRP_MN_XXX-verarbeitet, sollte er das IRP behandeln; andernfalls sollte der Treiber das IRP an den nächsten unteren Treiber weiterleiten. Wenn es sich bei dem Treiber um den Treiber der niedrigsten Ebene handelt, muss er das IRP abschließen.

IrpForward

Das IRP ist auf ein anderes Geräteobjekt ausgerichtet (d. h. der Geräteobjektzeiger bei Parameters.WMI.ProviderId im IRP stimmt nicht mit dem Zeiger überein, der vom Treiber in seinem Aufruf an IoWMIRegistrationControlübergeben wird). Der Treiber muss das IRP an den nächsten unteren Treiber weiterleiten. Wenn es sich bei dem Treiber um den Treiber der niedrigsten Ebene handelt, muss er das IRP abschließen.

Rückgabewert

WmiSystemControl gibt STATUS_SUCCESS oder eine der folgenden Fehlercodes zurück:

Bemerkungen

Wenn ein Treiber eine IRP_MJ_SYSTEM_CONTROL Anforderung mit einem WMI-IRP-Nebencode empfängt, ruft er WmiSystemControl mit einem Zeiger auf die WMILIB_CONTEXT Struktur des Treibers, einen Zeiger auf sein Geräteobjekt und einen Zeiger auf das IRP auf. Die WMILIB_CONTEXT-Struktur enthält Registrierungsinformationen für die Datenblöcke und Ereignisblöcke des Treibers und definiert Einstiegspunkte für die Rückrufroutinen der WMI-Bibliothek.

WmiSystemControl bestätigt, dass das IRP eine WMI-Anforderung ist und bestimmt, ob der durch die Anforderung angegebene Block für den Treiber gültig ist. Wenn ja, wird das IRP durch Aufrufen des entsprechenden DpWmiXxx-Einstiegspunkts in der WMILIB_CONTEXT Struktur des Treibers verarbeitet. WMI wird bei IRQL-PASSIVE_LEVEL ausgeführt, wenn er die DpWmiXxx-Routine des Treibers aufruft.

Ein Treiber muss bei IRQL-PASSIVE_LEVEL ausgeführt werden, wenn er eine IRP_MJ_SYSTEM_CONTROL Anforderung an den nächsten niedrigeren Treiber weiterleitet.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows 2000 und höheren Versionen von Windows.
Zielplattform- Universal
Header- wmilib.h (einschließen Wmilib.h)
Library Wmilib.lib
IRQL- PASSIVE_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln WmiComplete(wdm)

Siehe auch

DpWmiExecuteMethod

DpWmiFunctionControl-

DpWmiQueryDataBlock-

DpWmiQueryReginfo

DpWmiSetDataBlock-

DpWmiSetDataItem-

IRP_MJ_SYSTEM_CONTROL

IRP_MN_REGINFO_EX

IoCompleteRequest-

WMILIB_CONTEXT