이벤트 공급자 최적화
이벤트 공급자는 이벤트를 만드는 데 많은 시간을 할애할 수 있습니다. 생성된 이벤트를 사용하는 클라이언트 애플리케이션이 없으면 공급자가 시스템 리소스를 낭비하고 있는 것입니다. 또한 WMI는 복잡한 쿼리를 구문 분석하고 적절한 공급자에게 보내는 데 상당한 양의 리소스를 소비합니다. 시스템 리소스의 낭비를 방지하고 이벤트 공급자의 성능을 향상시키려면 IWbemEventProviderQuerySink 인터페이스를 구현하면 됩니다. IWbemEventProviderQuerySink는 NewQuery 및 CancelQuery 메서드를 사용하여 클라이언트 애플리케이션이 WMI에 등록하는 쿼리를 모니터링합니다. 등록된 클라이언트 쿼리를 모니터링하여 공급자는 WMI로 메시지를 보내야 하는지 여부를 결정할 수 있습니다.
WMI는 클라이언트 소비자가 해당 이벤트 공급자가 지원하는 이벤트에 대한 참조를 포함하는 이벤트 필터 쿼리를 등록할 때 이벤트 공급자에서 NewQuery를 호출합니다. 따라서 EmailClass 클래스에 대한 인스턴스 수정 이벤트를 담당하는 이벤트 공급자는 보낸 사람에게만 알림을 생성하도록 설정할 수 있습니다. 공급자가 주체 속성 변경에 대한 알림을 요청하는 쿼리를 받으면 공급자가 해당 알림 생성을 시작할 수 있습니다. 이 시나리오에서는 WMI가 받는 사람 변경 내용만 보고하는 알림을 삭제할 필요가 없습니다.
마찬가지로 WMI는 클라이언트 소비자가 해당 이벤트 공급자가 지원하는 이벤트에 대한 참조를 포함하는 이벤트 필터 쿼리를 등록할 때 이벤트 공급자에서 CancelQuery를 호출합니다. CancelQuery의 목적은 이벤트 공급자가 전송해야 하는 이벤트의 목록을 업데이트하는 것입니다.
참고
공급자가 IWbemEventProvider와 IWbemEventProviderQuerySink를 모두 지원하는 경우 IUnknown::QueryInterface 메서드의 구현이 두 인터페이스로 포인터를 반환하는지 확인합니다.