Initialisieren der WMI-Unterstützung in Ihrem Treiber

[Gilt nur für KMDF]

Zur Unterstützung von WMI-Datenblöcken ein frameworkbasierter Treiber:

  • Registriert die MoF-Ressourcennamen (Managed Object Format) aller benutzerdefinierten WMI-Datenanbieter, die nicht in Wmicore.mof definiert sind.

  • Erstellt mindestens ein WMI-instance-Objekte, um die Datenblöcke darzustellen, die gelesen oder geschrieben werden können.

  • Implementiert optional eine oder mehrere Ereignisrückruffunktionen, um die vom Treiber bereitgestellten WMI-Daten zu liefern.

  • Registrieren Sie jedes WMI-instance-Objekt, um es für WMI-Clients verfügbar zu machen.

Um die WMI-Unterstützung zu initialisieren, führt ein KMDF-Treiber die folgenden Schritte aus, in der Regel innerhalb des Rückrufs "EvtDriverDeviceAdd" oder "EvtDeviceSelfManagedIoInit ":

  1. Ein Treiber, der eine MOF-Datei zur Unterstützung angepasster WMI-Datenanbieter bereitstellt, muss die WdfDeviceAssignMofResourceName-Methode aufrufen, um einen MOF-Ressourcennamen zu registrieren, bevor der Treiber WMI-Anbieterobjekte erstellt, die den Datenanbieter darstellen.

  2. Initialisieren Sie eine WMI-Anbieterkonfigurationsstruktur, und erstellen Sie optional ein WMI-Anbieterobjekt (WDFWMIPROVIDER).

  3. Initialisieren Sie eine WMI-instance-Konfigurationsstruktur, und erstellen Sie ein WMI-instance-Objekt (WDFWMIINSTANCE).

Das Framework erstellt standardmäßig einen WMI-Anbieter, wenn ein KMDF-Treiber seine erste WMI-instance erstellt. Wenn der Treiber daher nur einen WMI-Anbieter erfordert, ist es nicht erforderlich, die Anbietererstellungsmethode (WdfWmiProviderCreate) aufzurufen. Der Treiber muss jedoch die Anbieterkonfigurationsstruktur ausfüllen, da diese Struktur Informationen über den Anbieter bereitstellt, den das Framework beim Erstellen des instance verwendet.

Wenn Ihr Treiber eine einzelne instance jedes unterstützten WMI-Datenblocks erstellt, ruft der Treiber WdfWmiInstanceCreate auf und übergibt sowohl eine WDF_WMI_PROVIDER_CONFIG-Struktur als auch eine WDF_WMI_INSTANCE_CONFIG-Struktur. Dieser einzelne Aufruf konfiguriert das vom Framework bereitgestellte WMI-Anbieterobjekt und erstellt ein WMI-instance-Objekt.

Wenn Ihr Treiber mehrere Instanzen seiner WMI-Datenblöcke erstellt, muss der Treiber sowohl WdfWmiProviderCreate als auch WdfWmiInstanceCreate aufrufen.

Registrieren von Anbieterinstanzen

Bevor WMI-Clients auf die WMI-Datenblöcke Ihres Treibers zugreifen können, muss der Treiber seine Anbieterinstanzen beim WMI-Dienst des Systems registrieren. Der Treiber kann eine der folgenden Techniken verwenden, um einen Anbieter instance zu registrieren:

  • Legen Sie das Register-Element der WDF_WMI_INSTANCE_CONFIG-Struktur des Anbieters instance auf TRUE fest.

    Wenn Ihr Treiber Registrieren auf TRUE festlegt, registriert das Framework automatisch den instance, wenn das Gerät zum ersten Mal in den Betriebszustand (D0) wechselt.

  • Rufen Sie die WdfWmiInstanceRegister-Methode auf.

    Wenn Ihr Treiber WdfWmiInstanceRegister aufruft, nachdem WdfWmiInstanceCreate aufgerufen wurde, registriert das Framework die instance, nachdem sich das Gerät im Betriebszustand (D0) befindet.

Das Framework hebt die Registrierung jedes Anbieters instance automatisch auf, wenn das Gerät des instance entfernt wird (und bevor die EvtDeviceSelfManagedIoCleanup-Ereignisrückruffunktion aufgerufen wird). Informationen zur Reihenfolge, in der das Framework die Rückruffunktionen eines Treibers aufruft, finden Sie unter PnP- und Energieverwaltungsszenarien.

Ihr Treiber kann die Registrierung eines instance jederzeit aufheben, indem er WdfWmiInstanceDeregister aufruft.