D3cold-Funktionen eines Geräts

Bevor der Treiber, der der Besitzer der Energierichtlinie (Power Policy Owner, PPO) für ein Gerät ist, das Gerät die Eingabe von D3cold ermöglicht (wenn der Computer in S0 verbleiben soll), muss der Treiber überprüfen, ob das Gerät reagiert und weiterhin ordnungsgemäß funktioniert, nachdem das Gerät D3cold eingegeben hat.

Bei einem PnP-Gerät (Plug & Play) erhält das Betriebssystem in der Regel Informationen zu den D3cold-Funktionen des Geräts vom übergeordneten Bustreiber.

Wenn beispielsweise ein Gerät an einen PCI- oder PCI-Express-Bus angeschlossen ist, enthält der PCI-Konfigurationsraum des Geräts einen Power Management Register Block, der die Funktionen des Geräts angibt. Funktionsflags in diesem Block geben die Geräteleistungszustände an, aus denen das Gerät ein Energieverwaltungsereignis signalisieren kann, oder PME (der PCI-Begriff für ein Aktivierungsereignis). Diese Zustände können D3hot und D3cold umfassen. Weitere Informationen zur PCI-Energieverwaltung finden Sie in der Spezifikation der PCI-Bus-Energieverwaltungsschnittstelle.

Wenn ein Gerät in der Lage sein muss, ein Reaktivierungsereignis aus einem beliebigen Dx-Zustand mit geringem Stromverbrauch zu signalisieren, sollte das Gerät nicht in D3cold eintreten, es sei denn, das Gerät, der übergeordnete Buscontroller und die Hardwareplattform unterstützen die Signalisierung eines Aktivierungsereignisses von D3cold.

Der KMDF-Treiber für ein Gerät ruft die WdfDeviceAssignS0IdleSettings-Methode auf, damit das Gerät im Leerlauf des Geräts den Zustand der niedrigsten Stromversorgung aufweist, von dem aus das Gerät ein Aktivierungsereignis signalisieren kann. Ab KMDF-Version 1.11 enthält WdfDeviceAssignS0IdleSettings D3cold im Bereich möglicher Dx-Zustände mit geringer Leistung. Diese Methode ermöglicht es einem Gerät, in D3cold nur im Leerlauf zu sein, wenn das Gerät, der übergeordnete Bustreiber und die ACPI-Systemfirmware die Signalisierung von Aktivierungsereignissen von D3cold unterstützen.

Der WDM-Treiber für ein Gerät muss entscheiden, in welchen Dx-Zustand mit geringer Leistung das Gerät verschoben werden soll, wenn sich das Gerät im Leerlauf befindet. (Im Gegensatz dazu wählt WdfDeviceAssignS0IdleSettings diesen Dx-Zustand automatisch aus, sodass der Treiber nicht muss.) Wenn das Gerät in der Lage sein muss, ein Reaktivierungsereignis aus einem dx-Zustand mit geringem Stromverbrauch zu signalisieren, kann der Treiber die GetIdleWakeInfo-Routine aufrufen, um den Gerätestromzustand mit der niedrigsten Stromversorgung zu ermitteln, von dem das Gerät ein Aktivierungsereignis signalisieren kann. Um diese Informationen abzurufen, fragt GetIdleWakeInfo den zugrunde liegenden Bustreiber und die ACPI-Systemfirmware ab. Basierend auf den Informationen von GetIdleWakeInfo kann der Treiber die SetD3ColdSupport-Routine aufrufen, um die Übergänge des Geräts zu D3cold zu aktivieren oder zu deaktivieren.

Ein Gerät erfordert möglicherweise nicht die Möglichkeit, ein Aktivierungsereignis von D3cold zu signalisieren. Stattdessen muss das Gerät möglicherweise nur als Reaktion auf softwareinitiierte Aktionen den Übergang von D3cold zu D0 vornehmen. Beispielsweise muss der Treiber das Gerät möglicherweise reaktivieren, wenn der Treiber eine E/A-Anforderung für das Gerät empfängt. Mit wenigen Ausnahmen kann der Treiber für ein solches Gerät die Eingabe von D3cold ermöglichen. Eine mögliche Ausnahme ist ein Gerät, das viel Zeit benötigt, um einen Übergang von D3cold zu D0 zu machen. Beispielsweise kann ein Anzeigegerät eine große Menge an Arbeitsspeicher enthalten, die gespeichert werden muss, bevor das Gerät in D3cold wechselt und wiederhergestellt wird, nachdem das Gerät D3cold beendet hat.

Weitere Informationen zur ACPI-Unterstützung für D3cold finden Sie unter Firmwareanforderungen für D3cold.