Compartir a través de


Controlador de minipuerto de topología

Un controlador de minipuerto de topología administra los distintos controles de hardware (por ejemplo, volumen y silenciamiento) en el circuito mezclador del adaptador de audio. Este controlador enumera los controles como nodos de la topología mezcladora, lo que permite a los clientes detectar las interconexiones entre nodos y consultar y establecer los parámetros de control en cada nodo.

El controlador del sistema SysAudio examina la topología del adaptador cuando crea un gráfico de filtros de audio. La API de mezclador (descrita en la sección multimedia de Windows de la documentación de Microsoft Windows SDK) representa los nodos de topología como controles de línea de mezclador y los expone a aplicaciones en modo de usuario, como SndVol32. Para obtener más información, consulte SysTray y SndVol32.

Un controlador de miniporte de topología debe implementar una interfaz de minipuerto de topología, que el controlador de puerto usa para inicializar el controlador de minipuerto. La interfaz de minipuerto, IMiniportTopology, hereda los métodos de la interfaz IMiniport ; no proporciona métodos adicionales. Un controlador de adaptador de audio forma un filtro de topología enlazando la interfaz IMiniportTopology de un objeto de miniporte a la interfaz IPortTopology de un objeto de puerto.

Normalmente, un filtro de topología abarca la mayoría de los nodos de topología de un adaptador, aunque otros dispositivos del adaptador pueden contener nodos de topología adicionales. Por ejemplo, un dispositivo de onda, que se representa como filtro de onda, puede contener nodos DAC (KSNODETYPE_DAC) y ADC (KSNODETYPE_ADC).

La consulta y configuración de los parámetros de control en los nodos de topología se realiza a través de solicitudes de propiedades. Cada tipo de nodo está asociado a una propiedad específica o a un conjunto de propiedades. Un nodo solo puede admitir un valor de control. Por ejemplo, un nodo de volumen (KSNODETYPE_VOLUME) tiene un valor que indica su valor de volumen actual. Otros nodos pueden admitir varios valores de control. Por ejemplo, un nodo 3D (KSNODETYPE_3D_EFFECTS) admite una serie de propiedades del búfer 3D y del agente de escucha 3D. Un nodo sum (KSNODETYPE_SUM), por otro lado, no tiene valores de control.

Un controlador de miniporte de topología usa un descriptor de conexión (PCCONNECTION_DESCRIPTOR) para describir una conexión entre dos nodos de topología. Cada conexión se dirige y especifica tanto un de nodo como un nodo a otro. Un nodo puede tener varios pines y la función realizada por un pin puede diferir de la de las otras patillas. Para distinguir un pin de otro, el controlador de minipuerto numera los patillas de un nodo. Estos números de patillas aparecen en los descriptores de conexión. Por ejemplo, un filtro de variable de estado podría tener tres patillas de salida ( una para las frecuencias altas, medias y bajas) numeradas 1, 2 y 3. La numeración de patillas permite a los clientes del controlador de miniportar determinar qué conexiones están asociadas a qué patillas.

Un descriptor de conexión usa un identificador de nodo distintivo, PCFILTER_NODE, para distinguir un pin en el filtro de un pin de un nodo dentro del filtro. Cada una de las conexiones cableadas del circuito mezclador a los dispositivos de representación y captura de audio del adaptador de audio se representa como un pin en el filtro de topología. Otras patillas de filtro de topología representan conexiones físicas externas, como un conector de línea en la tarjeta del adaptador. Las patillas de un filtro de topología representan conexiones físicas y cableadas del hardware del adaptador. Por lo tanto, las patillas no pueden proporcionar control explícito sobre si se realiza una conexión y no se pueden usar para administrar el flujo de datos a través de esa conexión.

Un único descriptor de conexión puede describir una conexión entre dos tipos de patillas en una topología. Las patillas de los dos lados de una conexión pueden ser patillas en el filtro o patillas en los nodos del filtro, o bien la conexión puede tener un pin de filtro en un lado y un pin de nodo en el otro. Un controlador de minipuerto especifica su topología como una matriz de descriptores de conexión. Un solo pin puede tener más de una conexión, lo que significa que el mismo pin puede aparecer en más de un descriptor de conexión de la matriz.

La descripción de la topología que obtiene un cliente de un controlador de minipuerto no está diseñada para admitir la detección abierta de cómo interpretar los tipos de nodo desconocidos para el cliente. La numeración de patillas de nodo por sí sola no proporciona al cliente la información necesaria para detectar las funciones de las patillas. Aunque el controlador de minipuerto identifica el tipo de un nodo (por medio de un GUID), no proporciona ninguna lista estandarizada de parámetros para describir el tipo de nodo o las patillas admitidas por el tipo de nodo.

Por ejemplo, si un cliente enumera un nodo que usa el GUID de tipo nodo KSNODETYPE_VOLUME para identificarse, el cliente solo puede usar el nodo si conoce las convenciones para tratar con nodos de volumen. Por convención, un nodo de volumen, por ejemplo, admite la propiedad KSPROPERTY_AUDIO_VOLUMELEVEL y asigna números de patilla de nodo 0 y 1 al pin de salida (origen) y a la patilla de entrada (receptor), respectivamente. Además, un cliente que puede controlar un nodo de volumen normalmente realiza una búsqueda dirigida que limita su exploración a un número relativamente pequeño de tipos de nodo (volumen y nodos silenciados, por ejemplo). Normalmente, el cliente explora solo partes de un grafo de filtro que probablemente contengan nodos de volumen (por ejemplo, líneas mezcladoras).

La interfaz de minipuerto admite la entrega de cambios de valor de control no solicitados desde el controlador de minipuerto al controlador de puerto. Esta característica admite dispositivos con botones de control, controles deslizantes o conmutadores que el usuario puede manipular físicamente. Cada vez que el usuario cambia el valor de control de un nodo, una interrupción de hardware notifica al controlador de puerto que se ha producido un evento de hardware .