Subdispositivos de audio dinámico

Algunos adaptadores de audio pueden cambiar dinámicamente sus topologías internas en tiempo de ejecución. Mediante el uso de las funcionalidades proporcionadas por el sistema en el controlador del sistema PortCls (Portcls.sys), los controladores de adaptador pueden proporcionar compatibilidad de software para hardware de audio configurable dinámicamente.

Por ejemplo, intel High Definition Audio Specification usa el término códec de audio para hacer referencia a un adaptador de audio integrado que se conecta a un controlador de audio de alta definición (HD Audio) a través de una interfaz hd Audio Link. Un códec de audio típico admite la detección de presencia de jack: cuando se inserta o quita un enchufe de un conector, el hardware genera una interrupción para notificar al controlador del cambio en la configuración de hardware. Por ejemplo, el controlador responde a la inserción de un enchufe en el conector de auriculares mediante la creación de un filtro KS para representar el subdispositivo de audio para los auriculares. El controlador asigna recursos de hardware al filtro (por ejemplo, los auriculares pueden requerir un control de volumen y un convertidor digital a analógico o DAC) y registra el filtro como un dispositivo de audio. Cuando el usuario desconecta los auriculares, el controlador responde liberando los recursos, eliminando el filtro y quitándolo del registro.

Este comportamiento garantiza que, cuando una aplicación de audio comprueba qué dispositivos de audio están registrados, solo encuentra los dispositivos que están conectados actualmente. Si un dispositivo está desconectado, no aparece en el registro.

En Windows Vista, Windows Server 2003 con Service Pack 1 (SP1) y Windows XP con Service Pack 2 (SP2), PortCls admite las interfaces IUnregisterSubdevice e IUnregisterPhysicalConnection . Los controladores de adaptador de audio usan estas dos interfaces para eliminar subdispositivos de audio que ya no están en uso. Las versiones anteriores de Windows, incluidas Windows Server 2003 y Windows XP, no admiten estas interfaces. En estas versiones anteriores de Windows, se pueden crear subdispositivos pero no eliminarse una vez que se crea un subdispositivo, existe durante la vigencia del objeto de controlador del adaptador.

La interfaz IUnregisterSubdevice contiene un único método que el controlador del adaptador puede usar para "anular el registro" de un subdispositivo que el controlador registró a través de una llamada anterior a la rutina PcRegisterSubdevice :

IUnregisterSubdevice::UnregisterSubdevice

La interfaz IUnregisterPhysicalConnection contiene tres métodos que el controlador del adaptador puede usar para anular el registro de conexiones físicas entre subdispositivos:

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

Estos métodos quitan las conexiones que el controlador registró a través de llamadas anteriores a las rutinas PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal y PcRegisterPhysicalConnectionToExternal . PortCls almacena la información de una llamada PcRegisterPhysicalConnectionXxx para que el controlador de puerto pueda usar posteriormente la información para responder a las solicitudes de propiedad KSPROPERTY_PIN_PHYSICALCONNECTION . Al eliminar un subdispositivo de la topología de un adaptador, el controlador debe anular el registro de las conexiones físicas del subdispositivo a esa parte de la topología. Si no se anula el registro de las conexiones físicas del subdispositivo, se pueden producir pérdidas de memoria. PortCls admite las rutinas PcRegisterXxx en Windows 2000 y versiones posteriores.

En los temas siguientes de esta sección se describe cómo implementar la compatibilidad de controladores con adaptadores con topologías dinámicas:

Administración de topologías dinámicas

Compatibilidad del controlador con subdispositivos dinámicos

Descripciones de Jack para subdispositivos de audio dinámico