KsFilterGenerateEvents 関数 (ks.h)
KsFilterGenerateEvents 関数は、Filter のイベント リストに存在する指定された型のイベントを生成します。
構文
void KsFilterGenerateEvents(
[in] PKSFILTER Filter,
[in, optional] const GUID *EventSet,
[in] ULONG EventId,
[in] ULONG DataSize,
[in] PVOID Data,
[in, optional] PFNKSGENERATEEVENTCALLBACK CallBack,
[in, optional] PVOID CallBackContext
);
パラメーター
[in] Filter
イベントを生成する KSFILTER 構造体へのポインター。
[in, optional] EventSet
生成するイベントの決定に一致するイベント セット GUID へのポインター。 このパラメーターが NULL の場合、イベント セット GUID は、一致するイベントを決定するために考慮されません。
[in] EventId
生成するイベントを決定するために一致するイベント ID。
[in] DataSize
データのサイズ (バイト単位)。
[in] Data
データ バッファーへのポインター。 データ イベントを生成するかどうかを指定します。
[in, optional] CallBack
特定のイベントを生成する必要があるかどうかを判断するために呼び出される呼び出し元指定の関数へのポインター。 これが NULL の場合、イベントを生成する必要があるかどうかを判断するためのコールバック検証は実行されません (*EventSet *および EventId のみが使用されます)。 詳細については、以下の「解説」セクションを参照してください。
[in, optional] CallBackContext
コールバック関数 CallBack に渡される呼び出し元指定のコンテキストへの省略可能なポインター。 詳細については、以下の「解説」セクションを参照してください。
戻り値
なし
解説
この関数を呼び出す場合、ミニドライバーは、 Data と CallBackContext をロックされた非ページ データ セグメントに配置する必要があります。 また、 CallBack は DISPATCH_LEVEL で行われます。 コールバック関数はロックされたセグメント内にあり、IRQL = DISPATCH_LEVELで実行できるように準備する必要があります。 DX8 にのみ追加の問題があることに注意してください。 EventSet はロックされたデータ セグメントに存在する必要があります。
これは、必要な型キャストを実行する KsGenerateEvents へのインライン関数呼び出しです。 ミニドライバーは通常、 KsGenerateEvents を直接呼び出す代わりに、このバージョンを呼び出す必要があります。
次の条件が保持されている場合、イベントが生成されます。
イベントは Filter のイベント リストに存在し、 EventId はイベントの ID と一致します
EventSet は、イベントのセット GUID と一致するか、 NULL です
CallBack が NULL であるか、一致を承認します
CallBack は、追加の一致判定に使用される呼び出し元指定のコールバックです。 次のようにプロトタイプが作成されます。
BOOLEAN CallBack (IN PVOID Context, IN PKSEVENT_ENTRY EventEntry);
AVStream は、このコールバックの Context パラメーターで KsFilterGenerateEvents ルーチンのパラメーター CallBackContext の内容を渡します。 EventEntry は、生成されるイベントを指定する KSEVENT_ENTRY 構造体へのポインターです。 このイベントを生成する必要がある場合、コールバック関数は TRUE を 返す必要があります。
詳細については、「AVStream および KSイベントでのイベント処理」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows XP 以降のオペレーティング システムおよび DirectX 8.0 以降の DirectX バージョンで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |
IRQL | <=DISPATCH_LEVEL (「解説」セクションを参照)。 |