Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los generadores de pines de un filtro de audio describen todos los pines que el filtro puede instanciar. Como se mencionó anteriormente, un controlador de miniporte de audio almacena información de pines en una matriz de estructuras PCPIN_DESCRIPTOR. Cada estructura especifica una fábrica de pines, que se identifica por su índice en la matriz. Este índice se conoce con frecuencia como pin ID.
Una estructura PCPIN_DESCRIPTOR contiene una tabla de automatización y una estructura KSPIN_DESCRIPTOR .
La estructura KSPIN_DESCRIPTOR contiene la siguiente información sobre los pines del generador de pines:
Dirección del flujo de datos relativa al filtro
Dirección del flujo de comunicación relativo al filtro (en todas las versiones actuales de Windows, los filtros KS usan IRPs para la comunicación).
Anclar categoría
Nombre amigable
Funcionalidades de instancia
Funcionalidades de formato de datos
Los miembros Category y Name de la estructura especifican la categoría de pines de la fábrica de pines y el nombre amigable. Para cada generador de patillas del filtro, el controlador de miniporte especifica una combinación de GUID de categoría y nombre que identifican de forma única el generador de patillas. Si dos o más fábricas de pines comparten el mismo valor Categoría, cada fábrica de pines tiene un valor Nombre que la distingue de las demás. Si solo un generador de patillas tiene un valor category determinado, ese valor es suficiente para identificar el generador de patillas y el valor name de ese generador de patillas se puede establecer en NULL. Para obtener un ejemplo de codificación, vea Exponer topología de filtro. Para obtener información sobre las categorías de pines, consulte Pin Category Property.
Una fábrica de alfileres especifica el intervalo de formatos de datos que admite como una matriz de estructuras KSDATARANGE extendidas.
Una fábrica de pines que admite una gama de formatos de datos de onda o DirectSound para su flujo de entrada o salida especifica una matriz de estructuras KSDATARANGE_AUDIO.
Una fábrica de pines que admite un rango de formatos de datos MIDI o DirectMusic para su flujo de entrada o salida especifica una matriz de estructuras KSDATARANGE_MUSIC.
KSDATARANGE_AUDIO y KSDATARANGE_MUSIC son versiones extendidas de KSDATARANGE. Para obtener ejemplos de ambos tipos de intervalos de datos, consulte Formatos de datos de audio y Intervalos de datos.
Antes de conectar un pin de receptor en un filtro a un pin de origen en otro filtro, un generador de grafos (por ejemplo, el controlador del sistema SysAudio) puede buscar los intervalos de datos para un formato compatible. El generador de grafos normalmente llama al controlador de intersección de datos del filtro, lo que permite que el propio filtro elija un formato compatible.
Un filtro puede tener varias fábricas de pines y una fábrica de pines puede admitir varias instancias de pines.
Tener varias fábricas de pines en un filtro es útil para distinguir rutas de datos separadas para los diferentes tipos de datos que fluyen a través del filtro. Por ejemplo, una fábrica de pines podría admitir corrientes de datos PCM y otra fábrica de pines podría admitir corrientes AC-3.
Un solo filtro puede admitir la representación y captura de secuencias simultáneamente. Las rutas de representación y captura tienen conjuntos independientes de fábricas de filtros.
Tener varias instancias de pines en una fábrica de pines de entrada suele implicar mezcla de señales, en cuyo caso el filtro contiene un nodo SUM (KSNODETYPE_SUM).
Al igual que los filtros, los pines son objetos kernel y se identifican mediante handles del núcleo. El identificador de una instancia de pin se crea mediante una llamada a KsCreatePin. Como objeto kernel, se puede especificar un pin como destino de un IRP. Un cliente del controlador especifica el controlador de pin al enviar una solicitud IOCTL a un pin.
Al compilar un grafo de filtro de audio, SysAudio vincula un filtro a otro al conectar sus pines. Un pin de origen de un filtro se puede conectar al pin de destino de otro filtro. Datos e IRPs del flujo del pin de origen llegan al pin receptor a través de esta conexión. Para establecer la conexión, un generador de grafos (normalmente SysAudio) crea primero el pin de origen llamando a KsCreatePin y, a continuación, crea el pin receptor llamando a KsCreatePin de nuevo. Sin embargo, en la segunda llamada, el cliente especifica que el nuevo pin receptor se va a conectar al pin de origen que se creó en la primera llamada.