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)

Vedi anche

API COM per WMI

Creazione di provider WMI

Modifica delle informazioni sulle classi e sulle istanze

Specifica dei dati a WMI scrivendo un provider