Compartir a través de


Implementación de IAdapterPowerManagement

Al implementar la interfaz IAdapterPowerManagement para el controlador, consulte la implementación de la clase CAdapterCommon en los controladores de audio de ejemplo en el Kit de controladores de Microsoft Windows (WDK). Esta clase controla las interrupciones del dispositivo y realiza otras funciones comunes a todos los controladores de adaptador de audio. La clase CAdapterCommon del adaptador debe heredar de la interfaz IAdapterPowerManagement y admitir esta interfaz en su método NonDelegatingQueryInterface . (Para obtener más información sobre las interfaces que no son de delegación, consulte la descripción de la interfaz INonDelegatingUnknown ).

Puede usar la definición de IMP_IAdapterPowerManagement del archivo de encabezado Portcls.h para agregar las declaraciones de función para los métodos IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState e IAdapterPowerManagement::QueryDeviceCapabilities a la definición de clase CAdapterCommon del controlador.

Durante la llamada del controlador del sistema PortCls a la rutina de inicio del dispositivo de un adaptador (consulte Iniciar un dispositivo), el adaptador debe registrar su interfaz IAdapterPowerManagement con PortCls llamando a PcRegisterAdapterPowerManagement. Para obtener un ejemplo de código, vea la función StartDevice en el controlador de ejemplo sysvad, que se describe en Controladores de audio de ejemplo. El primer parámetro de la función PcRegisterAdapterPowerManagement es un puntero IUnknown al objeto CAdapterCommon del controlador del adaptador. PortCls consulta este objeto para su interfaz IAdapterPowerManagement .

Cuando PortCls llama al método IAdapterPowerManagement::P owerChangeState del controlador del adaptador para cambiar el estado de alimentación del dispositivo, el controlador del adaptador debe almacenar en caché el nuevo estado de alimentación del dispositivo en el objeto CAdapterCommon del adaptador. Durante la llamada A CAdapterCommon::Init (vea la implementación en los controladores de adaptador de ejemplo de WDK), el controlador debe establecer el estado de energía inicial en PowerDeviceD0 (descrito en DeviceState) antes de volver de una inicialización correcta. El controlador debe escribir en el hardware solo si se sabe que está en un estado de alimentación adecuado.

Antes de apagarse en respuesta a una llamada a PowerChangeState , el controlador del adaptador debe colocar las salidas de audio en un estado que impida que se produzca ruido del altavoz cuando se apaga la alimentación. Por ejemplo, el proceso de apagado podría incluir la rampa de salida de la DAC a cero, desactivar los DAC y silenciar las líneas MIDI.