KS のイベント

AVStream ミニドライバーを作成する場合は、「AVStream でのイベント処理」を参照してください。

イベント セットは、リスナーが通知を要求できる関連イベントのグループです。 たとえば、リスナーは、デバイスの状態の変化やストリーム位置の変化を通知するように登録できます。 イベントが発生すると、カーネル ストリーミングは、このイベントに登録されているクライアントに通知します。

ミニドライバーは、処理ルーチンへのポインターを含む KSEVENT_ITEM 構造体を提供することで、イベントをサポートする方法を記述します。

リスナーは、IOCTL_KS_ENABLE_EVENT 制御コードと KSEVENT および KSEVENTDATA へのポインターを使用して、カーネル ストリーミング プロキシ ルーチン KsSynchronousDeviceControl を呼び出して通知に登録します。

IOCTL_KS_DISABLE_EVENT 要求は、指定されたイベントを無効にします。 イベントを有効にするために使用されたのと同じポインターを使用して無効にする必要があります。 このポインターは、イベントを一意に識別します。 必要に応じて、クライアントで NULL ポインターと長さ 0 を指定して、クライアントのすべてのアクティブなイベントを無効にすることができます。

すべてのイベント セットは KSEVENT_TYPE_BASICSUPPORT フラグをサポートする必要があります。 使用可能なイベント フラグの一覧については、「KSEVENT」を参照してください。

一部のイベントの種類では、イベント通知に登録するために追加のパラメーターが必要です。 たとえば、クロックの KSEVENT_CLOCK_POSITION_MARK イベントは、クロックが特定のタイム スタンプに達するとトリガーされます。 そのため、このイベントの通知を受け取るために登録するクライアントは、イベントをトリガーするタイム スタンプを指定する必要があります。

このような場合、ミニドライバーは、KSEVENTDATA 構造体の後のデータ バッファーに追加のデータ パラメーターを渡します。 このようなイベントの種類をサポートするミニドライバーは、拡張データ構造を使用します。最初のメンバーは KSEVENTDATA 種類で、通知データを保持します。