Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Каждый экземпляр фильтра AVStream имеет связанный мьютекс управления фильтром. Этот мьютекс используется для синхронизации доступа к иерархии объектов из фильтра вплоть до отдельных контактов. Создание и уничтожение фильтров и пинов синхронизируются с этим мьютексом.
Иерархия объектов гарантируется стабильной только от определенного экземпляра фильтра и ниже при удержании мьютекса управления фильтром. Соответственно, минидрайвер должен получить мьютекс элемента управления фильтра перед обходом иерархии объектов ниже уровня фильтра с помощью функций KsXxxGetFirstChildXxx и KsXxxGetNextSiblingXxx.
Мьютекс элемента управления фильтра также используется для синхронизации переходов состояния.
AVStream получает мьютекс элемента управления фильтра при обработке свойств, требующих стабильности иерархии, например при изменении дескриптора.
Имейте в виду, что для иерархии объектов под каждым отдельным фильтром используется единый мьютекс управления фильтром. Это означает, что объект пина использует мьютекс элемент контроля фильтра родительского элемента, когда минидрайвер вызывает функцию с объектом пина.
AVStream содержит управляющий мьютекс фильтра от имени минидрайвера, когда он вызывает следующие подпрограммы, предоставляемые минидрайвером:
Аналогично мьютексу устройства, мьютекс элемента управления фильтра не должен быть получен рекурсивно. Если, например, AVStream выполняет обратный вызов к минидрайверу для обработчика "создания" в контексте потока A, и минидрайвер позже пытается получить мьютекс из потока A, поток A входит в состояние взаимной блокировки с самим собой.
Взаимоблокировка может произойти, если выполнить одно из следующих действий:
Попробуйте получить мьютекс управления фильтром из процедуры выполнения.
Старайтесь получить мьютекс контроля фильтра из обратного вызова сна или пробуждения.
Для управления мьютексом элемента управления фильтра используйте следующие функции:
KsAcquireControl, KsFilterAcquireControl, KsPinAcquireControl, KsReleaseControl, KsFilterReleaseControl, KsPinReleaseControl