Freigeben über


IAdapterPowerManagement::P owerChangeState-Methode (portcls.h)

Die PowerChangeState-Methode fordert an, dass das Gerät in einen neuen Energiezustand wechselt.

Syntax

void PowerChangeState(
  [in] POWER_STATE NewState
);

Parameter

[in] NewState

Gibt den neuen Energiezustand an, der für das Gerät angefordert wird. Dieser Parameter ist eine Vereinigung vom Typ POWER_STATE. Der neue Energiezustand (NewState.DeviceState) kann einer der in der folgenden Tabelle gezeigten DEVICE_POWER_STATE Enumerationswerte sein.

Power State Bedeutung
PowerDeviceD0 Vollstromzustand (D0). Dieser Code kann eine Funktion des aktuellen Energiezustands sein. Speichern Sie den neuen Zustand. Dieser lokale Wert wird verwendet, um zu bestimmen, wann eigenschaftenzugriffe zwischengespeichert werden sollen und wann der Treiber auf die Hardware zugreifen kann.
PowerDeviceD1 Der Ruhezustand mit der niedrigsten Latenz in Bezug auf die Latenzzeit, die erforderlich ist, um zu D0 zurückzukehren.
PowerDeviceD2 Ein mittlerer Standbyzustand. In diesem Zustand kann der Gerätetreiber nicht davon ausgehen, dass er die Hardware berühren kann. Daher müssen alle Zugriffe zwischengespeichert und die Hardware beim Eingeben von D0 wiederhergestellt werden.
PowerDeviceD3 Ein vollständiger Ruhezustand und der längste Ruhezustand ist der längste Ruhezustand. Der Treiber kann nicht auf die Hardware in diesem Zustand zugreifen und muss alle Hardwarezugriffe zwischenspeichern und die Hardware wiederherstellen, wenn Sie zu D0 oder D1 zurückkehren.

Rückgabewert

Nichts

Bemerkungen

PortCls ruft die PowerChangeState-Methode als Reaktion auf ein IRP_MN_SET_POWER Power IRP auf. Dieser Aufruf darf nicht fehlschlagen. PortCls und das System verwenden den PowerChangeState Aufruf, um das Gerät im gewünschten Leistungszustand zu platzieren. Wenn das System versucht, einen aktiven Audiodatenstrom anzuhalten oder fortzusetzen, muss der Treiber in der Lage sein, den Gerätekontext entsprechend zu speichern oder wiederherzustellen.

Um den Treiber zu unterstützen, hält PortCls alle aktiven Audiodatenströme an, bevor sie diese Methode aufrufen, um das Gerät in einen Ruhezustand zu versetzen. Nach dem Aufrufen dieser Methode hebt PortCls aktive Audiodatenströme auf, um das Gerät aufzuwachen. Miniports können sich für zusätzliche Benachrichtigungen entscheiden, indem sie die IPowerNotify Schnittstelle verwenden.

Der Miniporttreiber muss die angeforderte Änderung an den Energiezustand des Geräts ausführen, bevor er vom PowerChangeState Anruf zurückgegeben wird. Wenn der Miniporttreiber vor einer Änderung des Energiezustands einen Gerätezustand speichern oder wiederherstellen muss, sollte der Miniporttreiber die IPowerNotify Schnittstelle unterstützen, die es ermöglicht, vorab warnungen zu einer solchen Änderung zu erhalten. Vor der Rückgabe von einem erfolgreichen PowerChangeState Anruf sollte der Miniporttreiber den neuen Energiezustand zwischenspeichern.

Während sich der Miniporttreiber in einem der Ruhezustandszustände befindet (jeder andere Zustand als PowerDeviceD0), muss es das Schreiben auf die Hardware vermeiden. Der Miniporttreiber muss alle Hardwarezugriffe zwischenspeichern, die zurückgestellt werden müssen, bis das Gerät erneut aktiviert wird. Wenn sich der Energiezustand von einem der Energiesparzustände in PowerDeviceD0 ändert, sollte der Miniporttreiber alle verzögerten Hardwarezugriffe ausführen, nachdem es das Gerät eingeschaltet hat. Wenn der Energiezustand von PowerDeviceD0 in einen Ruhezustand wechselt, kann der Miniporttreiber während des PowerChangeState Aufrufs alle erforderlichen Hardwarezugriffe ausführen, bevor es das Gerät einschaltet.

Während der Unterstützung wird ein Miniporttreiber nie aufgefordert, ein Miniporttreiberobjekt oder stream-Objekt zu erstellen. PortCls platziert das Gerät immer im PowerDeviceD0-Zustand, bevor die NewStream--Methode des Miniporttreibers aufgerufen wird.

Der Code für diese Methode muss sich im ausgelagerten Speicher befinden.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- portcls.h (include Portcls.h)

Siehe auch

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER