SET_D3COLD_SUPPORT Rückruffunktion (wdm.h)

Die SetD3ColdSupport-Rückrufroutine aktiviert oder deaktiviert Übergänge in den D3cold-Gerätestromzustand.

Syntax

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

Parameter

[in, optional] Context

Ein Zeiger auf schnittstellenspezifische Kontextinformationen. Der Aufrufer legt diesen Parameter auf den Wert des Context-Elements der D3COLD_SUPPORT_INTERFACE-Struktur für die Schnittstelle fest.

[in] D3ColdSupport

Gibt an, ob Übergänge von D3hot zu D3cold zugelassen werden sollen. Legen Sie auf TRUE fest, um diese Übergänge zu aktivieren. Legen Sie andernfalls auf FALSE fest. Weitere Informationen finden Sie unter Hinweise.

Rückgabewert

Keine

Bemerkungen

Der Treiber, der der Besitzer der Energierichtlinie (Power Policy Owner, PPO) für ein Gerät ist, kann diese Routine aufrufen, um Übergänge zum D3cold-Unterzustand zu aktivieren oder zu deaktivieren, die auftreten können, wenn sich der Computer im Betriebszustand des S0 -Systems befindet und sich nicht darauf vorbereitet, S0 zu beenden.

Wenn ein Gerät in der Lage sein muss, ein Aktivierungsereignis aus einem Dx-Zustand mit geringem Stromverbrauch zu signalisieren, sollte der Treiber für dieses Gerät keine Übergänge zum D3cold-Unterzustand aktivieren, es sei denn, das Gerät kann ein Aktivierungsereignis von diesem Unterzustand signalisieren. Andernfalls ist das Gerät nach der Eingabe von D3cold nicht verfügbar, bis der Computer neu gestartet oder aus einem Ruhezustand reaktiviert wird.

Der Treiber für das Gerät kann die GetIdleWakeInfo-Routine aufrufen, um zu bestimmen, ob das Gerät ein Aktivierungsereignis von D3cold signalisieren kann.

Bei Bedarf kann der Treiber für ein Gerät eine Reihe von SetD3ColdSupport-Aufrufen ausführen, um alternativ D3cold-Übergänge als Reaktion auf dynamisch veränderte Bedingungen zu aktivieren und zu deaktivieren.

Beispielsweise kann ein Grafikgerät über einen großen Hardwarekontext verfügen, der nach einem Übergang von D3cold zu D0 wiederhergestellt werden kann. Die zum Wiederherstellen dieses Kontexts erforderliche Zeit kann abhängig von den Aufgaben, die der Benutzer derzeit ausführt, akzeptabel sein oder nicht. Darüber hinaus kann die Wiederherstellungszeit je nach Aufgabenmischung variieren. Der Treiber muss möglicherweise die Übergänge zu D3cold dynamisch aktivieren und deaktivieren, wenn sich die Aufgabenmischung ändert.

Ein Gerät kann den D3cold-Unterzustand nur aus dem D3hot-Unterzustand eingeben. Wenn der Treiber SetD3ColdSupport aufruft, um Übergänge von D3hot zu D3cold zu aktivieren, kann das Gerät D3cold eingeben, nachdem es D3hot eingegeben hat. Als Reaktion auf ein Aktivierungsereignis kann ein Gerät D0 direkt aus D3hot eingeben, ohne D3cold zu durchlaufen.

Wenn ein Gerät von D3hot zu D3cold wechselt, geschieht dies wahrscheinlich, weil die Stromquelle, die es mit einer Reihe anderer Geräte teilt, deaktiviert wurde. Einige Zeit nachdem diese Geräte D3cold eingegeben haben, kann der Treiber für eines der Geräte einen Übergang zu D0 anfordern. Als Reaktion auf diese Anforderung schaltet der übergeordnete Bustreiber oder ACPI-Filtertreiber die Stromquelle ein, und alle Geräte, die sich die Stromquelle teilen, wechseln in den Standardzustand Ein/Aus.

