PoFxSetDeviceIdleTimeout-Funktion (wdm.h)

Die PoFxSetDeviceIdleTimeout-Routine gibt das minimale Zeitintervall zwischen dem Zeitpunkt an, an dem die letzte Komponente des Geräts in den Leerlauf wechselt, bis zu dem Zeitpunkt, in dem das Power Management Framework (PoFx) die DevicePowerNotRequiredCallback-Routine des Treibers aufruft.

Syntax

void PoFxSetDeviceIdleTimeout(
  [in] POHANDLE  Handle,
  [in] ULONGLONG IdleTimeout
);

Parameter

[in] Handle

Ein Handle, das die Registrierung des Geräts bei PoFx darstellt. Der Gerätetreiber hat dieses Handle zuvor von der PoFxRegisterDevice-Routine erhalten.

[in] IdleTimeout

Das Leerlauftimeoutintervall in 100 Nanosekundeneinheiten. Weitere Informationen finden Sie in den Hinweisen.

Rückgabewert

Keine

Bemerkungen

Diese Routine gibt ein Timeoutintervall für PoFx an, das auf zukünftige Aufrufe der DevicePowerNotRequiredCallback-Rückrufroutine des Treibers angewendet werden soll. Standardmäßig ist dieses Timeoutintervall null. In diesem Fall kann PoFx die DevicePowerNotRequiredCallback-Routine aufrufen, sobald das Gerät bereit ist, in einen Dx-Zustand mit niedrigem Stromverbrauch zu wechseln. Ein Treiber kann es jedoch vorziehen, diesen Übergang zu verzögern und das Gerät für ein zusätzliches Timeoutintervall im Energiezustand D0 zu halten. In diesem Fall ist der ausstehende DevicePowerNotRequiredCallback-Aufruf nicht mehr erforderlich und wird von PoFx abgebrochen, wenn das Gerät vor dem Ende des Timeoutintervalls aktiv wird und daher im Zustand D0 verbleiben muss.

Um beispielsweise die Leistung zu verbessern und den Verschleiß zu reduzieren, möchte ein Speichergerätetreiber möglicherweise verhindern, dass ein rotierendes Laufwerk in D3 eindringt und langsamer wird, bis sich das Laufwerk ausreichend lange im Leerlauf befindet. Um die Implementierung der Rückrufroutine DevicePowerNotRequiredCallback durch diesen Treiber zu vereinfachen, ermöglicht die PoFxSetDeviceIdleTimeout-Routine dem Treiber, den D3-Übergang automatisch zu verzögern, ohne dass der Treiber einen Timer einrichten muss.

Das Timeoutintervall beginnt, wenn alle Komponenten des Geräts ihre Übergänge zur Leerlaufbedingung abschließen. In der Regel wartet PoFx bis zum Ende des Timeoutintervalls, um die DevicePowerNotRequiredCallback-Routine aufzurufen. Wenn PoFx jedoch die Eingabe eines Low-Power-Systemzustands vorbereitet, kann PoFx das Timeoutintervall frühzeitig beenden. Wenn PoFx die DevicePowerNotRequiredCallback-Routine des Treibers aufruft, sollte der Treiber ohne weitere Verzögerung in den Dx-Zustand mit niedriger Leistung wechseln.

Der Gerätetreiber kann PoFxSetDeviceIdleTimeout jedes Mal aufrufen, wenn eine Änderung der Bedingungen eine Änderung des Leerlauftimeoutintervalls erfordert. Nach jedem Aufruf bleibt das neue Leerlauftimeoutintervall wirksam, bis der Treiber PoFxSetDeviceIdleTimeout erneut aufruft, um es zu aktualisieren.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Universell
Header wdm.h
Bibliothek Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

Weitere Informationen

DevicePowerNotRequiredCallback

PoFxRegisterDevice