Compartilhar via


Atualizações do sistema operacional

As configurações de driver de um dispositivo de áudio podem ser preservadas com frequência entre atualizações do sistema operacional. Após a atualização, a meta é mover as configurações do usuário para frente, garantindo também que os pontos de extremidade de áudio reflitam com precisão os recursos do sistema operacional e do driver.

Processo de migração de ponto de extremidade de áudio

Durante as atualizações do sistema operacional, um processo de migração de ponto de extremidade de áudio pode ser executado. Esse processo tenta mover o máximo de informações que são seguras para fazer isso. Ao desenvolver seu driver de áudio, tenha esses comportamentos de migração em mente.

Esse processo de migração de ponto de extremidade pode ser executado nas seguintes situações.

  • Atualização do sistema operacional.
  • Atualizações do Driver de Áudio. Isso inclui a instalação de um driver de extensão de áudio ou um AudioProcessingObject. Para obter mais informações, consulte Criando uma instalação de driver de áudio componente.
  • O driver de áudio existente é reinstalado no local. Essa reinstalação pode ocorrer quando a solução de problemas de áudio é executada. Isso também pode ocorrer por meio do gerenciador de dispositivos fazendo um "driver de atualização" e selecionando o driver que já está instalado.
  • AudioEndpointBuilder é atendido. Isso ocorre sempre que há uma correção de bug no serviço AudioEndpointBuilder que é atualizado em versões lançadas do Windows.
  • A revisão de firmware em um driver de áudio USB é alterada.
  • O driver de áudio altera a configuração do ponto de extremidade por meio de KSPROPERTY_JACK_DESCRIPTION3.

O processo de migração de ponto de extremidade de áudio

O processo de migração de ponto de extremidade de áudio faz o seguinte.

  • Copia as propriedades de ponto de extremidade controladas pelo usuário.
  • Copia as propriedades CAPX de encaminhamento.

O processo de migração de ponto de extremidade de áudio não faz nenhum dos procedimentos a seguir.

  • Não copia FXProperties anteriores à disponibilidade CAPX com Windows 11.
  • Ele não copia propriedades que não estão na lista de configurações de usuário conhecidas para o sistema operacional.

Começando com Windows 11, uma nova estrutura de configurações "CAPX" é usada para armazenar as configurações. A Estrutura de Configurações permite que APOs exponham métodos para consultar e modificar o repositório de propriedades para efeitos de áudio ("Repositório de Propriedades FX") em um ponto de extremidade de áudio. Para obter mais informações, consulte WINDOWS 11 APIs para objetos de processamento de áudio.

Correspondência dos pontos de extremidade de pré-atualização para pós-atualização de pontos de extremidade

O processo de migração corresponde aos pontos de extremidade de pré-atualização para postar pontos de extremidade de atualização usando esses dois elementos.

  • ID de hardware – para obter mais informações sobre a ID de hardware, consulte IDs de dispositivo exclusivas em todo o sistema.
  • Cadeia de caracteres de referência – o uso da cadeia de caracteres de referência é discutido abaixo.

Observe que, como novos pontos de extremidade são criados, o cache de IDs do mmdevice não funcionará durante o processo de migração do ponto de extremidade.

Subdispositivo Registrado

A função PcRegisterSubdevice do driver de classe de porta registra o subdispositivo, que é percebido como um dispositivo pelo restante do sistema. A função registra a instância da interface do dispositivo para um objeto de filtro que representa um subdispositivo em um adaptador de áudio. O gerenciador de E/S acrescenta a cadeia de caracteres especificada pelo parâmetro Name à cadeia de caracteres de referência que ele usa para identificar a instância. A cadeia de caracteres de referência modificada é útil para distinguir entre os subdispositivos no adaptador de áudio. Para obter mais informações sobre cadeias de caracteres de referência, consulte IoRegisterDeviceInterface.

Uso de cadeia de caracteres de referência

Os pontos de extremidade de áudio são identificados pela cadeia de caracteres de referência passada para PnP quando a interface KS foi criada, juntamente com a ID do pino para o conector externo. Alterar esses valores fará com que um novo ponto de extremidade de áudio seja criado. Esse novo ponto de extremidade de áudio não conterá as configurações de usuário associadas à cadeia de caracteres de referência anterior e à ID do pino do conector.

Nos casos em que a ID de hardware é a mesma entre dois ou mais dispositivos de áudio instalados e as cadeias de caracteres de referência também são idênticas, o sistema de migração não poderá migrar as configurações corretamente devido à falha na correspondência dos pontos de extremidade de antes da migração para os pontos de extremidade após a migração.

Instalar várias cópias dos mesmos dispositivos de áudio de software enumerados raiz em todas as versões do Windows, que usam a mesma ID de hardware e cadeias de caracteres de referência, não migrará corretamente.

