Creazione di una connessione a uno spazio dei nomi WMI
Dopo aver impostato le chiamate standard a COM, è quindi necessario connettersi a WMI tramite una chiamata al metodo IWbemLocator::ConnectServer . Il metodo ConnectServer restituisce un proxy di un'interfaccia IWbemServices . Tramite IWbemServices è possibile accedere alle diverse funzionalità di WMI.
Gli esempi di codice in questo argomento richiedono i riferimenti seguenti e le istruzioni #include per la compilazione corretta.
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
La procedura seguente descrive come creare una connessione a uno spazio dei nomi WMI.
Per creare una connessione a uno spazio dei nomi WMI
Inizializzare l'interfaccia IWbemLocator tramite una chiamata a CoCreateInstance.
WMI non richiede alcuna procedura aggiuntiva quando si chiama CoCreateInstance in IWbemLocator.
Nell'esempio di codice seguente viene descritto come inizializzare 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. }
Connettersi a WMI tramite una chiamata al metodo IWbemLocator::ConnectServer .
Il metodo ConnectServer restituisce un proxy a un'interfaccia IWbemServices che usa per accedere allo spazio dei nomi WMI locale o remoto specificato nella chiamata a ConnectServer.
Nell'esempio di codice seguente viene descritto come chiamare 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;
Dopo aver ricevuto un puntatore al proxy IWbemServices , è necessario impostare la sicurezza sul proxy per accedere a WMI. Per altre informazioni, vedere Impostazione dei livelli di sicurezza in una connessione WMI.
Argomenti correlati