WITHIN Clause
Les consommateurs d’événements utilisent la clause WITHIN dans les requêtes d’événements pour spécifier un intervalle d’interrogation ou un intervalle de regroupement .
Un intervalle d’interrogation est l’intervalle que Windows Management Instrumentation (WMI) utilise pour interroger le fournisseur de données responsable de la classe pour événements intrinsèques, dont l’événement interrogé est membre. Cet intervalle est la durée maximale qui peut passer avant la notification d’un événement. Un consommateur utilise un intervalle d’interrogation dans une clause WITHIN lorsque le consommateur requiert la notification des modifications apportées à une classe et qu’un fournisseur d’événements n’est pas disponible. Le consommateur s’inscrit pour un événement intrinsèque et inclut l’intervalle d’interrogation.
Pour spécifier un intervalle d’interrogation, placez la clause WITHIN immédiatement avant la clause WHERE, comme indiqué ci-dessous :
SELECT * FROM IntrinsicEventClass WITHIN interval WHERE property = value
IntrinsicEventClass est la classe d’événements intrinsèque dont l’événement est membre, l’intervalle est l’intervalle d’interrogation et la valeur de la propriété sur laquelle le consommateur a besoin de notification.
L’intervalle d’interrogation est un nombre à virgule flottante et peut être fractionnaire pour accepter des valeurs inférieures à 1 seconde. Toutefois, l’intervalle doit représenter un certain nombre de secondes plutôt qu’une valeur extrêmement petite telle que 0,001, car la spécification d’une valeur trop petite peut entraîner le rejet de l’instruction comme non valide, en raison de la nature intensive des ressources de l’interrogation. Étant donné que la plupart des consommateurs d’événements ne nécessitent pas de notification immédiate, il est recommandé d’utiliser un intervalle supérieur à 5 minutes.
L’exemple de requête suivant demande à WMI de vérifier toutes les 10 secondes les modifications apportées aux instances de la classe Win32_LogicalDisk. Si une instance de la classe est modifiée dans l’intervalle d’interrogation spécifié, un événement de notification est envoyé pour chaque modification.
SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA "Win32_LogicalDisk"
Selon la requête, un fournisseur d’événements et WMI peuvent partager la tâche de fournir des événements. Par exemple, un fournisseur d’événements qui prend en charge les événements des classes système __InstanceCreationEvent et __InstanceModificationEvent, et non les événements de la classe système __InstanceDeletionEvent. La requête suivante permet au fournisseur d’événements de générer les événements de création et de modification au fur et à mesure qu’ils se produisent et qu’ils sont remis lors de leur création. La requête permet également à WMI de générer des événements __InstanceDeletionEvent toutes les 10 (dix) secondes à l’aide du mécanisme d’interrogation.
SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA "MyOwnClass"
Vous pouvez également utiliser la clause WITHIN pour spécifier un intervalle de regroupement. Un intervalle de regroupement est un entier 32 bits non signé qui spécifie la période, après réception d’un événement initial, pendant lequel WMI doit collecter des événements similaires. Lorsque cette période expire, WMI remet l’événement d’agrégation, composé de tous les événements similaires. Pour plus d’informations, consultez clause GROUP.
Les consommateurs d’événements qui s’inscrivent pour les événements fréquents utilisent un intervalle de regroupement avec la clause WITHIN. L’ajout de GROUP WITHIN à la clause WHERE dans une requête d’événement entraîne l’envoi d’un événement d’agrégation par WMI au lieu de nombreux événements. L’événement d’agrégation est représenté par la classe système __AggregateEvent.
Pour spécifier un intervalle de regroupement, placez la clause WITHIN immédiatement après la clause GROUP.
SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval
EventClass est la classe d’événements dont l’événement est membre, la valeur est la valeur de la propriété sur laquelle le consommateur a besoin de notification, et Interval est l’intervalle de regroupement.
Pour plus d’informations, consultez Détermination du type d’événement à recevoir.
Les consommateurs d’événements permanents peuvent être créés avec des requêtes d’interrogation uniquement si vous disposez de privilèges d’administrateur.