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ń
Utwórz wystąpienie klasy __Win32Provider, która opisuje dostawcę.
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.
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.