WITHIN 句

イベント コンシューマーで、WITHIN 句を使用して、"ポーリング間隔" または "グループ化間隔" を指定します。

ポーリング間隔は、クエリが実行されたイベントがメンバーとなっている組み込みイベントのクラスを担当するデータ プロバイダーをポーリングするために、Windows Management Instrumentation (WMI) によって使用される間隔です。 この間隔は、イベントの通知が配信されるまでに経過する最大時間です。 コンシューマーがクラスに対する変更の通知を必要とし、かつイベント プロバイダーが使用可能ではない場合、そのコンシューマーによって、WITHIN 句でポーリング間隔が使用されます。 コンシューマーによって、組み込みイベントへの登録が行われ、ポーリング間隔が含まれます。

ポーリング間隔を指定するには、次に示すように、WHERE 句の直前に WITHIN 句を配置します。

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

IntrinsicEventClass はイベントがメンバーとなっている組み込みイベントのクラス、interval はポーリング間隔、value はコンシューマーが通知を必要としているプロパティの値です。

ポーリング間隔は浮動小数点数であり、1 秒未満の値を受け入れる小数部にすることができます。 ただし、この間隔は、0.001 などの非常に小さい値ではなく、秒数を表すものでなくてはなりません。小さすぎる値を指定すると、ポーリングの性質上、リソースが大量に消費されるため、WMI によってステートメントが無効になる可能性があるためです。 ほとんどのイベント コンシューマーは即時通知を必要としないため、5 分より長い間隔を使用することをお勧めします。

次のクエリ例では、Win32_LogicalDisk クラスのインスタンスに対して発生する変更を WMI で 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 を追加すると、多数ではなく 1 つの集計イベントが WMI によって送信されます。 その集計イベントは、__AggregateEventシステム クラスによって表されます。

グループ化間隔を指定するには、GROUP 句の直後に WITHIN 句を配置します。

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

EventClass はイベントがメンバーとなっているイベント クラス、value はコンシューマーが通知を必要としているプロパティの値、Interval はグループ化間隔です。

詳細については、「受信するイベントの種類の決定」を参照してください。

永続イベント コンシューマーを作成するには、ポーリング クエリを使用しますが、管理者特権を持っている場合にしか作成できません。