Associar um filtro de evento com um consumidor lógico
Depois de criar o consumidor de eventos lógicos e o filtro de evento, você deve vinculá-los, o que registra o consumidor lógico para receber uma notificação sobre os eventos especificados pelo filtro.
O procedimento a seguir descreve como associar um filtro de evento a um consumidor lógico.
Para associar um filtro de evento a um consumidor lógico
Crie uma instância da classe do sistema __FilterToConsumerBinding no repositório do WMI.
A classe __FilterToConsumerBinding é uma classe de associação que vincula a instância de filtro de evento e a instância de consumidor lógico por meio das propriedades de referência Filter e Consumer. Para obter mais informações, veja Declarar uma classe de associação.
Defina a propriedade Filter como a instância do filtro.
Defina a propriedade Consumer como a instância do consumidor lógico.
Defina a propriedade DeliverSynchronously para determinar o tipo de entrega desejado.
A propriedade DeliverSynchronously determina quando o WMI entrega notificações de evento de maneira síncrona ou assíncrona. Definir essa propriedade como TRUE solicita uma entrega síncrona. Use a entrega síncrona somente quando o consumidor permanente puder processar eventos dentro de aproximadamente 100 microssegundos.
Observação
Como o retorno de chamada para o coletor pode não ser retornado no mesmo nível de autenticação exigido pelo cliente, é recomendável que você use comunicação semissíncrona em vez de assíncrona. Para obter mais informações, consulte Chamar um método.
Ao cancelar o registro do consumidor de eventos lógicos, exclua a instância __FilterToConsumerBinding.
Cada instância de __FilterToConsumerBinding representa um registro para uma notificação de evento específica. Quando você exclui uma associação, o WMI desativa o registro. Talvez seja necessário excluir as instâncias do consumidor lógico e do filtro de eventos para desativar o registro, dependendo da implementação.
O exemplo de código a seguir mostra uma instância __FilterToConsumerBinding que associa uma instância de uma classe ActiveScriptEventConsumer a um filtro de evento específico (a instância do consumidor do evento foi criada no tópico Criar um consumidor lógico e o filtro de evento foi criado no tópico Criar um filtro de evento).
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};
};
Dois consumidores, ActiveScriptEventConsumer e CommandLineEventConsumer, não funcionarão, a menos que seu criador seja membro do grupo local de Administradores.
: Quando um administrador cria uma assinatura, seu SID não é usado para a propriedade CreatorSID, mas o SID do grupo Administradores local é usado. Portanto, mesmo que as instâncias sejam criadas por administradores diferentes, a assinatura funcionará. Para obter mais informações, consulte Receber eventos com segurança.
Quando um filtro é associado a um consumidor lógico, o evento é registrado pelo ETW (Rastreamento de Eventos para Windows). Para obter mais informações, confira Rastreamento da atividade do WMI.
Tópicos relacionados