Udostępnij za pośrednictwem


Implementowanie interfejsu IPowerNotify

Jeśli obiekty miniportu sterownika (zobacz Audio Miniport Object Interfaces) lub obiekty strumienia (zobacz Audio Stream Object Interfaces) muszą być informowane o zmianach stanu zasilania, mogą wspierać interfejs IPowerNotify w swoich metodach QueryInterface i otrzymywać powiadomienia od sterownika systemowego PortCls za każdym razem, gdy nastąpi zmiana stanu zasilania.

Gdy stan zasilania zmieni się, PortCls wywołuje metodę IPowerNotify::PowerChangeNotify, w celu indywidualnego powiadomienia każdego z obiektów miniportu i strumieniowego, które obsługują interfejs IPowerNotify. Podczas wywołania PowerChangeNotify obiekt miniportu powinien buforować nowy stan zasilania urządzenia. Podczas wywołania CAdapterCommon::Init (na przykład zobacz implementację w przykładzie adaptera Msvad w zestawie sterowników Microsoft Windows [WDK]), sterownik miniportu powinien ustawić swój stan zasilania w pamięci podręcznej sterownika na początkową wartość PowerDeviceD0.

Przed wywołaniem PowerChangeState w celu wyłączenia zasilania, funkcja PortCls wywołuje IPowerNotify::PowerChangeNotify, aby dać sterownikowi miniportu możliwość zapisania niezbędnego kontekstu urządzenia. Ten kontekst może obejmować wartości rejestru sprzętowego, które uosabiają bieżącą topologię filtru i ustawienia linii miksera, na przykład. Po wywołaniu PowerChangeState aby zwiększyć moc, PortCls wywołuje PowerChangeNotify, aby sterownik miniportu mógł przywrócić zapisany kontekst.

Podczas wyłączania, PortCls wstrzymuje wszystkie aktywne strumienie danych audio przed wywołaniem PowerChangeNotify. Podczas zasilania portcls wywołuje funkcję PowerChangeNotify przed ponownym uruchomieniem wszystkich wstrzymanych strumieni danych audio.

Klasy obiektów miniportu i strumienia sterownika miniportu mogą dziedziczyć z interfejsu IPowerNotify i obsługiwać ten interfejs w metodzie NonDelegatingQueryInterface . Możesz użyć definicji IMP_IPowerNotify z pliku nagłówka Portcls.h, aby dodać deklarację funkcji dla metody PowerChangeNotify do definicji klasy dla miniportów i obiektów strumienia sterownika.