IWbemServices 인터페이스(wbemcli.h)

IWbemServices 인터페이스는 클라이언트 및 공급자가 WMI 서비스에 액세스하는 데 사용됩니다. 인터페이스는 WMI 및 WMI 공급자에 의해 구현되며 기본 WMI 인터페이스입니다.

    IWbemClassObject *pObj = NULL;

    // The pWbemSvc pointer is of type IWbemServices*
    // BSTR is not compatible with wchar_t, need to allocate.
    BSTR path = SysAllocString(L"path");
    pWbemSvc->GetObject(path, 0, 0, &pObj, 0);
    SysFreeString(path);

상속

IWbemServices 인터페이스는IUnknown 인터페이스에서 상속됩니다. IWbemServices 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IWbemServices 인터페이스에는 이러한 메서드가 있습니다.

 
IWbemServices::CancelAsyncCall

IWbemServices::CancelAsyncCall 메서드는 원래 비동기 메서드에 전달된 IWbemObjectSink 포인터를 기반으로 현재 보류 중인 모든 비동기 호출을 취소합니다.
IWbemServices::CreateClassEnum

IWbemServices::CreateClassEnum 메서드는 선택 조건을 충족하는 모든 클래스에 대한 열거자를 반환합니다.
IWbemServices::CreateClassEnumAsync

IWbemServices::CreateClassEnumAsync 메서드는 클래스 공급자가 지원하는 모든 클래스의 열거형을 반환합니다.
IWbemServices::CreateInstanceEnum

IWbemServices::CreateInstanceEnum 메서드는 사용자가 지정한 선택 조건에 따라 지정된 클래스의 인스턴스를 반환하는 열거자를 만듭니다.
IWbemServices::CreateInstanceEnumAsync

IWbemServices::CreateInstanceEnumAsync 메서드는 사용자가 지정한 선택 조건에 따라 지정된 클래스의 인스턴스를 비동기적으로 반환하는 열거자를 만듭니다.
IWbemServices::D eleteClass

IWbemServices::D eleteClass 메서드는 현재 네임스페이스에서 지정된 클래스를 삭제합니다.
IWbemServices::D eleteClassAsync

IWbemServices::D eleteClassAsync 메서드는 현재 네임스페이스에서 지정된 클래스를 삭제합니다.
IWbemServices::DeleteInstance

IWbemServices::D eleteInstance 메서드는 현재 네임스페이스에 있는 기존 클래스의 instance 삭제합니다.
IWbemServices::D eleteInstanceAsync

IWbemServices::D eleteInstanceAsync 메서드는 현재 네임스페이스에 있는 기존 클래스의 instance 비동기적으로 삭제합니다. 작업의 확인 또는 실패는 호출자가 구현한 IWbemObjectSink 인터페이스를 통해 보고됩니다.
IWbemServices::ExecMethod

CIM 개체에서 내보낸 메서드를 실행합니다.
IWbemServices::ExecMethodAsync

CIM 개체에서 내보낸 메서드를 비동기적으로 실행합니다.
IWbemServices::ExecNotificationQuery

IWbemServices::ExecNotificationQuery 메서드는 이벤트를 수신하기 위해 쿼리를 실행합니다. 호출은 즉시 반환되며, 사용자는 반환된 열거자가 도착할 때 이벤트에 대해 폴링할 수 있습니다. 반환된 열거자를 해제하면 쿼리가 취소됩니다.
IWbemServices::ExecNotificationQueryAsync

IWbemServices::ExecNotificationQueryAsync 메서드는 이벤트 알림을 중지하기 위해 CancelAsyncCall이 호출될 때까지 지정된 응답 처리기에 이벤트가 제공된다는 점을 제외하고 IWbemServices::ExecNotificationQuery와 동일한 작업을 수행합니다.
IWbemServices::ExecQuery

IWbemServices::ExecQuery 메서드는 쿼리를 실행하여 개체를 검색합니다.
IWbemServices::ExecQueryAsync

IWbemServices::ExecQueryAsync 메서드는 쿼리를 실행하여 개체를 비동기적으로 검색합니다.
IWbemServices::GetObject

