항상 이벤트 받기

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

영구적 이벤트 소비자는 등록이 명시적으로 취소 될 때까지 이벤트를 수신 합니다.

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

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

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

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

다음 절차에서는 영구적인 이벤트 소비자를 만드는 방법에 대해 설명 합니다.

사용자 고유의 영구적 이벤트 소비자를 만들려면

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

    WMI는 내장 및 외부 이벤트를 지원 합니다. 내장 이벤트는 WMI에 의해 미리 정의 된 이벤트 이지만 외부 이벤트는 타사 공급자가 정의 하는 이벤트입니다. 자세한 내용은 받을 이벤트 유형 확인을 참조 하세요.

  2. 물리적 소비자를 구현합니다.

    관리 응용 프로그램과 물리적 소비자 의 주요 차이점은 사용자가 관리 응용 프로그램을 로드 하 고 언로드하는 반면, WMI는 물리적 소비자를 로드 하 고 언로드하는 것입니다. 대부분의 코딩은 물리적 소비자에 있어야 합니다.

    참고

    이 단계는 설명의 용이성을 위한 절차의 첫 번째 단계입니다. 코딩을 기준으로 실제로 물리적 소비자를 만들어야 합니다. 이렇게 하면 긴 코딩을 시작 하기 전에 영구적 이벤트 공급자에 대 한 매개 변수 및 논리 레이아웃을 지정할 수 있습니다. 그러나 먼저 물리적 소비자를 작성 하는 것에는 제한이 없습니다.

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

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

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

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

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

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

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

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

    논리 소비자에 게 이벤트 필터를 연결 하 여 WMI에 논리적 소비자에 속하는 이벤트 필터를 알려 줍니다. 논리적 이벤트 소비자 및 이벤트 필터는 _ _ FilterToConsumerBinding의 association 클래스 인스턴스로 연결 됩니다. 이벤트 필터에 설명 된 이벤트 쿼리와 일치 하는 이벤트가 수신 되 면 WMI는 연결 클래스 인스턴스를 확인 하 여 연결 된 논리적 이벤트 소비자를 찾습니다. 논리적 이벤트 소비자 인스턴스가 있으면 WMI는 _ _ EventConsumerProviderRegistration 클래스의 인스턴스를 사용 하 여이 인스턴스와 연결 된 물리적 이벤트 소비자를 찾고 실행 합니다.

  7. 이벤트 소비자 공급자를 작성합니다.

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