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.
Rubriques connexes