Membuat Koneksi ke Namespace WMI

Setelah Anda mengatur panggilan standar ke COM, Anda kemudian harus terhubung ke WMI melalui panggilan ke metode IWbemLocator::ConnectServer . Metode ConnectServer mengembalikan proksi antarmuka IWbemServices . Melalui IWbemServices, Anda dapat mengakses berbagai kemampuan WMI.

Contoh kode dalam topik ini memerlukan referensi berikut dan pernyataan #include untuk dikompilasi dengan benar.

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

Prosedur berikut menjelaskan cara membuat koneksi ke namespace WMI.

Untuk membuat koneksi ke namespace WMI

  • Inisialisasi antarmuka IWbemLocator melalui panggilan ke CoCreateInstance.

    WMI tidak mengharuskan Anda melakukan prosedur tambahan saat memanggil CoCreateInstance di IWbemLocator.

    Contoh kode berikut menjelaskan cara menginisialisasi 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.
        }
    
    • Sambungkan ke WMI melalui panggilan ke metode IWbemLocator::ConnectServer .

      Metode ConnectServer mengembalikan proksi ke antarmuka IWbemServices yang menggunakan untuk mengakses namespace WMI lokal atau jarak jauh yang ditentukan dalam panggilan Anda ke ConnectServer.

      Contoh kode berikut menjelaskan cara memanggil 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;
      

Setelah Anda menerima pointer ke proksi IWbemServices , Anda harus mengatur keamanan pada proksi untuk mengakses WMI. Untuk informasi selengkapnya, lihat Mengatur Tingkat Keamanan pada Koneksi WMI.

Membuat Aplikasi WMI Menggunakan C++

Dukungan IPv6 dan IPv4 di WMI