Универсальные драйверы Windows для звука
В Windows 10 можно написать универсальный звуковой драйвер, который будет работать во многих типах оборудования. В этом разделе рассматриваются преимущества этого подхода, а также различия между платформами. Помимо универсальных драйверов Windows для аудио, Windows продолжает поддерживать предыдущие технологии звукового драйвера, такие как WDM.
Начало работы с драйверами универсальной версии Windows для аудио
IHVs может разрабатывать универсальный драйвер Windows, работающий на всех устройствах (настольных компьютерах, ноутбуках, планшетах, телефонах). Это может сократить время разработки и затраты на первоначальное обслуживание кода и более поздних версий.
Эти средства доступны для разработки драйверов универсальной версии Windows:
Visual Studio 2015: задайте для целевой платформы значение "Универсальная". Дополнительные сведения о настройке среды разработки драйверов см. в документации разработчика оборудования Windows и создании драйвера с WDK.
Средство APIValidator: вы можете использовать средство ApiValidator.exe для проверки того, что API, которые вызывает ваш драйвер, являются допустимыми для универсального драйвера Windows. Это средство входит в состав комплекта драйверов Windows (WDK) для Windows 10 и запускается автоматически, если вы используете Visual Studio 2015. Дополнительные сведения см. в разделе APIValidator.
Справочная документация по DDI: справочная документация по DDI обновляется, чтобы указать, какие DDIS поддерживаются драйверами универсальной версии Windows. Дополнительные сведения см. в справочнике по аудиоустройствам.
Создание универсального звукового драйвера
Для пошаговых инструкций см. документацию разработчика оборудования Windows и руководство по созданию драйвера с помощью WDK. Ниже приведены краткие сведения о шагах.
Загрузите образец универсального аудио "sysvad" для использования в качестве основы для вашего универсального звукового драйвера. Кроме того, начните с пустого шаблона драйвера WDM и добавьте код из универсального примера sysvad по мере необходимости для звукового драйвера.
В свойствах проекта задайте для целевой платформы значение "Универсальная".
Создайте пакет установки: если целевое устройство работает под управлением Windows 10 для классических выпусков (Home, Pro, Enterprise и Education), используйте универсальный INF-файл. Если целевой объект — это устройство под управлением Windows 10 Mobile, используйте PkgGen для создания SPKG-файла.
Сборка, установка, развертывание и отладка драйвера для Windows 10 для классических выпусков или Windows 10 Mobile.
Пример кода
Sysvad и SwapAPO были преобразованы в универсальные примеры драйверов Windows. Дополнительные сведения см. в разделе Примеры звуковых драйверов.
Доступные программные интерфейсы для универсальных драйверов Windows для аудио
Начиная с Windows 10, интерфейсы программирования драйверов являются частью выпусков Windows, основанных на OneCoreUAP. С помощью этого общего набора можно написать универсальный драйвер Windows. Эти драйверы будут работать в Windows 10 для классических выпусков и Windows 10 Mobile и других версий Windows 10.
Следующие DDIs доступны при работе с универсальными звуковыми драйверами.
Справочник по аудиодрайверам класса порта
Преобразование существующего звукового драйвера в универсальный драйвер Windows
Выполните этот процесс, чтобы преобразовать существующий звуковой драйвер в универсальный драйвер Windows.
Определите, будут ли существующие вызовы драйверов выполняться в Windows OneCoreUAP. Проверьте раздел требований на эталонных страницах. Дополнительные сведения см. в справочнике по аудиоустройствам.
Перекомпилируйте драйвер как универсальный драйвер Windows. В свойствах проекта задайте для целевой платформы значение "Универсальная".
Используйте утилиту ApiValidator.exe, чтобы убедиться, что вызовы DDIs вашего драйвера действительны для универсального драйвера для Windows. Это средство входит в состав комплекта драйверов Windows (WDK) для Windows 10 и запускается автоматически, если вы используете Visual Studio 2015. Дополнительные сведения см. в разделе APIValidator.
Если драйвер вызывает интерфейсы, которые не входят в OneCoreUAP, компилятор сообщает об ошибках.
Замените эти вызовы альтернативными вызовами или создайте обходное решение кода или напишите новый драйвер.
Создание модульной установки звукового драйвера
Обзор
Чтобы создать более плавный и более надежный интерфейс установки и повысить поддержку обслуживания компонентов, разделите процесс установки драйвера на следующие компоненты.
- DSP (если присутствует) и Codec
- APO
- Настройки OEM
При необходимости отдельные INF-файлы можно использовать для DSP и Codec.
На этой схеме приводится обобщение установки аудиосистемы из компонентов.
Отдельный INF-файл расширения используется для настройки каждого базового компонента драйвера для конкретной системы. Настройки включают параметры настройки и другие параметры, специфичные для системы. Дополнительные сведения смотрите в разделе Использование файла INF расширения.
INF-файл расширения должен быть универсальным INF-файлом. Дополнительные сведения см. в статье Использование универсальногоINF-файла.
Сведения о добавлении программного обеспечения с помощью INF-файлов см. в разделе «Использование INF-файла компонента» и в разделе «Принципы проектирования DCH и лучшие практики».
Отправка компонентированных INF-файлов
Пакеты APO INF должны быть отправлены в Центр партнеров отдельно от базового пакета драйвера. Для получения дополнительной информации о создании пакетов см. Начало работы с Windows HLK.
Компонентные INF-файлы SYSVAD
Чтобы просмотреть пример компонентов INF-файлов, изучите sysvad/TabletAudioSampleна сайте GitHub.
Имя файла | Описание |
---|---|
ComponentizedAudioSample.inf | Базовый компонентизованный образец звукового INF-файла. |
ComponentizedAudioSampleExtension.inf | Драйвер расширения для базы sysvad с дополнительными настройками OEM. |
ComponentizedApoSample.inf | Образец INF-файла расширения APO. |
Традиционные INF-файлы по-прежнему доступны в примере SYSVAD.
Имя файла | Описание |
---|---|
tabletaudiosample.inf | Монолитный INF-файл рабочего стола, содержащий все сведения, необходимые для установки драйвера. |
Параметры настройки, зависящие от поставщика APO, и конфигурация функций
Все специфические настройки системы, параметры и значения калибровки поставщиков APO должны устанавливаться через расширенный пакет INF. Во многих случаях это можно сделать простым способом с директивой INF AddReg. В более сложных случаях можно использовать файл настройки.
Пакеты базовых драйверов не должны зависеть от этих настроек, чтобы функционировать (хотя, конечно, функциональные возможности могут быть сокращены).
приложения для настроек звука в UWP
Чтобы реализовать пользовательский интерфейс конечного пользователя, используйте приложение поддержки оборудования (HSA) для драйвера универсального звука Windows. Дополнительные сведения см. в разделе приложение поддержки оборудования (HSA): действия для разработчиков драйверов.
Программное запуск приложений поддержки оборудования UWP
Для программного запуска приложения поддержки оборудования UWP на основе события драйвера (например, при подключении нового звукового устройства) используйте API оболочки Windows. API оболочки Windows 10 поддерживают метод запуска пользовательского интерфейса UWP на основе активации ресурсов или непосредственно через IApplicationActivationManager. Дополнительные сведения об автоматическом запуске приложений UWP см. в автоматизации запуска приложений UWP для Windows 10.
Поставщики APO и драйверов устройств используют API AudioModules.
API звуковых модулей или DDI предназначен для стандартизации транспорта связи (но не протокола) для команд, передаваемых между приложением UWP или службой пользовательского режима в модуль драйвера ядра или блок обработки DSP. Для аудиомодулов требуется драйвер, реализующий правильный DDI для поддержки перечисления модулей и обмена данными. Команды передаются как двоичные и интерпретация или определение остаются создателю.
Звуковые модули в настоящее время не предназначены для упрощения прямого взаимодействия между приложением UWP и SW APO, работающим в звуковом модуле.
Дополнительные сведения о звуковых модулях см. в реализации аудиомодулем и настройке и запросе модулей аудиоустройств.
Построение строк HWID для APO
Идентификаторы оборудования APO включают как стандартные сведения, так и строки, определенные поставщиком.
Они построены следующим образом:
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)
Где:
- v(4) — это 4-символьный идентификатор поставщика устройств APO. Это будет управляться корпорацией Майкрософт.
- a(4) — это 4-символьный идентификатор APO, определенный поставщиком APO.
- n(4) — это 4-символьный идентификатор PCI SIG, назначенный поставщиком подсистемы для родительского устройства. Обычно это идентификатор OEM.
- S(4) — это 4-символьный идентификатор подсистемы, определяемой поставщиком для родительского устройства. Обычно это идентификатор продукта OEM.
Версия plug and Play INF и оценка даты для обновления драйвера
Система Windows Plug and Play оценивает дату и версию драйвера, чтобы определить, какой диск следует установить при наличии нескольких драйверов. Дополнительные сведения см. в Как Windows ранжирует драйверы.
Чтобы разрешить использовать последний драйвер, обязательно обновите дату и версию для каждой новой версии драйвера.
Ключ реестра драйвера APO
Для разделов реестра драйвера звука/APO, определяемых третьей стороной, используйте HKR.
Использование службы Windows для обеспечения связи APO с помощью UWP в пределах <—>.
Служба Windows не требуется строго для управления компонентами пользовательского режима, такими как API. Однако, если ваш проект включает сервер RPC для обеспечения связи между <UWP и> APO, рекомендуется реализовать эту функцию в службе Windows, которая затем управляет APO, работающим в аудиодвижке.
Создание примера универсального звука Sysvad для Windows 10 Desktop
Выполните следующие действия, чтобы создать образец sysvad для Windows 10 desktop.
Найдите inf-файл рабочего стола (tabletaudiosample.inf) и задайте для имени производителя значение, например Contoso.
В обозревателе решений выберите решение sysvad и удерживайте его (или щелкните правой кнопкой мыши) и выберите Configuration Manager. Если вы развертываете 64-разрядную версию Windows, установите целевую платформу на x64. Убедитесь, что параметры конфигурации и платформы одинаковы для всех проектов.
Создайте все проекты в решении sysvad.
Найдите выходной каталог для сборки проекта. Например, он может находиться в каталоге следующим образом:
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
Скопируйте следующие файлы в систему, которую вы хотите установить драйвер sysvad:
Файл | Описание |
---|---|
TabletAudioSample.sys | Файл драйвера. |
tabletaudiosample.inf | Файл сведений (INF), содержащий сведения, необходимые для установки драйвера. |
sysvad.cat | Файл каталога. |
SwapAPO.dll | Пример расширения драйвера для пользовательского интерфейса управления АПО. |
KeywordDetectorAdapter.dll | Пример детектора ключевых слов. |
Установка и проверка драйвера
Выполните следующие действия, чтобы установить драйвер с помощью PnpUtil в целевой системе.
Откройте командную строку и введите следующую команду в каталоге, в который вы скопировали файлы драйверов.
pnputil -i -a tabletaudiosample.inf
Установка драйвера sysvad должна завершиться. Если есть какие-либо ошибки, вы можете проверить этот файл для получения дополнительных сведений:
%windir%\inf\setupapi.dev.log
В диспетчере устройств в меню "Вид" выберите "Устройства" по типу. В дереве устройств найдите microsoft Virtual Audio Device (WDM) — Sysvad Sample. Обычно это находится под узлом звуковых, видео и игровых контроллеров.
На целевом компьютере откройте Панель управления и перейдите к Оборудование и звук>Управление звуковыми устройствами. В диалоговом окне "Звук" выберите значок говорящего, помеченный как Microsoft Virtual Audio Device (WDM) — Sysvad Sample, а затем выберите "Задать значение по умолчанию", но не нажимайте кнопку "ОК". Это позволит оставаться открытому диалоговому окну «Звук».
Найдите MP3 или другой звуковой файл на целевом компьютере и дважды щелкните его, чтобы воспроизвести его. Затем в диалоговом окне «Звук» убедитесь, что имеется активность в индикаторе уровня громкости, связанном с драйвером Microsoft Virtual Audio Device (WDM) - Sysvad Sample.