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

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

1

23.06.2013, 00:26

[C++] Systeminformationen abfragen (Windows, Linux, Mac)

Hey Leute,
Weiß jemand zufällig, wie ich auf den oben genannten Betriebssystemen Systeminformationen, wie z.B.
  • Prozessorbezeichnung
  • Anzahl Prozessorkerne
  • Taktfrequenz
  • Anzahl Arbeitsspeicher
  • Arbeitsspeichertakt
  • Verbleibender Festplattenspeicher
  • DirectX/OpenGL-Version
  • Anzahl Shader
  • Max. Texturgröße
  • etc.
abfragen kann?

Danke im voraus :D

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

23.06.2013, 00:52

Informationen über die CPU kann man plattformunabhängig mit Hilfe des CPUID Maschinenbefehls bekommen. Für alles Andere musst du die entsprechenden Betriebssystem/Grafik APIs verwenden. Das sollte sich für den konkreten Fall ergoogeln oder in den jeweiligen Dokus finden lassen. Zu Linux kann ich dir noch den Hinweis /proc und /sys Filesystem geben und für Grafik das Stichwort Caps/Capabilities.

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

3

23.06.2013, 12:33

Ok, danke.
Dann werde ich mir jetzt zum Ziel machen, eine "Cross-Platform System Information Library" zu programmieren, da es derartiges ja noch nicht gibt :thumbsup:

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

4

25.06.2013, 22:40

Schaue eher nach dem Intrinsic __cpuid. Inline Assembly ist heute immer seltener direkt nötig - zum Glück. IDEs können damit kaum was anfangen und die Assembly-Syntax sorgt auch immer wieder für Ärger.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

25.06.2013, 23:49

Insbesondere hat die Verwendung von Inline Assembly potentiell auch negative Auswirkungen auf die Performance (der Compiler hat z.B. keine Möglichkeit, zu verstehen, was genau der Programmierer mit dem Assembler Code bezweckt und muss sich daher im Bereich um den Assembler Code bestenfalls auf extrem konservative Optimierungen beschränken).

CPUID würd ich persönlich nicht direkt anfassen, so lange es sich vermeiden lässt. Das jeweilige Betriebssystem kümmert sich bereits darum, diese Informationen zu sammeln und tut dies sicherlich auf wesentlich robusterem Wege, als man es schnell und einfach mal eben so hinbekommen könnte. CPUID ist nicht nur hochgradig plattformspezifisch (x86 only und genaugenommen selbst dort nicht notwendigerweise überall vorhanden), sondern teilweise alles andere als trivial wirklich richtig zu verwenden (CPU- und herstellerspezifisches Verhalten, Multiprozessorsysteme usw.) und die Informationen, die es liefert, wollen auch erstmal interpretiert werden. Frag lieber das OS, das weiß schon alles und viel mehr... ;)

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »dot« (26.06.2013, 00:12)


Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

6

26.06.2013, 10:57

Habe da mal für Windows fix sowas gefindet: "MSDN Hardware Info"
Bei Linux müsstest du wahrscheinlich nur die eine oder andere Device-Datei in /dev/ auslesen. Sollte nicht schwierig zu finden sein. Der MSDN-Link war der erste zum Suchbegriff "MSDN Hardware Info". Und beim Apfel... weiß der Geier. Vielleicht auch 'ne Device-Datei.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

7

26.06.2013, 15:40

Ok, danke Evrey, dot und Tobiking.
CPU sollte also kein Problem mehr sein :D
Was mir Probleme bereitet ist die GPU (bzw. die GPUs).

Weiß zufällig jemand, wie man, am besten mit der WinAPI selbst, an Infos über sie kommt?

Also: DirectX/OpenGL-Version, VRAM, etc.

Werbeanzeige