Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

big_muff

Alter Hase

  • »big_muff« ist der Autor dieses Themas

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

1

01.02.2006, 20:11

Systemdaten abfragen (CPU-Speed, RAM, ...)

Ich möchte in die Logdatei meines Projekts am Schluss alle wichtigen Systeminformationen einfügen. Ich weiss ja wie man alle Daten über die Grafikkarte(n) und die Saundkarte(n) abfragt und ich habe auch schon bei Google gefunden wie man die Prozessorgeschwindigkeit und die Bezeichnung für den Prozessor über die Registry auslesen kann.

Aber zum RAM habe ich nirgens was gefunden und auch in der Registry habe ich keinen Eintrag dazu gefunden.

Wisst ihr da näheres?
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Anonymous

unregistriert

2

01.02.2006, 20:36

Solche Fragen gibt man nicht in google ein sondern in Windows Live oder direkt in die MSDN. Google ist für sowas absolut überfordert imho.

Und von der Registry lässte besser mal ganz die Finger. Denn die Registry ist dafür absolut nicht da.

CPU Speed:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <windows.h>
#include <tchar.h>
#include <lmaccess.h>    // wegen NTSTATUS

#include <stdio.h>

typedef LRESULT (WINAPI * CALLNTPOWERINFORMATION)(POWER_INFORMATION_LEVEL, PVOID, 
                 ULONG, PVOID, ULONG);

typedef struct _PROCESSOR_POWER_INFORMATION {
    ULONG                   Number;
    ULONG                   MaxMhz;
    ULONG                   CurrentMhz;
    ULONG                   MhzLimit;
    ULONG                   MaxIdleState;
    ULONG                   CurrentIdleState;
} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;

#ifdef __BORLANDC__
  #define EMIT   db
#else
  #define EMIT   __emit
#endif

#if defined(__cplusplus) && !defined(INLINE)
  #define INLINE inline
#else
  #define INLINE
#endif

INLINE UINT64 rdtsc(VOID)
{
    _asm EMIT 0x0F
    _asm EMIT 0x31
}

UINT_PTR GetCpuSpeed(VOID)
{
  PROCESSOR_POWER_INFORMATION ppi;
  CALLNTPOWERINFORMATION      pfn;
  LARGE_INTEGER               liFreq, li1, li2;
  HINSTANCE                   hDll;
  NTSTATUS                    stat;
  UINT_PTR                    uSpeed;
  UINT64                      timestamp;
  HANDLE                      hThread;
  int                         nPriority;

    ZeroMemory(&ppi, sizeof(ppi));
    stat = ERROR_CALL_NOT_IMPLEMENTED;

    if(NULL != (hDll = LoadLibrary(TEXT("powrprof.dll"))))
    {
        if(NULL != (pfn = (CALLNTPOWERINFORMATION)GetProcAddress(hDll, 
                           "CallNtPowerInformation")))
        {
            stat = pfn(ProcessorInformation, NULL, 0, &ppi, sizeof(ppi));
        }
        FreeLibrary(hDll);
    }

    if(ERROR_SUCCESS == stat)
        return(ppi.CurrentMhz);

    hThread   = GetCurrentThread();
    nPriority = GetThreadPriority(hThread);

    QueryPerformanceFrequency(&liFreq);
    liFreq.QuadPart /= 10;
    SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST);

    timestamp = rdtsc();
    QueryPerformanceCounter(&li1);

    do
    {
        QueryPerformanceCounter(&li2);
    } while((li2.QuadPart - li1.QuadPart) < liFreq.QuadPart);

    uSpeed = (UINT_PTR)((rdtsc() - timestamp) / 100000);
    SetThreadPriority(hThread, nPriority);

  return(uSpeed);
}

int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  TCHAR szSpeed[128];

    wsprintf(szSpeed, TEXT("CPU-Speed: ~%uMHz\n"), GetCpuSpeed());
    MessageBox(NULL, szSpeed, NULL, MB_OK);

  return(0);
}


Und Speicher bekommste mit:
GlobalMemoryStatus
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/html/wcesdkrGlobalMemoryStatus.asp

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

3

01.02.2006, 22:37

nix da
sehe ich da typen präfixe???
der code kann doch nich von dir stammen ;)
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Anonymous

unregistriert

4

01.02.2006, 22:51

Lemming
Der ist auch nicht von mir, da ich sowas nicht verwende

5

02.02.2006, 15:19

Direct X stellt für für die Systeminformationen eine eigene api bereit. Ein Beispiel dazu gibt es, im DirectX Sample Browser unter sonstiges.

Anonymous

unregistriert

6

02.02.2006, 15:31

epsilon2
Epsilon2.... Du bist ein Idiot.

Ja auch wenn ich dafür jetzt von den Mods eine drauf kriege (eigentlich schnuppe sogar). Aber Deine Aussage zu dem Thema ist totaler Schwachsinn (wie _jede_ andere von Dir auch!)

Bevor Du Dich mit einem Thema beschäftigst und darauf Postest um jemanden zu "helfen" (Was Deine Antworten bekannterweise nie tun) solltest Du mal überlegen ob Du überhaupt Peil hast!

Echt Freund, Du nervst nicht nur sondern verblödest auch User die Fragen stellen mit Deinen Antworten.

JossBoss

Treue Seele

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

7

02.02.2006, 15:40

lol freundliche atmosphäre hier ;p 8) 8) 8) :huhu:
Gratis Tools+Software und Games:

www.miraculous.eu.tc

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

02.02.2006, 18:41

Musst nicht immer gleich so agressiv werden, auch wenn dus schon zigmal erklärt hast 8)

Anonymous

unregistriert

9

02.02.2006, 18:54

Spik)evil(
Nee sorry, wenn er es anders nicht versteht, gehts net anders. Der verblödet die Member und scheint auch noch stolz drauf zu sein!

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

10

02.02.2006, 20:03

Zitat von »"epsilon2"«


(Link)


Nimms ihm nich immer so übel ;)

Werbeanzeige