Compartilhar via


Cláusula WITHIN

Os consumidores de eventos usam a cláusula WITHIN em consultas de evento para especificar um intervalo de sondagem ou um intervalo de agrupamento.

Um intervalo de sondagem é o intervalo que o WMI (Instrumentação de Gerenciamento do Windows) usa para sondar o provedor de dados responsável pela classe para eventos intrínsecos, dos quais o evento consultado é um membro. Este intervalo é o período máximo de tempo que pode ser decorrido antes que um evento de notificação precise ser entregue. Um consumidor usa um intervalo de sondagem em uma cláusula WITHIN quando o consumidor requer notificação de alterações em uma classe e um provedor de eventos não está disponível. O consumidor se registra para um evento intrínseco e inclui o intervalo de sondagem.

Para especificar um intervalo de sondagem, coloque a cláusula WITHIN imediatamente antes da cláusula WHERE, conforme mostrado a seguir:

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

O IntrinsicEventClass é a classe de evento intrínseca da qual o evento é membro, intervalo é o intervalo de sondagem e valor é o valor da propriedade na qual o consumidor requer notificação.

O intervalo de sondagem é um número de ponto flutuante e pode ser fracionário para aceitar valores menores que 1 segundo. No entanto, o intervalo deve representar um número de segundos em vez de um valor extremamente pequeno, como 0,001, pois especificar um valor muito pequeno pode fazer com que o WMI rejeite a instrução como não válida devido à natureza intensiva de recursos da sondagem. Como a maioria dos consumidores de eventos não exige notificação imediata, é recomendável que eles usem um intervalo maior que 5 minutos.

O exemplo de consulta a seguir solicita que o WMI verifique a cada 10 segundos para as alterações que ocorrem em instâncias da classe Win32_LogicalDisk. Se uma instância da classe for modificada dentro do intervalo de sondagem especificado, um evento de notificação será enviado para cada modificação.

SELECT * FROM __InstanceModificationEvent WITHIN 10  WHERE TargetInstance ISA "Win32_LogicalDisk"

Dependendo da consulta, um provedor de eventos e o WMI podem compartilhar a tarefa de fornecer eventos. Por exemplo, um provedor de eventos que dá suporte a eventos das classes do sistema __InstanceCreationEvent e __InstanceModificationEvent e não eventos da classe do sistema __InstanceDeletionEvent. A consulta a seguir permite que o provedor de eventos gere os eventos de criação e modificação conforme eles ocorrem e que eles sejam entregues quando forem criados. A consulta também permite que o WMI gere eventos __InstanceDeletionEvent a cada 10 (dez) segundos usando o mecanismo de sondagem.

SELECT * FROM __InstanceOperationEvent WITHIN 10  WHERE TargetInstance ISA "MyOwnClass"

Você também pode usar a cláusula WITHIN para especificar um intervalo de agrupamento. Um intervalo de agrupamento é um inteiro não assinado de 32 bits que especifica o período de tempo, após o recebimento de um evento inicial, durante o qual o WMI deverá coletar eventos semelhantes. Quando esse período expira, o WMI entrega o evento de agregação, composto por todos os eventos semelhantes. Para obter mais informações, consulte Cláusula GROUP.

Os consumidores de eventos que se registram para eventos que ocorrem com frequência usam um intervalo de agrupamento com a cláusula WITHIN. Adicionar GROUP WITHIN à cláusula WHERE em uma consulta de evento resulta em WMI enviando um evento de agregação em vez de muitos eventos. O evento de agregação é representado pela classe do sistema __AggregateEvent.

Para especificar um intervalo de agrupamento, coloque a cláusula WITHIN imediatamente após a cláusula GROUP.

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

O EventClass é a classe de evento da qual o evento é membro, valor é o valor da propriedade na qual o consumidor requer notificação e Intervalo é o intervalo de agrupamento.

Para obter mais informações, confira Determinar o tipo de evento a receber.

Os consumidores de eventos permanentes só poderão ser criados com consultas de sondagem caso tenha privilégios de administrador.