Поделиться через


Универсальные драйверы Windows для звука

В Windows 10 можно написать универсальный звуковой драйвер, который будет работать во многих типах оборудования. В этом разделе рассматриваются преимущества этого подхода, а также различия между платформами. Помимо универсальных драйверов Windows для аудио, Windows продолжает поддерживать предыдущие технологии звукового драйвера, такие как WDM.

Начало работы с драйверами универсальной версии Windows для аудио

IHVs может разрабатывать универсальный драйвер Windows, работающий на всех устройствах (настольных компьютерах, ноутбуках, планшетах, телефонах). Это может сократить время разработки и затраты на первоначальное обслуживание кода и более поздних версий.

Эти средства доступны для разработки драйверов универсальной версии Windows:

  • Visual Studio 2015: задайте для целевой платформы значение "Универсальная". Дополнительные сведения о настройке среды разработки драйверов см . в документации разработчика оборудования Windows и создании драйвера с помощью WDK.

  • Средство APIValidator. Вы можете использовать средство ApiValidator.exe для проверки допустимости вызовов драйвера для универсального драйвера Windows. Это средство входит в состав комплекта драйверов Windows (WDK) для Windows 10 и запускается автоматически, если вы используете Visual Studio 2015. Дополнительные сведения см. в разделе APIValidator.

  • Справочная документация по DDI: справочная документация по DDI обновляется, чтобы указать, какие DDIS поддерживаются драйверами универсальной версии Windows. Дополнительные сведения см. в справочнике по аудиоустройствам.

Создание универсального звукового драйвера

Пошаговые инструкции см . в документации разработчика оборудования Windows и создании драйвера с помощью WDK. Вот краткий перечень шагов:

  1. Загрузите образец универсальной аудио sysvad для использования в качестве отправной точки для универсального звукового драйвера. Кроме того, начните с пустого шаблона драйвера WDM и добавьте код из универсального примера sysvad по мере необходимости для звукового драйвера.

  2. В свойствах проекта задайте для целевой платформы значение "Универсальная".

  3. Создайте пакет установки: если целевое устройство работает под управлением Windows 10 для классических выпусков (Home, Pro, Enterprise и Education), используйте универсальный INF-файл. Если целевой объект — это устройство под управлением Windows 10 Mobile, используйте PkgGen для создания SPKG-файла.

  4. Сборка, установка, развертывание и отладка драйвера для Windows 10 для классических выпусков или Windows 10 Mobile.

Пример кода

Sysvad и SwapAPO были преобразованы в универсальные примеры драйверов Windows. Дополнительные сведения см. в разделе "Примеры звуковых драйверов".

Доступные программные интерфейсы для универсальных драйверов Windows для аудио

Начиная с Windows 10, интерфейсы программирования драйверов являются частью выпусков OneCoreUAP в Windows. С помощью этого общего набора можно написать универсальный драйвер Windows. Эти драйверы будут работать в Windows 10 для классических выпусков и Windows 10 Mobile и других версий Windows 10.

Следующие DDIs доступны при работе с универсальными звуковыми драйверами.

Преобразование существующего звукового драйвера в универсальный драйвер Windows

Выполните этот процесс, чтобы преобразовать существующий звуковой драйвер в универсальный драйвер Windows.

  1. Определите, будут ли существующие вызовы драйверов выполняться в Windows OneCoreUAP. Проверьте раздел требований на эталонных страницах. Дополнительные сведения см. в справочнике по аудиоустройствам.

  2. Перекомпилируйте драйвер как универсальный драйвер Windows. В свойствах проекта задайте для целевой платформы значение "Универсальная".

  3. Используйте средство ApiValidator.exe, чтобы убедиться, что вызовы драйвера действительны для универсального драйвера Windows. Это средство входит в состав комплекта драйверов Windows (WDK) для Windows 10 и запускается автоматически, если вы используете Visual Studio 2015. Дополнительные сведения см. в разделе APIValidator.

  4. Если драйвер вызывает интерфейсы, которые не входят в OneCoreUAP, компилятор сообщает об ошибках.

  5. Замените эти вызовы альтернативными вызовами или создайте обходное решение кода или напишите новый драйвер.

Создание компонента установки звукового драйвера

Обзор

Чтобы создать более плавный и более надежный интерфейс установки и повысить поддержку обслуживания компонентов, разделите процесс установки драйвера на следующие компоненты.

  • DSP (если присутствует) и Codec
  • APO
  • Настройки OEM

При необходимости отдельные INF-файлы можно использовать для DSP и Codec.

На этой схеме приводится сводка по компонентной установке звука.

Схема компонентного стека звука с драйвером DSP, кодеком и API.

Отдельный INF-файл расширения используется для настройки каждого базового компонента драйвера для конкретной системы. Настройки включают параметры настройки и другие системные параметры. Дополнительные сведения см. в разделе "Использование INF-файла расширения".

INF-файл расширения должен быть универсальным INF-файлом. Дополнительные сведения см. в разделе "Использование универсального INF-файла".

Сведения о добавлении программного обеспечения с помощью INF-файлов см. в разделе "Использование INF-файла компонента" и принципов проектирования DCH.

Отправка компонентов INF-файлов

