Freigeben über


Implementieren von IAdapterPowerManagement

Wenn Sie die IAdapterPowerManagement-Schnittstelle für Ihren Treiber implementieren, lesen Sie die Implementierung der CAdapterCommon-Klasse in den Beispiel-Audiotreibern im Microsoft Windows Driver Kit (WDK). Diese Klasse verarbeitet Geräteunterbrechungen und führt andere Funktionen aus, die allen Audioadaptertreibern gemeinsam sind. Die CAdapterCommon-Klasse Ihres Adapters sollte von der IAdapterPowerManagement-Schnittstelle erben und diese Schnittstelle in der NonDelegatingQueryInterface-Methode unterstützen. (Details zu nicht delegierenden Schnittstellen finden Sie in der Beschreibung der INonDelegatingUnknown-Schnittstelle .)

Sie können die IMP_IAdapterPowerManagement Definition aus der Headerdatei Portcls.h verwenden, um die Funktionsdeklarationen für die Methoden IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState und IAdapterPowerManagement::QueryDeviceCapabilities zur CAdapterCommon-Klassendefinition Ihres Treibers hinzuzufügen.

Während des Aufrufs des PortCls-Systemtreibers an die Gerätestartroutine eines Adapters (siehe Starten eines Geräts) sollte der Adapter seine IAdapterPowerManagement-Schnittstelle bei PortCls registrieren, indem Er PcRegisterAdapterPowerManagement aufruft. Ein Codebeispiel finden Sie in der Funktion StartDevice im Sysvad-Beispieltreiber, der unter Beispielaudiotreiber erläutert wird. Der erste Parameter der PcRegisterAdapterPowerManagement-Funktion ist ein IUnknown-Zeiger auf das CAdapterCommon-Objekt des Adaptertreibers. PortCls fragt dieses Objekt nach seiner IAdapterPowerManagement-Schnittstelle ab.

Wenn PortCls die IAdapterPowerManagement::P owerChangeState-Methode des Adaptertreibers aufruft, um den Energiezustand des Geräts zu ändern, sollte der Adaptertreiber den neuen Energiezustand des Geräts im CAdapterCommon-Objekt zwischenspeichern . Während des CAdapterCommon::Init-Aufrufs (siehe Implementierung in den Beispieladaptertreibern des WDK) sollte der Treiber den anfänglichen Energiezustand auf PowerDeviceD0 (beschrieben in DeviceState) festlegen, bevor er von einer erfolgreichen Initialisierung zurückkehrt. Der Treiber sollte nur dann in die Hardware schreiben, wenn bekannt ist, dass er sich in einem entsprechenden Energiezustand befindet.

Bevor sie als Reaktion auf einen PowerChangeState-Aufruf heruntergefahren werden, sollte der Adaptertreiber die Audioausgänge in einen Zustand versetzen, der verhindert, dass Lautsprechergeräusche auftreten, wenn sich der Strom ausschaltet. Der Herunterfahrensprozess kann z. B. das Hochfahren der DAC-Ausgaben auf null, das Ausschalten der DACs und das Stummschalten der MIDI-Zeilen umfassen.