Хотя, вероятно, не ответ, который вы ищете (т. Е. Непосредственно запрашиваете ЦП), вы можете извлечь значение «ProcessorNameString» из реестра Windows, используя код, подобный следующему:
char answer[64] = "Error Reading CPU Name from Registry!", inBuffer[64] = "";
const char *csName = "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
HKEY hKey; DWORD gotType, gotSize = 64;
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, csName, 0, KEY_READ, &hKey) == ERROR_SUCCESS) {
if (!RegQueryValueExA(hKey, "ProcessorNameString", nullptr, &gotType, (PBYTE)(inBuffer), &gotSize)) {
if ((gotType == REG_SZ) && strlen(inBuffer)) strcpy(answer, inBuffer);
}
RegCloseKey(hKey);
}
Это (или должно ) дать вам имя процессора, которое видит система Windows! У меня нет доступа к ARM64
системе, поэтому я не могу должным образом протестировать ее, но в моей x64
системе я получаю следующую (правильную) строку: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
(что в точности равно ) 1012 *, который вернулся с помощью вызовов __cpuid()
для получения «Брэндовой строки»).
Однако, как и вы, мне было бы очень интересно узнать, как сделать это напрямую то есть, как Windows O / S может получить эту информацию в системе ARM64
?