IWbemServices-Schnittstelle (wbemcli.h)

Die IWbemServices-Schnittstelle wird von Clients und Anbietern für den Zugriff auf WMI-Dienste verwendet. Die Schnittstelle wird von WMI- und WMI-Anbietern implementiert und ist die primäre WMI-Schnittstelle.

    IWbemClassObject *pObj = NULL;

    // The pWbemSvc pointer is of type IWbemServices*
    // BSTR is not compatible with wchar_t, need to allocate.
    BSTR path = SysAllocString(L"path");
    pWbemSvc->GetObject(path, 0, 0, &pObj, 0);
    SysFreeString(path);

Vererbung

Die IWbemServices-Schnittstelle erbt von der IUnknown-Schnittstelle . IWbemServices verfügt auch über folgende Membertypen:

Methoden

Die IWbemServices-Schnittstelle verfügt über diese Methoden.

 
IWbemServices::CancelAsyncCall

Die IWbemServices::CancelAsyncCall-Methode bricht alle derzeit ausstehenden asynchronen Aufrufe basierend auf dem IWbemObjectSink-Zeiger ab, der ursprünglich an die asynchrone Methode übergeben wurde.
IWbemServices::CreateClassEnum

Die IWbemServices::CreateClassEnum-Methode gibt einen Enumerator für alle Klassen zurück, die Auswahlkriterien erfüllen.
IWbemServices::CreateClassEnumAsync

Die IWbemServices::CreateClassEnumAsync-Methode gibt eine Enumeration aller Klassen zurück, die der Klassenanbieter unterstützt.
IWbemServices::CreateInstanceEnum

Die IWbemServices::CreateInstanceEnum-Methode erstellt einen Enumerator, der die Instanzen einer angegebenen Klasse gemäß den vom Benutzer angegebenen Auswahlkriterien zurückgibt.
IWbemServices::CreateInstanceEnumAsync

Die IWbemServices::CreateInstanceEnumAsync-Methode erstellt einen Enumerator, der die Instanzen einer angegebenen Klasse gemäß den vom Benutzer angegebenen Auswahlkriterien asynchron zurückgibt.
IWbemServices::D eleteClass

Die IWbemServices::D eleteClass-Methode löscht die angegebene Klasse aus dem aktuellen Namespace.
IWbemServices::D eleteClassAsync

Die IWbemServices::D eleteClassAsync-Methode löscht die angegebene Klasse aus dem aktuellen Namespace.
IWbemServices::DeleteInstance

Die IWbemServices::D eleteInstance-Methode löscht eine instance einer vorhandenen Klasse im aktuellen Namespace.
IWbemServices::D eleteInstanceAsync

Die IWbemServices::D eleteInstanceAsync-Methode löscht asynchron eine instance einer vorhandenen Klasse im aktuellen Namespace. Die Bestätigung oder der Fehler des Vorgangs wird über die vom Aufrufer implementierte IWbemObjectSink-Schnittstelle gemeldet.
IWbemServices::ExecMethod

Führt eine Methode aus, die von einem CIM-Objekt exportiert wird.
IWbemServices::ExecMethodAsync

Führt asynchron eine Methode aus, die von einem CIM-Objekt exportiert wird.
IWbemServices::ExecNotificationQuery

Die IWbemServices::ExecNotificationQuery-Methode führt eine Abfrage aus, um Ereignisse zu empfangen. Der Aufruf wird sofort zurückgegeben, und der Benutzer kann den zurückgegebenen Enumerator nach Ereignissen abfragen, wenn sie eintreffen. Durch Freigeben des zurückgegebenen Enumerators wird die Abfrage abgebrochen.
IWbemServices::ExecNotificationQueryAsync

Die IWbemServices::ExecNotificationQueryAsync-Methode führt dieselbe Aufgabe wie IWbemServices::ExecNotificationQuery aus, mit der Ausnahme, dass Ereignisse für den angegebenen Antworthandler bereitgestellt werden, bis CancelAsyncCall aufgerufen wird, um die Ereignisbenachrichtigung zu beenden.
IWbemServices::ExecQuery

Die IWbemServices::ExecQuery-Methode führt eine Abfrage aus, um Objekte abzurufen.
IWbemServices::ExecQueryAsync

Die IWbemServices::ExecQueryAsync-Methode führt eine Abfrage aus, um Objekte asynchron abzurufen.
IWbemServices::GetObject

