Delen via


Een gebeurtenisprovider schrijven

Een gebeurtenisprovider is een COM-object dat WMI levert met meldingen van intrinsieke en extrinsische gebeurtenissen. Een intrinsieke gebeurtenis rapporteert een interne gegevenswijziging in WMI, terwijl een extrinsische gebeurtenis een door de gebruiker gedefinieerde gebeurtenis rapporteert die niet wordt beschreven door een intrinsieke gebeurtenis. Een gebeurtenis als reactie op wijzigingen, het maken of verwijderen van de Win32_LogicalDisk-klasse wordt bijvoorbeeld geclassificeerd als een intrinsieke gebeurtenis. Een gebeurtenis die wordt gegenereerd op basis van iets anders dan de wijziging, het maken of verwijderen van een bestaand WMI-object is een extrinsische gebeurtenis. Ongeacht de ondersteunde klasse kunt u alle gebeurtenisproviders op dezelfde manier implementeren.

In de volgende procedure wordt beschreven hoe u een gebeurtenisprovider implementeert.

Een gebeurtenisprovider implementeren

  1. Ontwerp en registreer uw klasseprovider bij WMI.

    Klasseproviders registreren zich bij WMI door een __Win32Provider-exemplaar en een __EventProviderRegistration-klasse te maken. Zie Een gebeurtenisprovider registrerenvoor meer informatie.

  2. Implementeer de IWbemProviderInit-interface voor uw provider.

    De IWbemProviderInit interface is een algemene interface die WMI gebruikt om alle providers te laden en te initialiseren. Zie Initialiseren van een providervoor meer informatie.

  3. Implementeer de IWbemEventProvider als de primaire interface voor uw provider.

    De IWbemEventProvider interface maakt gebruik van de ProviderEvents methode voor het leveren van gebeurtenissen aan WMI. Voor meer informatie, zie Implementatie van de primaire interface voor een gebeurtenisprovider.

    Notitie

    Gebeurtenisproviders moeten het multithreadingmodel 'Beide' gebruiken.

     

  4. Desgewenst kunt u ook de IWbemEventProviderQuerySink interface implementeren om de prestaties van uw gebeurtenisprovider te verbeteren.

    De IWbemEventProviderQuerySink interface stelt de provider in staat om query's te optimaliseren voordat een antwoord naar WMI wordt verzonden en is het handigst voor een provider die gebeurtenissen van meerdere typen levert en die zoveel mogelijk interne optimalisaties moet uitvoeren. Zie Een gebeurtenisprovider optimaliserenvoor meer informatie.

  5. Implementeer de IWbemEventProviderSecurity-interface om consumenten te beperken tot bepaalde beveiligings-ID's (SID's) of implementeer IWbemEventSink::SetSinkSecurity om de beveiliging van de sink zelf in te stellen. De provider kan ook de eigenschap SECURITY_DESCRIPTOR instellen in de gebeurtenisklasse om afzonderlijke gebeurtenissen in de MOF-code te beveiligen. Voor meer informatie, zie WMI-gebeurtenissen beveiligen.

  6. Voeg eventuele extra code toe die nodig is voor uw provider.

    Bij het ontwerpen van uw provider moet u waarschijnlijk WMI-interfaces aanroepen. Zie Een methode aanroepenvoor meer informatie.

    Bij het ophalen van informatie voor een client moet u mogelijk toegang krijgen tot de beveiligingsniveaus voor die client. Zie Een client-imiteren voor meer informatie.

  7. Vervang de bestaande provider door uw nieuwe code.

    U hoeft deze stap niet uit te voeren als u geen bestaande provider hebt om deze te kopiƫren. Zie Een provider bijwerkenvoor meer informatie.

Een clienttoepassing kan een gebeurtenis aanvragen door zich te registreren bij WMI als gebeurtenisconsumer. Zie Een WMI-gebeurtenis ontvangenvoor meer informatie.