Entwickler-Ecke
Windows API - Anzahl der CPU's ermitteln
Alice - Sa 31.01.09 19:29
Titel: Anzahl der CPU's ermitteln
hi all,
hiermit meine ich nicht, dass z.b. ein Quad 4cores inne hat, nein.
zb.: auf einem mainboard sind 2 cpu's verbaut, z.b. zwei quads je 4cores.
wie oder wo bekomme ich die info darüber das 2 cpu's verbaut sind?
cu
Alice - Sa 31.01.09 19:45
hi,
genau diese funk. meinte ich nicht.
diese zeigt mir auf einem quad 4-cores an.
ich will jedoch die *anzahl der verbauten cpu's.
in meinem falle wäre das dann 1.
auf einem board mit 2 verbauten cpu's (also einem board mit 2 cpu sockets)
wären es mit o.g. funk. (2xQuad) 8-cores.
ich suche jedoch die *2* ... und nicht die 8...
cu
nagel - Sa 31.01.09 19:49
Oh sorry, ich hab deine Frage schon richtig verstanden, aber die verlinkte Funktion nicht getestet, sondern dem Beschreibungstext nach gedacht, sie würde die Anzahl zurückgeben.
Webo - Sa 31.01.09 19:52
Also die Funktion funktioniert bei mir:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function GetNumberOfProcessors: Integer; var SystemInfo: TSystemInfo; begin GetSystemInfo(SystemInfo); Result:=SystemInfo.dwNumberOfProcessors; end; |
Grüße
Webo
[Edit]: Ich hätt mir den Link anschauen sollen.
Alice - Sa 31.01.09 20:15
hi,
Webo hat folgendes geschrieben : |
Also die Funktion funktioniert bei mir:
[Edit]: Ich hätt mir den Link anschauen sollen. |
ich hoffe du meinst damit, dass es hiermit *nicht geht.
bitte die fragestellung durchlesen.
cu
jaenicke - Sa 31.01.09 20:20
Schau dir mal CxCpu an, ich habe zwar diese Funktionalität dort bisher nicht gesucht, aber alles was mit Informationen zur CPU zu tun hatte konnte ich bisher damit umsetzen.
http://www.torry.net/authorsmore.php?id=1084
Zudem ist es Freeware inkl. Quelltext.
Alice - Sa 31.01.09 20:57
hi,
jaenicke hat folgendes geschrieben : |
Schau dir mal CxCpu an, ich habe zwar diese Funktionalität dort bisher nicht gesucht, aber alles was mit Informationen zur CPU zu tun hatte konnte ich bisher damit umsetzen.
http://www.torry.net/authorsmore.php?id=1084
Zudem ist es Freeware inkl. Quelltext. |
ne, ghet leider nicht.
cu
Delete - Sa 31.01.09 23:40
Windows kann nicht ziwschen physischen und virtuellen CPUs unterscheiden. Wenn du also eine quadcore hast, "dent" Windows dies wären auch vier CPUs. Aber viele Hardwareinformationen bekommt man auch über die Setup-API. Evntuell guckst du mal, ob du so die Anzahl der physischen CPUs erhälts. Allerdings weiß ich nicht, wo man an Übersetzungen der Setup-API Header-Dateien kommt.
Was mir gerade noch einfällt, hast du schon mal probiert die Informazionen über WMI zu beziehen?
Alice - So 01.02.09 12:09
hi,
Luckie hat folgendes geschrieben : |
Windows kann nicht ziwschen physischen und virtuellen CPUs unterscheiden. Wenn du also eine quadcore hast, "dent" Windows dies wären auch vier CPUs. Aber viele Hardwareinformationen bekommt man auch über die Setup-API. Evntuell guckst du mal, ob du so die Anzahl der physischen CPUs erhälts. Allerdings weiß ich nicht, wo man an Übersetzungen der Setup-API Header-Dateien kommt.
Was mir gerade noch einfällt, hast du schon mal probiert die Informazionen über WMI zu beziehen? |
bei jedi gibt es diese übersetzung, jedoch konnte ich dort nicht passendes finden.
unter wmi habe ich eben mal nachgesehen, auch hier scheint es keine info darüber zu geben, leider.
cu
Kha - So 01.02.09 17:14
GTA-Place hat folgendes geschrieben : |
| Ist natürlich ohne .NET dann etwas schwierig :lol: |
System.Management ist doch nur ein .Net-Wrapper der WMI ;) .
GTA-Place - So 01.02.09 17:25
Und warum kann man dann nicht mit WMI direkt arbeiten?
jaenicke - So 01.02.09 17:29
Weil WMI dafür wohl ebenfalls keine Möglichkeit anbietet:
Alice hat folgendes geschrieben : |
| unter wmi habe ich eben mal nachgesehen, auch hier scheint es keine info darüber zu geben, leider. |
Ich muss das einmal an einem echten Mehrprozessor-PC ausprobieren, insbesondere was dazu einige Systeminformationsprogramme sagen, deren Funktionsweise ich kenne, aber das geht im Moment nicht. Vermutlich nächste Woche irgendwann.
Motzi - So 01.02.09 18:01
Sollte über die
CPUID Instruktion gehen, ist aber etwas kompliziert. Welche Informationen du mit Hilfe der CPUID-Instruktion auslesen kannst findest du hier:
http://www.sandpile.org/ia32/cpuid.htm
BenBE - So 01.02.09 19:11
@Motzi: Das funktioniert zwar über CPUID für einen Prozessor (physisch), aber wenn man mehrere drin hat, bekommt man nur für einen die Info. Hier muss man schon über ACPI die Informationen abfragen (d.h. aus dem physikalischen Speicher die Deskriptoren klauben) ...
Kha - So 01.02.09 19:12
jaenicke hat folgendes geschrieben : |
| Weil WMI dafür wohl ebenfalls keine Möglichkeit anbietet |
Dem .NET-Code nach gibt es eine und die sollte dann natürlich auch unter Delphi verfügbar sein :nixweiss: .
Motzi - So 01.02.09 19:46
BenBE hat folgendes geschrieben : |
| @Motzi: Das funktioniert zwar über CPUID für einen Prozessor (physisch), aber wenn man mehrere drin hat, bekommt man nur für einen die Info. Hier muss man schon über ACPI die Informationen abfragen (d.h. aus dem physikalischen Speicher die Deskriptoren klauben) ... |
Das ist richtig, aber du kannst zuerst mit GetSystemInfo die Anzahl der Prozessoren abfragen und dann der Reihe nach mit SetThreadAffinityMask festlegen auf welchem Prozessor der Thread laufen soll und für diesen dann per CPUID alle Informationen auslesen.
jaenicke - So 01.02.09 19:56
Kha hat folgendes geschrieben : |
jaenicke hat folgendes geschrieben : | | Weil WMI dafür wohl ebenfalls keine Möglichkeit anbietet | Dem .NET-Code nach gibt es eine und die sollte dann natürlich auch unter Delphi verfügbar sein :nixweiss: . |
Stimmt, ich hatte mich jetzt auf die Aussage verlassen: :oops:
Alice hat folgendes geschrieben : |
| unter wmi habe ich eben mal nachgesehen, auch hier scheint es keine info darüber zu geben, leider. |
Aber der Dokumentation nach zu urteilen (und dem Beispiel) stimmt das ja nicht.
und
Alice - Sa 07.02.09 15:05
hi,
jaenicke hat folgendes geschrieben : |
Kha hat folgendes geschrieben : | jaenicke hat folgendes geschrieben : | | Weil WMI dafür wohl ebenfalls keine Möglichkeit anbietet | Dem .NET-Code nach gibt es eine und die sollte dann natürlich auch unter Delphi verfügbar sein :nixweiss: . | Stimmt, ich hatte mich jetzt auf die Aussage verlassen: :oops: Alice hat folgendes geschrieben : | | unter wmi habe ich eben mal nachgesehen, auch hier scheint es keine info darüber zu geben, leider. | Aber der Dokumentation nach zu urteilen (und dem Beispiel) stimmt das ja nicht.
|
so, eben mal auf einem serverboard, 2cpus zu je 4cores in der WMI nachgesehen, win2003 server,
hier ist nicht dergleichen zu finden, selbst der CPU-typ wird falsch ausgegeben!?!
aber irgendwie muss das doch gehen, tools wie cpuz zb. erkennen dies ja auch.
cu
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!