Översikt över vänt-/aktiveringsfunktion
Operativsystemets aktiveringsmekanism fungerar enligt följande bild.
När systemet och enheten är i aktivt läge avgör energihanteringsansvarig för en enhet att den ska vara aktiverad ("förberedd") för uppvakning. Energiprincipägaren begär att en power IRP (PoRequestPowerIrp- med mindre kod IRP_MN_WAIT_WAKE) skickas till dess PDO för att informera alla drivrutiner i enhetsstacken. I begäran anger principägaren en återanropsrutin (inte samma som en IoCompletion- rutin).
Power Manager skickar via I/O-hanteraren IRP högst upp i enhetsstacken.
Förare ställer in IoCompletion rutiner och skickar IRP tills den når busschauffören.
Busschauffören aktiverar väckning på den fysiska enheten, om den kan, och markerar IRP:n som väntande. Om det behövs begär den även en vänta/aktivera IRP för sin överordnade.
Någon gång senare anländer en extern väckarsignal.
Busschauffören slutför IRP_MN_WAIT_WAKE.
I/O-hanteraren anropar IoCompletion-rutiner som specificerades när drivrutinerna skickade IRP vidare nedåt i stacken.
I/O-hanteraren anropar den återanropsrutin som anges av policyägaren när den begärde IRP.
Den IRP_MN_WAIT_WAKE begäran ändrar inte enhetens eller systemets energitillstånd. Det möjliggör bara aktivering på enheten så att, om enheten går in i ett passande viloläge, en extern signal senare gör att enheten (och eventuellt systemet) vaknar.
När en väckningssignal anländer är förarnas beteende detsamma oavsett om enheten aktiverar systemet eller bara sig själv. Om enheten är aktiverad för uppvakning och systemet är i ett viloläge som enheten kan väcka den ur, kommer enheten att väcka systemet. Om enheten är aktiverad för väckning och systemet är i arbetstillstånd vaknar endast enheten.
Eftersom datorer och enheter varierar i design, särskilt när det gäller kraftplan, är de system- och enhetskrafttillstånd som stöds – och därmed de tillstånd som kan stödja vänte-/aktivering – inte samma för alla maskinvarukonfigurationer. Därför måste varje drivrutin som äger energipolicyn för sin enhet och varje bussdrivrutin noga uppmärksamma funktionerna i den individuella konfiguration som det körs på. Mer information finns i avgöra om en enhet kan aktivera systemet.
För mer information om vänte-/aktiveringsåtgärder, se Förståelse av vänta/aktivera IRP:s genom ett enhetsträd och Översikt över slutförandet av vänte-/aktiverings-IRP.