IWbemServices::GetObject 메서드는 클래스 또는 instance 검색합니다. 이 메서드는 현재 IWbemServices 개체와 연결된 네임스페이스에서만 개체를 검색합니다.
IWbemServices::GetObjectAsync

IWbemServices::GetObjectAsync 메서드는 경로에 따라 클래스 정의 또는 instance 개체를 검색합니다.
IWbemServices::OpenNamespace

IWbemServices::OpenNamespace 메서드는 지정된 자식 네임스페이스를 해당 운영 컨텍스트로 포함하는 새 IWbemServices 포인터를 호출자에게 제공합니다.
IWbemServices::PutClass

IWbemServices::P utClass 메서드는 새 클래스를 만들거나 기존 클래스를 업데이트합니다. pObject 매개 변수로 지정된 클래스가 필요한 모든 속성 값으로 올바르게 초기화되어야 합니다.
IWbemServices::PutClassAsync

IWbemServices::P utClassAsync 메서드는 새 클래스를 만들거나 기존 클래스를 업데이트합니다.
IWbemServices::PutInstance

IWbemServices::P utInstance 메서드는 기존 클래스의 instance 만들거나 업데이트합니다. 인스턴스가 WMI 리포지토리에 기록됩니다.
IWbemServices::PutInstanceAsync

IWbemServices::P utInstanceAsync 메서드는 기존 클래스의 instance 비동기적으로 만들거나 업데이트합니다. 업데이트 확인 또는 오류 보고는 호출자가 구현한 IWbemObjectSink 인터페이스를 통해 제공됩니다.
IWbemServices::QueryObjectSink

IWbemServices::QueryObjectSink 메서드를 사용하면 호출자가 Windows Management에서 내보낸 알림 처리기를 가져올 수 있습니다.

설명

IWbemServices 인터페이스를 구현하는 공급자는 구현하는 각 메서드의 문서화된 의미 체계를 따라야 합니다. 및 공급자는 지정된 오류 반환 코드를 지원해야 합니다. WMI는 모든 메서드를 구현하며, 일반적으로 각 공급자는 인터페이스에서 사용 가능한 기능의 작은 하위 집합을 구현합니다. 공급자는 구현하지 않는 메서드에 대한 WBEM_E_PROVIDER_NOT_CAPABLE 반환해야 합니다.

인터페이스 메서드를 호출하기 전에 IWbemServices 메서드의 모든 아웃바운드 인터페이스 포인터를 NULL 로 초기화해야 합니다. 예를 들어 IWbemServices::GetObject 메서드에 대한 호출은 IWbemServices::GetObject 메서드 호출 전에 NULL로 미리 초기화되어야 하는 IWbemClassObject 인터페이스 포인터를 반환합니다.

예제

IWbemServices를 사용하는 여러 C++ 예제는 WMI C++ 애플리케이션 예제 섹션을 참조하세요 .

다음 코드 예제에서는 공급자가 IWbemServices 포인터를 가져오는 방법을 보여 줍니다. 코드를 컴파일하려면 다음 #include 문 및 참조가 필요합니다.

#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
IWbemLocator *pIWbemLocator = NULL;

HRESULT hRes = CoCreateInstance (
            CLSID_WbemAdministrativeLocator,
            NULL ,
            CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER , 
            IID_IUnknown ,
            ( void ** ) &pIWbemLocator
            ) ;

IWbemServices *pWbemServices = NULL;

if (SUCCEEDED(hRes))
{
    BSTR namespace = SysAllocString(L"root\\CIMV2");
    hRes = pIWbemLocator->ConnectServer(
                namespace,      // Namespace
                NULL,           // Userid
                NULL,           // PW
                NULL,           // Locale
                0,              // flags
                NULL,           // Authority
                NULL,           // Context
                &pWbemServices
                );
    SysFreeString(namespace);            

    pIWbemLocator->Release(); // Free memory resources.

    // Use pWbemServices

}

// Clean up
pWbemServices->Release();

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 wbemcli.h(Wbemidl.h 포함)

추가 정보

WMI용 COM API

WMI 공급자 만들기

클래스 및 인스턴스 정보 조작

공급자를 작성하여 WMI에 데이터 제공