Partilhar via


Cláusula WITHIN

Os consumidores de eventos usam a cláusula WITHIN em consultas de eventos 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, do qual o evento consultado é membro. Esse intervalo é o tempo máximo que pode passar antes que a notificação de um evento seja 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 regista-se 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

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

O intervalo de sondagem é um número de vírgula 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, porque 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, recomenda-se que eles usem um intervalo superior a 5 minutos.

O exemplo de consulta a seguir solicita que o WMI verifique a cada 10 segundos 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 oferece suporte a eventos das classes de sistema __InstanceCreationEvent e __InstanceModificationEvent, e não eventos da classe de sistema __InstanceDeletionEvent. A consulta a seguir permite que o provedor de eventos gere os eventos de criação e modificação à medida que ocorrem e os entregue quando são 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 de 32 bits não assinado que especifica o período de tempo, após receber um evento inicial, durante o qual o WMI deve coletar eventos semelhantes. Quando esse período expira, o WMI entrega o evento agregado, 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 no envio de WMI de um evento agregado em vez de muitos eventos. O evento agregado é representado pela classe de 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

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

Para obter mais informações, consulte Determinando o tipo de evento a ser recebido.

Os consumidores de eventos permanentes podem ser criados com consultas de sondagem somente se você tiver privilégios de administrador.