Registrieren eines Klassenanbieters

Um einen WMI-Klassenanbieter zu erstellen, müssen Sie die _ _ Win32Provider-Instanz registrieren, die Ihren Anbieter darstellt, indem Sie eine Instanz von _ _ ClassProviderRegistration verwenden. Als COM-Objekt muss sich Ihr Anbieter beim Betriebssystem und WMI registrieren. Beim folgenden Verfahren wird davon ausgegangen, dass Sie den Registrierungsprozess bereits implementiert haben, wie unter Registrieren eines Anbieters beschrieben. Wenn Ihr Anbieter die meisten Daten im WMI-Repository speichert und diese Daten nur bei der WMI-Initialisierung aktualisiert werden, registrieren Sie Ihre Klasse als Pushklassenanbieter. Wenn sich die daten, die Sie bereitstellen, häufig ändern und dynamisch von Ihrem Code bei jeder Anforderung von WMI abgerufen werden, registrieren Sie Ihren Anbieter als Pullklassenanbieter.

Im folgenden Verfahren wird beschrieben, wie Sie einen Pushklassenanbieter registrieren.

So registrieren Sie einen Pushklassenanbieter

Im folgenden Verfahren wird beschrieben, wie Sie einen Pullklassenanbieter registrieren.

So registrieren Sie einen Pullklassenanbieter

  1. Erstellen Sie eine Instanz der _ _ Win32Provider-Klasse, die den Anbieter beschreibt.

  2. Erstellen Sie eine Instanz der _ _ ClassProviderRegistration-Klasse, die den Funktionssatz des Anbieters beschreibt.

    Innerhalb der _ _ ClassProviderRegistration-Instanz:

    1. Legen Sie die InteractionType-Eigenschaft fest, um anzugeben, ob der Anbieter ein Push- oder Pullanbieter ist.

    2. Kennzeichnen Sie die Klasse mit den Qualifizierern Dynamic und Provider.

      Der Dynamische Qualifizierer signalisiert, dass WMI einen Anbieter verwenden soll, um die Klasseninstanzen abzurufen. Der Anbieterqualifizierer gibt den Namen des Anbieters an, den WMI verwenden soll.

    3. Definieren Sie die Eigenschaften ResultSetQueries, ReferencedSetQueries und UnsupportedQueries.

      Diese Abfrageeigenschaften beschreiben ausführliche Informationen zur unterstützten Klasse.

Zusätzlich zur Beschreibung der verschiedenen unterstützten Methoden einer Klasse verfügt die _ _ ClassProviderRegistration-Klasse auch über drei Eigenschaften, die eine Reihe von Abfragen beschreiben. Bei der gemeinsamen Verwendung beschreiben diese drei Eigenschaften den gesamten Bereich von Klassen, die vom Klassenanbieter bereitgestellt werden. Jede Abfrageeigenschaft enthält eine WQL-SELECT-Anweisung, die als "Schemaabfrage" bezeichnet wird, um die Typen der unterstützten Klassen anzugeben. Schemaabfragen geben einen speziellen Klassennamen namens meta _ class an. In der folgenden Tabelle sind die Abfrageeigenschaften aufgeführt.

Eigenschaft BESCHREIBUNG
ResultSetQueries Enthält Informationen über das vom Anbieter zur Verfügung stellende Resultset. WMI verwendet die Informationen, um zu bestimmen, ob der Anbieter aufgerufen werden soll, um eine Abfrage aus einer Anwendung zu erfüllen. Diese Eigenschaft beschreibt entweder den Satz aller Klassen, die der Anbieter bereitstellen kann, oder eine Obermenge der verfügbaren Klassen, aber nie eine Teilmenge. WMI erfordert, dass ein Anbieter mindestens eine Abfrage in dieser Eigenschaft anfordert.
Das folgende Beispiel zeigt, wie ResultSetQueries festgelegt wird, wenn ein Anbieter eine Zuordnungsklasse an die Win32 _ LogicalDisk-Klasse verweist.
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
Das folgende Beispiel zeigt, wie eine allgemeine Abfrage angegeben wird, wenn ein Anbieter Klassen an die Hand gibt, die auf andere unbekannte Klassen verweisen.
SELECT * FROM meta_class
Im folgenden Beispiel wird gezeigt, wie ResultSetQueries festgelegt wird, wenn ein Anbieter nur Unterklassen, aber nicht die übergeordnete Klasse einer bestimmten Klasse liefert.
SELECT * FROM meta_class WHERE __Dynasty = "MyClass"
Im folgenden Beispiel wird gezeigt, wie die spezielle diese Eigenschaft verwendet und _ _ ResultSetQueries festgelegt wird, wenn ein Anbieter alle Klassen und Unterklassen liefert.
SELECT * FROM meta_class WHERE __this ISA "MyClass"
ReferencedSetQueries Bestimmt, ob der Anbieter in Schemaabfragen umgangen werden soll, bei denen Zuordnungen und Verweise angefordert werden. Anbieter, die Zuordnungsklassen liefern können, müssen mindestens eine Abfrage in ihrer ReferencedSetQueries-Eigenschaft enthalten.
UnsupportedQueries Enthält Informationen über das Von einem Klassenanbieter nicht zur Verfügung stellende Resultset. WMI verwendet diese Eigenschaft, um von dem Satz von Klassen zu subtrahieren, die von ResultSetQueries impliziert werden. Beispielsweise kann ein Klassenanbieter in ResultSetQueries-Unterstützung für alle von MyClass abgeleiteten Klassen angeben und in UnsupportedQueries eine fehlende Unterstützung für eine bestimmte abgeleitete Klasse angeben.
Je mehr Informationen ein Anbieter über seine Abfrageverarbeitungsfunktionen registrieren kann, desto schneller wird er ausgeführt. Die Eingabe einer oder mehrere Abfragen in die UnsupportedQueries-Eigenschaft ist eine Möglichkeit, spezifisch zu sein. Dies ist besonders wichtig, wenn ein Anbieter auf einer Klasse basiert, die er nicht zur Verfügung stellt. Wenn eine Anforderung für eine Klasse erfolgt, die in einer Abfrage in der UnsupportedQueries-Eigenschaft aufgeführt ist, kann WMI die Klasse selbst oder einen alternativen Anbieter aufrufen, um sie zu liefern.

Da WMI die OR-Klausel nicht unterstützt, müssen Sie für jede Klasse eine separate Abfrage erstellen.

Die folgenden Abfragen werden in ResultSetQueries angegeben, wenn ein Klassenanbieter MyClass1, MyClass2 und MyClass3 anfing.

SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"

Nur Administratoren können einen Anbieter registrieren oder löschen, indem sie eine Instanz von _ _ Win32Provider und _ _ ClassProviderRegistration erstellen.