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 chamar IoWMIWriteEvent para enviar qualquer evento. O evento pode consistir em um único item, uma única instância ou todas as instâncias de um bloco de dados, e pode usar nomes de instância dinâmicos.
Ao contrário das estruturas WNODE_XXX passadas com solicitações de consulta ou alteração, que são alocadas e parcialmente inicializadas pelo WMI, o driver deve alocar e inicializar todos os membros da estrutura WNODE_XXX que contém um evento.
Um driver deve enviar um evento somente depois que o WMI enviar uma solicitação IRP_MN_ENABLE_EVENTS para ativar o evento. Em seguida, quando a condição de gatilho do evento ocorrer, o driver:
Aloca um buffer do pool não paginado para conter a estrutura WNODE_XXX necessária para o evento, incluindo espaço para dados variáveis, se houver.
Dependendo do evento, o motorista pode alocar um WNODE_SINGLE_ITEM, um WNODE_SINGLE_INSTANCE ou um WNODE_ALL_DATA para o evento. O tamanho dos dados WNODE_XXX mais variáveis não deve exceder o limite definido pelo Registro de 1K.
Inicializa todos os membros da estrutura WNODE_XXX , incluindo WnodeHeader.Flags:
O driver configura o sinalizador WNODE_FLAG_EVENT_ITEM para indicar que a estrutura é um evento.
O driver define um dos seguintes sinalizadores para indicar o tipo de estrutura WNODE_XXX :
WNODE_FLAG_ALL_DATA
WNODE_FLAG_SINGLE_INSTANCE
WNODE_FLAG_SINGLE_ITEM
O driver define ou limpa os seguintes sinalizadores para indicar se o bloco usa nomes de instância estáticos ou dinâmicos:
WNODE_FLAG_STATIC_INSTANCE_NAMES
WNODE_FLAG_NOMES_DE_INSTÂNCIA_DO_PDO
O motorista pode definir sinalizadores adicionais, dependendo do evento.
Lança um ponteiro para o WNODE_XXX para um PWNODE_EVENT_ITEM.
Chama IoWMIWriteEvent com o ponteiro.
Quando IoWMIWriteEvent for concluído com êxito, o WMI libertará a memória alocada pelo driver para o evento.
Depois que IoWMIWriteEvent retorna, o driver continua a monitorizar a condição de disparo do evento e envia o evento cada vez que a condição de disparo ocorre, até que o WMI envie uma solicitação IRP_MN_DISABLE_EVENTS para desativar esse evento.
Se o tamanho de um evento exceder o máximo definido pelo Registro de 1K (não recomendado), o driver deverá chamar IoWmiWriteEvent com um WNODE_EVENT_REFERENCE inicializado que especifique o GUID do evento, seu tamanho e seu índice de instância (para nomes de instância estática) ou nome (para nomes de instância dinâmica). O WMI usará as informações no WNODE_EVENT_REFERENCE para consultar o evento.
Um driver pode enviar um evento que não usa nomes de instância dinâmicos e que consiste em uma única instância chamando a rotina da biblioteca WMI WmiFireEvent. O driver não precisa alocar e inicializar uma estrutura WNODE_XXX para uma chamada WmiFireEvent . O WMI empacota os dados de eventos do driver em um WNODE_SINGLE_INSTANCE e os entrega aos consumidores de dados. Para obter mais informações sobre como enviar eventos com WmiFireEvent, consulte Enviando um evento com WmiFireEvent.