다음을 통해 공유


이벤트 공급자의 기본 인터페이스 구현

이벤트 공급자는 이벤트 알림을 생성하기 위해 IWbemEventProvider 인터페이스를 구현해야 합니다. WMI는 공급자의 IWbemEventProvider::ProvideEvents 메서드를 호출하고 IWbemObjectSink 인터페이스의 구현인 싱크 개체에 대한 포인터를 전달합니다. 이벤트 공급자가 알림을 생성할 준비가 되면 공급자는 IWbemObjectSink::Indicate 메서드를 호출합니다.

이벤트 공급자는 IWbemEventProvider를 통해 생성된 알림을 이벤트 개체에 배치해야 합니다. Indicate 메서드의 ppObjArray 매개 변수로 표시되는 IWbemClassObject 인터페이스 배열에서 이벤트 개체를 항목으로 구현해야 합니다. IWbemClassObjects는 COM 개체이므로 공급자는 IWbemObjectSink::AddRef 메서드를 호출하여 싱크에 대한 참조 수를 증가시켜야 합니다. 많은 알림(예: 400개 이벤트)을 제공해야 하는 이벤트 공급자는 새 인스턴스를 생성하거나 기존 인스턴스를 복제하여 각 알림에 대해 고유한 이벤트 개체를 만들어야 합니다. WMI는 Indicate 호출이 완료된 후에는 이벤트 개체를 유지하지 않으며 COM 표준 이상에서는 AddRef에 대한 특별한 요구 사항이 없습니다.

이벤트 공급자를 구현할 때 다음 지침을 고려합니다.

  • 클라이언트 호출을 서비스하는 동안에는 클래스를 변경하지 않습니다.

  • 이벤트 필터를 수정하는 호출과 같은 이벤트 관련 호출은 실행하지 않습니다.

  • 이벤트를 다시 가져오기 전에 CancelQuery와 같이 Windows Management 서비스에서 발급하는 요청을 처리합니다.

    요청을 처리하지 않으면 이벤트를 다시 입력하면 이벤트가 수락되지 않을 수 있습니다.

  • 공급자 내에서 IWbemObjectSink::SetStatus를 절대 호출하지 않습니다.