Freigeben über


Übersicht über die Warte-/Aktivierungs-IRP-Vervollständigung

Ein Warte-/Aktivierungs-IRP wird abgeschlossen, wenn ein Wecksignal eingeht. Das Aktivierungssignal ist gerätespezifisch, ist aber im Allgemeinen ein normales Dienstereignis für das Gerät. Beispielsweise kann ein eingehender Ring dazu führen, dass ein Modem im Ruhezustand aktiviert wird.

Die folgende Abbildung zeigt die Schritte zum Abschließen eines Warte-/Reaktivierungs-IRP.

Schritte zum Abschließen eines Warte-/Reaktivierungs-Irp.

Wenn das Signal auftritt, tritt die Steuerung an dem Punkt, an dem der Bus erkennt, dass das Gerät aktiviert wurde, erneut in den Bustreiber ein. Der Bustreiber wartet das Ereignis nach Bedarf und ruft IoCompleteRequest auf, um die IRP_MN_WAIT_WAKE IRP für seine PDO abzuschließen.

Der E/A-Manager ruft dann die IoCompletion-Routine auf, die vom nächsthöheren Treiber im Gerätestapel festgelegt wird. In der IoCompletion-Routine verwendet dieser Treiber das Aktivierungssignal nach Bedarf und ruft IoCompleteRequest auf, um die IRP abzuschließen. Der E/A-Manager ruft weiterhin IoCompletion-Routinen auf, die den Gerätestapel sichern, bis alle Treiber die IRP abgeschlossen haben.

In seiner IoCompletion-Routine muss jeder Treiber, der mehr als ein untergeordnetes Gerät auflistet (mehrere pDO erstellt) und Warte-/Reaktivierungsanforderungen von mehr als einem solchen Gerät empfangen hat, sich selbst eine Warte-/Wake-IRP senden, um sich selbst für das Warten/Aufwachen eines anderen untergeordneten Geräts neu ausrüsten zu können. Ausführliche Informationen finden Sie unter Grundlegendes zum Pfad von Warte-/Wake-IRPs durch eine Gerätestruktur.

Nach dem Aufrufen von IoCompletion-Routinen , die von Treibern festgelegt wurden, während sie die IRP im Stapel übergeben haben, ruft der E/A-Manager die vom Besitzer der Energierichtlinie festgelegte Rückrufroutine auf, wenn er den Warte-/Reaktiv-IRP angefordert hat. In der Rückrufroutine sollte der Richtlinienbesitzer sein Gerät in den Betriebszustand zurück versetzen und einen ausstehenden Warte-/Reaktivierungs-IRP für die PDO des untergeordneten Geräts (falls vorhanden) abschließen.

Das Abschließen der IRP des untergeordneten Elements bewirkt, dass der E/A-Manager IoCompletion-Routinen aufruft, die von Treibern im Gerätestapel des Untergeordneten festgelegt wurden usw. Schließlich bestimmt der Richtlinienbesitzer, der die ursprüngliche Warte-/Reaktivierungs-IRP auf dem Devnode gestartet hat, dass sein Gerät das Aktivierungssignal behauptet hat, und alle ausstehenden Warte-/Wake-IRPs sind abgeschlossen.