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
Bearbeiten von Klassen- und Instanzinformationen
Bereitstellen von Daten für WMI durch Schreiben eines Anbieters