Share via


이벤트 공급자 등록

WMI 이벤트 공급자를 만들려면 __EventProviderRegistration 인스턴스를 사용하여 공급자를 나타내는 __Win32Provider 인스턴스를 등록해야 합니다. COM 개체로서 공급자는 운영 체제 및 WMI에 등록해야 합니다. 다음 절차에서는 공급자 등록에 설명된 대로 등록 프로세스를 이미 구현했다고 가정합니다.

다음 절차에서는 이벤트 공급자를 등록하는 방법을 설명합니다.

이벤트 공급자를 등록하려면

  1. 공급자를 설명하는 __Win32Provider 클래스의 인스턴스를 만듭니다.

  2. 공급자의 기능 집합을 설명하는 __EventProviderRegistration 클래스의 인스턴스를 만듭니다.

    __EventProviderRegistration 클래스는 __ObjectProviderRegistration 부모 클래스에서 많은 속성을 상속합니다. __EventProviderRegistration 클래스의 로컬 속성은 공급자에 대한 개체 경로와 공급자가 지원하는 이벤트를 설명하는 쿼리 목록입니다. 자세한 내용은 WMI 쿼리를 참조하세요.

  3. __Win32Provider__EventProviderRegistration 클래스의 구현을 WMI 리포지토리에 로드합니다.

    WMI는 클래스 정의를 사용하여 이벤트 공급자를 등록하고 액세스합니다. 자세한 내용은 공급자 등록을 참조하세요.

다음 코드 예제에서는 __Win32Provider 클래스와 __EventProviderRegistration 클래스의 구현을 설명합니다.

instance of __Win32Provider as $P
{
    ClientLoadableCLSID = NULL;
    CLSID = "{AA7828C5-95F9-11d2-BB0D-00C042424242}";
    DefaultMachineName = NULL;
    ImpersonationLevel = 0;
    InitializationReentrancy = 0;
    InitializeAsAdminFirst = FALSE;
    Name = "FaxEventProvider";
    PerLocaleInitialization = FALSE;
    PerUserInitialization = FALSE;
    Pure = TRUE;
    UnloadTimeout = NULL;
};

instance of __EventProviderRegistration
{  
Provider = $P;
EventQueryList = {
         "SELECT * FROM FaxEvent",
         "SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA \"Win32_LogicalDisk\""};
};

첫 번째 쿼리는 공급자가 외부 이벤트 클래스 FaxEvent에 대한 모든 이벤트 알림을 생성한다는 것을 나타냅니다. ISA 연산자를 사용하기 때문에 두 번째 쿼리는 공급자가 Win32_LogicalDisk 클래스 및 모든 하위 클래스에 대한 모든 인스턴스 생성 이벤트의 알림을 생성한다는 것을 의미합니다.

공급자가 기본 이벤트를 제공하기 위해 등록하는 경우 이벤트는 클래스의 모든 인스턴스에 적용되어야 합니다. 즉, Win32_LogicalDisk 클래스에 속하는 일부 디스크 드라이브에 대해서만 인스턴스 생성 이벤트를 제공할 목적으로 쿼리를 작성할 수 없습니다.