Een gebeurtenisfilter binden met een logische consument
Nadat u de logische gebeurtenisconsumer en het gebeurtenisfilter hebt gemaakt, moet u deze koppelen, waardoor de logische consument een melding ontvangt over de gebeurtenissen die door het filter zijn opgegeven.
In de volgende procedure wordt beschreven hoe u een gebeurtenisfilter koppelt aan een logische consument.
Een gebeurtenisfilter binden aan een logische consument
Maak een exemplaar van de __FilterToConsumerBinding systeemklasse in de WMI-opslagplaats.
De __FilterToConsumerBinding-klasse is een associatieklasse die het gebeurtenisfilterexemplaar en het logische consumentenexemplaar aan elkaar koppelt via de referentie-eigenschappen Filter- en Consumer-. Zie Een koppelingsklasse declarerenvoor meer informatie.
Stel de eigenschap Filter in voor de instantie van uw filter.
Stel de eigenschap Consumer in op het exemplaar van uw logische consument.
Stel de eigenschap DeliverSynchronly in om het gewenste type levering te bepalen.
De eigenschap DeliverSynchronously bepaalt wanneer WMI gebeurtenismeldingen synchroon of asynchroon levert. Als u deze eigenschap instelt op TRUE wordt een synchrone levering aangevraagd. Gebruik alleen synchrone levering wanneer de permanente consument gebeurtenissen binnen ongeveer 100 microseconden kan verwerken.
Notitie
Omdat de callback naar de sink mogelijk niet op hetzelfde authenticatieniveau wordt teruggestuurd als de client vereist, wordt aanbevolen semisynchroon te gebruiken in plaats van asynchrone communicatie. Zie Een methode aanroepenvoor meer informatie.
Wanneer u de registratie van de logische gebeurtenisconsumer ongedaan maakt, moet u ervoor zorgen dat u het __FilterToConsumerBinding exemplaar verwijdert.
Elk __FilterToConsumerBinding exemplaar vertegenwoordigt een registratie voor een specifieke gebeurtenismelding. Wanneer u een binding verwijdert, wordt de registratie door WMI gedeactiveerd. Mogelijk moet u de logische instanties voor consumenten- en gebeurtenisfilters verwijderen om de registratie te deactiveren, afhankelijk van de implementatie.
In het volgende codevoorbeeld ziet u een __FilterToConsumerBinding exemplaar dat een exemplaar van een ActiveScriptEventConsumer klasse koppelt aan een specifiek gebeurtenisfilter (het exemplaar van de gebeurtenisgebruiker is gemaakt in het Een logische consument maken onderwerp en het gebeurtenisfilter is gemaakt in het Een gebeurtenisfilter maken onderwerp).
instance of __FilterToConsumerBinding
{
Filter = $FILTER;
Consumer = $CONSUMER;
DeliverSynchronously=FALSE;
// this is the Administrators SID in array of bytes format
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
};
Twee consumenten, ActiveScriptEventConsumer en CommandLineEventConsumer, zullen niet werken tenzij hun maker lid is van de lokale groep Administrators.
: Wanneer een beheerder een abonnement maakt, wordt zijn SID niet gebruikt voor de eigenschap CreatorSID, maar wordt de SID van de lokale groep Administrators gebruikt. Daarom kunnen exemplaren worden gemaakt door verschillende beheerders en werkt het abonnement nog steeds. Zie Gebeurtenissen veilig ontvangenvoor meer informatie.
Wanneer een filter is gebonden aan een logische consument, wordt de gebeurtenis vastgelegd door Event Tracing voor Windows (ETW). Zie WMI-activiteit tracerenvoor meer informatie.
Verwante onderwerpen