使用 C/C++ 编写一个能够获取 CPU 信息的程序
代码示例:
#include
/* 获取 CPU 名称 / bool getCPUName(char name, size_t size) { int32_t id[4]; __cpuid(id, 0x80000000); if (id[0] < 0x80000004) return false;
__cpuid((int32_t*)(name), 0x80000002);
__cpuid((int32_t*)(name + 16), 0x80000003);
__cpuid((int32_t*)(name + 32), 0x80000004);
name[size - 1] = '\0';
return true;
}
/* 获取 CPU 核心数 */ int32_t getCPUCoreCount() { int32_t coreCount = 0; HKEY hKey = NULL;
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey)) {
DWORD dwSize = sizeof(DWORD);
DWORD dwType = REG_DWORD;
if (ERROR_SUCCESS != RegQueryValueEx(hKey, "~NumberOfCores", NULL, &dwType, (BYTE*)&coreCount, &dwSize)) {
coreCount = 0;
}
RegCloseKey(hKey);
}
if (coreCount < 1) {
SYSTEM_INFO info;
GetSystemInfo(&info);
coreCount = info.dwNumberOfProcessors;
}
return coreCount;
}
int main() { char name[48]; getCPUName(name, sizeof(name)); printf("CPU Name: %s\n", name);
int coreCount = getCPUCoreCount();
printf("CPU Core Count: %d\n", coreCount);
return 0;
}