Управление динамическими топологиями

Звуковой адаптер содержит некоторое количество вложенных элементов для обслуживания внешних звуковых устройств, таких как динамики и микрофоны, которые пользователь подключает к разъемам передней или задней панели адаптера. Каждое подустройство обслуживает определенный звуковой разъем или группу разъемов.

Звуковой драйвер описывает каждое подустройство путем представления топологии, которая по сути является картой внутренних подключений и элементов обработки в подустройстве. Модули API Windows, предоставляемые системой, и приложения панели управления, предоставляемые поставщиком, используют информацию о топологии для определения возможностей подустройства и выявления его внутренних точек управления. Дополнительные сведения см. в разделе "Отображение топологии фильтра".

Звуковые драйверы WDM, разработанные до того, как стали доступными интерфейсы IUnregisterSubdevice и IUnregisterPhysicalConnection, в основном имеют статические топологии. Для этих драйверов после того, как драйвер адаптера создает объект драйвера мини-порта для управления вложенным элементом, этот объект и связанный с ним вложенный объект сохраняются в течение времени существования объекта драйвера адаптера.

Однако в динамически настраиваемом звуковом адаптере драйвер адаптера может создавать и удалять вложенные элементы во время выполнения, чтобы отразить изменения конфигурации оборудования, так как пользователь подключает внешние устройства к звуковым разъемам и удаляет их. Это поведение позволяет подустройствам работать как логически независимые аппаратные функции. Другими словами, каждое подустройство можно включить, настроить и выключить независимо от других подустройств.

Каждое подустройство имеет внутреннюю топологию, состоящую из следующих элементов:

  • Пути данных проходят через подустройство.

  • Узлы топологии (например, управление томами), обрабатывающие потоки данных, которые передаются по путям данных.

  • Физические подключения его подустройства к другим подустройствам в том же адаптере.

Когда драйвер адаптера динамически удаляет подустройство, он освобождает аппаратные ресурсы, привязанные к внутренней топологии подустройства. Затем драйвер адаптера может использовать эти ресурсы для создания нового подустройства, возможно, с другой топологией.

При настройке нового аудиодополнительного устройства драйвер адаптера регистрирует интерфейс драйвера звукового устройства в качестве экземпляра одного или нескольких классов интерфейса устройства, а диспетчер ввода-вывода добавляет одну или несколько записей реестра, содержащих символические ссылки, связывающие классы интерфейса и экземпляры интерфейса. Чтобы получить доступ к подразделу, клиент пользовательского режима получает символьную ссылку из реестра и передает его в качестве параметра вызова функции CreateFile . Как правило, клиентом является модуль API Windows, например Dsound.dll или Wdmaud.drv, или предоставленная поставщиком панель управления или программа для работы со звуком. Дополнительные сведения о CreateFileсм. в документации по пакету SDK для Microsoft Windows.

Когда драйвер минипорта вызывает метод IUnregisterSubdevice::UnregisterSubdevice , чтобы удалить вложенный элемент, системный драйвер PortCls (Portcls.sys) сообщает диспетчеру ввода-вывода удалить символьную ссылку для связанного интерфейса устройства из реестра. Компоненты, зарегистрированные для событий удаления интерфейса устройства, получают уведомление при удалении интерфейса.

Аудиоадаптер может содержать цепи обнаружения наличия штекера, чтобы уведомить минипорт-драйвера при вставке или удалении штекера из звукового разъема. Когда пользователь вставляет подключаемый модуль в звуковой разъем, драйвер адаптера добавляет интерфейс устройства связанного дочернего модуля в реестр. Когда пользователь удаляет подключаемый модуль из звукового разъема, драйвер адаптера удаляет соответствующий интерфейс устройства из реестра.

Звуковые адаптеры, поддерживающие динамические топологии, имеют следующие преимущества:

  • Удобный для пользователя

    Если настольные динамики, наушники и другие внешние звуковые устройства не подключены к звуковым разъемам на передней или задней панели аудиоадаптера, система не распознает эти устройства как доступные для использования звуковыми приложениями.

  • Энергоэффективный

    Когда пользователь удаляет подключаемый модуль из звукового разъема, драйвер может отключить часть цепи адаптера, которая обслуживает это устройство.

  • Конфигурируемый

    После удаления субустройства драйвер может использовать аппаратные ресурсы, привязанные к внутренней топологии субустройства, чтобы создать новое субустройство, возможно, с другой топологией.