Hardware Infos Auslesen



  • Tja, offensichtlich hast du den Kern meiner Aussage nicht begriffen: In der Registry stehen irgendwleche Werte, deren Aktualität du nicht kennst. Kann sein, dass der Wert 2 Stunden oder 2 Sekunden alt ist...

    Aber ja, ich weiss, heutzutage ist über etwas geschriebenes nachzudenken nichtmehr "modern"... lieber motzt man rum, weil etwas nicht grad in plaintext da steht sondern halt etwas textverständnis und Interpretationsfähigkeit erfordert.

    Ausserdem bin ich der festen Überzeugung AndreadsW könnte sich selbst wehren, wenn er sich durch mich "gestört" fühlen würde...

    -junix



  • Vielleicht hilft dir WMI und das hier 🙂



  • theoretisch macht es ja nichts, wenn man ein Wert wie die Taktfrequenz einfach aus der Regristry ausliest. Wer baut sich schon mehrmals täglich ein anderen Prozessor ein.

    Wer es aber gerne dirkt mag kann sowas machen wie da oben beschreiben oder es gleich ermitteln:

    double Taktfrequenz()
    {
    DWORD TimeHI ;
    DWORD TimeLO;
    SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
    
    Sleep(10);
    asm
        {
        dw 310Fh
        mov TimeLO, eax
        mov TimeHI, edx
        }
    Sleep(500); 
    asm
        {
        dw 310Fh
        sub eax, TimeLO
        sbb edx, TimeHI
        mov TimeLO, eax
        mov TimeHI, edx
        }
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL);
    SetPriorityClass(GetCurrentProcess, NORMAL_PRIORITY_CLASS);
    return TimeLO*(1000/500);
    }
    

    obwohl dass wohl etwas ungenau ist.



  • wie man die Prozessornutzung einzelner Programme ausließt hab ich schon mla im BCB Forum gepostet. Auch der Arbeitspeicherbedarf einer Anwendugn war dabei..



  • AndreasW schrieb:

    theoretisch macht es ja ncihts, wenn man ein Wert wie die Taktfrequenz einfach aus der Regristry ausliest. Wer baut sich schon mehrmals täglich ein anderen Prozessor ein.

    Denke Notebookprozessoren und modernere Desktopprozessoren welche die Taktfrequenz variieren (können)

    Die tatsächliche Frequenz lässt sich shcon sehr Präzise ermitteln mit der von mir oben genannten Funktion und etwas KLim Bim rund herum...
    Hab das selber kürzlich mal gemacht um mir die aktuelle Frequenz meines Pentium M anzeigen zu lassen... (hat mich wunder genommen wie das Teil so mit seiner Frequenz rumfährt)

    -junix



  • Hmm die Aktuelle Taktfrequenz ist natürlich auch net schlecht...

    Aber was ich eigentlic heraus finden wollte... ist was zum BSP für eine CPU im Rechner hockt...
    Z.b.

    AMD Ahtlon XP 2600+
    512 MB RAM
    4 Netzwerkkarten
    2 HDD's
    1 CD-Rom

    Möchte im endefekt so viele Informationen wie möglich aus dem Rechner mit C/C++ holen.
    Dank aber die Aktuelle Taktrate ist auch nicht schlecht... 👍



  • naja,

    HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\SYSTEM\CentralProcessor\0\ProcessorNameString

    das ist der Prozessor.

    Die anderen sachen wirst du auch so finden.

    Ansonsten Siehe Signatur.



  • Genau diese Bedenken hatte ich...
    Bei mir z.B. gibt es unter Description keinen Eintrag namens ...\DESCRIPTION\SYSTEM\CentralProcessor\0\ProcessorNameString

    Und das wird nicht nur dort so sein...
    Hmm.. aber ich schau mal



  • Hast du dir WMI (siehe Links weiter oben) jetzt mal angeschaut?! 🙄



  • Sorry steht doch in der Reg war nur zu dumm zum suchen 😉
    Ne mach ich gerade...



  • AndreasW schrieb:

    theoretisch macht es ja nichts, wenn man ein Wert wie die Taktfrequenz einfach aus der Regristry ausliest. Wer baut sich schon mehrmals täglich ein anderen Prozessor ein.

    Naja, falls vorhanden.

    double Taktfrequenz()
    {
    DWORD TimeHI ;
    DWORD TimeLO;
    SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
    
    Sleep(10);
    asm
        {
        dw 310Fh
        mov TimeLO, eax
        mov TimeHI, edx
        }
    Sleep(500); 
    asm
        {
        dw 310Fh
        sub eax, TimeLO
        sbb edx, TimeHI
        mov TimeLO, eax
        mov TimeHI, edx
        }
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL);
    SetPriorityClass(GetCurrentProcess, NORMAL_PRIORITY_CLASS);
    return TimeLO*(1000/500);
    }
    

    obwohl dass wohl etwas ungenau ist.

    Kannst du (oder sonst wer) den Code ein wenig erläutern? (Sag bitte nicht, dass du nen Zähler ausliest und die halbe Sekunde später den Zähler nochmal liest und mit Differenz / Dauer(halbe Sekunde) die Taktfrequenz ausrechnest! Das wäre nämlich SEHR ungenau (wegen Sleep(x)).) Mein Laptop (W98) hat nämlich angeblich fantastische 3 MHz... 😃

    Und mir hat WMI übrigens überhaupt nichts geholfen. Bin halt doof.



  • (So, Login klappt wieder. Komisch.)

    Möchte mich nur schnell für den Fullquote entschuldigen. Sieht ja schrecklich aus.

    Edit: 310Fh ist wohl rdtsc. Also ist die ganze Funktion genau so, wie ich befürchtet habe. 😞


Anmelden zum Antworten