Interfaz IWbemServices (wbemcli.h)

Los clientes y proveedores usan la interfaz IWbemServices para acceder a los servicios WMI. La interfaz se implementa mediante proveedores WMI y WMI, y es la interfaz WMI principal.

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

Herencia

La interfaz IWbemServices hereda de la interfaz IUnknown . IWbemServices también tiene estos tipos de miembros:

Métodos

La interfaz IWbemServices tiene estos métodos.

 
IWbemServices::CancelAsyncCall

El método IWbemServices::CancelAsyncCall cancela las llamadas asincrónicas pendientes actualmente basadas en el puntero IWbemObjectSink, que se pasó originalmente al método asincrónico.
IWbemServices::CreateClassEnum

El método IWbemServices::CreateClassEnum devuelve un enumerador para todas las clases que cumplen los criterios de selección.
IWbemServices::CreateClassEnumAsync

El método IWbemServices::CreateClassEnumAsync devuelve una enumeración de todas las clases que admite el proveedor de clases.
IWbemServices::CreateInstanceEnum

El método IWbemServices::CreateInstanceEnum crea un enumerador que devuelve las instancias de una clase especificada según los criterios de selección especificados por el usuario.
IWbemServices::CreateInstanceEnumAsync

El método IWbemServices::CreateInstanceEnumAsync crea un enumerador que devuelve asincrónicamente las instancias de una clase especificada según los criterios de selección especificados por el usuario.
IWbemServices::D eleteClass

El método IWbemServices::D eleteClass elimina la clase especificada del espacio de nombres actual.
IWbemServices::D eleteClassAsync

El método IWbemServices::D eleteClassAsync elimina la clase especificada del espacio de nombres actual.
IWbemServices::DeleteInstance

El método IWbemServices::D eleteInstance elimina una instancia de una clase existente en el espacio de nombres actual.
IWbemServices::D eleteInstanceAsync

El método IWbemServices::D eleteInstanceAsync elimina de forma asincrónica una instancia de una clase existente en el espacio de nombres actual. La confirmación o el error de la operación se notifica a través de la interfaz IWbemObjectSink implementada por el autor de la llamada.
IWbemServices::ExecMethod

Ejecuta un método exportado por un objeto CIM.
IWbemServices::ExecMethodAsync

Ejecuta de forma asincrónica un método exportado por un objeto CIM.
IWbemServices::ExecNotificationQuery

El método IWbemServices::ExecNotificationQuery ejecuta una consulta para recibir eventos. La llamada devuelve inmediatamente y el usuario puede sondear el enumerador devuelto para los eventos a medida que llegan. Si se libera el enumerador que se devuelve, se cancelará la consulta.
IWbemServices::ExecNotificationQueryAsync

El método IWbemServices::ExecNotificationQueryAsync realiza la misma tarea que IWbemServices::ExecNotificationQuery, excepto que se proporcionan eventos al controlador de respuesta especificado hasta que se llama a CancelAsyncCall para detener la notificación de eventos.
IWbemServices::ExecQuery

El método IWbemServices::ExecQuery ejecuta una consulta para recuperar objetos.
IWbemServices::ExecQueryAsync

El método IWbemServices::ExecQueryAsync ejecuta una consulta para recuperar objetos de forma asincrónica.
IWbemServices::GetObject

El método IWbemServices::GetObject recupera una clase o instancia. Este método solo recupera objetos del espacio de nombres asociado al objeto IWbemServices actual.
IWbemServices::GetObjectAsync

El método IWbemServices::GetObjectAsync recupera un objeto, ya sea una definición de clase o una instancia, en función de su ruta de acceso.
IWbemServices::OpenNamespace

El método IWbemServices::OpenNamespace proporciona al autor de la llamada un nuevo puntero IWbemServices que tiene el espacio de nombres secundario especificado como contexto operativo.
IWbemServices::PutClass

El método IWbemServices::P utClass crea una nueva clase o actualiza una existente. La clase especificada por el parámetro pObject debe haberse inicializado correctamente con todos los valores de propiedad necesarios.
IWbemServices::PutClassAsync

El método IWbemServices::P utClassAsync crea una nueva clase o actualiza una existente.
IWbemServices::PutInstance

El método IWbemServices::P utInstance crea o actualiza una instancia de una clase existente. La instancia se escribe en el repositorio de la WMI.
IWbemServices::PutInstanceAsync

El método IWbemServices::P utInstanceAsync crea o actualiza de forma asincrónica una instancia de una clase existente. La confirmación de actualización o los informes de errores se proporciona a través de la interfaz IWbemObjectSink implementada por el autor de la llamada.
IWbemServices::QueryObjectSink

El método IWbemServices::QueryObjectSink permite al autor de la llamada obtener un controlador de notificaciones exportado por administración de Windows.

Comentarios

Los proveedores que implementan la interfaz IWbemServices deben seguir la semántica documentada de cada método que implementan; y los proveedores deben admitir los códigos de retorno de error especificados. WMI implementa todos los métodos y, normalmente, cada proveedor implementa un pequeño subconjunto de la funcionalidad disponible en la interfaz. Los proveedores deben devolver WBEM_E_PROVIDER_NOT_CAPABLE para cualquier método que no implementen.

Todos los punteros de interfaz de salida de cualquier método IWbemServices deben inicializarse en NULL antes de llamar al método de interfaz. Por ejemplo, las llamadas al método IWbemServices::GetObject devuelven un puntero de interfaz IWbemClassObject que debe inicializarse previamente en NULL antes de la llamada al método IWbemServices::GetObject .

Ejemplos

Para ver varios ejemplos de C++ que usan IWbemServices, consulte la sección Ejemplos de aplicaciones de C++ de WMI .

En el ejemplo de código siguiente se muestra cómo un proveedor puede obtener un puntero IWbemServices . El código requiere las siguientes instrucciones #include y referencias 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 Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado wbemcli.h (include Wbemidl.h)

Consulte también

API COM para WMI

Creación de proveedores WMI

Manipular información de clase e instancia

Suministro de datos a WMI mediante la escritura de un proveedor