Delen via


Bepalen welk type gebeurtenis moet worden ontvangen

Voordat u zich registreert om een gebeurtenis te ontvangen, moet u bepalen welke typen gebeurtenissen moeten worden ontvangen: intrinsieke of extrinsische. Voor meer informatie over het ontvangen van gebeurtenissen, zie Een WMI-gebeurtenis ontvangen. Voor meer informatie over het leveren van evenementen, zie Een WMI-provider ontwikkelen en Een evenementprovider schrijven. Zie WMI-gebeurtenissen beveiligen voor meer informatie over de beveiligingsproblemen voor het ontvangen en leveren van gebeurtenissen.

Intrinsieke gebeurtenissen

Een intrinsieke gebeurtenis is een gebeurtenis die optreedt als reactie op een wijziging in het standaard-WMI-gegevensmodel. Elke intrinsieke gebeurtenisklasse vertegenwoordigt een specifiek type wijziging en treedt op wanneer WMI of een provider een naamruimte, klasse of klasse-exemplaar maakt, verwijdert of wijzigt. Het maken van een Win32_LogicalDisk exemplaar zou bijvoorbeeld resulteren in een __InstanceCreationEvent exemplaar.

WMI maakt intrinsieke gebeurtenissen voor objecten die zijn opgeslagen in de WMI-opslagplaats. Een provider genereert intrinsieke gebeurtenissen voor dynamische klassen, maar WMI kan een exemplaar voor een dynamische klasse maken als er geen provider beschikbaar is. WMI gebruikt polling om de wijzigingen te detecteren. De volgende tabel bevat de systeemklassen die WMI gebruikt om intrinsieke gebeurtenissen te rapporteren.

Systeemklasse Beschrijving
__ClassCreationEvent Een consument wordt op de hoogte gebracht wanneer een klasse wordt gemaakt.
__ClassVerwijderenGebeurtenis Een consument wordt op de hoogte gebracht wanneer een klasse wordt verwijderd.
__ClassModificationEvent Een consument wordt op de hoogte gebracht wanneer een klasse wordt gewijzigd.
__InstanceCreationEvent Brengt een consument op de hoogte wanneer een klasse-exemplaar wordt gemaakt.
__InstanceOperationEvent Een consument wordt op de hoogte gebracht wanneer er een instantiegebeurtenis optreedt, zoals het aanmaken, verwijderen of wijzigen van de instantie. U kunt deze klasse in query's gebruiken om alle typen gebeurtenissen op te halen die zijn gekoppeld aan een exemplaar.
__InstanceDeletionEvent Brengt een gebruiker op de hoogte wanneer een instantie wordt verwijderd.
__InstanceModificationEvent Een gebruiker wordt op de hoogte gebracht wanneer een exemplaar wordt gewijzigd.
__NamespaceCreationEvent Een consument wordt op de hoogte gebracht wanneer er een naamruimte wordt gemaakt.
__NamespaceDeletionEvent Een consument wordt op de hoogte gebracht wanneer een naamruimte wordt verwijderd.
__NamespaceModificationEvent Een consument wordt op de hoogte gebracht wanneer een naamruimte wordt gewijzigd.
__ConsumerFailureEvent Hiermee wordt een gebruiker op de hoogte gebracht wanneer een ander evenement wordt verwijderd als gevolg van een fout in een event-consumer.
__EventDroppedEvent Hiermee wordt een consument op de hoogte gebracht wanneer een andere gebeurtenis wordt verwijderd in plaats van te worden bezorgd bij de aanvragende gebeurtenisconsumer.
__EventQueueOverflowEvent Hiermee wordt een consument op de hoogte gebracht wanneer een gebeurtenis wordt verwijderd als gevolg van een overloop in de bezorgingswachtrij.
__MethodInvocationEvent Een consument wordt op de hoogte gebracht wanneer een methode-aanroep gebeurtenis plaatsvindt.

 

Extrinsische gebeurtenissen

Een extrinsische gebeurtenis is een vooraf gedefinieerd exemplaar dat niet rechtstreeks kan worden gekoppeld aan wijzigingen in het WMI-gegevensmodel. Daarom kan met WMI een gebeurtenisprovider een gebeurtenisklasse definiƫren die de gebeurtenis beschrijft. Een gebeurtenis die een computer beschrijft die overschakelt naar de stand-by-modus, is bijvoorbeeld een extrinsische gebeurtenis. Een provider leidt een extrinsische gebeurtenis af van de __ExtrinsicEvent systeemklasse, een subklasse van de __Event systeemklasse. De System Registry en SNMP--providers definiƫren extrinsische gebeurtenisklassen, zoals RegistryKeyChangeEvent-, waarmee een consument wordt op de hoogte gebracht wanneer een registersleutel wordt gewijzigd. Zie Registreren voor systeemregister-gebeurtenissen en Een gebeurtenisprovider schrijvenvoor meer informatie.

In het volgende voorbeeld meldt een evenementenleverancier beveiligingsovertredingen voor een of meer gebouwen. De volgende klasse kan worden gedefinieerd voor de extrinsische gebeurtenis die een beveiligingsschending vertegenwoordigt.

class SecurityViolationEvent : __ExtrinsicEvent
{
   string Building;           // building where violation occurred
   sint32 EntranceNumber;     // entrance where violation occurred
   datetime TimeOfDetection;  // date and time of violation
}

Voor het ontvangen van meldingen over beveiligingsschendingen registreert een consument zich voor het gebeurtenistype SecurityViolationEvent. Tenzij anders aangegeven, ontvangt een consument meldingen van alle schendingen van de beveiliging gedurende alle perioden en in alle gebouwen. De gebeurtenisklasse bevat ook informatie die consumenten kunnen gebruiken om specifiekere gebeurtenissen te vragen.

In het volgende voorbeeld registreert de query de consument alleen voor beveiligingsschendingen in gebouw 24.

SELECT * FROM SecurityViolationEvent WHERE Building = 24;