Tworzenie połączenia z przestrzenią nazw usługi WMI
Po skonfigurowaniu standardowych wywołań COM, należy następnie połączyć się z WMI poprzez wywołanie metody IWbemLocator::ConnectServer. Metoda ConnectServer zwraca proxy z interfejsu IWbemServices. Za pośrednictwem IWbemServicesmożna uzyskać dostęp do różnych funkcjonalności WMI.
Przykłady kodu w tym temacie wymagają następujących odwołań i instrukcji #include w celu poprawnego skompilowania.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
Poniższa procedura opisuje sposób tworzenia połączenia z przestrzenią nazw usługi WMI.
Aby utworzyć połączenie z przestrzenią nazw usługi WMI
Zainicjuj interfejs IWbemLocator poprzez wywołanie CoCreateInstance.
WMI nie wymaga wykonania żadnych dodatkowych procedur podczas wywoływania CoCreateInstance w IWbemLocator.
W poniższym przykładzie kodu opisano sposób inicjowania 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. }
Połącz się z usługą WMI za pomocą wywołania metody IWbemLocator::ConnectServer.
Metoda ConnectServer zwraca proxy do interfejsuIWbemServices używanego do uzyskiwania dostępu do lokalnej lub zdalnej przestrzeni nazw WMI określonej w wywołaniu do ConnectServer.
W poniższym przykładzie kodu opisano sposób wywoływania 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;
Po otrzymaniu wskaźnika do serwera proxy IWbemServices, należy ustawić zabezpieczenia serwera proxy, aby uzyskać dostęp do WMI. Aby uzyskać więcej informacji, zapoznaj się z Ustawianie poziomów zabezpieczeń w połączeniu usługi WMI.
Tematy pokrewne
-
tworzenie aplikacji WMI przy użyciu języka C++