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 结构的指针。 此表是与重复项相关的主导表。 如果 NULLAutomationTableB 将复制到 AutomationTableAB 中,并选择性地放置在 Bag中。

[in, optional] AutomationTableB

指向表示要合并的两个自动化表的第二个 KSAUTOMATION_TABLE 结构的指针。 如果 NULLAutomationTableA 将复制到 AutomationTableAB,并选择性地放置在 Bag中。

[in, optional] Bag

新创建的自动化表将放置在此KSOBJECT_BAG(等效于类型 PVOID)中,以供以后清理。 此参数是可选的。

返回值

如果合并成功完成,KsMergeAutomationTables 将返回STATUS_SUCCESS。 如果失败,则返回错误代码。 最常见的错误代码是STATUS_INSUFFICIENT_RESOURCES,指示系统资源不足,无法完成合并。

言论

如果 AutomationTableAAutomationTableBNULL,则此例程不执行任何作并返回STATUS_SUCCESS。

AutomationTableA 中的条目在合并中具有优先级。 如果 AutomationTableA AutomationTableB中出现条目,则 AutomationTableA 中的条目是放置在合并表中的条目。 如果提供了一个自动化表,则新创建的自动化表将放置在请求的对象包中。

如果输入表在调用时位于对象包中,AVStream 会在返回 KsMergeAutomationTables 之前从对象包中删除该表

如果 Bag 参数未 NULL,则微型驱动程序应在调用此例程之前获取与对象包关联的互斥体。 如果包与引脚或筛选器相关联,则必须保留控制互斥体。 如果包与筛选器工厂或设备相关联,则应保留设备互斥体。 有关详细信息,请参阅 AVStream 中的互斥体。

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

要求

要求 价值
最低支持的客户端 Microsoft Windows XP 及更高版本的作系统以及 DirectX 8.0 及更高版本的 DirectX 版本中提供。
目标平台 普遍
标头 ks.h (包括 Ks.h)
Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KsAddItemToObjectBag

KsCopyObjectBagItems

KsRemoveItemFromObjectBag