Implementación del controlador de audio descargado de hardware
Al implementar un controlador para el audio descargado, desarrolla un controlador que puede procesar secuencias de audio descargadas y exponer esa capacidad al sistema de audio de Windows.
En este tema se presentan los detalles de implementación de un controlador de audio desarrollado para un adaptador de audio capaz de procesar secuencias de audio descargadas por hardware.
En estos temas adicionales de esta sección se describen los problemas que debe tener en cuenta al desarrollar un controlador de audio para un adaptador de audio que implementa un motor de audio de hardware para controlar las secuencias de audio descargadas.
Interfaces auxiliares de Portcls para el procesamiento de audio descargado
Informes de problemas para audio descargado
Descarga de hardware: topología de filtro KS
Windows admite el uso de un adaptador de audio que puede usar un motor de audio de hardware incorporado para procesar secuencias de audio. Al desarrollar este tipo de adaptador de audio, el controlador de audio asociado debe exponer este hecho al sistema de audio en modo de usuario de una manera específica, para que el sistema de audio pueda detectar, usar y exponer correctamente las características de este adaptador y su controlador.
GUID de KSNODETYPE_AUDIO_ENGINE para descriptores de nodo
Si un adaptador de audio es capaz de procesar secuencias de audio descargadas, el controlador de audio del adaptador expone esta funcionalidad mediante un nodo en el filtro KS para el adaptador.
Si un adaptador de audio es capaz de procesar secuencias de audio descargadas, el controlador de audio del adaptador expone esta funcionalidad mediante un nodo específico en el filtro KS para el adaptador.
Cada nodo de la ruta de acceso de la secuencia de audio tiene un descriptor de nodo, para la carga de hardware, el controlador debe establecer el GUID de tipoen KSNODETYPE_AUDIO_ENGINE.
Este es un ejemplo de cómo el controlador podría configurar el descriptor de nodo para este nodo:
typedef struct _KSNODE_DESCRIPTOR {
const KSAUTOMATION_TABLE *AutomationTable; // drv specific
const GUID *Type; // must be set to KSNODETYPE_AUDIO_ENGINE
const GUID *Name; // drv specific (KSNODETYPE_AUDIO_ENGINE?)
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
Si el GUID de nombre se establece en KSNODETYPE_AUDIO_ENGINE, debe crear una cadena de nombre predeterminada para este nodo. A continuación, agregue esa cadena a ks.inf, para que durante la instalación del controlador, la cadena se pueda usar para rellenar la clave del Registro MediaCategories .
La definición del GUID para el tipo de nodo, KSNODETYPE_AUDIO_ENGINE, es la siguiente:
Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)
Para obtener más información, vea el archivo de encabezado ksmedia.h .
Y en función de la información anterior, un descriptor para un nodo de minipuerto podría tener un aspecto similar al siguiente:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
La propiedad KSPROPSETID_AudioEngine KS establecida para motores de audio
El conjunto de propiedades KSPROPSETID_AudioEngine se usa para admitir motores de audio de hardware y procesamiento de audio descargado por hardware. Por lo tanto, el controlador de un adaptador que puede procesar secuencias de audio descargadas debe admitir las propiedades de este nuevo conjunto de propiedades.
El conjunto de propiedades, KSPROPSETID_AudioEngine, se define de la siguiente manera:
#define STATIC_KSPROPSETID_AudioEngine\
0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)
Los nombres de las propiedades de este conjunto de propiedades se definen en la enumeración KSPROPERTY_AUDIOENGINE y el controlador debe admitir estos nombres.
Estas son las propiedades del conjunto de propiedades KSPROPSETID_AudioEngine :
KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE
KSPROPERTY_AUDIOENGINE_DESCRIPTOR
KSPROPERTY_AUDIOENGINE_DEVICEFORMAT
KSPROPERTY_AUDIOENGINE_GFXENABLE
KSPROPERTY_AUDIOENGINE_LFXENABLE
KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION
KSPROPERTY_AUDIOENGINE_MIXFORMAT
KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Propiedades necesarias en el conjunto de propiedades KSPROPSETID_ Audio
Además de admitir las propiedades del conjunto de propiedades KSPROPSETID_AudioEngine , el controlador también debe admitir las siguientes propiedades existentes en el conjunto de propiedades KSPROPSETID_Audio :
Y para completar la implementación de la compatibilidad del controlador con el procesamiento de audio descargado por hardware, las propiedades están disponibles para el conjunto de propiedades KSPROPSETID_ Audio .
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Informes de problemas y actualizaciones de controladores de clase de puerto
Además de la compatibilidad descrita en las secciones anteriores para el procesamiento de audio descargado por hardware, el controlador de clase de puerto de Windows proporciona "interfaces auxiliares" para facilitar el desarrollo de un controlador que pueda trabajar con secuencias de audio descargadas. Y cuando este controlador detecta problemas, existe un mecanismo para permitir que el controlador notifique los errores de problemas. En los temas siguientes se proporcionan más detalles sobre las interfaces auxiliares y los informes de problemas:
Interfaces auxiliares de Portcls para el procesamiento de audio descargado Además de la compatibilidad descrita en las secciones anteriores para el procesamiento de audio descargado por hardware, el controlador de clase de puerto de Windows también incluye "interfaces auxiliares" para facilitar el desarrollo de un controlador que pueda trabajar con secuencias de audio descargadas. Y cuando este controlador detecta problemas, existe un mecanismo para permitir que el controlador notifique los errores de problemas. En los temas siguientes se proporcionan más detalles sobre las interfaces auxiliares y los informes de problemas:
Temas relacionados
Implementación del controlador de audio descargado de hardware