Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение может использовать интерфейс DirectShow IFilterMapper2 для автоматического поиска фильтров, удовлетворяющих определенным критериям. Это приложение может использовать список предлагаемых фильтров, возвращаемых IFilterMapper2, для автоматического построения графов фильтров с фильтрами, которые получают и воспроизводят телевизионные сигналы. Чтобы быстро найти фильтры, соответствующие заданным критериям, IFilterMapper2 использует информацию о фильтре и его выводах, которые ранее были введены в кэш. Обсуждение в следующих абзацах относится к этому кэшу в качестве кэша пин-данных.
Сведения, содержащиеся в кэше данных пин-кода, включают список носителей и типов носителей для каждого пин-кода, который может предоставлять фильтр. IFilterMapper2 использует эту информацию кэша, чтобы определить, может ли потенциальный фильтр подключиться к пину фильтра, который уже находится в графе. Принятие этого решения устраняет издержки на создание экземпляра фильтра лишь для того, чтобы выяснить, что подключение к фильтру невозможно, поскольку носитель или тип носителя не совпадают. Если кэш данных пин-кода для фильтра не up-to-date, фильтр может быть неправильно устранен в качестве кандидата для подключения в графе фильтров.
Когда мини-driver BDA определяет, что его кэш пин-данных, который Использует DirectShow, не up-to-date, этот мини-driver должен обновить кэш данных пин-кода, чтобы сведения о закреплении для экземпляров фильтра BDA компонента BDA мини-driver точно предоставляются в графе фильтров. мини-драйвер BDA обновляет кэш данных о контактах в DirectShow, как описано в следующих сценариях:
Минидрайверу BDA может потребоваться, а может и нет обновить кэш пин-данных DirectShow, когда он создаёт экземпляры фильтров BDA в зависимости от того, как минидрайвер представляет фильтры BDA в виде фильтров DirectShow в пользовательском режиме. Информационный файл минидрайвера BDA (INF) указывает механизм, используемый минидрайвером для представления своих фильтров BDA в качестве фильтров DirectShow.
Минидрайверы BDA используют прокси-модуль потоковой передачи ядра (KS) (Ksproxy.ax) для представления своих фильтров BDA в качестве фильтров DirectShow. Прокси-сервер KS автоматически обновляет кэш пин-данных DirectShow, чтобы предоставлять сведения о пин-кодах для фильтров BDA всякий раз при первоначальном создании экземпляров этих фильтров. Таким образом, мини-драйверы BDA, использующие прокси-сервер KS, не обязаны выполнять какие-либо действия для обновления кэша пин-данных DirectShow при первоначальном создании экземпляров фильтров. Если фильтр BDA предоставляется в пользовательском режиме через прокси-сервер KS, кэшированные сведения автоматически включают средства и типы медиа для фабрик выводов, которые имеются в экземпляре фильтра сразу после завершения выполнения подпрограммы его создания.
Некоторые минидрайверы BDA не используют прокси KS для представления своих фильтров BDA как фильтров DirectShow. Например, мини-драйверы приемников BDA, реализующие фильтры BDA для получения или обработки аналоговых телевизионных сигналов, используют модули KSTVTune.ax или KSXBar.ax для представления этих фильтров BDA в качестве фильтров DirectShow. Поскольку эти модули не используют стандартные методы прокси-интерфейса KS для обновления кэша данных контактов DirectShow, минидрайверы BDA для подобных типов фильтров BDA должны обновлять кэш данных контактов DirectShow, когда эти минидрайверы изначально создают экземпляры таких фильтров. Чтобы обеспечить обновление кеша пин-данных DirectShow при создании экземпляров этих фильтров, минидрайвер BDA вызывает функцию BdaFilterFactoryUpdateCacheData сразу после вызова функции BdaInitFilter внутри реализации процедуры создания диспетчера фильтра. В этом вызове минидрайвер передает информацию о выводах для обновления всех начальных выводов фильтра.
Выводы (штырьки) можно создавать на фильтре BDA динамически после завершения выполнения процедуры создания фильтра. Если изначально созданный экземпляр фильтра BDA не предоставляет экземпляры всех выводов, перечисленных в топологии шаблона фильтра BDA (BDA_FILTER_TEMPLATE), то минидрайвер BDA должен вызвать BdaFilterFactoryUpdateCacheData, чтобы обеспечить наличие информации обо всех выводах, перечисленных в топологии шаблона фильтра.
Заметка Обновление кэша данных контактов DirectShow имеет значительные накладные расходы, так как оно затрагивает и изменяет реестр. Кроме того, обновление кэша пин-данных DirectShow влияет на время, необходимое для DirectShow для автоматического построения графов фильтров. Таким образом, минидрайвер BDA должен вызывать BdaFilterFactoryUpdateCacheData для всех возможных пинов только в том случае, если он определяет, что кэш данных пинов, который использует DirectShow, не up-to-date.
По возможности минидрайвер BDA должен вызывать BdaFilterFactoryUpdateCacheData всякий раз, когда обновится драйвер, прошивка или оборудование.