Управление динамическими топологиями
Аудиоадаптер содержит некоторое количество вложенных устройств для обслуживания внешних звуковых устройств, таких как динамики и микрофоны, которые пользователь подключает к аудиоразъемам на передней или задней панели адаптера. Каждый дочерний объект обслуживает определенный аудиоразъем или группу разъемов.
Аудиодрайвер описывает каждый дочерний элемент, представляя топологию, которая по сути является картой внутренних соединений и элементов обработки в подэлетере. Системные модули WINDOWS API и предоставляемые поставщиком приложения панели управления используют сведения о топологии для определения возможностей подчиненной части и определения его внутренних точек управления. Дополнительные сведения см. в разделе Предоставление топологии фильтра.
Звуковые драйверы WDM, разработанные до появления интерфейсов IUnregisterSubdevice и IUnregisterPhysicalConnection , в основном имеют статические топологии. Для этих драйверов после того, как драйвер адаптера создаст объект драйвера miniport для управления дочерней частью, этот объект и связанная с ним подсеть сохраняются в течение времени существования объекта драйвера адаптера.
Однако в динамически настраиваемом звуковом адаптере драйвер адаптера может создавать и удалять вложенные устройства во время выполнения, чтобы отразить изменения в конфигурации оборудования, так как пользователь подключает внешние устройства к аудиоразъемам и удаляет их. Такое поведение позволяет дочерним службам работать как логически независимые аппаратные функции. Иными словами, каждый дочерний элемент можно включить, настроить и завершить работу независимо от других вложенных элементов.
У каждого подчиненного имеется внутренняя топология, состоящая из следующего:
Пути к данным через подсеть.
Узлы топологии (например, управление томом), обрабатывающие потоки данных, которые передаются по путям данных.
Физические подключения подчиненной части к другим вложенным устройствам в том же адаптере.
Когда драйвер адаптера динамически удаляет подсеть, он освобождает аппаратные ресурсы, привязанные к внутренней топологии подчиненной части. Затем драйвер адаптера может использовать эти ресурсы для создания нового дочернего устройства с возможно другой топологией.
При настройке нового аудиоподключения драйвер адаптера регистрирует интерфейс драйвера вложенной части как экземпляр одного или нескольких классов интерфейса устройства, а диспетчер ввода-вывода добавляет одну или несколько записей реестра, содержащих символьные ссылки, связывающие классы интерфейса и экземпляры интерфейса. Для доступа к подразделу клиент пользовательского режима извлекает символьную ссылку из реестра и передает ее в качестве параметра вызова функции CreateFile . Как правило, клиентом является модуль API Windows, например Dsound.dll или Wdmaud.drv, или предоставляемая поставщиком панель управления или программа звуковой программы. Дополнительные сведения о CreateFile см. в документации по Microsoft Windows SDK.
Когда драйвер мини-порта вызывает метод IUnregisterSubdevice::UnregisterSubdevice для удаления дочернего устройства, системный драйвер PortCls (Portcls.sys) сообщает диспетчеру ввода-вывода удалить символьную ссылку для связанного интерфейса устройства из реестра. Компоненты, зарегистрированные для событий удаления интерфейса устройства, получают уведомление при удалении интерфейса.
Аудиоадаптер может содержать каналы присутствия разъема для уведомления драйвера минипорта о вставке или удалении вилки из аудиоразъема. Когда пользователь вставляет подключаемый модуль в аудиоразъем, драйвер адаптера добавляет интерфейс устройства связанной подсети в реестр. Когда пользователь удаляет разъем из аудиоразъема, драйвер адаптера удаляет соответствующий интерфейс устройства из реестра.
Аудиоадаптеры, поддерживающие динамические топологии, имеют следующие преимущества:
Понятное для пользователя
Если настольные динамики, наушники и другие внешние аудиоустройства фактически не подключены к аудиоразъемам на передней или задней панели аудиоадаптера, система не предоставляет эти устройства звуковым приложениям как доступные для использования.
Эффективное энергопотребление
Когда пользователь удаляет штекер из аудиоразъема, драйвер может отключить часть цепи адаптера, которая обслуживает этот разъем.
Настраивается
После удаления дочерней подсистемы драйвер может использовать аппаратные ресурсы, которые были привязаны к внутренней топологии вложенного устройства, чтобы создать новую вложенную топологию с возможно другой топологией.