Delen via


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.

een WMI-toepassing maken met behulp van C++

IPv6- en IPv4-ondersteuning in WMI-