논리적 이벤트 소비자 및 이벤트 필터를 만든 후에는 필터에 지정된 이벤트에 대한 알림을 받도록 논리 소비자를 등록하는 이벤트 필터를 연결해야 합니다.
다음 절차에서는 이벤트 필터를 논리 소비자와 바인딩하는 방법을 설명합니다.
이벤트 필터를 논리 소비자에 바인딩하려면
WMI 리포지토리에서 __FilterToConsumerBinding 시스템 클래스의 인스턴스를 만듭니다.
__FilterToConsumerBinding 클래스는 필터 및 소비자 참조 속성을 통해 이벤트 필터 인스턴스와 논리 소비자 인스턴스를 함께 연결하는 연결 클래스입니다. 자세한 내용은 연결 클래스 선언 을 참조하세요.
Filter 속성을 필터 인스턴스로 설정합니다.
Consumer 속성을 논리 소비자의 인스턴스로 설정합니다.
DeliverSynchronously 속성을 설정하여 원하는 배달 유형을 결정합니다.
DeliverSynchronously 속성은 WMI가 이벤트 알림을 동기적으로 또는 비동기적으로 전달하는 시기를 결정합니다. 이 속성을 TRUE 설정하면 동기 배달이 요청됩니다. 영구 소비자가 약 100 마이크로초 내에 이벤트를 처리할 수 있는 경우에만 동기 배달을 사용합니다.
메모
싱크에 대한 콜백은 클라이언트가 요구하는 것과 동일한 인증 수준에서 반환되지 않을 수 있으므로 비동기 통신 대신 반동기를 사용하는 것이 좋습니다. 자세한 내용은 메서드호출을 참조하세요.
논리 이벤트 소비자의 등록을 취소할 때 __FilterToConsumerBinding 인스턴스를 반드시 삭제하세요.
각 __FilterToConsumerBinding 인스턴스는 특정 이벤트 알림에 대한 등록을 나타냅니다. 바인딩을 삭제하면 WMI가 등록을 비활성화합니다. 구현에 따라 등록을 비활성화하려면 논리 소비자 및 이벤트 필터 인스턴스를 삭제해야 할 수 있습니다.
다음 코드 예제에서는 ActiveScriptEventConsumer 클래스의 인스턴스를 특정 이벤트 필터와 연결하는 __FilterToConsumerBinding 인스턴스를 보여 줍니다(이벤트 소비자의 인스턴스는 논리 소비자 만들기 항목에서 만들어졌으며 이벤트 필터 만들기 이벤트 필터 항목에서 생성됨).
instance of __FilterToConsumerBinding
{
Filter = $FILTER;
Consumer = $CONSUMER;
DeliverSynchronously=FALSE;
// this is the Administrators SID in array of bytes format
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
};
두 소비자인 ActiveScriptEventConsumer 및 CommandLineEventConsumer는 작성자가 로컬 Administrators 그룹의 구성원이 아닌 한 작동하지 않습니다.
: 관리자가 구독을 만들 때 해당 SID는 CreatorSID 속성에 사용되지 않지만 로컬 Administrators 그룹의 SID가 대신 사용됩니다. 따라서 다른 관리자가 인스턴스를 만들 수 있으며 구독은 계속 작동합니다. 자세한 내용은 이벤트를 안전하게 수신하기를 참조하세요.
필터가 논리 소비자에 바인딩되면 Windows용 이벤트 추적(ETW)에 의해 이벤트가 기록됩니다. 자세한 내용은 WMI 활동 추적을 참조하세요.
관련 항목