Создание подключения к пространству имен WMI
После настройки стандартных вызовов COM необходимо подключиться к WMI с помощью вызова метода IWbemLocator::ConnectServer . Метод ConnectServer возвращает прокси-сервер интерфейса IWbemServices . С помощью IWbemServices можно получить доступ к различным возможностям WMI.
Для правильной компиляции примеров кода в этом разделе требуются следующие ссылки и инструкции #include.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
В следующей процедуре описывается создание подключения к пространству имен WMI.
Создание подключения к пространству имен WMI
Инициализируйте интерфейс IWbemLocator с помощью вызова CoCreateInstance.
WMI не требует выполнения дополнительных процедур при вызове CoCreateInstance в IWbemLocator.
В следующем примере кода описывается, как инициализировать 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. }
Подключитесь к WMI с помощью вызова метода IWbemLocator::ConnectServer .
Метод ConnectServer возвращает прокси-сервер в интерфейс IWbemServices , который использует для доступа к локальному или удаленному пространству имен WMI, указанному в вызове ConnectServer.
В следующем примере кода описывается вызов 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;
Получив указатель на прокси-сервер IWbemServices , необходимо задать безопасность на прокси-сервере для доступа к WMI. Дополнительные сведения см. в разделе Настройка уровней безопасности для подключения WMI.
Связанные темы