Interfaccia IWbemServices (wbemcli.h)
L'interfaccia IWbemServices viene usata dai client e dai provider per accedere ai servizi WMI. L'interfaccia viene implementata dai provider WMI e WMI ed è l'interfaccia WMI primaria.
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);
Ereditarietà
L'interfaccia IWbemServices eredita dall'interfaccia IUnknown . IWbemServices include anche questi tipi di membri:
Metodi
L'interfaccia IWbemServices dispone di questi metodi.
IWbemServices::CancelAsyncCall Il metodo IWbemServices::CancelAsyncCall annulla tutte le chiamate asincrone attualmente in sospeso in base al puntatore IWbemObjectSink, che è stato originariamente passato al metodo asincrono. |
IWbemServices::CreateClassEnum Il metodo IWbemServices::CreateClassEnum restituisce un enumeratore per tutte le classi che soddisfano i criteri di selezione. |
IWbemServices::CreateClassEnumAsync Il metodo IWbemServices::CreateClassEnumAsync restituisce un'enumerazione di tutte le classi supportate dal provider di classi. |
IWbemServices::CreateInstanceEnum Il metodo IWbemServices::CreateInstanceEnum crea un enumeratore che restituisce le istanze di una classe specificata in base ai criteri di selezione specificati dall'utente. |
IWbemServices::CreateInstanceEnumAsync Il metodo IWbemServices::CreateInstanceEnumAsync crea un enumeratore che restituisce in modo asincrono le istanze di una classe specificata in base ai criteri di selezione specificati dall'utente. |
IWbemServices::D eleteClass Il metodo IWbemServices::D eleteClass elimina la classe specificata dallo spazio dei nomi corrente. |
IWbemServices::D eleteClassAsync Il metodo IWbemServices::D eleteClassAsync elimina la classe specificata dallo spazio dei nomi corrente. |
IWbemServices::D eleteInstance Il metodo IWbemServices::D eleteInstance elimina un'istanza di una classe esistente nello spazio dei nomi corrente. |
IWbemServices::D eleteInstanceAsync Il metodo IWbemServices::D eleteInstanceAsync elimina in modo asincrono un'istanza di una classe esistente nello spazio dei nomi corrente. La conferma o l'errore dell'operazione viene segnalata tramite l'interfaccia IWbemObjectSink implementata dal chiamante. |
IWbemServices::ExecMethod Esegue un metodo esportato da un oggetto CIM. |
IWbemServices::ExecMethodAsync Esegue in modo asincrono un metodo esportato da un oggetto CIM. |
IWbemServices::ExecNotificationQuery Il metodo IWbemServices::ExecNotificationQuery esegue una query per ricevere eventi. La chiamata restituisce immediatamente e l'utente può eseguire il polling dell'enumeratore restituito per gli eventi non appena arrivano. Il rilascio dell'enumeratore restituito annulla la query. |
IWbemServices::ExecNotificationQueryAsync Il metodo IWbemServices::ExecNotificationQueryAsync esegue la stessa attività di IWbemServices::ExecNotificationQuery, ad eccezione del fatto che gli eventi vengono forniti al gestore di risposta specificato finché CancelAsyncCall non viene chiamato per arrestare la notifica dell'evento. |
IWbemServices::ExecQuery Il metodo IWbemServices::ExecQuery esegue una query per recuperare gli oggetti. |
IWbemServices::ExecQueryAsync Il metodo IWbemServices::ExecQueryAsync esegue una query per recuperare gli oggetti in modo asincrono. |
IWbemServices::GetObject Il metodo IWbemServices::GetObject recupera una classe o un'istanza. Questo metodo recupera solo gli oggetti dallo spazio dei nomi associato all'oggetto IWbemServices corrente. |
IWbemServices::GetObjectAsync Il metodo IWbemServices::GetObjectAsync recupera un oggetto, ovvero una definizione di classe o un'istanza, in base al relativo percorso. |
IWbemServices::OpenNamespace Il metodo IWbemServices::OpenNamespace fornisce al chiamante un nuovo puntatore IWbemServices con lo spazio dei nomi figlio specificato come contesto operativo. |
IWbemServices::P utClass Il metodo IWbemServices::P utClass crea una nuova classe o ne aggiorna uno esistente. La classe specificata dal parametro pObject deve essere stata inizializzata correttamente con tutti i valori di proprietà richiesti. |
IWbemServices::P utClassAsync Il metodo IWbemServices::P utClassAsync crea una nuova classe o ne aggiorna uno esistente. |
IWbemServices::P utInstance Il metodo IWbemServices::P utInstance crea o aggiorna un'istanza di una classe esistente. L'istanza viene scritta nel repository WMI. |
IWbemServices::P utInstanceAsync Il metodo IWbemServices::P utInstanceAsync crea o aggiorna in modo asincrono un'istanza di una classe esistente. La conferma dell'aggiornamento o la segnalazione degli errori viene fornita tramite l'interfaccia IWbemObjectSink implementata dal chiamante. |
IWbemServices::QueryObjectSink Il metodo IWbemServices::QueryObjectSink consente al chiamante di ottenere un gestore di notifica esportato da Gestione Windows. |
Commenti
I provider che implementano l'interfaccia IWbemServices devono seguire la semantica documentata di ogni metodo implementato; e i provider devono supportare i codici restituiti di errore specificati. WMI implementa tutti i metodi e, in genere, ogni provider implementa un piccolo subset delle funzionalità disponibili nell'interfaccia. I provider devono restituire WBEM_E_PROVIDER_NOT_CAPABLE per qualsiasi metodo che non implementano.
Tutti i puntatori all'interfaccia in uscita da qualsiasi metodo IWbemServices devono essere inizializzati su NULL prima di chiamare il metodo di interfaccia. Ad esempio, le chiamate al metodo IWbemServices::GetObject restituiscono un puntatore all'interfaccia IWbemClassObject che deve essere pre-inizializzato su NULL prima della chiamata al metodo IWbemServices::GetObject .
Esempio
Per più esempi di C++ che usano IWbemServices, vedere la sezione Esempi di applicazioni C++ WMI .
Nell'esempio di codice seguente viene illustrato come un provider può ottenere un puntatore IWbemServices . Il codice richiede le istruzioni e i riferimenti #include seguenti per la compilazione.
#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();
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | wbemcli.h (include Wbemidl.h) |