Compartir a través de


Controladores de Data-Intersection predeterminados

El controlador de intersección de datos propietario de un adaptador (el método IMiniport::D ataRangeIntersection del objeto del controlador de miniporte) puede rechazar la comprobación de intersección de datos devolviendo el código de estado de STATUS_NOT_IMPLEMENTED. En este caso, el controlador de intersección de datos predeterminado del controlador de puerto realiza la comprobación en nombre del adaptador.

Puede implementar un controlador de intersección de datos mínimo para el controlador del adaptador como un método DataRangeIntersection que rechace todas las solicitudes de intersección de datos devolviendo STATUS_NOT_IMPLEMENTED.

La implementación actual del controlador predeterminado del controlador de puerto está limitada en los tipos de intervalos de datos que puede controlar:

  • Solo formatos de datos PCM

  • Solo secuencias de audio mono y estéreo

Un controlador de adaptador que admita formatos no PCM o multicanal debe implementar un controlador de intersección de datos propietario en lugar de depender del controlador de puerto para controlar las intersecciones de datos para estos formatos.

Además, el controlador predeterminado solo admite formatos de audio que se pueden especificar mediante una estructura de KSDATAFORMAT_DSOUND o KSDATAFORMAT_WAVEFORMATEX . No admite ningún formato que contenga una estructura WAVEFORMATEXTENSIBLE , que es necesaria, por ejemplo, para especificar la máscara de canal para un formato con más de dos canales.

Al elegir un formato común de la intersección entre dos intervalos de datos, el controlador predeterminado del controlador de puerto siempre selecciona el valor más alto en la región de intersección de cada parámetro:

  • Si la intersección abarca más de una frecuencia de muestra válida (11, 22 y 44 kHz, por ejemplo), el controlador predeterminado elige la frecuencia más alta.

  • Si la intersección abarca más de un valor válido de bits por muestra (8, 16 y 32 bits, por ejemplo), el controlador predeterminado elige el valor más grande.

  • Si la intersección abarca formatos mono y estéreo, el controlador predeterminado elige estéreo.

Si el controlador predeterminado selecciona un formato que no es satisfactorio, el controlador del adaptador tiene la opción de rechazar el formato con errores en la llamada a NewStream (por ejemplo, vea IMiniportWavePci::NewStream) cuando SysAudio intenta crear un pin de receptor con el formato . Si se produce un error en la llamada, SysAudio no seguirá buscando intersecciones de datos. En su lugar, intentará crear una conexión iterando a través de una lista de los formatos PCM admitidos por filtros del sistema como KMixer hasta que encuentre uno que el pin receptor del adaptador también pueda admitir. La lista se ordena primero con formatos de mayor calidad. Como antes, el adaptador rechaza los formatos no satisfactorios en la lista con errores en las llamadas NewStream para esos formatos.