Partilhar via


Escrevendo um provedor de eventos

Um provedor de eventos é um objeto COM que fornece ao WMI notificações de eventos intrínsecos e extrínsecos. Um evento intrínseco relata uma alteração de dados internos para o WMI, enquanto um evento extrínseco relata um evento definido pelo usuário não descrito por um evento intrínseco. Por exemplo, um evento em resposta a alterações, criação ou exclusão da classe Win32_LogicalDisk seria classificado como um evento intrínseco. Um evento que é gerado com base em algo diferente da modificação, criação ou exclusão de um objeto WMI existente é um evento extrínseco. Independentemente da classe suportada, você pode implementar todos os provedores de eventos da mesma maneira.

O procedimento a seguir descreve como implementar um provedor de eventos.

Para implementar um provedor de eventos

  1. Desenhe e registe o seu provedor de classe na WMI.

    Os provedores de classe se registram no WMI criando uma instância __Win32Provider e uma classe __EventProviderRegistration. Para obter mais informações, consulte Registar um provedor de eventos.

  2. Implemente a interface IWbemProviderInit do para o seu provedor.

    A interfaceIWbemProviderInit é uma interface comum que o WMI usa para carregar e inicializar todos os provedores. Para obter mais informações, consulte inicializando um provedor.

  3. Implemente o IWbemEventProvider como a interface principal para seu provedor.

    A interface IWbemEventProvider usa o método ProviderEvents para fornecer eventos ao WMI. Para obter mais informações, consulte Implementando a interface primária para um provedor de eventos.

    Observação

    Os provedores de eventos devem usar o modelo de multithreading "Both".

     

  4. Opcionalmente, você pode implementar a interface IWbemEventProviderQuerySink para aumentar o desempenho do seu provedor de eventos.

    O interface do IWbemEventProviderQuerySink permite que o provedor otimize consultas antes de enviar uma resposta ao WMI, sendo mais útil para um provedor que fornece eventos de vários tipos e que precisa realizar tantas otimizações internas quanto possível. Para obter mais informações, consulte Otimizando um provedor de eventos.

  5. Implemente a interface IWbemEventProviderSecurity para limitar os consumidores a determinados identificadores de segurança (SIDs) ou implemente IWbemEventSink::SetSinkSecurity para proteger o próprio coletor. O provedor também pode definir a propriedade SECURITY_DESCRIPTOR na classe de evento para proteger eventos individuais no código MOF. Para obter mais informações, consulte Protegendo eventos WMI.

  6. Adicione qualquer código adicional necessário para o seu provedor.

    Ao projetar seu provedor, você provavelmente precisará chamar interfaces WMI. Para mais informações, consulte Chamando um Método.

    Ao recuperar informações para um cliente, talvez seja necessário acessar os níveis de segurança desse cliente. Para obter mais informações, consulte Falsificação de identidade de um cliente.

  7. Substitua o provedor preexistente pelo novo código.

    Você não precisa executar esta etapa se não tiver um provedor preexistente para copiar. Para obter mais informações, consulte Atualizar um Provedor.

Um aplicativo cliente pode solicitar um evento registrando-se no WMI como um consumidor de eventos. Para obter mais informações, consulte Recebendo um evento WMI.