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 포함) |