Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um driver pode usar eventos WMI para notificar aplicativos de modo de usuário de eventos sem exigir que os aplicativos pesquisem ou enviem IRPs. Um driver deve usar eventos WMI para notificar clientes WMI de condições excecionais, não como uma alternativa ao registro de erros. Um driver deve oferecer suporte a quaisquer blocos de eventos padrão definidos para seu tipo de dispositivo no Wmicore.mof e pode definir e registrar blocos de eventos personalizados adicionais para dar suporte a notificações específicas do dispositivo.
Um bloco de eventos é simplesmente um bloco de dados que deriva da classe base abstrata WMIEvent. Um bloco de eventos pode conter qualquer um dos mesmos dados que um bloco de dados ou pode estar vazio, ou seja, um bloco de eventos não precisa conter nenhum item de dados definido pelo driver. Se um bloco de eventos contiver dados, o tamanho total do WNODE_XXX mais os dados não deverá exceder o limite definido pelo Registro de 1 kilobyte. Em geral, eventos menores resultam em melhor desempenho do sistema e notificação mais oportuna. Para obter informações sobre como definir blocos, consulte Sintaxe MOF para dados WMI e blocos de eventos e Projetando dados WMI e blocos de eventos.
Um driver indica o suporte para um evento registrando o bloco de evento correspondente com WMIREG_FLAG_EVENT_ONLY_GUID definido na estrutura WMIREGGUID do bloco. Para obter informações sobre como registrar blocos, consulte Registrando-se como um provedor de dados WMI.
Quando um usuário cliente WMI solicita notificação de um evento, o WMI envia uma solicitação de IRP_MN_ENABLE_EVENTS para o driver, que alerta o driver para começar a monitorar a condição de gatilho determinada pelo driver do evento. Em seguida, quando a condição de gatilho ocorre, o driver envia o evento para o WMI, que o entrega a todos os consumidores de dados que se registraram para o evento.
Um driver envia um evento para o WMI de uma das seguintes maneiras:
Chame a rotina da biblioteca WMI do modo kernel WmiFireEvent. Um driver pode chamar WmiFireEvent para enviar somente eventos que não usam nomes de instância dinâmicos e que baseiam nomes de instância estática em uma única cadeia de caracteres de nome base ou no ID de instância do dispositivo de um DOP. Além disso, o evento deve ser uma única instância, ou seja, um driver não pode chamar WmiFireEvent para enviar um evento que consiste em um único item ou várias instâncias. Para obter mais informações, consulte Enviando um evento com WmiFireEvent.
Chame a rotina de modo kernel IoWMIWriteEvent com um ponteiro para uma estrutura WNODE_XXX alocada e inicializada por driver que contém os dados do evento. Para obter mais informações, consulte Enviando um evento com IoWMIWriteEvent.