Associazione di un filtro eventi con un consumer logico

Dopo aver creato il consumer di eventi logici e il filtro eventi è necessario collegarli, che registra il consumer logico per ricevere notifiche sugli eventi specificati dal filtro.

La procedura seguente descrive come associare un filtro evento a un consumer logico.

Per associare un filtro eventi a un consumer logico

  1. Creare un'istanza della classe di sistema __FilterToConsumerBinding nel repository WMI.

    La classe __FilterToConsumerBinding è una classe di associazione che collega l'istanza del filtro eventi e l'istanza del consumer logico insieme tramite le proprietà di riferimento Filter e Consumer . Per altre informazioni, vedere Dichiarazione di una classe di associazione.

  2. Impostare la proprietà Filter sull'istanza del filtro.

  3. Impostare la proprietà Consumer sull'istanza del consumer logico.

  4. Impostare la proprietà DeliverSynchronously per determinare il tipo di recapito desiderato.

    La proprietà DeliverSynchronously determina quando WMI recapita le notifiche degli eventi in modo sincrono o asincrono. L'impostazione di questa proprietà su TRUE richiede un recapito sincrono. Usare il recapito sincrono solo quando il consumer permanente può elaborare eventi entro circa 100 microsecondi.

    Nota

    Poiché il callback nel sink potrebbe non essere restituito allo stesso livello di autenticazione richiesto dal client, è consigliabile usare semisynchrono anziché la comunicazione asincrona. Per altre informazioni, vedere Chiamata di un metodo.

     

  5. Quando si annulla la registrazione del consumer di eventi logici, assicurarsi di eliminare l'istanza di __FilterToConsumerBinding .

    Ogni __FilterToConsumerBinding istanza rappresenta una registrazione per una notifica di evento specifica. Quando si elimina un'associazione, WMI disattiva la registrazione. Potrebbe essere necessario eliminare le istanze del consumer logico e del filtro eventi per disattivare la registrazione, a seconda dell'implementazione.

Nell'esempio di codice seguente viene illustrata un'istanza di __FilterToConsumerBinding che associa un'istanza di una classe ActiveScriptEventConsumer a un filtro evento specifico(l'istanza del consumer eventi è stata creata nell'argomento Creazione di un consumer logico e il filtro evento è stato creato nell'argomento Creazione di un filtro eventi).

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}; 
};

Due consumer, ActiveScriptEventConsumer e CommandLineEventConsumer, non funzioneranno a meno che il loro creatore non sia membro del gruppo Administrators locale.

: Quando un amministratore crea una sottoscrizione, il SID non viene usato per la proprietà CreatorSID , ma viene usato il SID del gruppo Administrators locale. Pertanto, le istanze possono essere create da amministratori diversi e la sottoscrizione funzionerà ancora. Per altre informazioni, vedere Ricezione di eventi in modo sicuro.

Quando un filtro è associato a un consumer logico, l'evento viene registrato da Event Tracing for Windows (ETW). Per altre informazioni, vedere Traccia attività WMI.

Ricezione di eventi in tutti i tempi