Anbieter zum Thema
Wo sich der Quellcode des Power Managers befindet
Im Verzeichnis „\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\PM“ sind die Programmteile des PM enthalten. Microsoft stellt einen Power Manager im Source-Code zur Verfügung. Der Power-Manager ist ein Layered Native Driver, d.h. er unterteilt sich in MDD (Model Device Driver) und PDD (Platform Dependent Driver). Er ist unter dem allgemeinen Verzeichnis (WINCE600\PUBLIC\COMMON\OAK\DRIVERS\PM\) zu finden.
Das PDD enthält die Logik, die feststellt, welcher System-Power-State realisiert werden soll. Soll der PDD auf die eigenen Bedürfnisse angepasst werden, verwendet man dazu eine Kopie des Common-PDD, die im Platform-Verzeichnis abgelegt wird.
Wird ein Custom Manager benötigt, kann ein eigener Power Manager generiert werden. Dazu werden die Programme für die Stub-Bibliothek aus dem Verzeichnis “\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\PM\PMSTUBS kopiert. Beispielsweise müssen die APIs der Applikation und die APIs im Treiber wie folgt umgesetzt werden: (SetSystemPowerState = PmSetSystemPowerState)
Welche „Device Power States“ sind realisiert worden?
Die „Device-Power-States“ sind statisch vordefiniert und in die Registry abgespeichert. Der Power-Manager erwartet von allen zu verwalteten Geräten, dass einer oder mehrere Zustände unterstützt werden. Minimal muss jedes Gerät den Zustand D0 (Full On) unterstützen.

Die Power-Manager wird Anforderungen der Gerätetreiber zum Ändern des System Power States entsprechend der Registrierungs-Datenbank vornehmen. Eine Erweiterung der Einträge ist jederzeit möglich:
Beispiel: Einstellungen in der Registry
; Standart Einstellungen von D4 (off) in allen Power Modes
[HKLM\SYSTEM\CurrentControlSet\Control\Power\State\On]
„bkl1:“=dword:4 ; backlight off
[HKLM\SYSTEM\CurrentControlSet\Control\Power\State\UserIdle]
„bkl1:“=dword:4 ; backlight off
[HKLM\SYSTEM\CurrentControlSet\Control\Power\State\SystemIdle]
„bkl1:“=dword:4 ; backlight off
; Geht in den “user idle” mode nach 5 Sekunden
[HKLM\SYSTEM\CurrentControlSet\Control\Power\Timeouts]
„ACUserIdle“=dword:5 ; in Sekunden

Das Diagramm (Bild 3) zeigt und beschreibt die Zustands-Übergänge wie beispielsweise Off nach On.
Beschreibung der Übergänge in einem Beispiel
- No power -> to On: Das Gerät wird eingeschaltet und das RAM und Dateisystem werden neu aufgesetzt.
- Kalt Boot: Das Gerät wird auf den Ursprungszustand zurückgesetzt. Das RAM-basierte Dateisystem (Object Store) wird gelöscht. Die darin enthaltenen Daten, wie die Registry, die Datenbank und das RAM Dateisystem werden zurückgesetzt. Alle Daten, die nicht auf ein statisches Medium gespeichert wurden sind gelöscht. Auch wenn die Batterien gewechselt werden erfolgt ein Kaltstart.
- Warm Boot: Das Betriebssystem wird neu gestartet. Der Inhalt des Object Store bleibt dabei erhalten.
- On -> User-Idle: Der Scheduler hat keinen aktiven Thread mehr abzuarbeiten. Das RTOS ruft die Funktion OEMIdle auf, um in diesen Zustand zu kommen. Durch einen beliebigen Interrupt (z.B. Keyboard, Touch) kommt man wieder in den Zustand On.
- Idle -> On: Dieser Übergang wird vollzogen, wenn irgendein Interrupt eintrifft. Ein Timer-Interrupt löst zyklisch aus, um aktivierte Threads zu bearbeiten.
- On -> Suspend: Dieser Zustand Suspend wird durch folgende Ereignisse erreicht: •Die Zeit des “Inactivity Timer” ist abgelaufen. •Der „Suspend-Schalter” wurde gedrückt. •Eine Anwendung führt die Funktion SetSystemPowerState(SUSPEND) aus.
- Suspend -> On: Dieser Zustand On wird durch folgende Ereignisse erreicht: •Der „Suspend-Schalter” wurde gedrückt und hat damit einen Interrupt ausgelöst. •Ein Alarm-Event wurde ausgelöst. •Ein Wake-Up Event wurde ausgelöst.
- On -> Critical Off: Power State Critical zeigt an, dass die Batterie zu schwach ist und schaltet das Gerät ab.
(ID:280374)