Der einzige Gerätetreiber, der diese Energiezustandsänderung erwartet, ist der Treiber, der die Änderung angefordert hat. Die Treiber für die anderen Geräte müssen eine Benachrichtigung über diese Änderung erhalten, damit sie ihre Geräte ordnungsgemäß initialisieren können, um in D0 zu arbeiten. Nur ein Treiber, der diese Benachrichtigung empfangen kann, sollte seinem Gerät die Eingabe von D3cold ermöglichen. Andernfalls weiß der Treiber nicht, wann das Gerät in D0 wechselt.

Ab Windows 8 kann ein WDM-Treiber sein Gerät beim Power Framework (PoFx) registrieren und von der DevicePowerRequiredCallback-Routine benachrichtigt werden, wenn das Gerät in D0 wechselt. Ebenso kann ein KMDF-Treiber sein Gerät bei PoFx registrieren und vom EvtDeviceD0Entry-Ereignisrückruf benachrichtigt werden.

Ein Treiber, der sein Gerät nicht bei PoFx registriert, kann trotzdem über einen Übergang zu D0 benachrichtigt werden, wenn das Gerät zur Aktivierung bereit ist. Wenn die Bustreiber die Stromversorgung des Geräts einschalten, vervollständigen sie die IRP_MN_WAIT_WAKE Anforderung des Treibers. Daraufhin initialisiert der Treiber sein Gerät für den Betrieb in D0.

Nachdem eine von mehreren Geräten gemeinsam genutzte Stromquelle eingeschaltet wurde, ist das Gerät, dessen Treiber den Übergang zu D0 angefordert hat, möglicherweise das einzige dieser Geräte, das zu erledigen ist. Die anderen Geräte sind wahrscheinlich im Leerlauf, in diesem Fall werden ihre Treiber nach einiger Zeit diese Geräte nach D3hot verschieben.

Wenn der Treiber SetD3ColdSupport aufruft, um Die Übergänge zu D3cold zu deaktivieren, ist D0 der einzige Geräteleistungszustand, den das Gerät von D3hot aus betreten kann.

Wenn der Treiber SetD3ColdSupport aufruft , um Übergänge zu D3cold zu aktivieren, werden diese Übergänge möglicherweise aus anderen Gründen deaktiviert. Der Treiber kann die GetD3ColdCapability-Routine aufrufen, um zu bestimmen, ob das Gerät den D3cold-Unterzustand eingeben kann. Ein Treiber benötigt diese Informationen jedoch möglicherweise nicht. Wenn ein Gerät D3cold nicht eingeben kann, haben Aufrufe von SetD3ColdSupport keine Auswirkungen, sind aber harmlos.

Die SetD3ColdSupport-Routine wirkt sich nur auf D3hot-zu-D3cold-Übergänge aus, die auftreten können, wenn sich der Computer im S0-Zustand befindet (und nicht beendet wird). Diese Routine hat keine Auswirkungen auf den Fall, in dem der Computer sich darauf vorbereitet, S0 zu beenden und in einen Low-Power-Systemzustand zu wechseln. Ein Gerät im D3hot-Unterzustand kann immer in den D3cold-Unterzustand eintreten, bevor der Computer in einen Systemzustand mit niedriger Leistung wechselt.

Standardmäßig sind vor dem ersten Aufruf der SetD3ColdSupport-Routine D3hot-zu-D3cold-Übergänge deaktiviert. Um diese Standardeinstellung so zu ändern, dass D3hot-zu-D3cold-Übergänge vor dem ersten SetD3ColdSupport-Aufruf aktiviert werden, kann das Treiberpaket für das Gerät die folgenden zwei Zeilen im Abschnitt DDInstall.HW der INF-Datei enthalten, in der der Treiber installiert wird:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 ist die erste Version von Windows, die Geräte unterstützt, die den D3cold-Unterzustand ein- und verlassen können, während der Computer im S0-Zustand verbleibt. Weitere Informationen finden Sie unter Device Low-Power States.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Desktop
Kopfzeile wdm.h (wdm.h einschließen)
IRQL PASSIVE_LEVEL

Weitere Informationen

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE