Функция 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 и при необходимости помещается в контейнер.

[in, optional] AutomationTableB

Указатель на структуру KSAUTOMATION_TABLE , представляющую вторую из двух таблиц автоматизации для слияния. Если значение NULL, AutomationTableA копируется в AutomationTableAB и при необходимости помещается в контейнер.

[in, optional] Bag

Созданная таблица автоматизации помещается в эту KSOBJECT_BAG (эквивалентную типу PVOID) для последующей очистки. Этот параметр является необязательным.

Возвращаемое значение

KsMergeAutomationTables возвращает STATUS_SUCCESS в случае успешного завершения слияния. В случае неудачи возвращается код ошибки. Наиболее частым кодом ошибки является STATUS_INSUFFICIENT_RESOURCES, что указывает на нехватку системных ресурсов для завершения слияния.

Комментарии

Если и AutomationTableA , и AutomationTableB имеют значение NULL, эта подпрограмма не выполняет никаких действий и возвращает STATUS_SUCCESS.

Записи в AutomationTableA имеют приоритет в слиянии. Если в AutomationTableA и AutomationTableB есть запись, то в AutomationTableA будет помещена запись в объединенную таблицу. Только что созданная таблица автоматизации помещается в запрошенный контейнер объектов, если она указана.

Если входная таблица находится в контейнере объектов во время вызова, AVStream удаляет таблицу из контейнера объектов до возврата KsMergeAutomationTables .

Если параметр Bag не имеет значение NULL, перед вызовом этой процедуры мини-driver должен принять мьютекс, связанный с контейнером объектов. Если контейнер связан с булавкой или фильтром, необходимо удерживать мьютекс элемента управления. Если контейнер связан с фабрикой фильтров или устройством, то мьютекс устройства должен быть удержан. Дополнительные сведения см. в разделе Мьютексы в AVStream.

Также см . статьи Контейнеры объектов и Определение таблиц автоматизации.

Требования

Требование Значение
Минимальная версия клиента Доступно в операционных системах Microsoft Windows XP и более поздних версиях, а также DirectX 8.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib
IRQL PASSIVE_LEVEL

См. также раздел

KsAddItemToObjectBag

KsCopyObjectBagItems

KsRemoveItemFromObjectBag