Implementando IAdapterPowerManagement
Ao implementar a interface IAdapterPowerManagement para o driver, consulte a implementação da classe CAdapterCommon nos drivers de áudio de exemplo no WDK (Microsoft Windows Driver Kit). Essa classe lida com interrupções de dispositivo e executa outras funções que são comuns a todos os drivers de adaptador de áudio. A classe CAdapterCommon do adaptador deve herdar da interface IAdapterPowerManagement e dar suporte a essa interface em seu método NonDelegatingQueryInterface . (Para obter detalhes sobre interfaces não delegantes, consulte a descrição da interface INonDelegatingUnknown .)
Você pode usar a definição de IMP_IAdapterPowerManagement do arquivo de cabeçalho Portcls.h para adicionar as declarações de função para os métodos IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState e IAdapterPowerManagement::QueryDeviceCapabilities à definição da classe CAdapterCommon do driver.
Durante a chamada do driver do sistema PortCls para a rotina de inicialização do dispositivo de um adaptador (consulte Iniciando um dispositivo), o adaptador deve registrar sua interface IAdapterPowerManagement com PortCls chamando PcRegisterAdapterPowerManagement. Para obter um exemplo de código, consulte a função StartDevice no driver de exemplo do Sysvad, que é discutido em Drivers de Áudio de Exemplo. O primeiro parâmetro da função PcRegisterAdapterPowerManagement é um ponteiro IUnknown para o objeto CAdapterCommon do driver do adaptador. PortCls consulta esse objeto para sua interface IAdapterPowerManagement .
Quando PortCls chama o método IAdapterPowerManagement::P owerChangeState do driver do adaptador para alterar o estado de energia do dispositivo, o driver do adaptador deve armazenar em cache o novo estado de energia do dispositivo no objeto CAdapterCommon do adaptador. Durante a chamada CAdapterCommon::Init (consulte a implementação nos drivers de adaptador de exemplo do WDK), o driver deve definir o estado de energia inicial como PowerDeviceD0 (descrito em DeviceState) antes de retornar de uma inicialização bem-sucedida. O driver deve gravar no hardware somente se for conhecido por estar em um estado de energia apropriado.
Antes de desligar em resposta a uma chamada do PowerChangeState , o driver do adaptador deve colocar as saídas de áudio em um estado que impede que o ruído do alto-falante ocorra quando a energia é desligada. Por exemplo, o processo de desligamento pode incluir aumentar as saídas do DAC para zero, desativar os DACs e ativar o mudo das linhas MIDI.