Implementazione di IAdapterPowerManagement

Quando si implementa l'interfaccia IAdapterPowerManagement per il driver, vedere l'implementazione della classe CAdapterCommon nei driver audio di esempio in Microsoft Windows Driver Kit (WDK). Questa classe gestisce gli interruzioni del dispositivo ed esegue altre funzioni comuni a tutti i driver dell'adattatore audio. La classe CAdapterCommon della scheda deve ereditare dall'interfaccia IAdapterPowerManagement e supportare questa interfaccia nel metodo NonDelegatingQueryInterface . Per informazioni dettagliate sulle interfacce nondelegating, vedere la descrizione dell'interfaccia INonDelegatingUnknown .

È possibile usare la definizione di IMP_IAdapterPowerManagement dal file di intestazione Portcls.h per aggiungere le dichiarazioni di funzione per i metodi IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState e IAdapterPowerManagement::QueryDeviceCapabilities alla definizione della classe CAdapterCommon del driver.

Durante la chiamata del driver di sistema PortCls alla routine di avvio del dispositivo di un adattatore (vedere Avvio di un dispositivo), l'adattatore deve registrare l'interfaccia IAdapterPowerManagement con PortCls chiamando PcRegisterAdapterAdapterPowerManagement. Per un esempio di codice, vedere la funzione StartDevice nel driver di esempio Sysvad, illustrata in Driver audio di esempio. Il primo parametro della funzione PcRegisterAdapterPowerManagement è un puntatore IUnknown all'oggetto CAdapterCommon del driver dell'adattatore. PortCls esegue query su questo oggetto per l'interfaccia IAdapterPowerManagement .

Quando PortCls chiama il metodo IAdapterPowerManagement::P owerChangeState per modificare lo stato di alimentazione del dispositivo, il driver dell'adattatore deve memorizzare nella cache il nuovo stato di alimentazione del dispositivo nell'oggetto CAdapterCommon dell'adattatore. Durante la chiamata CAdapterCommon::Init (vedere l'implementazione nei driver dell'adattatore di esempio di WDK), il driver deve impostare lo stato di alimentazione iniziale su PowerDeviceD0 (descritto in DeviceState) prima di restituire da un'inizializzazione riuscita. Il driver deve scrivere nell'hardware solo se è noto essere in uno stato di alimentazione appropriato.

Prima di spegnere in risposta a una chiamata PowerChangeState , il driver dell'adattatore deve posizionare gli output audio in uno stato che impedisce l'esecuzione del rumore dell'altoparlante quando l'alimentazione viene disattivata. Ad esempio, il processo di arresto può includere la rampa degli output dell'applicazione livello dati su zero, la disattivazione delle schede dati e la disattivazione delle linee MIDI.