WITHIN 절
이벤트 소비자는 이벤트 쿼리에서 WITHIN 절을 사용하여 폴링 간격 또는 그룹화 간격지정합니다.
폴링 간격은 WMI(Windows Management Instrumentation)가 쿼리된 이벤트가 멤버인 내장 이벤트에 대한 클래스를 담당하는 데이터 공급자를 폴링하는 데 사용하는 간격입니다. 이 간격은 이벤트 알림을 전달하기 전에 전달할 수 있는 최대 시간입니다. 소비자는 소비자가 클래스 변경에 대한 알림을 필요로 하고 이벤트 공급자를 사용할 수 없는 경우 WITHIN 절에서 폴링 간격을 사용합니다. 소비자는 내장 이벤트를 등록하고 폴링 간격을 포함합니다.
폴링 간격을 지정하려면 다음과 같이 WHERE 절 바로 앞에 WITHIN 절을 배치합니다.
SELECT * FROM IntrinsicEventClass WITHIN interval WHERE property = value
IntrinsicEventClass는 이벤트가 멤버이고, 간격이 폴링 간격이며, 값은 소비자가 알림을 필요로 하는 속성의 값인 내장 이벤트 클래스입니다.
폴링 간격은 부동 소수점 숫자이며 1초보다 작은 값을 수락하는 데 소수점일 수 있습니다. 그러나 너무 작은 값을 지정하면 폴링의 리소스 집약적 특성으로 인해 WMI가 문을 유효하지 않은 것으로 거부할 수 있으므로 간격은 0.001과 같이 매우 작은 값이 아닌 몇 초를 나타내야 합니다. 대부분의 이벤트 소비자는 즉각적인 알림이 필요하지 않으므로 5분보다 큰 간격을 사용하는 것이 좋습니다.
다음 쿼리 예제에서는 WMI가 Win32_LogicalDisk 클래스의 인스턴스에 발생하는 변경 내용을 10초마다 확인하도록 요청합니다. 지정된 폴링 간격 내에 클래스 인스턴스가 수정되면 수정할 때마다 알림 이벤트가 전송됩니다.
SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA "Win32_LogicalDisk"
쿼리에 따라 이벤트 공급자와 WMI는 이벤트 제공 작업을 공유할 수 있습니다. 예를 들어 __InstanceDeletionEvent 시스템 클래스의 이벤트가 아닌 __InstanceCreationEvent 및 __InstanceModificationEvent 시스템 클래스의 이벤트를 지원하는 이벤트 공급자입니다. 다음 쿼리를 사용하면 이벤트 공급자가 생성 및 수정 이벤트가 발생할 때 생성 및 수정 이벤트를 생성하고 생성될 때 배달되도록 할 수 있습니다. 또한 이 쿼리를 통해 WMI는 폴링 메커니즘을 사용하여 10초마다 __InstanceDeletionEvent 이벤트를 생성할 수 있습니다.
SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA "MyOwnClass"
WITHIN 절을 사용하여 그룹화 간격을 지정할 수도 있습니다. 그룹화 간격은 초기 이벤트를 받은 후 WMI가 유사한 이벤트를 수집해야 하는 기간을 지정하는 부호 없는 32비트 정수입니다. 이 기간이 만료되면 WMI는 모든 유사한 이벤트로 구성된 집계 이벤트를 제공합니다. 자세한 내용은 GROUP 절참조하세요.
자주 발생하는 이벤트에 등록하는 이벤트 소비자는 WITHIN 절과 함께 그룹화 간격을 사용합니다. 이벤트 쿼리의 WHERE 절에 GROUP WITHIN을 추가하면 WMI가 여러 이벤트가 아닌 하나의 집계 이벤트를 보냅니다. 집계 이벤트는 __AggregateEvent 시스템 클래스로 표시됩니다.
그룹화 간격을 지정하려면 GROUP 절 바로 옆에 WITHIN 절을 배치합니다.
SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval
EventClass는 이벤트가 멤버인 이벤트 클래스이고, 값은 소비자가 알림을 필요로 하는 속성의 값이며, Interval은 그룹화 간격입니다.
관리자 권한이 있는 경우에만 폴링 쿼리를 사용하여 영구 이벤트 소비자를 만들 수 있습니다.