Udostępnij za pośrednictwem


Rejestrowanie dostawcy zdarzeń

Aby utworzyć dostawcę zdarzeń WMI , należy zarejestrować wystąpienie __Win32Provider, które reprezentuje dostawcę, przy użyciu wystąpienia __EventProviderRegistration. Jako obiekt COM dostawca musi zarejestrować się w systemie operacyjnym i usłudze WMI. Poniższa procedura zakłada, że proces rejestracji został już wdrożony zgodnie z opisem w Rejestrowanie dostawcy.

Poniższa procedura opisuje, jak zarejestrować dostawcę zdarzeń.

Aby zarejestrować dostawcę zdarzeń

  1. Utwórz wystąpienie klasy __Win32Provider, która opisuje dostawcę.

  2. Utwórz wystąpienie klasy __EventProviderRegistration opisujące zestaw funkcji dostawcy.

    Klasa __EventProviderRegistration dziedziczy wiele właściwości z klasy nadrzędnej __ObjectProviderRegistration. Właściwości lokalne klasy __EventProviderRegistration są ścieżką obiektu do dostawcy i listą zapytań opisujących zdarzenia obsługiwane przez dostawcę. Aby uzyskać więcej informacji, zobacz Querying WMI.

  3. Załaduj implementację klas __Win32Provider i __EventProviderRegistration do repozytorium WMI.

    Usługa WMI używa definicji klasy do rejestrowania dostawcy zdarzeń i uzyskiwania do tego dostępu. Aby uzyskać więcej informacji, zobacz Rejestrowanie dostawcy.

W poniższym przykładzie kodu opisano implementację klasy __Win32Provider i klasy __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\""};
};

Pierwsze zapytanie wskazuje, że dostawca generuje wszystkie powiadomienia o zdarzeniach dla klasy zdarzeń extrinsic FaxEvent. Ponieważ używa operatora ISA, drugie zapytanie oznacza, że dostawca generuje powiadomienia dla wszystkich zdarzeń tworzenia instancji dla klasy Win32_LogicalDisk i wszystkich jej podklas.

Gdy dostawca rejestruje się w celu świadczenia zdarzenia wewnętrznego, zdarzenie to musi mieć zastosowanie do wszystkich wystąpień klasy. Innymi słowy, nie można zapisać zapytania w celu uzyskania informacji o zdarzeniach tworzenia wystąpień tylko dla niektórych z dysków powiązanych z klasą Win32_LogicalDisk.