次の方法で共有


KsMergeAutomationTables 関数 (ks.h)

KsMergeAutomationTables 関数は、2 つのオートメーション テーブルをマージします。

構文

KSDDKAPI NTSTATUS KsMergeAutomationTables(
  [out]          PKSAUTOMATION_TABLE *AutomationTableAB,
  [in, optional] PKSAUTOMATION_TABLE AutomationTableA,
  [in, optional] PKSAUTOMATION_TABLE AutomationTableB,
  [in, optional] KSOBJECT_BAG        Bag
);

パラメーター

[out] AutomationTableAB

KSAUTOMATION_TABLEへのポインターが堆積する場所へのポインター。 この構造は、結果としてマージされたオートメーション テーブルです。

[in, optional] AutomationTableA

マージする 2 つのオートメーション テーブルの最初を表すKSAUTOMATION_TABLE構造体へのポインター。 このテーブルは、重複するエントリに関する主要なテーブルです。 NULL の場合、AutomationTableBAutomationTableAB にコピーされ、必要に応じて Bag に配置されます。

[in, optional] AutomationTableB

マージする 2 つのオートメーション テーブルの 2 つ目を表すKSAUTOMATION_TABLE構造体へのポインター。 NULL の場合、AutomationTableAAutomationTableAB にコピーされ、必要に応じて Bag に配置されます。

[in, optional] Bag

新しく作成された自動化テーブルは、後でクリーンするために、このKSOBJECT_BAG (PVOID 型と同等) に配置されます。 このパラメーターは省略できます。

戻り値

KsMergeAutomationTables は、 マージが正常に完了した場合にSTATUS_SUCCESSを返します。 失敗した場合は、エラー コードが返されます。 最も頻繁に発生するエラー コードはSTATUS_INSUFFICIENT_RESOURCESです。これは、マージを完了するのに十分なシステム リソースがないことを示しています。

注釈

AutomationTableAAutomationTableB の両方が NULL の場合、このルーチンはアクションを実行せず、STATUS_SUCCESSを返します。

AutomationTableA のエントリは、マージの優先度を持ちますAutomationTableA AutomationTableB の両方にエントリが表示される場合、AutomationTableA のエントリはマージされたテーブルに配置されます。 新しく作成された自動化テーブルは、要求されたオブジェクト バッグ (指定されている場合) に配置されます。

呼び出し時に入力テーブルがオブジェクト バッグ内にある場合、AVStream は KsMergeAutomationTables が返す前にオブジェクト バッグからテーブルを削除します。

Bag パラメーターが NULL でない場合、ミニドライバーは、このルーチンを呼び出す前に、オブジェクト バッグに関連付けられているミューテックスを受け取る必要があります。 バッグがピンまたはフィルターに関連付けられている場合は、制御ミューテックスを保持する必要があります。 バッグがフィルター ファクトリまたはデバイスに関連付けられている場合は、デバイス ミューテックスを保持する必要があります。 詳細については、「 AVStream のミューテックス」を参照してください。

オブジェクト バッグ 」および 「オートメーション テーブルの定義」も参照してください。

要件

要件
サポートされている最小のクライアント Microsoft Windows XP 以降のオペレーティング システムおよび DirectX 8.0 以降の DirectX バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

KsAddItemToObjectBag

KsCopyObjectBagItems

KsRemoveItemFromObjectBag