Creación de una conexión a un espacio de nombres de WMI
Después de establecer las llamadas estándar a COM, debe conectarse a WMI mediante una llamada al método IWbemLocator::ConnectServer. El método ConnectServer devuelve un proxy de una interfaz IWbemServices. Mediante IWbemServices, puede acceder a las diferentes funcionalidades de WMI.
Para los ejemplos de código de este tema se requieren las siguientes referencias e instrucciones #include para compilarse correctamente.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
En el procedimiento siguiente se describe cómo crear una conexión a un espacio de nombres de WMI.
Creación de una conexión a un espacio de nombres de WMI
Inicialice la interfaz IWbemLocator mediante una llamada a CoCreateInstance.
WMI no requiere que realice procedimientos adicionales al llamar a CoCreateInstance en IWbemLocator.
En el ejemplo de código siguiente se describe cómo inicializar IWbemLocator.
IWbemLocator *pLoc = 0; HRESULT hr; hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hr)) { cout << "Failed to create IWbemLocator object. Err code = 0x" << hex << hr << endl; CoUninitialize(); return hr; // Program has failed. }
Conéctese a WMI mediante una llamada al método IWbemLocator::ConnectServer.
El método ConnectServer devuelve un proxy a una interfaz IWbemServices que usa para acceder al espacio de nombres de WMI local o remoto especificado en la llamada a ConnectServer.
En el ejemplo de código siguiente se describe cómo llamar a ConnectServer.
IWbemServices *pSvc = 0; // Connect to the root\default namespace with the current user. hr = pLoc->ConnectServer( BSTR(L"ROOT\\DEFAULT"), //namespace NULL, // User name NULL, // User password 0, // Locale NULL, // Security flags 0, // Authority 0, // Context object &pSvc); // IWbemServices proxy if (FAILED(hr)) { cout << "Could not connect. Error code = 0x" << hex << hr << endl; pLoc->Release(); CoUninitialize(); return hr; // Program has failed. } cout << "Connected to WMI" << endl;
Después de haber recibido un puntero al proxy IWbemServices, debe establecer la seguridad en el proxy para acceder a WMI. Para obtener más información, consulte Establecer los niveles de seguridad en una conexión WMI.
Temas relacionados