클래스 공급자의 기본 인터페이스 구현

클래스 공급자를 구현하는 방법에는 푸시 공급자 또는 풀 공급자로 인터페이스를 구현하는 두 가지 방법이 있습니다.

이 항목에서 다루는 섹션은 다음과 같습니다.

푸시 클래스 공급자의 기본 인터페이스 구현

모든 공급자는 초기화를 위해 IWbemProviderInit를 구현하고 하나 이상의 다른 인터페이스를 기본 인터페이스로 구현하는 반면, 푸시 공급자는 IWbemProviderInit만 구현합니다.

구현이 다음 작업을 수행하는지 확인합니다.

  • 적절한 클래스 데이터를 검색합니다.
  • WMI 리포지토리에 데이터를 배치합니다.
  • 사용하지 않는 데이터를 삭제합니다.

초기화 프로세스를 완료한 후 WMI는 추가 공급자 상호 작용 없이 푸시 공급자에 속하는 클래스에 대한 모든 응용 프로그램 요청을 처리합니다. 그 후 푸시 공급자는 공급자가 아닌 WMI의 클라이언트 역할을 효과적으로 수행합니다. IWbemProviderInit 구현에 대한 자세한 내용은 공급자 초기화를 참조하세요.

참고

WMI를 호출하여 푸시 공급자에서 데이터를 생성, 업데이트 또는 제거할 때 IWbemServices 메서드에 대한 모든 호출에 WBEM_FLAG_OWNER_UPDATE 플래그를 포함하도록 lFlags 매개 변수를 설정합니다.

 

풀 클래스 공급자의 기본 인터페이스 구현

클래스 풀 공급자는 IWbemServices를 기본 인터페이스로 구현해야 합니다. IWbemServices 인터페이스는 데이터 검색, 데이터 업데이트, 데이터 제거, 열거형 및 쿼리 처리를 지원합니다. 그러나 IWbemServices는 응용 프로그램 및 공급자가 WMI에 서비스를 요청하는 데도 사용되기 때문에 IWbemServices는 클래스 공급자와 관련이 없는 여러 메서드를 포함합니다. 구현은 각각 GetObjectAsyncCreateClassEnumAsync 메서드를 통해 클래스 검색 및 열거형을 지원해야 합니다. 다음 표에서는 클래스 공급자에 대해 구현할 수 있는 추가 비동기 IWbemServices 메서드를 나열합니다.

메서드 기능
PutInstanceAsync 수정
DeleteClassAsync 삭제

 

참고

싱크에 대한 콜백은 클라이언트에서 요구하는 것과 동일한 인증 수준으로 반환되지 않을 수 있으므로 비동기 통신 대신 반동기를 사용하는 것이 좋습니다. 자세한 내용은 메서드 호출을 참조하세요.

 

클래스 공급자는 기능 집합을 지원하지 않는 다른 모든 IWbemServices 메서드에 대해 WBEM_E_PROVIDER_NOT_CAPABLE을 반환하는 스텁 구현을 제공해야 합니다. 특히 WMI는 클래스 공급자에 대한 쿼리 처리를 지원하지 않습니다. 따라서 클래스 공급자는 IWbemServices::ExecQueryAsync 구현에서 WBEM_E_PROVIDER_NOT_CAPABLE를 반환하고 QuerySupportLevels 등록 속성을 NULL 또는 둘 다로 설정해야 합니다.

클래스 공급자가 구현하는 인터페이스는 인스턴스 공급자 및 메서드 공급자의 인터페이스와 매우 유사합니다. 실제로 단일 공급자는 모든 메서드를 구현하고 적절히 등록하여 세 가지 유형의 공급자 역할을 모두 수행할 수 있습니다.