WMI 네임스페이스에 대한 연결 만들기

표준 호출을 COM으로 설정한 후에는 IWbemLocator::ConnectServer 메서드를 호출하여 WMI에 연결해야 합니다. ConnectServer 메서드는 IWbemServices 인터페이스의 프록시를 반환합니다. IWbemServices를 통해 WMI의 다양한 기능에 액세스할 수 있습니다.

이 항목의 코드 예제를 올바르게 컴파일하려면 다음 참조 및 #include 문이 필요합니다.

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

다음 절차에서는 WMI 네임스페이스에 대한 연결을 만드는 방법을 설명합니다.

WMI 네임스페이스에 대한 연결을 만드는 방법

  • CoCreateInstance 호출을 통해 IWbemLocator 인터페이스를 초기화합니다.

    WMI에서는 IWbemLocator에서 CoCreateInstance를 호출할 때 사용자가 추가 프로시저를 수행하지 않아도 됩니다.

    다음 코드 예제에서는 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.
        }
    
    • IWbemLocator::ConnectServer 메서드 호출을 통해 WMI에 연결합니다.

      ConnectServer 메서드는 ConnectServer 호출에 지정된 로컬 또는 원격 WMI 네임스페이스에 액세스하는 데 사용하는 IWbemServices 인터페이스에 프록시를 반환합니다.

      다음 코드 예제에서는 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;
      

IWbemServices 프록시에 대한 포인터를 수신한 후에는 프록시의 보안을 설정한 후 WMI에 액세스해야 합니다. 자세한 내용은 WMI 연결에서 보안 수준 설정을 참조하세요.

C++를 사용하여 WMI 애플리케이션 만들기

WMI에서의 IPv6 및 IPv4 지원