Udostępnij za pośrednictwem


Implementowanie funkcji IAdapterPowerManagement

Podczas implementowania interfejsu IAdapterPowerManagement dla sterownika zapoznaj się z implementacją klasy CAdapterCommon w przykładowych sterownikach audio w zestawie Microsoft Windows Driver Kit (WDK). Ta klasa obsługuje przerwania urządzeń i wykonuje inne funkcje wspólne dla wszystkich sterowników adapterów audio. Klasa CAdapterCommon adaptera powinna dziedziczyć z interfejsu IAdapterPowerManagement i obsługiwać ten interfejs w metodzie NonDelegatingQueryInterface. (Aby uzyskać szczegółowe informacje na temat interfejsów niedelegujących, zobacz opis interfejsu INonDelegatingUnknown ).

Możesz użyć definicji IMP_IAdapterPowerManagement z pliku nagłówka Portcls.h, aby dodać deklaracje funkcji dla metod IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState i IAdapterPowerManagement::QueryDeviceCapabilities do definicji klasy CAdapterCommon sterownika.

Podczas wywołania przez sterownik systemowy PortCls procedury uruchamiania urządzenia adaptera (zobacz Uruchamianie urządzenia), adapter powinien zarejestrować swój interfejs IAdapterPowerManagement w PortCls, wywołując PcRegisterAdapterPowerManagement. Aby zapoznać się z przykładem kodu, zobacz funkcję StartDevice w przykładowym sterowniku Sysvad, który został omówiony w temacie Sample Audio Drivers (Przykładowe sterowniki audio). Pierwszy parametr funkcji PcRegisterAdapterPowerManagement jest wskaźnikiem IUnknown do obiektu CAdapterCommon sterownika adaptera. PortCls zapytuje obiekt w celu uzyskania interfejsu IAdapterPowerManagement.

Kiedy PortCls wywołuje metodę IAdapterPowerManagement::PowerChangeState, aby zmienić stan zasilania urządzenia, sterownik karty powinien zapisać nowy stan zasilania urządzenia w pamięci podręcznej obiektu CAdapterCommon karty. Podczas wywołania CAdapterCommon::Init (zobacz implementację w przykładowych sterownikach adapterów zestawu WDK) sterownik powinien ustawić początkowy stan zasilania na PowerDeviceD0 (opisany w deviceState) przed powrotem z pomyślnej inicjacji. Sterownik powinien zapisywać na urządzeniu tylko wtedy, gdy wiadomo, że jest ono w odpowiednim stanie zasilania.

Przed wyłączeniem zasilania w odpowiedzi na wywołanie PowerChangeState, sterownik adaptera powinien umieścić dane wyjściowe audio w stanie, który zapobiega wystąpieniu szumu głośnika po wyłączeniu zasilania. Na przykład proces zamykania może obejmować zwiększenie danych wyjściowych DAC do zera, wyłączenie kontrolerów DAC i wyciszenie linii MIDI.