Compartir a través de


Implementación de IPowerNotify

Si los objetos de minipuerto del controlador (consulte Interfaces de objetos de miniporto de audio) o los objetos de secuencia (consulte Interfaces de objeto de flujo de audio) necesitan conocer los cambios de estado de energía, pueden admitir la interfaz IPowerNotify en sus métodos QueryInterface y recibir notificaciones del controlador del sistema PortCls cada vez que se produce un cambio de energía.

Cuando cambia el estado de energía, PortCls llama al método IPowerNotify::P owerChangeNotify para notificar individualmente cada uno de los objetos miniport y stream que admiten la interfaz IPowerNotify . Durante la llamada a PowerChangeNotify , un objeto miniport debe almacenar en caché el nuevo estado de energía del dispositivo. Durante la llamada CAdapterCommon::Init (por ejemplo, vea la implementación en el adaptador de ejemplo msvad en el Kit de controladores de Microsoft Windows [WDK]), el controlador de miniport debe establecer su estado de energía almacenado en caché en el valor inicial PowerDeviceD0.

Antes de llamar a PowerChangeState para apagar, PortCls llama a IPowerNotify::P owerChangeNotify para dar al controlador de miniporte una oportunidad para guardar cualquier contexto de dispositivo necesario. Este contexto puede incluir los valores de registro de hardware que incorporan la topología de filtro actual y la configuración de la línea mezcladora, por ejemplo. Después de llamar a PowerChangeState para encenderse, PortCls llama a PowerChangeNotify para que el controlador de miniporte pueda restaurar el contexto guardado.

Al apagarse, PortCls pausa los flujos de datos de audio activos antes de llamar a PowerChangeNotify. Al encenderse, PortCls llama a PowerChangeNotify antes de reiniciar las secuencias de datos de audio en pausa.

Las clases de objetos miniport y stream del controlador miniport pueden heredar de la interfaz IPowerNotify y admitir esta interfaz en su método NonDelegatingQueryInterface . Puede usar la definición de IMP_IPowerNotify del archivo de encabezado Portcls.h para agregar la declaración de función del método PowerChangeNotify a la definición de clase de los objetos miniport y stream del controlador.