Zugriff auf Bios



  • Ich will mir mit C++ ein OC tool schreiben.

    dazu muss ich die Temperatur der CPU, VCore usw. auslesen können.
    Wie mach ich das ?

    mfg walljumper



  • Ich will ein Flugzeug bauen, was brauch ich dazu? Turbine, Höhenruder, Sitze?

    Spaß bei Seite: Welches Betriebssystem, wie Erfahren bist du, was soll übertacketet werden (FSB/Graka), welche Prozessoren willst du unterstützen (Intel/AMD/VIA).

    Man schreibt ein OC nicht mal so eben. Das geht vielleicht bei MSI mit Dynamic Overclocking recht einfach, aber sonst musst du schon ziemlich ein Guru sein, wenn du der wärst, würdest du hier nicht auf die Art Fragen. (Ist nicht böse gemeint, war nur eine sachliche Feststellung)



  • Ich hab schon etwas Ahnung vom oc

    OS: ist Windows

    ich will jetzt kein Programm schreiben weil ich sonst nicht overclocken könnte sondern um was zu lernen und dann vieleicht mal ein Programm schreiben mit dem ich anderen das overclocken einfacher machen kann.

    Irgendwie muss ich ja auf das bios oder den CPU Treiber zugreifen können und dann an den Stellschrauben drehen. Sonst gäbe es ja sollche tools nicht.

    PS: die Gurus müssen es auch mal gelernt haben oder?



  • Also ich hab noch nie was in die Richtung gemacht (mein CPU is schnell genug, wenn nicht kauf ich mir nen neuen 😉 ). Allerdings würde ich mit dem PlatformSDK anfangen.
    CPU Geschwindigkeit (und einiges anderes) steht in der Registry unter:

    HKLM/HARDWARE/DESCRIPTION/System/CentralProcessor/<ProzessorNummer>

    Bei mir steht da:

    Identifier: Intel(R) Pentium(R) D CPU 2.80GHz
    ProcessorNameString: x86 Family 15 Model 4 Stepping 4
    ~MHZ: 2813

    Damit kannst du ja erstmal anfangen, das in dein Programm einzubinden.

    Dann: Was bitte ist ein CPU Treiber?!
    Auf das Bios kannst du nicht zugreifen (wär ja noch schöner 😉 )

    Wies weiter geht weis ich nicht, ich denke mal, dass es da von Windows aus keine Hilfe gibt, wie eine WinAPI Funktion alá "SetProcessorSpeed". Da musst du irgendwie auf deinen Mainboard Chipsatz zugreifen (idr. irgendein Winbond) und ihm irgendwas über FSB oder Multiplikator erzählen... Da wird die ganze Geschichte aber dann halt schon komplett von deinem Computer abhängig, VIA/Intel/Nforce/SiS Chipsatz etc.



  • Aus der Registry lesen kann ich schon.

    Dann: Was bitte ist ein CPU Treiber?!

    Im Gerätemanager findest du deine CPU/CPUs
    Unter Eigenschaften/Treiber kannst du ihn finden bei mir amdk7.sys

    Auf das Bios kannst du nicht zugreifen (wär ja noch schöner ;-) )
    

    Und wie machen das dann biosflash tools oder viren oder Everest Home ?

    [/code]Wies weiter geht weis ich nicht, ich denke mal, dass es da von Windows aus keine Hilfe gibt, wie eine WinAPI Funktion alá "SetProcessorSpeed". Da musst du irgendwie auf deinen Mainboard Chipsatz zugreifen (idr. irgendein Winbond) und ihm irgendwas über FSB oder Multiplikator erzählen... Da wird die ganze Geschichte aber dann halt schon komplett von deinem Computer abhängig, VIA/Intel/Nforce/SiS Chipsatz etc.[code]
    ja ich weis und wie genau das geht wollte ich wissen scheinbar nicht mit C++.



  • Im Gerätemanager findest du deine CPU/CPUs
    Unter Eigenschaften/Treiber kannst du ihn finden bei mir amdk7.sys

    Ja, Windows hat auch einen Bildschirmtreiber 🙄
    Ein CPU braucht ne Menge aber eines ganz sicher nicht: Einen Treiber.
    Windows hat da bestimmt nur irgendwelche Wrapper, HAL und ähnliche Geschichten drin.

    Und wie machen das dann biosflash tools oder viren oder Everest Home ?

    Bei einem Bios flash hast du von deinem Mainboard Hersteller genau ein Programm, welches genau auf dein Bios zugeschnitten ist. Aber es gibt keine Universelle Programmierschnittstelle, sodass zu z.B. mal eben von Windows aus die Bootreihenfolge ändern kannst. (OKOK, ich weis, dass sich das bald im Zuge von dem DRM Müll ändern wird...)
    Everest Home kenn ich nicht. Was wird denn da gemacht?

    Du musst halt immer spezifisch für dein Board coden. (Soweit ich weis)

    ja ich weis und wie genau das geht wollte ich wissen scheinbar nicht mit C++.

    Ja doch. OK, du wirst nicht umhinkommen ein bisschen inline Assembler zu schreiben, aber C++ ist schon die richtige Wahl, du musst ja auch irgendwie eine GUI zustande bekommen, was in ASM nicht ganz so angenehm ist 😉



  • Hmm das habe ich befürchtet naja ein bischen Assembler kann ich ja.

    Ich mach dann mal einen thread im Assembler forum auf


  • Administrator

    Also ich kenne mich in dem Bereich auch gar nicht aus, aber interessieren tut es mich. Es muss doch eine Schnittstelle geben. Schliesslich muss Windows mit Bios zusammenarbeiten, soweit ich das weiss. Wenn da irgend ein USB-Port oder sowas angesteuert wird, wird schlussendlich Bios angesteuert. Jeder Impuls jedes kleinstes Energiesignal wird soweit ich weiss, vom Bios überwacht, bzw. gesteuter, ausgelöst oder was auch immer.
    Daher muss es doch eine Schnittstelle geben. Ich habe zum Beispiel ein Programm im Inet gefunden, welches die CPU Wärme, Graphikkarten Wärme usw. angibt, auf jeglichem Computer mit Windows. Und das Programm ist nicht gross, so dass Code für jeglichen Herstellertyp drin vorhanden wäre!

    Daher nun meine Frage an dich Firebyte::Username:
    Weisst du überhaupt was du da erzählst, oder nimmst du es an?

    Grüssli



  • Soweit ich weis übergibt das Bios beim booten die kontrolle an das OS

    ch habe zum Beispiel ein Programm im Inet gefunden, welches die CPU Wärme, Graphikkarten Wärme usw. angibt,

    heist das vieleicht everest?

    so viele verschiedene Biose gibts ja auch nicht AMI Phönix und noch eins das mir grad nicht einfällt.

    Auserdem everst funktioniert tatsächlich nur mit Mainboards die es kennt.


  • Administrator

    Ne heisst sicherlich nicht Everest ... aber hmmm wo ist dieses Programm nur? Hab es auf eine Diskette getan und versorgt, aber anscheinend ist meine Ordnung doch nicht so gut ^^
    Ich melde mich sobald ich es gefunden habe (könnte aber dauern XD)
    Grüssli



  • Dravere schrieb:

    Also ich kenne mich in dem Bereich auch gar nicht aus, aber interessieren tut es mich. Es muss doch eine Schnittstelle geben. Schliesslich muss Windows mit Bios zusammenarbeiten, soweit ich das weiss. Wenn da irgend ein USB-Port oder sowas angesteuert wird, wird schlussendlich Bios angesteuert. Jeder Impuls jedes kleinstes Energiesignal wird soweit ich weiss, vom Bios überwacht, bzw. gesteuter, ausgelöst oder was auch immer.

    Da irrst du dich. Zitat aus Wikipedia:

    Ein BIOS unterscheidet sich von der funktionsähnlichen Lowlevel-Firmware darin, dass es nicht selbst den Betrieb des Computers steuert, sondern dazu ein Betriebssystem bootet.

    Dravere schrieb:

    Daher muss es doch eine Schnittstelle geben. Ich habe zum Beispiel ein Programm im Inet gefunden, welches die CPU Wärme, Graphikkarten Wärme usw. angibt, auf jeglichem Computer mit Windows.

    Hast du jeden Computer mit WIndows bei dir zu Hause?

    Und das Programm ist nicht gross, so dass Code für jeglichen Herstellertyp drin vorhanden wäre!

    Wie groß denn?

    Daher nun meine Frage an dich Firebyte::Username:
    Weisst du überhaupt was du da erzählst, oder nimmst du es an?

    Ja, hat er. Denn flashen kannst du dein BIOS über Windows, doch, genau wie er gesagt hat, auf die einzelnen einstellungen zugreifen geht halt nicht so einfach.

    mfg.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Verwende WMI, da bekommst Du (fast) alles...
    http://blog.kalmbachnet.de/?postid=29

    z.B.
    - Win32_BIOS
    - Win32_BaseBoard
    - usw...



  • tjo denn die CPU Speed aus der Registry auszulesen taugt nix 😃 Die Werte stimmen selten -.-



  • vor etwa 10 bis 15 jahren wurde meines wissens der inhalt des BIOS in einen
    anderen speicherbereich kopiert. dies passierte bei jedem nornmalen
    start der x86er rechner und der anderen die kompatibel zu den x86er waren.

    es gab damals programmierer, die eine cpu-abfrage einbauten so das die exe-en
    nur unter bestimmten cpu's laufen sollten. diesen abfragen konnte zum teil
    per software "vorgegauklet" werden das doch die gewünschte cpu am werkeln war.

    ich denke es wird heute so sein, das windows beim start das BIOS ausliest, es
    auswertet und die daten irgendwo speichert. die programmierer der aktuellen
    windows sind natürlich um einen störungsfreien betrieb zu gewährleisten,
    bemüht die daten möglichst manipulationssicher zu hinterlegen.

    windows versucht die daten, die es aus dem BIOS gewinnt zu optimieren.

    sollten also optimierungen z.b. der cpu-FSB oder sonstiges angestrebt werden
    müssen die meiner ansicht nach vor windows gestartet werden oder man sucht
    eventuelle sicherheitslücken von windows.

    es gab auch mal programmier die ein ganzes, natürlich kompaktes betriebssystem
    im BIOS untergebracht haben. selbstverständlich kein windows für standart-pc.

    wie das auf pocket-rechnern unter windows aussieht kann ich nur vermuten,
    will jetzt aber nicht nach info's suchen.

    mfg f.-th.



  • f.-th. schrieb:

    vor etwa 10 bis 15 jahren wurde meines wissens der inhalt des BIOS in einen
    anderen speicherbereich kopiert. dies passierte bei jedem nornmalen
    start der x86er rechner und der anderen die kompatibel zu den x86er waren.

    es gab damals programmierer, die eine cpu-abfrage einbauten so das die exe-en
    nur unter bestimmten cpu's laufen sollten. diesen abfragen konnte zum teil
    per software "vorgegauklet" werden das doch die gewünschte cpu am werkeln war.

    Was hat BIOS mit CPU zu tun???

    f.-th. schrieb:

    ich denke es wird heute so sein, das windows beim start das BIOS ausliest, es
    auswertet und die daten irgendwo speichert.

    WMI

    f.-th. schrieb:

    windows versucht die daten, die es aus dem BIOS gewinnt zu optimieren.

    Warum?



  • Hi,

    ich glaube mich daran zu erinnern das der asm funktionsinterrupt 25 das absolute lesen von sektoren ermöglicht. mit dem 26h müsstet du schreiben können(ist aber mit sehr großer vorsicht zu geniessen). gibt dafür genügend source im Internet...

    cya,

    0xDEADBEEF



  • 0xDEADBEEF schrieb:

    ich glaube mich daran zu erinnern das der asm funktionsinterrupt 25 das absolute lesen von sektoren ermöglicht. mit dem 26h müsstet du schreiben können(ist aber mit sehr großer vorsicht zu geniessen). gibt dafür genügend source im Internet...

    Schlechtes Gedächtnis... mit int25/26h konnte man DOS-Drives lesen... mit int13h die wirklichen Geräte...



  • @jochen
    definitionsfrage: betrifft oc nur den FSB oder alles was den pc schneller
    machen könnte?

    Nur wenn alles zutrifft:
    es gibt mainboards da kann man FSB und Multiplikator per jumper oder schalter
    einstellen und andere, da geht dies ganz oder teilweise im BIOS-setup, wenn die
    CPU dies zuläst. bei einigen, nicht allen AMD-CPU's ist dies der fall.

    FSB ist sache des boards, aber multiplikator ist oft, jedoch nicht immer,
    von der CPU festvorgegeben.
    aber je nach vorliegender zusammenstellung von mainboard, CPU und grafikkarte
    muss man manchmal auch an den multiplikator dran, wenn das system schnell
    rennen soll.

    oldies werden sich vielleicht erinnern: AMD schneller als 350MHz und win95
    hatten kompatibilitätsprobleme. damals hies es die AMD seinen zu schnell
    für win95 - ein speichertiming problem. Für einige dieser win95-versionen
    brachte ms ein update, das dieses problem mit waitstates bei datentransfer
    angehen sollten. okay dies ist allerdings ein beispiel zum thema wie krieg
    ich meinen rechner langsamer damit er stabil läuft. wenn man den pc schneller
    kriegen will muss man halt das gegenteil versuchen z.b. weniger waitstates,
    schnelleren speicherzugriff u.s.w.. nach meiner ansicht änderte(optimierte?)
    das update von win95 die BIOS-vorgaben.

    ich hoffe das es klar ist, das bei all den angesprochenen änderungen an FSB
    und multiplikator der rechner eventuell gar nicht mehr läuft oder sogar die
    hardware ins nirwana oder wohin auch immer geht! CMOS-clear sollte kein
    fremdwort sein.
    Also: no risk no fun - aber keine garantie oder gewährleistung!

    f.-th.


Anmelden zum Antworten