Dela via


Skriva en händelseleverantör

En händelseprovider är ett COM-objekt som förser WMI med notifieringar om interna och externa händelser. En inbyggd händelse rapporterar en intern dataändring till WMI, medan en extern händelse rapporterar en användardefinierad händelse som inte beskrivs av en inbyggd händelse. En händelse som svar på ändringar, skapande eller borttagning av Win32_LogicalDisk-klassen skulle till exempel klassificeras som en inbyggd händelse. En händelse som genereras på grundval av något annat än ändring, skapande eller borttagning av ett befintligt WMI-objekt är en utökningshändelse. Oavsett vilken klass som stöds kan du implementera alla händelseprovidrar på samma sätt.

Följande procedur beskriver hur du implementerar en händelseprovider.

Implementera en händelseleverantör

  1. Utforma och registrera din klassprovider med WMI.

    Klassprovidrar registrerar sig med WMI genom att skapa en __Win32Provider-instans och en __EventProviderRegistration-klass. För mer information, se Registrera en händelseleverantör.

  2. Implementera IWbemProviderInit--gränssnittet för din provider.

    Gränssnittet IWbemProviderInit är ett vanligt gränssnitt som WMI använder för att läsa in och initiera alla leverantörer. För mer information, se Initiering av en leverantör.

  3. Implementera IWbemEventProvider som det primära gränssnittet för providern.

    Gränssnittet IWbemEventProvider använder metoden ProviderEvents för att tillhandahålla händelser till WMI. Mer information finns i Implementera det primära gränssnittet för en händelseleverantör.

    Not

    Händelseprovidrar måste använda multitrådningsmodellen "Båda".

     

  4. Valfritt kan du även implementera IWbemEventProviderQuerySink--gränssnittet för att öka prestandan för din händelseleverantör.

    Med IWbemEventProviderQuerySink--gränssnittet kan providern optimera frågor innan ett svar skickas till WMI, och är mest användbart för en provider som tillhandahåller händelser av flera typer och som behöver utföra så många interna optimeringar som möjligt. Mer information finns i Optimera en evenemangsleverantör.

  5. Implementera gränssnittet IWbemEventProviderSecurity för att begränsa konsumenter till vissa säkerhetsidentifierare (SID) eller implementera IWbemEventSink::SetSinkSecurity för att skydda själva mottagaren. Providern kan också ange egenskapen SECURITY_DESCRIPTOR i händelseklassen för att skydda enskilda händelser i MOF-koden. Mer information finns i Skydda WMI-händelser.

  6. Lägg till eventuell ytterligare kod som krävs för din provider.

    När du utformar din leverantör behöver du troligtvis anropa WMI-gränssnitt. För mer information, se Anropa en metod.

    När du hämtar information för en klient kan du behöva komma åt säkerhetsnivåerna för klienten. Mer information finns i Personifiera en klient.

  7. Ersätt den befintliga providern med din nya kod.

    Du behöver inte utföra det här steget om du inte har någon befintlig provider att kopiera över. Mer information finns i Uppdatering av en leverantör.

Ett klientprogram kan begära en händelse genom att registrera sig med WMI som händelsekonsument. För mer information, se Att ta emot en WMI-händelse.