Freigeben über


Implementieren von IPowerNotify

Wenn die Miniportobjekte Ihres Treibers (siehe Audio Miniport-Objektschnittstellen) oder Streamobjekte (siehe Audiostream-Objektschnittstellen) über Energiezustandsänderungen bescheid wissen müssen, können sie die IPowerNotify-Schnittstelle in ihren QueryInterface-Methoden unterstützen und bei jedem Stromwechsel Benachrichtigungen vom PortCls-Systemtreiber empfangen.

Wenn sich der Energiezustand ändert, ruft PortCls die IPowerNotify::P owerChangeNotify-Methode auf, um die miniport- und stream-Objekte, die die IPowerNotify-Schnittstelle unterstützen, einzeln zu benachrichtigen. Während des PowerChangeNotify-Aufrufs sollte ein Miniportobjekt den Energiezustand des neuen Geräts zwischenspeichern. Während des CAdapterCommon::Init-Aufrufs (z. B. die Implementierung im Msvad-Beispieladapter im Microsoft Windows Driver Kit [WDK]) sollte der Miniporttreiber seinen zwischengespeicherten Energiezustand auf den Anfangswert PowerDeviceD0 festlegen.

Bevor PowerChangeState zum Herunterfahren aufgerufen wird, ruft PortCls IPowerNotify::P owerChangeNotify auf, um dem Miniporttreiber die Möglichkeit zu geben, alle erforderlichen Gerätekontexte zu speichern. Dieser Kontext kann die Hardwareregisterwerte umfassen, die z. B. die aktuelle Filtertopologie und die Mixerlinieneinstellungen verkörpern. Nachdem PowerChangeState zum Einschalten aufgerufen wurde, ruft PortCls PowerChangeNotify auf, damit der Miniporttreiber den gespeicherten Kontext wiederherstellen kann.

Beim Herunterschalten hält PortCls alle aktiven Audiodatenströme an, bevor PowerChangeNotify aufgerufen wird. Beim Einschalten ruft PortCls PowerChangeNotify auf, bevor angehaltene Audiodatenströme neu gestartet werden.

Die Miniport- und Streamobjektklassen Ihres Miniporttreibers können von der IPowerNotify-Schnittstelle erben und diese Schnittstelle in ihrer NonDelegatingQueryInterface-Methode unterstützen. Sie können die IMP_IPowerNotify Definition aus der Headerdatei Portcls.h verwenden, um die Funktionsdeklaration für die PowerChangeNotify-Methode der Klassendefinition für die Miniport- und Streamobjekte Ihres Treibers hinzuzufügen.