Die IWbemServices::GetObject-Methode ruft eine Klasse oder instance ab. Diese Methode ruft nur Objekte aus dem Namespace ab, der dem aktuellen IWbemServices-Objekt zugeordnet ist.
IWbemServices::GetObjectAsync

Die IWbemServices::GetObjectAsync-Methode ruft basierend auf seinem Pfad ein Objekt ab, entweder eine Klassendefinition oder instance.
IWbemServices::OpenNamespace

Die IWbemServices::OpenNamespace-Methode stellt dem Aufrufer einen neuen IWbemServices-Zeiger bereit, der den angegebenen untergeordneten Namespace als Betriebskontext aufweist.
IWbemServices::PutClass

Die IWbemServices::P utClass-Methode erstellt eine neue Klasse oder aktualisiert eine vorhandene Klasse. Die vom pObject-Parameter angegebene Klasse muss ordnungsgemäß mit allen erforderlichen Eigenschaftswerten initialisiert worden sein.
IWbemServices::PutClassAsync

Die IWbemServices::P utClassAsync-Methode erstellt eine neue Klasse oder aktualisiert eine vorhandene Klasse.
IWbemServices::PutInstance

Die IWbemServices::P utInstance-Methode erstellt oder aktualisiert eine instance einer vorhandenen Klasse. Die Instanz wird in das WMI-Repository geschrieben.
IWbemServices::PutInstanceAsync

Die IWbemServices::P utInstanceAsync-Methode erstellt oder aktualisiert asynchron einen instance einer vorhandenen Klasse. Die Aktualisierungsbestätigung oder Fehlerberichterstattung wird über die vom Aufrufer implementierte IWbemObjectSink-Schnittstelle bereitgestellt.
IWbemServices::QueryObjectSink

Mit der IWbemServices::QueryObjectSink-Methode kann der Aufrufer einen Benachrichtigungshandler abrufen, der von der Windows-Verwaltung exportiert wird.

Hinweise

Anbieter, die die IWbemServices-Schnittstelle implementieren, müssen die dokumentierte Semantik jeder von ihnen implementierten Methode befolgen. und anbieter müssen die angegebenen Fehlerrückgabecodes unterstützen. WMI implementiert alle Methoden, und in der Regel implementiert jeder Anbieter eine kleine Teilmenge der verfügbaren Funktionalität auf der Schnittstelle. Anbieter müssen WBEM_E_PROVIDER_NOT_CAPABLE für jede Methode zurückgeben, die sie nicht implementieren.

Alle ausgehenden Schnittstellenzeiger von einer beliebigen IWbemServices-Methode sollten in NULL initialisiert werden, bevor die Schnittstellenmethode aufgerufen wird. Beispielsweise geben Aufrufe der IWbemServices::GetObject-Methode einen IWbemClassObject-Schnittstellenzeiger zurück, der vor dem Aufruf der IWbemServices::GetObject-Methode in NULL initialisiert werden sollte.

Beispiele

Mehrere C++-Beispiele, die IWbemServices verwenden, finden Sie im Abschnitt WMI C++-Anwendungsbeispiele .

Das folgende Codebeispiel zeigt, wie ein Anbieter einen IWbemServices-Zeiger abrufen kann. Für den Code sind die folgenden #include-Anweisungen und Verweise erforderlich, um zu kompilieren.

#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
IWbemLocator *pIWbemLocator = NULL;

HRESULT hRes = CoCreateInstance (
            CLSID_WbemAdministrativeLocator,
            NULL ,
            CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER , 
            IID_IUnknown ,
            ( void ** ) &pIWbemLocator
            ) ;

IWbemServices *pWbemServices = NULL;

if (SUCCEEDED(hRes))
{
    BSTR namespace = SysAllocString(L"root\\CIMV2");
    hRes = pIWbemLocator->ConnectServer(
                namespace,      // Namespace
                NULL,           // Userid
                NULL,           // PW
                NULL,           // Locale
                0,              // flags
                NULL,           // Authority
                NULL,           // Context
                &pWbemServices
                );
    SysFreeString(namespace);            

    pIWbemLocator->Release(); // Free memory resources.

    // Use pWbemServices

}

// Clean up
pWbemServices->Release();

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile wbemcli.h (include Wbemidl.h)

Weitere Informationen

COM-API für WMI

Erstellen von WMI-Anbietern

Bearbeiten von Klassen- und Instanzinformationen

Bereitstellen von Daten für WMI durch Schreiben eines Anbieters