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 Union vom Typ POWER_STATE. Der neue Energiezustand (NewState.DeviceState) kann einer der DEVICE_POWER_STATE Enumerationswerte sein, die in der folgenden Tabelle angezeigt werden.

Betriebszustand Bedeutung
PowerDeviceD0 Vollständiger Leistungszustand (D0). Dieser Code kann eine Funktion des aktuellen Energiezustands sein. Speichern Sie den neuen Zustand. Dieser lokale Wert wird verwendet, um zu bestimmen, wann Eigenschaftszugriffe 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 für die Rückkehr zu D0 erforderlich ist
PowerDeviceD2 Ein Ruhezustand mit mittlerer Latenz. 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 bei Eingabe von D0 wiederhergestellt werden.
PowerDeviceD3 Ein vollständiger Ruhezustand und ist der längste Latenz-Ruhezustand. Der Treiber kann nicht auf die Hardware in diesem Zustand zugreifen und muss alle Hardwarezugriffe zwischenspeichern und die Hardware wiederherstellen, wenn er zu D0 oder D1 zurückkehrt.

Rückgabewert

Keine

Bemerkungen

PortCls ruft die PowerChangeState -Methode als Antwort auf eine IRP_MN_SET_POWER Power-IRP auf. Bei diesem Aufruf darf kein Fehler auftreten. PortCls und das System verwenden den PowerChangeState Aufruf, um das Gerät in den gewünschten Energiezustand zu versetzen. Wenn das System versucht, einen aktiven Audiodatenstrom anzusetzen oder fortzusetzen, muss der Treiber in der Lage sein, seinen Gerätekontext entsprechend zu speichern oder wiederherzustellen.

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

Der Miniporttreiber muss die angeforderte Änderung des Energiezustands des Geräts ausführen, bevor es vom PowerChangeState Aufruf 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, sodass er vorab vor einer solchen Änderung gewarnt werden kann. Bevor von einem erfolgreichen PowerChangeState Aufruf zurückgegeben wird, sollte der Miniporttreiber den neuen Energiezustand zwischenspeichern.

Während sich der Miniporttreiber in einem der Ruhezustandszustände befindet (ein anderer Zustand als PowerDeviceD0), muss er das Schreiben auf die Hardware vermeiden. Der Miniporttreiber muss alle Hardwarezugriffe zwischenspeichern, die zurückgestellt werden müssen, bis das Gerät wieder hochfahren kann. Wenn sich der Energiezustand von einem der Ruhezustandszustände zu PowerDeviceD0 ändert, sollte der Miniporttreiber alle verzögerten Hardwarezugriffe ausführen, nachdem er das Gerät eingeschaltet hat. Wenn der Energiezustand von PowerDeviceD0 in einen Ruhezustand wechselt, kann der Miniporttreiber während des PowerChangeState Anrufs alle erforderlichen Hardwarezugriffe ausführen, bevor das Gerät heruntergefahren wird.

Während des Herunterfahrens wird ein Miniporttreiber nie aufgefordert, ein Miniporttreiber- oder Streamobjekt zu erstellen. PortCls versetzt das Gerät immer in den PowerDeviceD0-Zustand, bevor die NewStream-Methode des Miniporttreibers aufgerufen wird.

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

Anforderungen

Anforderung Wert
Zielplattform Universell
Header portcls.h (include Portcls.h)

Weitere Informationen

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER