Aktivieren von Übergängen zu D3cold

Alle Versionen von Windows ermöglichen es, dass sich ein Gerät in D3cold befindet, während sich der Computer im Ruhezustand befindet (in einem der Systemzustände mit geringer Leistung, S1 bis S4). Bevor der Computer S0 verlässt, arbeiten die Funktionstreiber, Bustreiber und Filtertreiber zusammen, um das Gerät auf D3hot zu verschieben. Wenn der Computer in den Sx-Zustand mit niedriger Leistung wechselt, hat dieser Übergang den Nebeneffekt, dass das Gerät von D3hot zu D3cold verschoben wird.

Ab Windows 8 kann ein Gerät D3cold eingeben und beenden, während der Computer in S0 verbleibt. Der Treiber, der der Energierichtlinienbesitzer (Power Policy Owner, PPO) für ein Gerät ist, kann diese Übergänge zu D3cold aktivieren und deaktivieren. Ein Treiber sollte sein Gerät nicht für die Eingabe von D3cold aktivieren, es sei denn, das Gerät kann bei Bedarf von D3cold reaktivieren und den normalen Betrieb nach dem Übergang zu D0 fortsetzen.

Wenn ein Gerät in D3 eingibt, wird zunächst der D3hot-Unterzustand von D3 eingegeben. In D3hot kann das Gerät entweder D0 oder D3cold eingeben. Als Reaktion auf ein Reaktivierungsereignis oder eine E/A-Anforderung gibt das Gerät D0 von D3hot ein. Andernfalls verbleibt das Gerät möglicherweise in D3hot, oder es wechselt von D3hot zu D3cold. Weitere Informationen zu diesen Übergängen finden Sie im Diagramm zum Gerätestromzustand unter Gerätestromzustände.

Der Treiber initiiert den Übergang des Geräts von D3hot zu D3cold nicht. Stattdessen erfolgt dieser Übergang, wenn alle anderen Geräte, die eine gemeinsame Energiequelle mit diesem Gerät nutzen, sich in D3hot befinden und für die Eingabe von D3cold vorbereitet sind. Wenn das letzte dieser Geräte in D3hot wechselt, entfernen die zugrunde liegenden Bustreiber und die Systemfirmware die Stromquelle, und die Geräte geben gemeinsam D3cold ein.

Der PPO-Treiber für ein Gerät teilt dem Betriebssystem mit, ob der Übergang des Geräts von D3hot zu D3cold aktiviert werden soll. Der Treiber kann diese Informationen in der INF-Datei angeben, die das Gerät installiert, oder der Treiber kann die SetD3ColdSupport-Routine zur Laufzeit aufrufen, um die Übergänge des Geräts zu D3cold dynamisch zu aktivieren oder zu deaktivieren. Weitere Informationen finden Sie unter Verwenden der GUID_D3COLD_SUPPORT_INTERFACE Treiberschnittstelle.

Wenn ein Gerät die Eingabe von D3cold aktiviert, garantiert ein Treiber das folgende Verhalten:

  • Das Gerät kann einen Übergang von D3hot zu D3cold tolerieren, wenn der Computer in S0 verbleiben soll.
  • Das Gerät funktioniert ordnungsgemäß, wenn es von D3cold zu D0 zurückkehrt.

Ein Gerät, das beide Anforderungen nicht erfüllt, kann nach der Eingabe von D3cold nicht verfügbar sein, bis der Computer neu gestartet wird oder in einen Ruhezustand versetzt wird. Wenn das Gerät in der Lage sein muss, ein Aktivierungsereignis aus einem dx-Zustand mit geringem Stromverbrauch zu signalisieren, darf der Eintrag zu D3cold nicht aktiviert werden, es sei denn, der Treiber ist sicher, dass das Aktivierungssignal des Geräts in D3cold funktioniert.

Das Einlegen eines Geräts in D3cold bedeutet nicht unbedingt, dass alle Stromquellen für das Gerät entfernt wurden. Dies bedeutet nur, dass die Stromquellen, die die Kommunikation mit dem Gerät über den Bus ermöglichen, weg sind. Möglicherweise kann das Gerät trotzdem genügend Strom beziehen, um dem Prozessor ein Aktivierungsereignis zu signalisieren. Beispielsweise kann eine Ethernet-Netzwerkschnittstelle Karte (NIC), deren Standard Stromquelle entfernt ist, Strom aus dem Ethernet-Kabel ziehen.

Da D3cold ein Zustand ist, in dem der Bus nicht für die Kommunikation mit dem Gerät verwendet werden kann, kann ein Treiber sein Gerät nicht direkt in D3cold platzieren. Stattdessen ruft der Treiber zuerst die PoRequestPowerIrp-Routine auf, um eine D3-Energie-IRP (eine IRP_MN_SET_POWER Anforderung mit Zielzustand = PowerDeviceD3) anzufordern, um das Gerät von D0 auf D3hot zu verschieben. Nach der Eingabe von D3hot kann das Gerät von D3hot zu D3cold verschoben werden. Das Gerät tritt nur in D3cold ein, wenn die Stromversorgung für den Bus entfernt wird. Dies tritt auf, wenn der übergeordnete Bustreiber den Bus ausschaltet oder wenn die Systemfirmware die Stromversorgung für einen Teil der Hardwareplattform ausschaltet.