Instrução SELECT para consultas de eventos

Você pode usar uma variedade de instruções SELECT para consultar informações de evento. As instruções podem ser instruções básicas ou podem ser mais restritivas para restringir o conjunto de resultados retornado da consulta.

O exemplo a seguir é uma instrução SELECT básica usada para consultar informações de evento.

SELECT * FROM EventClass

Quando um consumidor envia uma consulta, ela é uma solicitação a ser notificada de todas as ocorrências do evento representado por EventClass. Essa solicitação inclui uma solicitação de notificação sobre todas as propriedades do sistema de eventos e propriedades não relacionadas ao sistema. Quando um provedor de eventos envia uma consulta, ele registra suporte para gerar notificações quando ocorrer um evento representado por EventClass.

Os consumidores podem especificar propriedades individuais em vez do asterisco (*) na instrução SELECT.

O exemplo a seguir mostra como consultar propriedades específicas.

SELECT property_1, property_2, property_3 FROM MyEventClass

No entanto, todas as propriedades de um objeto incorporado são retornadas, mesmo que a consulta especifique as propriedades do objeto incorporado.

O exemplo a seguir mostra duas consultas que retornam os mesmos dados.

SELECT targetInstance FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"

Se uma propriedade do sistema não for relevante para uma consulta específica, ela conterá NULL. Por exemplo, o valor da propriedade do sistema __RELPATH é NULL para todas as consultas de evento.

As seguintes propriedades do sistema contêm NULL para consultas de evento:

\_\_Namespace \_\_Path \_\_RelPath \_\_Server

Para obter mais informações, consulte Referência de propriedades do sistema WMI.

Todas as consultas de evento podem incluir uma cláusula WHERE opcional, mas as cláusulas WHERE são usadas principalmente pelos consumidores para especificar filtragem adicional. É altamente recomendável que os consumidores sempre especifiquem uma cláusula WHERE. O custo de uma consulta complexa é mínimo em comparação com o custo de entrega e processamento de notificações desnecessárias.

O exemplo a seguir mostra uma consulta que solicita notificações de todos os eventos de modificação de instância que afetam a classe hipotética EmailEvent.

SELECT * FROM EmailEvent

Se eventos associados ao EmailEvent ocorrerem com frequência, o consumidor será inundado com eventos. Uma consulta melhor solicita eventos somente quando condições específicas usarem propriedades da classe especificada, como quando o nível de importância é alto.

O exemplo a seguir mostra a consulta que você pode usar se EmailImportance for uma propriedade da classe EmailEvent.

SELECT * FROM EmailEvent WHERE EmailImportance > 3

Observe que o WMI pode rejeitar uma consulta por vários motivos. Por exemplo, a consulta pode ser muito complexa ou exigir muitos recursos para ser avaliada. Quando isso ocorre, o WMI retorna códigos de erro específicos, como WBEM_E_INVALID_QUERY.

As propriedades de objetos incorporados podem ser usadas na cláusula WHERE.

O exemplo a seguir mostra como consultar objetos em que a propriedade TargetInstance da classe do sistema __InstanceModificationEvent é um objeto Win32_LogicalDisk incorporado e FreeSpace é uma propriedade de Win32_LogicalDisk.

SELECT * FROM __InstanceModificationEvent WITHIN 600
    WHERE TargetInstance ISA "Win32_LogicalDisk" 
    AND   TargetInstance.FreeSpace < 1000000