Binden eines Ereignisfilters an einen logischen Consumer

Nachdem Sie den logischen Ereignisconsumer und den Ereignisfilter erstellt haben, müssen Sie sie verknüpfen, damit der logische Consumer registriert wird, um Benachrichtigungen über die vom Filter angegebenen Ereignisse zu erhalten.

Im folgenden Verfahren wird beschrieben, wie ein Ereignisfilter an einen logischen Consumer gebunden wird.

So binden Sie einen Ereignisfilter an einen logischen Consumer

  1. Erstellen Sie eine Instanz der __FilterToConsumerBinding-Systemklasse im WMI-Repository.

    Die __FilterToConsumerBinding-Klasse ist eine Zuordnungsklasse, die die Ereignisfilterinstanz und die logische Consumerinstanz über die Verweiseigenschaften Filter und Consumer miteinander verknüpft. Weitere Informationen finden Sie unter Deklarieren einer Zuordnungsklasse.

  2. Legen Sie die Filter-Eigenschaft auf die Instanz Ihres Filters fest.

  3. Legen Sie die Consumer-Eigenschaft auf die Instanz Ihres logischen Consumers fest.

  4. Legen Sie die DeliverSynchronously-Eigenschaft fest, um den gewünschten Übermittlungstyp zu bestimmen.

    Die DeliverSynchronously-Eigenschaft bestimmt, wann WMI Ereignisbenachrichtigungen synchron oder asynchron übermittelt. Wenn Sie diese Eigenschaft auf TRUE festlegen, wird eine synchrone Übermittlung angefordert. Verwenden Sie die synchrone Übermittlung nur, wenn der permanente Consumer Ereignisse innerhalb von ca. 100 Mikrosekunden verarbeiten kann.

    Hinweis

    Da der Rückruf an die Senke möglicherweise nicht auf der Authentifizierungsebene zurückgegeben wird, die der Client benötigt, empfiehlt es sich, anstelle der asynchronen Kommunikation eine halbsynchrone Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode.

     

  5. Wenn Sie die Registrierung ihres logischen Ereignisconsumers aufheben, müssen Sie die __FilterToConsumerBinding-Instanz löschen.

    Jede __FilterToConsumerBinding-Instanz stellt eine Registrierung für eine bestimmte Ereignisbenachrichtigung dar. Wenn Sie eine Bindung löschen, deaktiviert WMI die Registrierung. Abhängig von der Implementierung müssen Sie möglicherweise die logischen Consumer- und Ereignisfilterinstanzen löschen, um die Registrierung zu deaktivieren.

Das folgende Codebeispiel veranschaulicht eine __FilterToConsumerBinding-Instanz, die eine Instanz einer ActiveScriptEventConsumer-Klasse einem bestimmten Ereignisfilter zuordnet. (Die Instanz des Ereignisconsumers wurde im Thema Erstellen eines logischen Consumers, der Ereignisfilter im Thema Erstellen eines Ereignisfilters erstellt.)

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

Zwei Consumer, ActiveScriptEventConsumer und CommandLineEventConsumer, funktionieren nur, wenn sie von einem Mitglied der lokalen Administratorgruppe erstellt werden.

: Wenn ein Administrator ein Abonnement erstellt, wird für die CreatorSID-Eigenschaft nicht seine SID, sondern die SID der lokalen Administratorgruppe verwendet. Daher können Instanzen von verschiedenen Administratoren erstellt werden, und das Abonnement funktioniert weiterhin. Weitere Informationen finden Sie unter Sicherer Empfang von Ereignissen.

Wenn ein Filter an einen logischen Consumer gebunden ist, wird das Ereignis von der Ereignisablaufverfolgung für Windows (ETW) aufgezeichnet. Weitere Informationen finden Sie unter Verfolgen von WMI-Aktivitäten.

Empfang von Ereignissen zu jeder Zeit