Selektives Anhalten in USB-Treibern (WDF)
Ein USB-Funktionstreiber unterstützt die Leerlauferkennung der Laufzeit, indem er das selektive Anhalten von USB implementiert. Hier finden Sie Inhalte für Treiberentwickler zum Implementieren des selektiven Anhaltens in USB-Treibern, die auf windows® Driver Foundation (WDF) basieren.
Informationen zum selektiven Anhalten
Selektives Anhalten ist die Möglichkeit, ein USB-Gerät im Leerlauf auszuschalten und später wieder aufzunehmen, während der Computer, an den es angeschlossen ist, im Arbeitszustand (S0) verbleibt. Für einen energieeffizienten Betrieb – insbesondere auf mobilen PCs – sollten alle USB-Geräte und -Treiber selektives Anhalten unterstützen. Das Herunterschalten eines Geräts, wenn es sich im Leerlauf befindet, aber das System im Zustand S0 verbleibt, hat die folgenden wesentlichen Vorteile:
- Selektives Anhalten spart Energie.
- Selektives Anhalten kann dazu beitragen, Umgebungsfaktoren wie thermische Belastung und Geräusche zu reduzieren.
Wenn Ihre Gerätehardware während des Leerlaufs heruntergefahren werden kann, sollte der Treiber dieses Feature unterstützen. Die Unterstützung für das selektive Anhalten in einem USB-Treiber, der auf windows® Driver Foundation (WDF) basiert, erfordert höchstens ein paar zusätzliche Rückrufe, die über die für die Unterstützung grundlegender Plug & Play hinausgehen.
Jeder Funktionstreiber für ein USB-Gerät sollte eine aggressive Energieverwaltung implementieren, die ein Gerät im Leerlauf angehalten, während das System ausgeführt wird. In diesem Thema wird beschrieben, wie Sie das selektive Anhalten in einem WDF-basierten Treiber implementieren. Wenn Sie mit WDF nicht vertraut sind, lesen Sie das Windows Driver Kit (WDK) und Entwickeln von Treibern mit der Windows Driver Foundation.
USB-Geräte unterstützen die Leerlauferkennung der Laufzeit über die selektive USB-Aussetzung. Durch selektives Anhalten kann ein Gerät im Leerlauf in einen angehaltenen Zustand versetzt werden, ohne dass andere Geräte, die mit demselben Hub verbunden sind, oder – im Fall eines Multifunktionsgeräts – ohne Auswirkungen auf die anderen Funktionen des Geräts zu wirken. Wenn alle Geräte oder Funktionen angehalten wurden, kann der gesamte Hub oder das Multifunktionsgerät ausgeschaltet werden.
Aus Hardwaresicht ist selektives Anhalten ein physischer Zustand an einem USB-Anschluss. Wenn sich alle Funktionen, die an den Port angefügt sind, im Leerlauf befinden, kann der Port in das selektive Anhalten wechseln.
Um die USB-Spezifikation zu erfüllen, müssen alle USB-Geräte das selektive Anhalten unterstützen. Wenn sich der USB-Bus im Leerlauf befindet, muss das Gerät heruntergefahren werden können. Die von Microsoft bereitgestellten USB-Hubtreiber implementieren selektives Anhalten auf Hardwareebene.
USB-Funktionstreiber sollten selektives Anhalten für ihre einzelnen Gerätefunktionen über WDF implementieren, das mit den Bustreibern kommuniziert und die Anforderungen der Geräte-E/A-Steuerung verwaltet, die Gerätefunktionen anhalten und fortsetzen. WDF ermöglicht sowohl Kernelmodus- als auch Benutzermodustreibern die Unterstützung des selektiven Anhaltens.
Die Details des usb-selektiven Usb-Anhaltecodes eines Funktionstreibers hängen davon ab, ob der Treiber im Benutzer- oder Kernelmodus ausgeführt wird. Beachten Sie die folgenden Richtlinien:
- Verwenden Sie das Benutzermodustreiberframework (UMDF), um USB-Treiber nach Möglichkeit zu implementieren. Benutzermodustreiber sind weniger wahrscheinlich, dass Systemdaten beschädigt werden und sind einfacher zu debuggen als Kernelmodustreiber.
- Verwenden Sie das Kernelmodustreiberframework (KMDF) nur, wenn der Treiber Daten über isochrone Endpunkte streamt oder andere Features oder Ressourcen benötigt, die nur im Kernelmodus verfügbar sind.
Energierichtlinienbesitz, E/A-Warteschlangen und selektives Anhalten
Der Energierichtlinienbesitzer (Power Policy Owner, PPO) für einen Gerätestapel ist der Treiber, der bestimmt, in welchem Energiezustand sich das Gerät zu einem bestimmten Zeitpunkt befinden soll. Nur ein Treiber in jedem Gerätestapel kann der PPO sein. Der Funktionstreiber ist in der Regel der PPO für sein Gerät.
Wenn Ihr USB-Treiber selektives Anhalten unterstützt und über dem PPO in seinem Gerätestapel liegt, darf der Treiber keine stromverwalteten Warteschlangen verwenden. Dies gilt sowohl für UMDF- als auch für KMDF-Treiber. Wenn Anforderungen für stromverwaltete Warteschlangen eingehen, während das Gerät angehalten wird, kann der gesamte Gerätestapel angehalten werden.
Abbildung 1 zeigt den Fluss von E/A-Anforderungen an einen USB-Treiber über die E/A-Warteschlangen.
In der Abbildung geht eine Anforderung für einen USB-Treiber ein. Das Framework fügt die Anforderung der entsprechenden Warteschlange hinzu.
Wenn die Warteschlange nicht mit Energie verwaltet wird, stellt das Framework die Anforderung dem Treiber entsprechend dem Dispatchtyp vor, den der Treiber für die Warteschlange konfiguriert hat (sequenziell, parallel oder manuell). Der Treiber verarbeitet dann die Anforderung.
Wenn die Warteschlange energieverwaltet ist und das Gerät nicht angehalten wird, stellt das Framework die Anforderung dem Treiber entsprechend dem konfigurierten Verteilungstyp vor.
Wenn das Gerät jedoch angehalten wird, hängen die Aktionen des Frameworks davon ab, ob der Treiber das PPO für den Gerätestapel ist. Wenn der Treiber der PPO ist, kommuniziert das Framework mit den übergeordneten USB-Treibern, um das Gerät einzuschalten. Nachdem das Gerät fortgesetzt wurde, stellt das Framework die Anforderung an den Treiber.
Wenn der Treiber nicht das PPO ist, führt das Framework keine weiteren Aktionen aus, da nur das PPO das Gerät fortsetzen kann. Die Anforderung verbleibt in der Warteschlange. Der Gerätestapel wird angehalten, wenn das PPO keine Anforderungen empfängt, die dazu führen, dass das Gerät fortgesetzt wird.
In diesem Abschnitt
Thema | BESCHREIBUNG |
---|---|
Selektives Anhalten in UMDF-Treibern | In diesem Thema wird beschrieben, wie UMDF-Funktionstreiber das selektive Anhalten von USB unterstützen. |
Selektives Anhalten in USB KMDF-Funktionstreibern | In diesem Thema wird beschrieben, wie KMDF-Funktionstreiber das selektive Anhalten von USB unterstützen. |