Freigeben über


Implementieren der primären Schnittstelle für einen Klassenanbieter

Es gibt zwei Möglichkeiten, einen Klassenanbieter zu implementieren: Implementieren Sie die Schnittstelle als Pushanbieter oder als Pullanbieter.

In diesem Thema werden die folgenden Abschnitte behandelt:

Implementieren der primären Schnittstelle für einen Klassenanbieter

Während alle Anbieter IWbemProviderInit für die Initialisierung und mindestens eine andere Schnittstelle als primäre Schnittstelle implementieren, implementiert ein Pushanbieter nur IWbemProviderInit.

Stellen Sie sicher, dass Ihre Implementierung die folgenden Aufgaben ausführt:

  • Ruft die entsprechenden Klassendaten ab.
  • Platziert die Daten im WMI-Repository.
  • Löscht veraltete Daten.

Nach Abschluss des Initialisierungsprozesses verarbeitet WMI alle Anwendungsanforderungen für Klassen, die zum Pushanbieter gehören, ohne dass weitere Anbieterinteraktionen auftreten. Anschließend fungiert der Pushanbieter effektiv als Client von WMI und nicht als Anbieter. Weitere Informationen zum Implementieren von IWbemProviderInit finden Sie unter Initialisieren eines Anbieters.

Hinweis

Wenn Sie WMI aufrufen, um Daten in einem Pushanbieter zu erstellen, zu aktualisieren oder zu entfernen, legen Sie den Parameter IFlags so fest, dass das Flag WBEM_FLAG_OWNER_UPDATE in alle Aufrufe von Methoden IWbemServices eingeschlossen wird.

 

Implementieren der primären Schnittstelle für einen Pullklassenanbieter

Ein Klassen-Pullanbieter sollte IWbemServices als primäre Schnittstelle implementieren. Die Schnittstelle IWbemServices unterstützt Datenabruf, Datenaktualisierung, Datenentfernung, Enumeration und Abfrageverarbeitung. Da IWbemServices jedoch auch von Anwendungen und Anbietern verwendet wird, um WMI-Dienste anzufordern, enthält IWbemServices viele Methoden, die für einen Klassenanbieter irrelevant sind. Ihre Implementierung muss den Klassenabruf und die -Enumeration über die Methoden GetObjectAsync bzw . CreateClassEnumAsync unterstützen. In der folgenden Tabelle sind die zusätzlichen asynchronen IWbemServices-Methoden aufgeführt, die Sie für einen Klassenanbieter implementieren können.

Methode Funktion
PutInstanceAsync Modifikation (Modification)
DeleteClassAsync Löschen

 

Hinweis

Da der Rückruf an die Senke möglicherweise nicht auf der Authentifizierungsebene zurückgegeben wird, die der Client benötigt, empfiehlt es sich, anstelle der asynchronen Kommunikation eine halbsynchrone Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode.

 

Ihr Klassenanbieter sollte eine Stubimplementierung bereitstellen, die WBEM_E_PROVIDER_NOT_CAPABLE für alle anderen Methoden IWbemServices zurückgibt, die Ihren Featuresatz nicht unterstützen. Insbesondere unterstützt WMI keine Abfrageverarbeitung für Klassenanbieter. Daher muss ein Klassenanbieter WBEM_E_PROVIDER_NOT_CAPABLE aus seiner Implementierung von IWbemServices::ExecQueryAsync zurückgeben, seine Registrierungseigenschaft QuerySupportLevels auf NULL oder beides festlegen.

Die Schnittstellen, die ein Klassenanbieter implementiert, ähneln sehr den Schnittstellen für einen Instanz- und einen Methodenanbieter. Tatsächlich kann ein einzelner Anbieter als alle drei Anbietertypen fungieren, indem er alle Methoden implementiert und ordnungsgemäß registriert.