Регистрация поставщика событий

Чтобы создать поставщик событий WMI, необходимо зарегистрировать экземпляр __Win32Provider , представляющий поставщика, с помощью экземпляра __EventProviderRegistration. В качестве 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\""};
};

Первый запрос указывает, что поставщик создает все уведомления о событиях для класса событий extrinsic FaxEvent. Так как используется оператор ISA, второй запрос подразумевает, что поставщик создает уведомления обо всех событиях создания экземпляра для класса Win32_LogicalDisk и всех его подклассов.

Когда поставщик регистрируется для предоставления встроенного события, это событие должно применяться ко всем экземплярам класса. Иными словами, запрос не может быть написан для предоставления событий создания экземпляра только для некоторых дисков, принадлежащих к классу Win32_LogicalDisk .