Behandeln eines System Set-Power IRP in einem Besitzer der Geräteenergierichtlinie

Als Reaktion auf eine IRP für system set-power ist der Besitzer der Energierichtlinie für einen Gerätestapel dafür verantwortlich, den Gerätestapel in einen geeigneten Gerätestromzustand zu versetzen.

Wenn ein Besitzer einer Geräteenergierichtlinie eine IRP_MN_SET_POWER für einen Systemstromzustand erhält, sollte er in der Regel reagieren, indem er den IRP -Systemsatz-Leistungs-IRP im Gerätestapel übergibt. Ein Besitzer der Geräteenergierichtlinie sollte auch reagieren, indem er den Gerätestapel IRP_MN_SET_POWER für einen entsprechenden Gerätestromzustand in einer IoCompletion-Routine sendet. Nachdem alle Treiber im Stapel die IRP für die Gerätesatzleistung abgeschlossen haben, schließt der Besitzer der Geräteenergierichtlinie die IRP für system set-power ab.

Um die Leistung des Systembetriebs zu verbessern, sollten Besitzer von Geräten, die keine untergeordneten Geräte haben, jedoch einen anderen Ansatz verwenden, um die Zeit zu verkürzen, die ein System benötigt, um aus einem Ruhezustand in den Betriebszustand S0 zurückzukehren. In diesem Fall sollten Besitzer von Geräteenergierichtlinien als Reaktion auf eine Systemleistungs-IRP, die ein System in den Funktionierenden Zustand S0 zurückgibt, die folgende Abfolge von Vorgängen ausführen:

  1. Nachdem Sie in der DispatchPower-Routine des Treibers eine IRP_MN_SET_POWER IRP für den S0-Systemstromzustand erhalten haben, legen Sie eine IoCompletion-Routine für das IRP fest, und übergeben Sie den IRP im Stapel.

  2. Fordern Sie in der in Schritt (1) festgelegten IoCompletion-Routine eine IRP_MN_SET_POWER IRP für den entsprechenden Geräteleistungszustand an, und schließen Sie dann sofort die Systemsatz-Leistungs-IRP ab. Der Treiber sollte nicht warten, bis geräte set-power IRPs abgeschlossen sind, bevor er die IRP für system set-power abgeschlossen hat. Die IoCompletion-Routine wird ausgeführt, nachdem alle Treiber der niedrigeren Ebene die IRP für system set-power abgeschlossen haben, und der IRP-Systemsatz-Leistungs-IRP an das funktionale Geräteobjekt (Functional Device Object, FDO) des Treibers zurückgegeben wird.

  3. Führen Sie alle erforderlichen gerätespezifischen Initialisierungen aus.

  4. Schließen Sie die IRP für die Gerätesatzleistung ab, die in Schritt (2) gesendet wurde.

  5. Verarbeiten von E/A-Anforderungen, die in die Warteschlange gestellt wurden, als sich das Gerät im Ruhezustand des Geräts befand.

Der Kernel-Power-Manager verfügt über einen begrenzten Satz von IRP-Dispatchwarteschlangen und muss alle Geräte im System schnell über die Rückkehr zum Systemarbeitszustand S0 benachrichtigen. Treiber, die die IRP des Systemsatz-Leistungs-IRP nicht so schnell wie möglich abschließen, verhindern, dass andere Geräte ihre System-Set-Power-IRP erhalten, was sich bei Systemenergiezustandsübergängen negativ auf die Gesamtleistung des Systems auswirken kann.

Weitere Informationen zur Behandlung von Systemsatz-Leistungs-IRPs finden Sie in den folgenden Artikeln:

Ermitteln des richtigen Geräteleistungszustands

Senden eines Geräte-Set-Power IRP als Reaktion auf eine System-Set-Power-IRP