Interface IWbemServices (wbemcli.h)

A interface IWbemServices é usada por clientes e provedores para acessar serviços WMI. A interface é implementada por provedores WMI e WMI e é a interface WMI primária.

    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);

Herança

A interface IWbemServices herda da interface IUnknown . O IWbemServices também tem esses tipos de membros:

Métodos

A interface IWbemServices tem esses métodos.

 
IWbemServices::CancelAsyncCall

O método IWbemServices::CancelAsyncCall cancela todas as chamadas assíncronas pendentes no momento com base no ponteiro IWbemObjectSink, que foi originalmente passado para o método assíncrono.
IWbemServices::CreateClassEnum

O método IWbemServices::CreateClassEnum retorna um enumerador para todas as classes que atendem aos critérios de seleção.
IWbemServices::CreateClassEnumAsync

O método IWbemServices::CreateClassEnumAsync retorna uma enumeração de todas as classes compatíveis com o provedor de classe.
IWbemServices::CreateInstanceEnum

O método IWbemServices::CreateInstanceEnum cria um enumerador que retorna as instâncias de uma classe especificada de acordo com os critérios de seleção especificados pelo usuário.
IWbemServices::CreateInstanceEnumAsync

O método IWbemServices::CreateInstanceEnumAsync cria um enumerador que retorna as instâncias de uma classe especificada de acordo com os critérios de seleção especificados pelo usuário.
IWbemServices::D eleteClass

O método IWbemServices::D eleteClass exclui a classe especificada do namespace atual.
IWbemServices::D eleteClassAsync

O método IWbemServices::D eleteClassAsync exclui a classe especificada do namespace atual.
IWbemServices::DeleteInstance

O método IWbemServices::D eleteInstance exclui uma instância de uma classe existente no namespace atual.
IWbemServices::D eleteInstanceAsync

O método IWbemServices::D eleteInstanceAsync exclui de forma assíncrona uma instância de uma classe existente no namespace atual. A confirmação ou falha da operação é relatada por meio da interface IWbemObjectSink implementada pelo chamador.
IWbemServices::ExecMethod

Executa um método exportado por um objeto CIM.
IWbemServices::ExecMethodAsync

Executa de forma assíncrona um método exportado por um objeto CIM.
IWbemServices::ExecNotificationQuery

O método IWbemServices::ExecNotificationQuery executa uma consulta para receber eventos. A chamada retorna imediatamente, e o usuário pode sondar o enumerador retornado para eventos à medida que eles chegam. A liberação do enumerador retornado cancela a consulta.
IWbemServices::ExecNotificationQueryAsync

O método IWbemServices::ExecNotificationQueryAsync executa a mesma tarefa que IWbemServices::ExecNotificationQuery, exceto que os eventos são fornecidos ao manipulador de resposta especificado até que CancelAsyncCall seja chamado para interromper a notificação de evento.
IWbemServices::ExecQuery

O método IWbemServices::ExecQuery executa uma consulta para recuperar objetos.
IWbemServices::ExecQueryAsync

O método IWbemServices::ExecQueryAsync executa uma consulta para recuperar objetos de forma assíncrona.
IWbemServices::GetObject

O método IWbemServices::GetObject recupera uma classe ou instância. Esse método recupera apenas objetos do namespace associado ao objeto IWbemServices atual.
IWbemServices::GetObjectAsync

O método IWbemServices::GetObjectAsync recupera um objeto, uma definição de classe ou uma instância, com base em seu caminho.
IWbemServices::OpenNamespace

O método IWbemServices::OpenNamespace fornece ao chamador um novo ponteiro IWbemServices que tem o namespace filho especificado como seu contexto operacional.
IWbemServices::PutClass

O método IWbemServices::P utClass cria uma nova classe ou atualiza uma existente. A classe especificada pelo parâmetro pObject deve ter sido inicializada corretamente com todos os valores de propriedade necessários.
IWbemServices::PutClassAsync

O método IWbemServices::P utClassAsync cria uma nova classe ou atualiza uma existente.
IWbemServices::PutInstance

O método IWbemServices::P utInstance cria ou atualiza uma instância de uma classe existente. A instância é gravada no repositório da WMI.
IWbemServices::PutInstanceAsync

O método IWbemServices::P utInstanceAsync cria ou atualiza de forma assíncrona uma instância de uma classe existente. O relatório de confirmação ou erro de atualização é fornecido por meio da interface IWbemObjectSink implementada pelo chamador.
IWbemServices::QueryObjectSink

O método IWbemServices::QueryObjectSink permite que o chamador obtenha um manipulador de notificação exportado pelo Gerenciamento do Windows.

Comentários

Os provedores que implementam a interface IWbemServices devem seguir a semântica documentada de cada método implementado; e os provedores devem dar suporte aos códigos de retorno de erro especificados. O WMI implementa todos os métodos e, normalmente, cada provedor implementa um pequeno subconjunto da funcionalidade disponível na interface. Os provedores devem retornar WBEM_E_PROVIDER_NOT_CAPABLE para qualquer método que não implementem.

Todos os ponteiros de interface de saída de qualquer método IWbemServices devem ser inicializados para NULL antes de chamar o método de interface. Por exemplo, chamadas para o método IWbemServices::GetObject retornam um ponteiro de interface IWbemClassObject que deve ser pré-inicializado para NULL antes da chamada do método IWbemServices::GetObject .

Exemplos

Para obter vários exemplos de C++ que usam IWbemServices, consulte a seção Exemplos de aplicativo WMI C++ .

O exemplo de código a seguir mostra como um provedor pode obter um ponteiro IWbemServices . O código requer as instruções e referências #include a seguir para compilar.

#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();

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho wbemcli.h (inclua Wbemidl.h)

Confira também

API COM para WMI

Criar provedores WMI

Como manipular informações de classe e instância

Fornecer dados para o WMI escrevendo um provedor