Dela via


Bestämma vilken typ av händelse som ska tas emot

Innan du registrerar dig för att ta emot en händelse måste du fastställa vilka typer av händelser du vill ta del av: intrinsiska eller extrinsiska. Mer information om hur du tar emot händelser finns i Ta emot en WMI-händelse. För mer information om att tillhandahålla händelser, se Utveckla en WMI-leverantör och Skriva en händelseleverantör. Mer information om säkerhetsproblem för att ta emot och tillhandahålla händelser finns i Skydda WMI-händelser.

Inbyggda händelser

En inbyggd händelse är en händelse som inträffar som svar på en ändring i WMI-standarddatamodellen. Varje inbyggd händelseklass representerar en specifik typ av ändring och inträffar när WMI eller en provider skapar, tar bort eller ändrar ett namnområde, en klass eller en klassinstans. Till exempel skulle skapandet av en Win32_LogicalDisk instans resultera i en __InstanceCreationEvent instans.

WMI skapar inbyggda händelser för objekt som lagras på WMI-lagringsplatsen. En provider genererar inbyggda händelser för dynamiska klasser, men WMI kan skapa en instans för en dynamisk klass om ingen provider är tillgänglig. WMI använder avsökning för att identifiera ändringarna. I följande tabell visas de systemklasser som WMI använder för att rapportera inbyggda händelser.

Systemklass Beskrivning
__ClassCreationEvent Meddelar en konsument när en klass skapas.
__KlassBorttagningsHändelse Meddelar en konsument när en klass tas bort.
__ClassModificationEvent Meddelar en konsument när en klass ändras.
__Instansskapelsehändelse Meddelar en konsument när en klassinstans skapas.
__ÅtgärdsInstansHändelse Meddelar en konsument när en instanshändelse inträffar, till exempel skapande, borttagning eller ändring av instansen. Du kan använda den här klassen i frågor för att hämta alla typer av händelser som är associerade med en instans.
__InstanceDeletionEvent Meddelar en konsument när en instans tas bort.
__InstanceModificationEvent Meddelar en konsument när en instans ändras.
__NamespaceCreationEvent Meddelar en konsument när ett namnområde skapas.
__NamespaceDeletionEvent Meddelar en konsument när ett namnområde tas bort.
__NamespaceModificationEvent Meddelar en konsument när ett namnområde ändras.
__Konsumentfelhändelse Meddelar en konsument när någon annan händelse släpps på grund av ett fel hos en händelsekonsument.
__EventDroppedEvent Meddelar en konsument när någon annan händelse släpps i stället för att levereras till den begärande händelsekonsumenten.
__EventQueueOverflowEvent Meddelar en konsument när en händelse tas bort till följd av ett spill i leveranskön.
__MethodInvocationEvent Meddelar en konsument när en metodanropshändelse inträffar.

 

Yttre händelser

En extern händelse är en fördefinierad förekomst som inte kan länkas direkt till ändringar i WMI-datamodellen. WMI gör det därför möjligt för en händelseprovider att definiera en händelseklass som beskriver händelsen. Till exempel är en händelse som beskriver en dator som växlar till viloläge en yttre händelse. En provider härleder en extrinsisk händelse från __ExtrinsicEvent-systemklassen, som är en underklass till __Event-systemklassen. System Registry och SNMP-providers definierar extrinsiska händelseklasser, till exempel RegistryKeyChangeEvent, som meddelar en konsument när en registernyckel ändras. För mer information, se Registrera för systemlogghändelser och Skriva en händelseleverantör.

I följande exempel rapporterar en händelseleverantör säkerhetsöverträdelser till en eller flera byggnader. Följande klass kan definieras för den externa händelsen som representerar en säkerhetsöverträdelse.

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

För att få meddelanden om säkerhetsöverträdelse registrerar sig en konsument för händelsetypen SecurityViolationEvent. Om inget annat anges får en konsument ett meddelande om alla säkerhetsöverträdelser under alla tidsperioder och i alla byggnader. Händelseklassen innehåller också information som konsumenter kan använda för att be om mer specifika händelser.

I följande exempel registrerar frågan konsumenten för säkerhetsöverträdelsehändelser i endast byggnad 24.

SELECT * FROM SecurityViolationEvent WHERE Building = 24;