언제나 이벤트 받기
언제든지 이벤트에 반응할 수 있는 애플리케이션을 작성할 수 있습니다. 예를 들어 관리자는 네트워크 서버에서 특정 성능 측정값이 저하될 때 전자 메일 메시지를 받을 수 있습니다. 이 경우 애플리케이션은 항상 실행되어야 합니다. 그러나 애플리케이션을 지속적으로 실행하는 것은 시스템 리소스를 효율적으로 사용하는 것이 아닙니다. 대신 WMI를 사용하면 영구 이벤트 소비자를 만들 수 있습니다. 영구 이벤트 소비자는 특별한 보안 요구 사항을 충족해야 합니다. 자세한 내용은 WMI 이벤트 보안 참조하세요.
영구 이벤트 소비자는 등록이 명시적으로 취소될 때까지 이벤트를 받습니다.
영구 이벤트 소비자는 시스템에 상주하는 다음 WMI 클래스, 필터 및 COM 개체의 조합입니다.
- 물리적 소비자라는 COM 개체입니다. WMI는 여러 표준 영구 소비자를 제공합니다. 예를 들어 활성 스크립트 이벤트 소비자 이벤트가발생할 때 스크립트를 실행합니다.
- 새 영구 소비자 클래스입니다.
- 논리 소비자라는 영구 소비자 클래스의 인스턴스입니다.
- 이벤트에 대한 쿼리를 포함하는 필터입니다.
- 소비자와 필터 간의 연결입니다.
논리 이벤트 소비자의 속성은 이벤트 알림을 받을 때 수행할 작업을 지정하지만 연결된 이벤트 쿼리는 정의하지 않습니다. 신호를 받으면 WMI는 영구 이벤트 소비자를 나타내는 COM 개체를 활성 메모리에 자동으로 로드합니다. 일반적으로 시작 중 또는 트리거링 이벤트에 대한 응답으로 발생합니다. 활성화된 후, 영구 이벤트 소비자는 일반 이벤트 소비자처럼 작동하지만, 운영 체제에서 명시적으로 언로드될 때까지 유지됩니다.
사용자 고유의 영구 이벤트 소비자를 작성하거나 WMI 미리 설치된 표준 소비자 클래스사용할 수 있습니다(예: ActiveScriptEventConsumer). 자세한 내용은 표준 소비자 클래스, 표준 소비자를 통한 이벤트 모니터링 및 응답, 그리고 모니터링 이벤트를 참조하세요.
다음 절차에서는 고유한 영구 이벤트 소비자를 만드는 방법을 설명합니다.
고유한 영구 이벤트 소비자 만들려면
수신할 이벤트의 종류를 결정합니다.
WMI는 내장 및 내재 이벤트를 지원합니다. 내장 이벤트는 WMI에서 미리 정의된 이벤트인 반면, 외래 이벤트는 타사 공급자가 정의한 이벤트입니다. 자세한 내용은 이벤트 수신 유형 결정을 참조하세요.
물리적 소비자구현합니다.
관리 애플리케이션과 물리적 소비자 간의 주요 차이점은 사용자가 관리 애플리케이션을 로드하고 언로드하는 반면 WMI는 물리적 소비자를 로드하고 언로드한다는 것입니다. 대부분의 코딩은 실제 소비자에 있어야 합니다.
메모
이 단계는 설명의 용이성을 위해 절차의 첫 번째 단계입니다. 코딩 측면에서 실제 소비자를 마지막으로 만들어야 합니다. 이렇게 하면 긴 코딩을 시작하기 전에 영구 이벤트 공급자에 대한 매개 변수와 논리를 배치할 수 있습니다. 그러나 물리적 소비자를 먼저 작성하는 것에 대한 제한은 없습니다.
물리적 소비자설명하는 새 소비자 클래스를 만듭니다.
다른 클래스와 마찬가지로 소비자 클래스는 WMI에 대한 영구 이벤트 소비자의 일반 매개 변수를 설명합니다.
소비자 클래스인스턴스를 만듭니다.
다른 WMI 클래스와 마찬가지로 클래스를 구현하려면 소비자 클래스의 인스턴스를 만들어야 합니다. 소비자 클래스의 인스턴스를 논리 소비자이라고도 합니다. 논리적 소비자는 WMI의 물리적 소비자를 나타냅니다.
이벤트 필터만듭니다.
이벤트 필터 는 영구 이벤트 소비자를 활성화하는 이벤트 쿼리라고 합니다.. 단일 이벤트 필터는 여러 논리 이벤트 소비자와 연결할 수 있습니다. 또한 여러 이벤트 필터를 단일 논리 이벤트 소비자와 연결할 수 있습니다. 필터는 __EventFilter인스턴스입니다.
NT 로그 이벤트는 영구 이벤트 소비자의 쿼리가 실패할 때 생성됩니다. 이벤트의 원본은 WinMgmt이고, 이벤트 ID는 10이고, 이벤트 유형은 Error입니다.
이벤트 필터를 논리 소비자에 연결합니다.
이벤트 필터를 논리 소비자에 연결하면 어떤 이벤트 필터가 어떤 논리 소비자에 속하는지 WMI에 지시합니다. 논리 이벤트 소비자와 이벤트 필터는 __FilterToConsumerBinding연관 클래스 인스턴스에 의해 연결됩니다. 이벤트 필터에 설명된 이벤트 쿼리와 일치하는 이벤트가 수신되면 WMI는 연결 클래스 인스턴스를 확인하여 연결된 논리 이벤트 소비자를 찾습니다. 논리 이벤트 소비자 인스턴스를 찾은 후 WMI는 __EventConsumerProviderRegistration 클래스의 인스턴스를 사용하여 이 인스턴스와 연결된 실제 이벤트 소비자를 찾아 실행합니다.
이벤트 소비자 생성기작성하기.
이벤트 소비자 공급자는 WMI에 대한 물리적 소비자를 찾는 COM 개체입니다.