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
Manipular información de clase e instancia
Suministro de datos a WMI mediante la escritura de un proveedor