Forum: PC-Programmierung Wake-Up Zeit aus BIOS auslesen


von Peter (Gast)


Lesenswert?

Hallo,

im BIOS kann man ja einstellen, dass der PC zu einer bestimmten Zeit 
wieder aufwachen soll.
Ich habe schon die Funktion SetWaitableTimer gefunden, mit der man die 
Aufwachzeit ins BIOS schreiben kann.
Nun meine Frage:
Gibt es eine Möglichkeit diese Zeit wieder auszulesen?

Grüße
Peter

von Bobby (Gast)


Lesenswert?

Das würde mich auch interessieren.
Ich habe nur Bedenken dass dies überhaupt möglich ist,
denn die von Dir angesprochene Funktion ist ein
Windows-API-Aufruf, und wenn ich davon die Beschreibung
lese, handelt es sich eher um etwas, das nichts mit dem BIOS
zu tun hat.
Lasse mich aber gerne belehren...

von *.* (Gast)


Lesenswert?

Könnten die Alarm-Register im CMOS sein.

von Bobby (Gast)


Lesenswert?

Ahja, danke für den Tipp.
Gibt es da irgend eine allgemeingültige Adresse
oder macht da jeder BIOS-Hersteller was er will ?

von Christian R. (supachris)


Lesenswert?

Irgendwie muss es ja was allgemeingültiges geben. Man kann ja im Windows 
Taskplaner den Haken setzen, er soll den PC reaktivieren, um die Aufgabe 
auszuführen. Das klappt auf nahezu allen Mainboards. Da müsste man mal 
suchen. Macht ja z.B. der DVBViewer auch, wenn man eine Aufnahme 
programmiert.

von Kai G. (runtimeterror)


Lesenswert?

>Gibt es da irgend eine allgemeingültige Adresse
>oder macht da jeder BIOS-Hersteller was er will ?

Gibbet! - steht ziemlich am Anfang. Habe gerade nicht das Datenblatt 
vorliegen, sollte aber kein Problem zu finden sein.

Die ersten 32/64 Bytes sind halbwegs gut genormt.

von Kai G. (runtimeterror)


Lesenswert?

Da steht's mit drin:
http://www.codepedia.com/1/CMOS_C

Habe gerade nichts Hübscheres gefunden.

von *.* (Gast)


Lesenswert?

Siehe z.B. Datenblatt vom DS12887

von Peter (Gast)


Lesenswert?

Danke für eure Antworten.
@Bobby:
Wenn ich es richtig verstanden habe ist es zum einem Timer, der 
irgendwie
im CMOS gesetzt wird, und somit auch den PC aufwecken kann. (Habe ich 
aus dem Quelltext zur TV-Software Mediaportal)

Danke Kai für den Link. Weißt du zufällig auch, wie ich den eingebunden
Assemblercode übersetzt bekomme? Verwende Dev-C++.
Erlaubt XP überhaupt noch den Zugriff direkt auf die Hardware, wie 
Win95?

Gruß
Peter

von Peter (Gast)


Lesenswert?

OK, unter Visual Studio lässt sich die Funktion (aus: 
http://www.codepedia.com/1/CMOS_C) übersetzten.
Aber wie ich mir gedacht hab kommt beim Ausführen schon beim
"cli" die Fehlermeldung "Privileged instruction".
Kann man sich da die Privilegien irgendwie besorgen?
Oder müsste ich dazu einen Treiber schreiben?

von Kai G. (runtimeterror)


Lesenswert?

Hatte mich schon gewundert ;)

Als ich das letzte mal direkt den CMOS Baustein angesprochen habe, war 
das unter DOS und in Assembler :)

Ich denke mal selbst wenn du das CLI hinbekommst, wird dich Windows kaum 
direkt an die I/Os lassen. Zum Einen weil das auch privilegierte Befehle 
sind, zum Anderen wird ein bestehender Prozess die I/Os gepachtet haben.

Das wiederum heißt, dass du den verantwortlichen Prozess nett um die 
Ausführung deines Wunsches bitten kannst, wofür wiederum die Windows API 
herhalten müsste. An dieser Stelle hört mein Halbwissen auf ;)

Blätter dich mal durch die MSDN, wie man unter Windows an die gesuchten 
Funktionen kommt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist DOS-Code, der läuft wg. direkter Hardwarezugriffe nicht unter 
einem Betriebssystem wie Windows.

von *.* (Gast)


Lesenswert?

Man braucht also eine Kernel-Bohrmaschine wie Porttalk.

von Bernhard Walle (Gast)


Lesenswert?

Unter Linux gibt's dazu das Tool „nvram-wakeup“
(http://sourceforge.net/projects/nvram-wakeup). Ein Blick in den 
Quellcode
lohnt sicherlich, auch wenn man Windows verwendet.

Letztlich ist die Geschichte aber sehr BIOS-spezifisch.

von Outi O. (outlaw)


Lesenswert?

Hmmmm, ich hätte jetzt vermutet, dass get das Gegenstück zu set ist, 
also

GetWaitableTimer

Zumindest sind die Chancen hoch ....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.