Création d’une connexion à un espace de noms WMI

Une fois que vous avez défini les appels standard sur COM, vous devez vous connecter à WMI via un appel à la méthode IWbemLocator::ConnectServer . La méthode ConnectServer retourne un proxy d’une interface IWbemServices . Grâce à IWbemServices, vous pouvez accéder aux différentes fonctionnalités de WMI.

Les exemples de code de cette rubrique nécessitent la compilation correcte des références et des instructions #include suivantes.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

La procédure suivante décrit comment créer une connexion à un espace de noms WMI.

Créez une connexion à un espace de noms WMI

  • Initialisez l’interface IWbemLocator via un appel à CoCreateInstance.

    WMI ne nécessite pas d’effectuer de procédures supplémentaires lors de l’appel de CoCreateInstance sur IWbemLocator.

    L’exemple de code suivant décrit comment initialiser 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.
        }
    
    • Connectez-vous à WMI via un appel à la méthode IWbemLocator::ConnectServer .

      La méthode ConnectServer renvoie un proxy à une interface IWbemServices qui utilise pour accéder à l’espace de noms WMI local ou distant spécifié dans votre appel à ConnectServer.

      L’exemple de code suivant décrit comment appeler 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;
      

Une fois que vous avez reçu un pointeur vers le proxy IWbemServices , vous devez définir la sécurité sur le proxy pour accéder à WMI. Pour plus d’informations, consultez Définition des niveaux de sécurité sur une connexion WMI.

Création d’une application WMI à l’aide de C++

Prise en charge d’IPv6 et IPv4 dans WMI