Antes de Windows 11

Para dispositivos de áudio de software enumerados raiz em sistemas antes Windows 11, os pontos de extremidade de áudio com os mesmos valores de cadeia de caracteres de referência não serão migrados corretamente.

Ao criar um dispositivo de áudio de software enumerado raiz direcionado a versões do Windows antes de Windows 11, um valor de cadeia de caracteres de referência exclusivo precisa ser usado para cada ponto de extremidade de áudio para garantir uma migração bem-sucedida.

Windows 11 e posterior

Dispositivos de áudio de software enumerados raiz em sistemas em e após Windows 11, sem uma ID de hardware, os pontos de extremidade de áudio com os mesmos valores de cadeia de caracteres de referência não serão migrados corretamente.

Ao criar um dispositivo de áudio de software enumerado raiz direcionado a versões do Windows após Windows 11, uma ID de hardware exclusiva precisa ser especificada no driver inf e cada dispositivo de áudio de software enumerado raiz só pode ser instalado uma única vez com essa ID de hardware. Para instalar várias cópias do mesmo driver, cadeias de caracteres de referência diferentes devem ser usadas em cada instalação para garantir uma migração bem-sucedida.

Regras de cadeia de caracteres de referência

É altamente recomendável não usar as cadeias de caracteres de referência padrão "wave" e "topo" usadas nos drivers de exemplo de áudio. Em vez disso, cadeias de caracteres de referência mais descritivas devem ser usadas. Os drivers que usam as cadeias de caracteres de referência padrão correm o risco de ter seus dados de migração perdidos ou aplicados ao dispositivo errado caso uma ID de hardware não esteja disponível ou corresponda a algum outro driver usando essas cadeias de caracteres de referência. Uma estratégia razoável seria algo como "ContosoSoftwareRender-output2". Incluir um nome de fornecedor exclusivo ajuda a desambiguar a cadeia de caracteres de referência.

As cadeias de caracteres de referência devem permanecer estáticas para a instalação do driver de áudio, atualizações, atualizações do sistema operacional, reinicializações etc. Se a cadeia de caracteres de referência for alterada, um novo ponto de extremidade de áudio será criado e as configurações do usuário não serão copiadas do ponto de extremidade anterior para o novo ponto de extremidade.

Nome da Instância do Dispositivo de ID de Hardware

A ID de Hardware do driver de áudio é definida na seção Modelos do arquivo INF. A ID de Hardware identifica pelo menos um dispositivo e faz referência à seção DDInstall do arquivo INF para esse dispositivo. Ele também especifica um ID (identificador de hardware) exclusivo para a seção modelo para esse dispositivo. Para obter mais informações, consulte a seção Modelos INF e a seção INF DDInstall.

Esse arquivo INF mostra a descrição do dispositivo da seção DDInstall no exemplo de áudio Sysvad.

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

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

Esse arquivo INF mostra como a Descrição do Dispositivo seria personalizada por um OEM.

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

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

A ID de hardware em que AudioEndpointBuilder corresponderá seria Root\contoso_ContosoSoftwareRender

Configurações armazenadas do Registro

Um driver de adaptador de áudio pode acompanhar as configurações atuais do dispositivo (principalmente níveis de volume e configurações de mudo) no registro do sistema. O driver normalmente armazena essas configurações na chave de driver fornecida pelo sistema (representada pelo INF palavra-chave HKR) na subchave "Configurações". Quando o usuário altera essas configurações por meio de um painel de controle ou outro aplicativo de áudio, o driver atualiza as entradas apropriadas do Registro. Sempre que o sistema é inicializado, o driver restaura as configurações do dispositivo do registro.

Os usuários preferem esse comportamento em grande parte porque preserva os ajustes que fizeram no sistema ao longo do tempo, em vez de forçá-los a tentar restaurar suas configurações manualmente sempre que atualizam o sistema operacional.

Alguns drivers, no entanto, substituem cegamente essas configurações por padrões sempre que são instaladas. Uma abordagem melhor é que um driver determine no momento da instalação se determinadas entradas específicas do driver já existem. Se existirem, o driver deverá preservar as configurações contidas nessas entradas em vez de substituí-las.

As diretivas na seção add-registry do arquivo INF do driver especificam se as entradas existentes do Registro devem ser substituídas. Para obter mais informações, consulte a descrição do sinalizador FLG_ADDREG_NOCLOBBER na Diretiva AddReg do INF.

Confira também

KSPROPERTY_JACK_DESCRIPTION3

DEVPKEY_Device_DeviceDesc

Seção INF DDInstall

Princípios e práticas recomendadas de design de DCH

APIs Windows 11 para objetos de processamento de áudio