Freigeben über


SET_D3COLD_SUPPORT Rückruffunktion (wdm.h)

Die SetD3ColdSupport-Rückrufroutine aktiviert oder deaktiviert Übergänge zum 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 Member 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. Andernfalls wird "FALSE" auf festgelegt. Weitere Informationen finden Sie in den Hinweisen.

Rückgabewert

Nichts

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-Unterstatus zu aktivieren oder zu deaktivieren, der auftreten kann, wenn sich der Computer im Netzbetriebszustand des S0 -Systems befindet und sich nicht darauf vorbereitet, S0 zu beenden.

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

Der Treiber für das Gerät kann die GetIdleWakeInfo Routine aufrufen, um festzustellen, ob das Gerät ein Wake-Ereignis von D3cold signalisieren kann.

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

Ein Grafikgerät kann z. B. über einen großen Hardwarekontext verfügen, um nach einem Übergang von D3cold zu D0 wiederherzustellen. Die zum Wiederherstellen dieses Kontexts erforderliche Zeit kann abhängig von der Gruppe von Aufgaben, die der Benutzer gerade ausführt, möglicherweise akzeptabel sein. Darüber hinaus kann die Wiederherstellungszeit mit dieser Vorgangsmischung variieren. Möglicherweise muss der Treiber Übergänge zu D3cold dynamisch aktivieren und deaktivieren, wenn sich die Aufgabenmischung ändert.

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

Wenn ein Gerät von D3hot zu D3cold wechselt, ist dies wahrscheinlich der Fall, da die Stromversorgung, die es mit einer Reihe anderer Geräte teilt, deaktiviert wurde. Einige Zeit nachdem diese Geräte D3cold eingegeben haben, fordert der Treiber für eines der Geräte möglicherweise einen Übergang zu D0 an. Als Reaktion auf diese Anforderung aktiviert der übergeordnete Bustreiber oder ACPI-Filtertreiber die Stromversorgung, und alle Geräte, die die Stromversorgung gemeinsam nutzen, geben ihren Standardstatus ein.

Der einzige Gerätetreiber, der diese Leistungszustandsä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 es dem Gerät ermöglichen, D3cold einzugeben. Andernfalls weiß der Treiber nicht, wann das Gerät D0 eingibt.

Ab Windows 8 kann ein WDM-Treiber sein Gerät mit dem Power Framework (PoFx) registrieren und über die DevicePowerRequiredCallback Routine benachrichtigt werden, wenn das Gerät D0 eingibt. 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 weiterhin über einen Übergang zu D0 benachrichtigt werden, wenn das Gerät zur Aktivierung bewaffnet ist. Wenn die Bustreiber die Stromversorgung auf das Gerät einschalten, füllen sie die IRP_MN_WAIT_WAKE Anforderung des Fahrers aus. Als Reaktion initialisiert der Treiber sein Gerät für den Betrieb in D0.

Nachdem eine von mehreren Geräten gemeinsam genutzte Stromversorgung aktiviert wurde, ist das Gerät, dessen Treiber den Übergang zu D0 angefordert hat, möglicherweise die einzige dieser Geräte, für die die Arbeit erforderlich 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 Übergänge zu D3cold zu deaktivieren, ist D0 der einzige Gerätestromzustand, den das Gerät von D3hot eingeben kann.

Wenn der Treiber SetD3ColdSupport- aufruft, um Übergänge zu D3cold zu aktivieren, werden diese Übergänge aus anderen Gründen möglicherweise deaktiviert. Der Treiber kann die GetD3ColdCapability- Routine aufrufen, um zu bestimmen, ob das Gerät in den D3cold-Unterstatus wechselt. Ein Treiber benötigt diese Informationen jedoch möglicherweise nicht. Wenn ein Gerät nicht in der Lage ist, D3cold einzugeben, haben Aufrufe von SetD3ColdSupport keine Auswirkung, 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 vorbereitet wird). Diese Routine wirkt sich nicht auf den Fall aus, in dem der Computer S0 verlässt und in einen Energiesparmodus wechselt. Ein Gerät im D3hot-Unterstatus kann immer den D3cold-Unterstatus eingeben, bevor der Computer in einen Systemzustand mit niedriger Leistung wechselt.

Vor dem ersten Aufruf der SetD3ColdSupport Routine werden D3hot-zu-D3cold-Übergänge standardmäßig 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 beiden Zeilen im abschnitt DDInstall.HW der INF-Datei enthalten, die den Treiber installiert:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 ist die erste Version von Windows, um Geräte zu unterstützen, die den D3cold-Unterstatus betreten und beenden können, während der Computer im S0-Zustand verbleibt. Weitere Informationen finden Sie unter Device Low-Power States.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Desktop
Header- wdm.h (include Wdm.h)
IRQL- PASSIVE_LEVEL

Siehe auch

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback-

EvtDeviceD0Entry

GetD3ColdCapability-

IRP_MN_WAIT_WAKE