항상 이벤트 수신

언제든지 이벤트에 대응할 수 있는 애플리케이션을 작성해야 할 수 있습니다. 예를 들어, 관리자는 네트워크 서버에서 특정 성능 측정값이 감소할 때 이메일 메시지를 받아야 할 수 있습니다. 이 경우 애플리케이션이 항상 실행되어야 합니다. 그러나 애플리케이션을 지속적으로 실행하는 것은 시스템 리소스를 효율적으로 사용하는 것이 아닙니다. 대신 WMI를 사용하면 영구 이벤트 소비자를 만들 수 있습니다. 영구 이벤트 소비자는 특별한 보안 요구 사항을 충족해야 합니다. 자세한 내용은 WMI 이벤트 보안을 참조하세요.

영구 이벤트 소비자는 등록이 명시적으로 취소되기 전까지 이벤트를 받습니다.

영구 이벤트 소비자는 시스템에 상주하는 다음 WMI 클래스, 필터 및 COM 개체의 조합입니다.

  • 실제 소비자라고 하는 COM 개체. WMI는 몇 가지 영구 소비자를 제공합니다. 예를 들어, 활성 스크립트 이벤트 소비자 는 이벤트가 발생할 때 스크립트를 실행합니다.
  • 새 영구 소비자 클래스.
  • 논리 소비자라고 하는 영구 소비자 클래스의 인스턴스.
  • 이벤트에 대한 쿼리를 포함하는 필터.
  • 소비자와 필터 간의 링크.

논리 이벤트 소비자의 속성은 이벤트에 대한 알림을 받을 때 수행할 작업을 지정하지만 연결된 이벤트 쿼리는 정의하지 않습니다. 신호를 받으면 WMI가 영구 이벤트 소비자를 나타내는 COM 개체를 활성 메모리에 자동으로 로드합니다. 일반적으로 시작할 때 또는 트리거 이벤트에 응답할 때 발생합니다. 활성화된 후 영구 이벤트 소비자는 일반 이벤트 소비자 역할을 하지만 운영 체제에서 특별히 언로드될 때까지 유지됩니다.

사용자 자체의 영구 이벤트 소비자를 작성하거나 ActiveScriptEventConsumer 같이 미리 설치된 WMI 표준 소비자 클래스를 사용할 수 있습니다. 자세한 내용은 표준 소비자 클래스, 표준 소비자를 사용하여 이벤트 모니터링 및 응답이벤트 모니터링을 참조하세요.

다음 절차에서는 사용자 자체의 영구 이벤트 소비자를 만드는 방법을 설명합니다.

체 영구 이벤트 소비자를 만들려면

  1. 수신하려는 이벤트의 종류를 결정합니다.

    WMI는 내부 및 외부 이벤트를 지원합니다. 내장 이벤트는 WMI에 의해 미리 정의된 이벤트인 반면, 외래 이벤트는 타사 공급자가 정의한 이벤트입니다. 자세한 내용은 수신할 이벤트 유형 결정을 참조하세요.

  2. 물리적 소비자 구현

    관리 애플리케이션과 물리적 소비자의 주요 차이점은 사용자는 관리 애플리케이션을 로드하고 언로드하며 WMI는 물리적 소비자를 로드하고 언로드한다는 것입니다. 대부분의 코딩은 물리적 소비자에 있어야 합니다.

    참고

    이 단계는 이해를 돕귀 위한 절차의 첫 부분입니다. 코딩 측면에서 물리적 소비자를 마지막으로 만들어야 합니다. 이렇게 하면 긴 코딩을 시작하기 전에 영구 이벤트 공급자용 매개 변수와 논리를 배치할 수 있습니다. 그러나 물리적 소비자를 먼저 작성해도 됩니다.

     

  3. 물리적 소비자를 설명하는 새 소비자 클래스를 만듭니다.

    다른 클래스와 마찬가지로 소비자 클래스는 WMI에 대한 영구 이벤트 소비자의 일반 매개 변수를 설명합니다.

  4. 자 클래스의 인스턴스를 만듭니다.

    다른 WMI 클래스와 마찬가지로 클래스를 구현하려면 소비자 클래스의 인스턴스를 만들어야 합니다. 소비자 클래스의 인스턴스를 논리 소비자라고도 합니다. 논리 소비자는 WMI에 대한 물리적 소비자를 나타냅니다.

  5. 이벤트 필터를 만듭니다.

    영구 이벤트 소비자를 활성화하는 이벤트 쿼리를 이벤트 필터라고 합니다. 단일 이벤트 필터가 여러 논리 이벤트 소비자와 연결될 수 있습니다. 그리고 여러 이벤트 필터가 단일 논리 이벤트 소비자와 연결될 수 있습니다. 필터는 __EventFilter의 인스턴스입니다.

    영구 이벤트 소비자의 쿼리가 실패하면 NT 로그 이벤트가 생성됩니다. 이벤트의 원본은 WinMgmt이고, 이벤트 ID는 10이며, 이벤트 유형은 Error입니다.

  6. 이벤트 필터를 논리 소비자에 연결합니다.

    이벤트 필터를 논리 소비자에 연결하면 어떤 이벤트 필터가 논리 소비자에 속하는지 WMI에 알려줍니다. 논리적 이벤트 소비자 및 이벤트 필터는 __FilterToConsumerBinding의 연결 클래스 인스턴스에 의해 연결됩니다. 이벤트 필터에 설명된 이벤트 쿼리와 일치하는 이벤트가 수신되면 WMI는 연결 클래스 인스턴스를 확인하여 연결된 논리 이벤트 소비자를 찾습니다. 논리 이벤트 소비자 인스턴스를 찾은 후 WMI는 __EventConsumerProviderRegistration 클래스의 인스턴스를 사용하여 이 인스턴스와 연결된 물리적 이벤트 소비자를 찾아서 실행합니다.

  7. 이벤트 소비자 공급자 작성

    이벤트 소비자 공급자는 WMI에 대한 물리적 소비자를 찾는 COM 개체입니다.