Пакеты APO INF должны быть отправлены в Центр партнеров отдельно от базового пакета драйвера. Дополнительные сведения о создании пакетов см. в статье "Начало работы с Windows HLK".

КОМПОНЕНТЫ SYSVAD-файлы INF

Чтобы просмотреть пример компонентов INF-файлов, проверьте sysvad/TabletAudioSample на GitHub.

Имя файла Description
ComponentizedAudioSample.inf Базовый компонентизованный образец звукового INF-файла.
ComponentizedAudioSampleExtension.inf Драйвер расширения для базы sysvad с дополнительными настройками OEM.
ComponentizedApoSample.inf Пример INF-файла расширения APO.

Традиционные INF-файлы по-прежнему доступны в примере SYSVAD.

Имя файла Description
tabletaudiosample.inf Монолитный INF-файл рабочего стола, содержащий все сведения, необходимые для установки драйвера.

Параметры настройки и конфигурация компонентов поставщика APO

Все параметры, параметры и значения настройки системы поставщиков APO должны быть установлены с помощью пакета INF расширения. Во многих случаях это можно сделать простым способом с помощью директивы INF AddReg. В более сложных случаях можно использовать файл настройки. 

Пакеты базовых драйверов не должны зависеть от этих настроек, чтобы функционировать (хотя, конечно, функциональные возможности могут быть сокращены). 

AP-интерфейсы параметров звука 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, работающим в звуковом модуле.

Дополнительные сведения о звуковых модулях см. в разделе "Реализация связи с аудиомодулем" и "Настройка" и "Запрос модулей аудиоустройства".

Построение строк APO HWID

Идентификаторы оборудования 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.

самонастраивающийся inf version and date evaluation for driver update

Система Windows самонастраивающийся оценивает дату и версию драйвера, чтобы определить, какой диск необходимо установить при наличии нескольких драйверов. Дополнительные сведения см. в разделе о том, как Windows Ранжирует драйверы.

Чтобы разрешить использовать последний драйвер, обязательно обновите дату и версию для каждой новой версии драйвера.

Раздел реестра драйверов APO

Для разделов реестра сторонних производителей и реестра APO используйте HKR.

Использование службы Windows для упрощения взаимодействия UWP <с> APO

Служба Windows не требуется строго для управления компонентами пользовательского режима, такими как API. Однако если ваш дизайн включает сервер RPC для упрощения взаимодействия UWP <—> APO, рекомендуется реализовать эту функцию в службе Windows, которая затем управляет APO, работающим в звуковом обработчике. 

Создание примера универсального звука Sysvad для Windows 10 Desktop

Выполните следующие действия, чтобы создать образец sysvad для Windows 10 desktop.

  1. Найдите inf-файл рабочего стола (tabletaudiosample.inf) и задайте для имени производителя значение, например Contoso.

  2. В Обозреватель решений выберите решение sysvad и удерживайте его (или щелкните правой кнопкой мыши) и выберите Configuration Manager. Если вы развертываете 64-разрядную версию Windows, установите целевую платформу на x64. Убедитесь, что параметры конфигурации и платформы одинаковы для всех проектов.

  3. Создайте все проекты в решении sysvad.

  4. Найдите выходной каталог для сборки из сборки. Например, он может находиться в каталоге следующим образом:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Скопируйте следующие файлы в систему, которую вы хотите установить драйвер sysvad:

Файл Description
TabletAudioSample.sys Файл драйвера.
tabletaudiosample.inf Файл сведений (INF), содержащий сведения, необходимые для установки драйвера.
sysvad.cat Файл каталога.
SwapAPO.dll Пример расширения драйвера для пользовательского интерфейса для управления API.
KeywordDetectorAdapter.dll Пример детектора ключевых слов.

Установка и проверка драйвера

Выполните следующие действия, чтобы установить драйвер с помощью PnpUtil в целевой системе.

  1. Откройте командную строку и введите следующую команду в каталоге, в который вы скопировали файлы драйверов.

    pnputil -i -a tabletaudiosample.inf

  2. Установка драйвера sysvad должна завершиться. Если есть какие-либо ошибки, вы можете проверить этот файл для получения дополнительных сведений: %windir%\inf\setupapi.dev.log

  3. В диспетчер устройств в меню "Вид" выберите "Устройства" по типу. В дереве устройств найдите microsoft Virtual Audio Device (WDM) — Sysvad Sample. Обычно это находится под узлом звуковых, видео и игровых контроллеров.

  4. На целевом компьютере откройте панель управления и перейдите к звуковым устройствам аппаратного и>звукового управления. В диалоговом окне "Звук" выберите значок говорящего, помеченный как Microsoft Virtual Audio Device (WDM) — Sysvad Sample, а затем выберите "Задать значение по умолчанию", но не нажимайте кнопку "ОК". Откроется диалоговое окно "Звук".

  5. Найдите MP3 или другой звуковой файл на целевом компьютере и дважды щелкните его, чтобы воспроизвести его. Затем в диалоговом окне "Звук" убедитесь, что в индикаторе уровня тома, связанном с драйвером sysvad ( WDM) виртуального звукового устройства (WDM) Майкрософт.