Actualizaciones del sistema operativo
La configuración del controlador de un dispositivo de audio se puede conservar con frecuencia en las actualizaciones del sistema operativo. Después de la actualización, el objetivo es avanzar la configuración del usuario, a la vez que se garantiza que los puntos de conexión de audio reflejen con precisión las funcionalidades del sistema operativo y del controlador.
Proceso de migración de puntos de conexión de audio
Durante las actualizaciones del sistema operativo, se puede ejecutar un proceso de migración de punto de conexión de audio. Este proceso intenta mover la mayor cantidad de información que es segura para hacerlo. A medida que desarrolle el controlador de audio, tenga en cuenta estos comportamientos de migración.
Este proceso de migración de puntos de conexión se puede ejecutar en las situaciones siguientes.
- Actualización del sistema operativo.
- Actualizaciones del controlador de audio. Esto incluye la instalación de un controlador de extensión de audio o un AudioProcessingObject. Para obtener más información, consulte Creación de una instalación de controladores de audio componentes.
- El controlador de audio existente se vuelve a instalar. Esta reinstalación puede producirse cuando se ejecuta el solucionador de problemas de audio. Esto también puede ocurrir a través del administrador de dispositivos haciendo un "controlador de actualización" y seleccionando el controlador que ya está instalado.
- AudioEndpointBuilder está en servicio. Esto ocurre siempre que hay una corrección de errores en el servicio AudioEndpointBuilder que se actualiza en las versiones publicadas de Windows.
- Se cambia la revisión del firmware en un controlador de audio USB.
- El controlador de audio cambia la configuración del punto de conexión a través de KSPROPERTY_JACK_DESCRIPTION3.
Proceso de migración del punto de conexión de audio
El proceso de migración del punto de conexión de audio hace lo siguiente.
- Copia las propiedades del punto de conexión controlado por el usuario.
- Copia las propiedades CAPX reenviadas.
El proceso de migración del punto de conexión de audio no realiza ninguna de las acciones siguientes.
- No copia fxProperties reenviada antes de la disponibilidad CAPX con Windows 11.
- No copia las propiedades de reenvío que no están en la lista de configuraciones de usuario conocidas para el sistema operativo.
A partir de Windows 11, se usa un nuevo marco de configuración "CAPX" para almacenar la configuración. El marco de configuración permite a las API exponer métodos para consultar y modificar el almacén de propiedades para efectos de audio ("Fx Property Store") en un punto de conexión de audio. Para obtener más información, consulte api de Windows 11 para objetos de procesamiento de audio.
Coincidencia de los puntos de conexión anteriores a la actualización para publicar puntos de conexión de actualización
El proceso de migración coincide con los puntos de conexión anteriores a la actualización para publicar puntos de conexión de actualización mediante estos dos elementos.
- Id. de hardware : para obtener más información sobre el identificador de hardware, consulte Identificadores de dispositivo únicos para todo el sistema.
- Cadena de referencia : el uso de la cadena de referencia se describe a continuación.
Tenga en cuenta que, dado que se crean nuevos puntos de conexión, el almacenamiento en caché del identificador mmdevice no funcionará durante el proceso de migración de punto de conexión.
Subdispositivo registrado
La función PcRegisterSubdevice del controlador de clase port registra el subdispositivo, que se percibe como un dispositivo por el resto del sistema. La función registra la instancia de interfaz del dispositivo para un objeto de filtro que representa un subdispositivo en un adaptador de audio. El administrador de E/S anexa la cadena especificada por el parámetro Name a la cadena de referencia que usa para identificar la instancia. La cadena de referencia modificada es útil para distinguir entre los subdispositivos del adaptador de audio. Para obtener más información sobre las cadenas de referencia, consulte IoRegisterDeviceInterface.
Uso de cadenas de referencia
Los puntos de conexión de audio se identifican mediante la cadena de referencia pasada a PnP cuando se creó la interfaz KS, junto con el identificador de patilla para el conector externo. Cambiar estos valores hará que se cree un nuevo punto de conexión de audio. Este nuevo punto de conexión de audio no contendrá la configuración de usuario asociada a la cadena de referencia anterior y al identificador de patilla del conector.
En los casos en los que el identificador de hardware es el mismo entre dos o más dispositivos de audio instalados y las cadenas de referencia también son idénticos, el sistema de migración no podrá migrar la configuración correctamente debido a que no se pudieron coincidir los puntos de conexión de antes de la migración a los puntos de conexión después de la migración.
La instalación de varias copias de los mismos dispositivos de audio de software enumerados raíz en todas las versiones de Windows, que usan el mismo identificador de hardware y cadenas de referencia, no se migrarán correctamente.
Antes de Windows 11
En el caso de los dispositivos de audio de software enumerados raíz en sistemas anteriores a Windows 11, los puntos de conexión de audio con los mismos valores de cadena de referencia no se migrarán correctamente.
Al crear un dispositivo de audio de software enumerado raíz que tenga como destino versiones de Windows anteriores a Windows 11, se debe usar un valor de cadena de referencia único para cada punto de conexión de audio para garantizar una migración correcta.
Windows 11 y versiones posteriores
Los dispositivos de audio de software enumerados raíz en los sistemas en y después de Windows 11, sin un identificador de hardware, los puntos de conexión de audio con los mismos valores de cadena de referencia no se migrarán correctamente.
Al crear un dispositivo de audio de software enumerado raíz que tenga como destino las versiones de Windows después de Windows 11, se debe especificar un identificador de hardware único en el controlador inf y cada dispositivo de audio de software enumerado raíz solo se puede instalar una sola vez con ese identificador de hardware. Para instalar varias copias del mismo controlador, se deben usar cadenas de referencia diferentes en cada instalación para garantizar una migración correcta.
Reglas de cadena de referencia
Se recomienda encarecidamente no usar las cadenas de referencia "wave" y "topo" predeterminadas que se usan en los controladores de ejemplo de audio. En su lugar, se deben usar cadenas de referencia más descriptivas. Los controladores que usan las cadenas de referencia predeterminadas tienen el riesgo de que sus datos de migración se pierdan o se apliquen al dispositivo incorrecto en caso de que un identificador de hardware no esté disponible o coincida con algún otro controlador que use estas cadenas de referencia. Una estrategia razonable sería algo como "ContosoSoftwareRender-output2". Incluir un nombre de proveedor único ayuda a eliminar la ambigüedad de la cadena de referencia.
Las cadenas de referencia deben permanecer estáticas para la instalación del controlador de audio, las actualizaciones, las actualizaciones del sistema operativo, los reinicios, etc. Si cambia la cadena de referencia, se creará un nuevo punto de conexión de audio y la configuración del usuario no se copiará del punto de conexión anterior al nuevo punto de conexión.
Nombre de instancia de dispositivo de identificador de hardware
El identificador de hardware del controlador de audio se define en la sección Modelos del archivo INF. El id. de hardware identifica al menos un dispositivo y hace referencia a la sección DDInstall del archivo INF de ese dispositivo. También especifica un identificador de hardware (ID) único a la sección modelo para ese dispositivo. Para obtener más información, consulte la sección Modelos INF y la sección INF DDInstall.
Este archivo INF muestra la descripción del dispositivo de la sección DDInstall del ejemplo de audio sysvad.
[SYSVAD.NT$ARCH$]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA, Root\sysvad_ComponentizedAudioSample
SYSVAD_SA.DeviceDesc="Virtual Audio Device (WDM) - Tablet Sample"
Este archivo INF muestra cómo un OEM personalizaría la descripción del dispositivo.
[CONTOSO.NT$ARCH$]
%CONTOSO_SA.DeviceDesc%=CONTOSO_SA, Root\contoso_ContosoSoftwareRender
CONTOSO_SA.DeviceDesc="Description of the Contoso Software Render Driver"
El identificador de hardware en el que coincidirá AudioEndpointBuilder sería Root\contoso_ContosoSoftwareRender
Configuración almacenada del Registro
Un controlador de adaptador de audio puede realizar un seguimiento de la configuración actual del dispositivo (principalmente los niveles de volumen y la configuración de silenciación) en el registro del sistema. Normalmente, el controlador almacena esta configuración en la clave de controlador proporcionada por el sistema (representada por la palabra clave INF HKR) en la subclave "Configuración". Cuando el usuario modifica esta configuración a través de un panel de control u otra aplicación de audio, el controlador actualiza las entradas del Registro adecuadas. Cada vez que se inicia el sistema, el controlador restaura la configuración del dispositivo desde el registro.
Los usuarios prefieren en gran medida este comportamiento porque conserva los ajustes realizados en el sistema a lo largo del tiempo en lugar de obligarlos a intentar restaurar su configuración manualmente cada vez que actualizan el sistema operativo.
Sin embargo, algunos controladores sobrescriben ciegamente esta configuración con los valores predeterminados cada vez que se instalan. Un mejor enfoque es que un controlador determine en el momento de la instalación si ya existen determinadas entradas específicas del controlador. Si existen, el controlador debe conservar la configuración contenida en estas entradas en lugar de sobrescribirlas.
Las directivas de la sección add-registry del archivo INF del controlador especifican si se deben sobrescribir las entradas del Registro existentes. Para obtener más información, vea la descripción de la marca FLG_ADDREG_NOCLOBBER en la directiva INF AddReg.