클래스 공급자를 구현하는 두 가지 방법이 있습니다. 즉, 인터페이스를 푸시 공급자로 구현하거나 끌어오기 공급자로 구현합니다.
이 항목에서는 다음 섹션에 대해 설명합니다.
- 푸시 클래스 공급자 대한 기본 인터페이스 구현
- 끌어오기 클래스 공급자를 위한 기본 인터페이스 구현
푸시 클래스 공급자에 대한 기본 인터페이스 구현
모든 공급자가 초기화를 위해 IWbemProviderInit 구현하고 하나 이상의 다른 인터페이스를 기본 인터페이스로 구현하는 반면 푸시 공급자는 IWbemProviderInit구현합니다.
구현에서 다음 작업을 수행하는지 확인합니다.
- 적절한 클래스 데이터를 검색합니다.
- WMI 리포지토리에 데이터를 배치합니다.
- 사용되지 않는 데이터를 삭제합니다.
초기화 프로세스를 완료한 후 WMI는 추가 공급자 상호 작용 없이 푸시 공급자에 속하는 클래스에 대한 모든 애플리케이션 요청을 처리합니다. 그 후 푸시 공급자는 공급자가 아닌 WMI의 클라이언트 역할을 효과적으로 합니다. IWbemProviderInit구현하는 방법에 대한 자세한 내용은 공급자초기화를 참조하세요.
메모
푸시 공급자에서 데이터를 생성, 업데이트 또는 제거하기 위해 WMI를 호출할 때 IWbemServices 메서드에 대한 모든 호출에 WBEM_FLAG_OWNER_UPDATE 플래그를 포함하도록 lFlags 매개 변수를 설정합니다.
끌어오기 클래스 공급자에 대한 기본 인터페이스 구현
클래스 끌어오기 공급자는 IWbemServices 기본 인터페이스로 구현해야 합니다. IWbemServices 인터페이스는 데이터 검색, 데이터 업데이트, 데이터 제거, 열거형 및 쿼리 처리를 지원합니다. 그러나 IWbemServices 애플리케이션 및 공급자가 WMI의 서비스를 요청하는 데도 사용되므로 IWbemServices 클래스 공급자와 관련이 없는 많은 메서드가 포함되어 있습니다. 구현은 GetObjectAsync 및 CreateClassEnumAsync 메서드를 통해 클래스 검색 및 열거를 지원해야 합니다. 다음 표에서는 클래스 공급자에 대해 구현할 수 있는 추가 비동기 IWbemServices 메서드를 나열합니다.
| 메서드 | 특징 |
|---|---|
| PutInstanceAsync | 수정 |
| DeleteClassAsync | 삭제 |
메모
싱크에 대한 콜백은 클라이언트가 요구하는 것과 동일한 인증 수준에서 반환되지 않을 수 있으므로 비동기 통신 대신 반동기를 사용하는 것이 좋습니다. 자세한 내용은 메서드호출을 참조하세요.
클래스 공급자는 기능 집합을 지원하지 않는 다른 모든 IWbemServices 메서드에 대한 WBEM_E_PROVIDER_NOT_CAPABLE 반환하는 스텁 구현을 제공해야 합니다. 특히 WMI는 클래스 공급자에 대한 쿼리 처리를 지원하지 않습니다. 따라서 클래스 공급자는 IWbemServices::ExecQueryAsync구현에서 WBEM_E_PROVIDER_NOT_CAPABLE 반환하고, QuerySupportLevels 등록 속성을 NULL또는 둘 다로 설정해야 합니다.
클래스 공급자가 구현하는 인터페이스는 인스턴스 공급자 및 메서드 공급자에 대한 인터페이스와 매우 유사합니다. 실제로 단일 공급자는 모든 메서드를 구현하고 제대로 등록하여 세 가지 유형의 공급자로 모두 작동할 수 있습니다.