Een gebeurtenisprovider registreren
Als u een WMI-gebeurtenisprovider wilt maken moet u het __Win32Provider exemplaar registreren dat uw provider vertegenwoordigt met behulp van een exemplaar van __EventProviderRegistration. Als COM-object moet uw provider zich registreren bij het besturingssysteem en WMI. In de volgende procedure wordt ervan uitgegaan dat u het registratieproces al hebt geïmplementeerd zoals beschreven in Een provider registreren.
In de volgende procedure wordt beschreven hoe u een gebeurtenisprovider registreert.
Een gebeurtenisprovider registreren
Maak een exemplaar van de __Win32Provider-klasse die de provider beschrijft.
Maak een exemplaar van de __EventProviderRegistration-klasse waarin de functieset van de provider wordt beschreven.
De __EventProviderRegistration-klasse neemt veel eigenschappen over van de bovenliggende __ObjectProviderRegistration. De eigenschappen die lokaal zijn voor de __EventProviderRegistration-klasse zijn het objectpad naar de provider en een lijst met query's die de gebeurtenissen beschrijven die de provider ondersteunt. Zie, voor meer informatie, Query uitvoeren op WMI.
Laad uw implementatie van de __Win32Provider- en __EventProviderRegistration klassen in de WMI-opslagplaats.
WMI gebruikt uw klassedefinitie om uw gebeurtenisprovider te registreren en te benaderen. Zie Een provider registrerenvoor meer informatie.
In het volgende codevoorbeeld wordt een implementatie van een __Win32Provider-klasse en een __EventProviderRegistration-klasse beschreven.
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\""};
};
De eerste query geeft aan dat de provider alle gebeurtenismeldingen genereert voor de extrinsische gebeurtenisklasse FaxEvent. Omdat deze gebruikmaakt van de ISA-operator, impliceert de tweede query dat de provider meldingen genereert voor alle gebeurtenissen voor het maken van exemplaren voor de Win32_LogicalDisk-klasse en alle bijbehorende subklassen.
Wanneer een provider zich registreert voor een intrinsieke gebeurtenis, moet de gebeurtenis van toepassing zijn op alle instanties van een class. Met andere woorden, het is niet mogelijk om een query te schrijven die alleen voor sommige van de schijfstations binnen de Win32_LogicalDisk-klasse gebeurtenissen voor exemplaarcreatie biedt.