Clausola WITHIN

I consumer di eventi usano la clausola WITHIN nelle query degli eventi per specificare un intervallo di polling o un intervallo di raggruppamento.

Un intervallo di polling è l'intervallo usato da Strumentazione gestione Windows (WMI) per eseguire il polling del provider di dati responsabile della classe per gli eventi intrinseci, di cui l'evento sottoposto a query è un membro. Questo intervallo rappresenta il tempo massimo che può trascorrere prima della consegna della notifica di un evento. Un consumer usa un intervallo di polling in una clausola WITHIN quando il consumer richiede la notifica delle modifiche a una classe e un provider di eventi non è disponibile. Il consumer registra per un evento intrinseco e include l'intervallo di polling.

Per specificare un intervallo di polling, inserire la clausola WITHIN immediatamente prima della clausola WHERE, come illustrato di seguito:

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

IntrinsicEventClass è la classe di evento intrinseco di cui l'evento è membro, l'intervallo è l'intervallo di polling e il valore è il valore della proprietà in cui il consumer richiede la notifica.

L'intervallo di polling è un numero a virgola mobile e può essere frazionaria per accettare valori inferiori a 1 secondo. Tuttavia, l'intervallo deve rappresentare un numero di secondi anziché un valore estremamente piccolo, ad esempio 0,001, perché specificando un valore troppo piccolo può causare il rifiuto dell'istruzione WMI come non valida, a causa della natura a elevato utilizzo delle risorse del polling. Poiché la maggior parte dei consumer di eventi non richiede una notifica immediata, è consigliabile usare un intervallo maggiore di 5 minuti.

Nell'esempio di query seguente viene richiesto di controllare WMI ogni 10 secondi per le modifiche apportate alle istanze della classe Win32_LogicalDisk . Se un'istanza della classe viene modificata all'interno dell'intervallo di polling specificato, viene inviato un evento di notifica per ogni modifica.

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

A seconda della query, un provider di eventi e WMI può condividere l'attività di fornire eventi. Ad esempio, un provider di eventi che supporta gli eventi delle classi di sistema __InstanceCreationEvent e __InstanceModificationEvent e non eventi della classe di sistema __InstanceDeletionEvent . La query seguente consente al provider di eventi di generare gli eventi di creazione e modifica durante la creazione e la modifica e di averli recapitati al momento della creazione. La query consente anche a WMI di generare eventi __InstanceDeletionEvent ogni 10 (dieci) secondi usando il meccanismo di polling.

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

È anche possibile usare la clausola WITHIN per specificare un intervallo di raggruppamento. Un intervallo di raggruppamento è un intero a 32 bit senza segno che specifica il periodo di tempo, dopo aver ricevuto un evento iniziale, durante il quale WMI deve raccogliere eventi simili. Al termine di questo periodo di tempo, WMI recapita l'evento di aggregazione, costituito da tutti gli eventi simili. Per altre informazioni, vedere Clausola GROUP.

I consumer di eventi che registrano per gli eventi che si verificano di frequente usano un intervallo di raggruppamento con la clausola WITHIN. L'aggiunta di GROUP WITHIN alla clausola WHERE in una query evento genera un evento WMI che invia un evento di aggregazione anziché molti eventi. L'evento di aggregazione è rappresentato dalla classe di sistema __AggregateEvent .

Per specificare un intervallo di raggruppamento, inserire la clausola WITHIN immediatamente dopo la clausola GROUP.

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

EventClass è la classe di evento di cui l'evento è un membro, il valore della proprietà in cui il consumer richiede la notifica e Interval è l'intervallo di raggruppamento.

Per altre informazioni, vedere Determinazione del tipo di evento da ricevere.

I consumer di eventi permanenti possono essere creati con query di polling solo se si dispone dei privilegi di amministratore.