Een verbinding maken met een WMI-naamruimte
Nadat u de standaardaanroepen naar COM hebt ingesteld, moet u vervolgens verbinding maken met WMI via een aanroep naar de methode IWbemLocator::ConnectServer. De methode ConnectServer retourneert een proxy van een IWbemServices interface. Via IWbemServiceshebt u toegang tot de verschillende mogelijkheden van WMI.
De codevoorbeelden in dit onderwerp vereisen de volgende verwijzingen en #include instructies om correct te compileren.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
In de volgende procedure wordt beschreven hoe u een verbinding maakt met een WMI-naamruimte.
Een verbinding maken met een WMI-naamruimte
Initialiseer de IWbemLocator interface via een aanroep naar CoCreateInstance-.
WMI vereist geen extra procedures bij het aanroepen van CoCreateInstance- op IWbemLocator-.
In het volgende codevoorbeeld wordt beschreven hoe u IWbemLocator-initialiseert.
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. }
Maak verbinding met WMI via een aanroep naar de methode IWbemLocator::ConnectServer.
De methode ConnectServer retourneert een proxy naar een IWbemServices-interface die wordt gebruikt voor toegang tot de lokale of externe WMI-naamruimte die is opgegeven in uw aanroep naar ConnectServer-.
In het volgende codevoorbeeld wordt beschreven hoe u ConnectServeraanroept.
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;
Nadat u een aanwijzer hebt ontvangen naar de IWbemServices proxy, moet u de beveiliging voor de proxy instellen voor toegang tot WMI. Zie Beveiligingsniveaus instellen voor een WMI-verbindingvoor meer informatie.
Verwante onderwerpen