Share via


Energieverwaltung für E/A-Warteschlangen

Wenn das Framework eine E/A-Anforderung empfängt, die an eines der Geräte Ihres Treibers weitergeleitet wird, legt das Framework die Anforderung in eine E/A-Warteschlange. Der Treiber kann E/A-Anforderungen aus der E/A-Warteschlange abrufen, indem er Anforderungshandler bereitstellt oder die Warteschlange abruft. Weitere Informationen zu E/A-Warteschlangen finden Sie unter Framework-Warteschlangenobjekte.

Beim Entwerfen des Treibers sollten Sie die E/A-Anforderungen, die Ihr Treiber empfängt, in zwei Kategorien gruppieren:

  1. Anforderungen, die erfordern, dass sich ein Gerät im Betriebszustand (D0) befindet, einschließlich:

    • Lese- oder Schreibanforderungen, die den Funktionstreiber des Geräts zum Lesen oder Schreiben von Daten aus dem Gerät erfordern.
    • Die Gerätesteuerung fordert an, dass eine Funktion oder ein Bustreiber nicht ohne Zugriff auf das Gerät gewartet werden kann.
  2. Anforderungen, die nicht erfordern, dass sich ein Gerät im Betriebszustand (D0) befindet, einschließlich:

    • Die Gerätesteuerung fordert an, dass eine Funktion oder ein Bustreiber den Dienst ohne Zugriff auf das Gerät ausführen kann.
    • Möglicherweise alle Anforderungen, die ein Filtertreiber empfängt.
    • Alle Anforderungen, die alle Treiber in einem Treiberstapel empfangen, wenn der Stapel ein reines Softwaregerät unterstützt, das mit keiner Hardware kommuniziert.

Sofern Sie nicht einen Filtertreiber oder einen Treiber für einen Stapel schreiben, der nicht mit der Hardware kommuniziert, erhält Ihr Treiber wahrscheinlich einige Anforderungen, die erfordern, dass das Gerät in seinem funktionierenden Zustand ist, zusammen mit anderen, die dies nicht tun.

Um diese beiden Arten von Anforderungen zu unterstützen, stellt das Framework zwei Arten von E/A-Warteschlangen bereit: diejenigen, die vom Strom verwaltet werden, und diejenigen, die nicht sind. Wenn Ihr Treiber jede E/A-Warteschlange erstellt, legt er den PowerManaged-Member in der WDF_IO_QUEUE_CONFIG Struktur der Warteschlange entweder auf WdfTrue oder WdfFalse fest, um eine der folgenden Elemente anzugeben:

  • Wenn Ihr Treiber PowerManaged auf WdfTrue festlegt, wird die Warteschlange energieverwaltet.

    Wenn E/A-Anforderungen in einer energieverwalteten Warteschlange verfügbar sind, übermittelt das Framework die Anforderungen nur dann an den Treiber, wenn sich das Gerät im Betriebszustand (D0) befindet. Jedes Mal, wenn Ihr Treiber eine Anforderung von einer energieverwalteten Warteschlange empfängt, garantiert das Framework, dass das Gerät verfügbar ist. Wenn sich das Gerät nicht im Betriebszustand befindet, speichert das Framework Anforderungen in der Warteschlange, bis das Gerät verfügbar wird.

    Wenn sich das Gerät in einem Energiesparzustand befindet, weil es sich im Leerlauf befindet, und wenn das Framework eine E/A-Anforderung in einer der stromverwalteten Warteschlangen Ihres Treibers ablegt, fordert das Framework den Treiberstapel auf, den Betriebszustand des Geräts wiederherzustellen, bevor es die Anforderung an Ihren Treiber sendet.

    Wenn sich das Gerät in einem Energiesparzustand befindet, weil sich das System nicht im Betriebszustand (S0) befindet, und wenn das Framework eine E/A-Anforderung in einer der stromverwalteten Warteschlangen Ihres Treibers ablegt, wartet das Framework, bis das Gerät in seinen Arbeitszustand (D0) zurückkehrt, und sendet die Anforderung dann an Ihren Treiber.

    Da das Framework keine E/A-Anforderungen von einer stromverwalteten Warteschlange an den Treiber übermittelt, wenn sich das Gerät nicht im Betriebszustand befindet, dürfen Treiber, die sich über dem Besitzer derEnergierichtlinieim Treiberstapel befinden, keine energieverwalteten E/A-Warteschlangen verwenden. Wenn ein Treiber, der sich über dem Besitzer der Energierichtlinie befindet, eine energieverwaltete Warteschlange verwendet und sich das Gerät in einem Energiesparzustand befindet, empfängt der Treiber die Anforderung nicht und kann sie nicht an den Besitzer der Energierichtlinie übergeben. Daher wird das Gerät vom Besitzer der Energierichtlinie, der den Energiezustand des Geräts steuert, nicht aktiviert.

  • Wenn Ihr Treiber PowerManaged auf WdfFalse festlegt, wird die Warteschlange nicht mit Energie verwaltet.

    Wenn E/A-Anforderungen in einer Warteschlange verfügbar sind, die nicht mit Strom verwaltet wird, übermittelt das Framework die Anforderungen an den Treiber, unabhängig davon, ob sich das Gerät im Betriebszustand (D0) befindet. Wenn Sie Ihre Warteschlange so eingerichtet haben, dass sie nur Anforderungen empfängt, die keinen Zugriff auf das Gerät erfordern, kann Ihr Treiber jede Anforderung warten, auch wenn das Gerät nicht verfügbar ist.

Weitere Informationen zu stromverwalteten E/A-Warteschlangen finden Sie unter Verwenden Power-Managed E/A-Warteschlangen.

Einige Treiber erfordern eine direkte Kontrolle über Plug & Play (PnP) und Energieverwaltungsvorgänge. Diese Treiber können selbstverwaltete E/A verwenden. Weitere Informationen finden Sie unter Verwenden Self-Managed E/A.