KsMergeAutomationTables 函数 (ks.h)

KsMergeAutomationTables 函数合并两个自动化表。

语法

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

指向 KSAUTOMATION_TABLE 结构的指针,该结构表示要合并的两个自动化表中的第一个。 此表是相对于重复条目的主导表。 如果 为 NULL则 AutomationTableB 将复制到 AutomationTableAB 中,并选择性地放置在 Bag 中。

[in, optional] AutomationTableB

指向 KSAUTOMATION_TABLE 结构的指针,该结构表示要合并的两个自动化表中的第二个。 如果 为 NULL则 AutomationTableA 将复制到 AutomationTableAB 中,并选择性地放置在 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 中的 Mutexes

另请参阅 对象包定义自动化表

要求

要求
最低受支持的客户端 在 Microsoft Windows XP 及更高版本的操作系统以及 DirectX 8.0 及更高版本的 DirectX 中可用。
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KsAddItemToObjectBag

KsCopyObjectBagItems

KsRemoveItemFromObjectBag