"CMOS battery power good" unter Windows abfragen?



  • Weiss jmd. wie man das "CMOS battery power good" Bit unter Windows abfragen kann?

    Soweit ich weiss kann man diesen Zustand über Byte 13, Bit 7 des CMOS RAMs abfragen.
    Und das CMOS RAM wiederrum kann man über die Ports 0x70 und 0x71 abfragen.

    Dummerweise aber wohl nur unter Ring 0.

    Kennt ihr eine andere Möglichkeit? Irgendwas über WMI oder auch gerne über sonstige Windows APIs.

    Bzw. falls nicht...
    Was müsste man machen um das CMOS RAM über einen Hilfstreiber auslesen zu können?

    (Wie man nen Treiber programmiert weiss ich, signieren für amd64 Windows-Versionen etc. ist auch alles kein Problem.)

    Um ein Byte zu lesen muss man ja erst die Adresse in Port 0x70 schreiben und dann das Byte aus Port 0x71 lesen. Ist jetzt natürlich blöd wenn man dabei unterbrochen wird, durch einen anderen Prozess/Thread der auch im CMOS RAM lesen bzw. schreiben will.
    => Wie macht man das?

    Gibt's vielleicht im Kernel-Mode irgend eine API/einen Treiber/einen System-Interrupt den man verwenden kann um auf das CMOS RAM zuzugreifen ohne dieses Synchronisierungsproblem?

    ps: Das ganze muss auch mit 64 bittigen Windows Versionen funktionieren. Irgendwelche Tricks über die DOS-Emulation von Windows fallen also leider flach, da es die ja auf 64 bittigen Windowsen nicht mehr gibt.



  • Einfach alle Interrupts deaktivieren? ... und nein ich weiss nicht wie man auf den CMOS RAM zugreift. Aber greift man nicht so aehnlich auf die Realtime clock zu?

    Ich denke mal, du hast schon http://philipstorr.id.au/pcbook/book5/cmos.htm gefunden, gaanz unten ... oder http://www.codepedia.com/1/CMOS_C Ob es in Windows auch funktioniert, k.A. .



  • knivil schrieb:

    Einfach alle Interrupts deaktivieren?

    Bei Dual-Core CPUs leider nicht ausreichend.
    Normalerweise verwendet man dafür SpinLocks, aber wenn sich die verschiedenen Teile die alle auf einen Port zugreifen nicht einig sind welche SpinLock verwendet werden soll... dann geht das halt nicht.

    ... und nein ich weiss nicht wie man auf den CMOS RAM zugreift. Aber greift man nicht so aehnlich auf die Realtime clock zu?

    Jo, just the same.

    Ich denke mal, du hast schon http://philipstorr.id.au/pcbook/book5/cmos.htm gefunden, gaanz unten ... oder http://www.codepedia.com/1/CMOS_C Ob es in Windows auch funktioniert, k.A. .

    Jo. Geht unter Windows nicht.


  • Mod

    Nur so eine Idee:
    Kommst Du evtl. über ACPI auch an diese Info?
    Es gibt ja den WMI to ACPI Mapper...



  • guideme.itgo.com/atozofc/ch42.pdf

    Edit: Das weisst du ja schon alles... sorry



  • @Martin Richter
    Keine Ahnung, von ACPI hab ich nicht viel Plan.
    Hab noch nicht lange Zeit gehabt zu googeln, aber auf Anhieb hab' ich mal nix gefunden.
    Auf jeden Fall danke für den Tip!

    @-lowbyte-
    Naja, alles was da drinsteht weiss ich nicht 🤡, aber die für mich relevanten Teile. Trotzdem danke!


Anmelden zum Antworten