Anzahl der CPU Kerne unter Windows mit C++ ermitteln
Nach langer Suche nach einer Möglichkeit die Anzahl der CPU Cores (CPU Kerne) unter Windows mittels unmanaged C++ zu ermitteln, habe ich eine Lösung über die Registry gesucht und selbst erarbeitet.
Auf meinen Systemen (WinXP Embedded und Win7) hat diese Methode bis dato einwandfrei funktioniert. Sollte es bei einem eurer Systeme nicht funktionieren, so bitte ich um Rückmeldung.
Hier der dazugehörige Quelltext:
#include <windows.h>
int GetCPUCores()
{
HKEY hKey;
if(RegOpenKey(HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor",
&hKey)!=ERROR_SUCCESS)
return 0;
DWORD nrOfCores = 0;
if(RegQueryInfoKey(hKey,NULL,
NULL,
NULL,(LPDWORD)&nrOfCores,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL)!=ERROR_SUCCESS)
{
RegCloseKey(hKey);
return 0;
}
RegCloseKey(hKey);
return (int)nrOfCores;
}
int GetCPUCores()
{
HKEY hKey;
if(RegOpenKey(HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor",
&hKey)!=ERROR_SUCCESS)
return 0;
DWORD nrOfCores = 0;
if(RegQueryInfoKey(hKey,NULL,
NULL,
NULL,(LPDWORD)&nrOfCores,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL)!=ERROR_SUCCESS)
{
RegCloseKey(hKey);
return 0;
}
RegCloseKey(hKey);
return (int)nrOfCores;
}
Ich hoffe dieser Codeschnippsel ist einigen Leuten Hilfreich

