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


Обновления операционной системы

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

Процесс миграции конечной точки аудио

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

Этот процесс миграции конечной точки может выполняться в следующих ситуациях.

  • Обновление ОС.
  • Обновления аудиодрайвов. Сюда входит установка драйвера расширения аудио или AudioProcessingObject. Дополнительные сведения см. в разделе Создание установки компонентов аудиодрайв.
  • Существующий звуковой драйвер переустановлен на месте. Эта переустановка может произойти при запуске средства устранения неполадок со звуком. Это также может произойти с помощью диспетчера устройств, выполнив обновление драйвера и выбрав уже установленный драйвер.
  • AudioEndpointBuilder обслуживается. Это происходит при каждом исправлении ошибки в службе AudioEndpointBuilder, которая обновляется в выпущенных версиях Windows.
  • Исправление встроенного ПО в USB-аудиодрайведрайве изменяется.
  • Звуковой драйвер изменяет конфигурацию конечной точки с помощью KSPROPERTY_JACK_DESCRIPTION3.

Процесс миграции конечной точки аудио

Процесс миграции конечной точки аудио выполняет следующие действия.

  • Копирует свойства конечной точки, контролируемые пользователем.
  • Копирует свойства CAPX пересылки.

В процессе миграции конечной точки аудио не выполняется ни одно из следующих действий.

  • Не копирует FXProperties перед доступностью CAPX с Windows 11.
  • Он не копирует переадресацию свойств, которых нет в списке пользовательских параметров, известных ОС.

Начиная с Windows 11 для хранения параметров используется новая платформа параметров CAPX. Платформа параметров позволяет API предоставлять методы для запроса и изменения хранилища свойств для звуковых эффектов ("хранилище свойств FX") в конечной точке звука. Дополнительные сведения см. в разделе API Windows 11 для объектов обработки звука.

Сопоставление конечных точек перед обновлением с конечными точками после обновления

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

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

Зарегистрированная подсеть

Функция PcRegisterSubdevice драйвера класса порта регистрирует подсобное устройство, которое воспринимается остальной частью системы как устройство. Функция регистрирует экземпляр интерфейса устройства для объекта фильтра, представляющего подсеть на звуковом адаптере. Диспетчер ввода-вывода добавляет строку, указанную параметром Name, к ссылочной строке, используемой для идентификации экземпляра. Измененная ссылочная строка полезна для различения подустройств в звуковом адаптере. Дополнительные сведения о ссылочных строках см. в разделе IoRegisterDeviceInterface.

Использование ссылочной строки

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

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

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

До Windows 11

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

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

Windows 11 и более поздних версий

Корневые перечисленные программные звуковые устройства в системах в и после Windows 11 без идентификатора оборудования, звуковые конечные точки с одинаковыми значениями ссылочной строки будут перенесены неправильно.

При создании корневого перечислимого программного аудиоустройства, предназначенного для версий Windows после Windows 11, необходимо указать уникальный идентификатор оборудования в файле inf драйвера, а каждое перечислимое корневое программное звуковое устройство можно установить только один раз с этим идентификатором оборудования. Чтобы установить несколько копий одного драйвера, в каждой установке должны использоваться разные ссылочные строки, чтобы обеспечить успешную миграцию.

Ссылочные строковые правила

Настоятельно не рекомендуется использовать ссылочные строки по умолчанию "wave" и "topo", которые используются в примерах аудиодрайверов. Вместо этого следует использовать более описательные ссылочные строки. Драйверы, использующие ссылочные строки по умолчанию, рискуют потерять или применить данные миграции к неправильному устройству в случае, если идентификатор оборудования недоступен или совпадает с каким-либо другим драйвером, использующим эти ссылочные строки. Разумной стратегией будет "ContosoSoftwareRender-output2". Добавление уникального имени поставщика помогает устранить неоднозначности ссылочной строки.

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

Имя экземпляра устройства идентификатора оборудования

Идентификатор оборудования аудиодрайвера определяется в разделе Models INF-файла. Идентификатор оборудования идентифицирует по крайней мере одно устройство и ссылается на раздел DDInstall INF-файла для этого устройства. Он также указывает уникальный идентификатор оборудования для раздела модели для этого устройства. Дополнительные сведения см. в разделах Модели INF и INF DDInstall.

В этом INF-файле отображается описание устройства из раздела DDInstall в примере звука Sysvad.

[SYSVAD.NT$ARCH$]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA, Root\sysvad_ComponentizedAudioSample

SYSVAD_SA.DeviceDesc="Virtual Audio Device (WDM) - Tablet Sample"

В этом INF-файле показано, как oem настраивает описание устройства.

[CONTOSO.NT$ARCH$]
%CONTOSO_SA.DeviceDesc%=CONTOSO_SA, Root\contoso_ContosoSoftwareRender

CONTOSO_SA.DeviceDesc="Description of the Contoso Software Render Driver"

Идентификатор оборудования, на котором будет соответствовать AudioEndpointBuilder, будет иметь значение Root\contoso_ContosoSoftwareRender

Хранимые параметры реестра

Драйвер аудиоадаптера может отслеживать текущие параметры устройства (в основном уровни громкости и параметры отключения звука) в системном реестре. Драйвер обычно сохраняет эти параметры в предоставленном системой ключе драйвера (представленном INF-ключевое слово HKR) в подразделе "Параметры". Когда пользователь изменяет эти параметры с помощью панели управления или другого звукового приложения, драйвер обновляет соответствующие записи реестра. При каждой загрузке системы драйвер восстанавливает параметры устройства из реестра.

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

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

Директивы в разделе add-registry INF-файла драйвера указывают, следует ли перезаписывать существующие записи реестра. Дополнительные сведения см. в описании флага FLG_ADDREG_NOCLOBBER в директиве INF AddReg.

См. также раздел

KSPROPERTY_JACK_DESCRIPTION3

DEVPKEY_Device_DeviceDesc

Раздел INF DDInstall

Принципы и рекомендации по проектированию DCH

API Windows 11 для объектов обработки звука