gpt4 book ai didi

c - ARM64如何获取CPU品牌信息?

转载 作者:行者123 更新时间:2023-12-03 11:05:41 24 4
gpt4 key购买 nike

在Windows X86中,CPU品牌可以通过cpuid查询内在功能。
下面是代码示例:

#include <stdio.h>
#include <intrin.h>

int main(void)
{
int cpubrand[4 * 3];

__cpuid(&cpubrand[0], 0x80000002);
__cpuid(&cpubrand[4], 0x80000003);
__cpuid(&cpubrand[8], 0x80000004);

char str[48];
memset(str, 0, sizeof str);
memcpy(str, cpubrand, sizeof cpubrand);
printf("%s\n", str);
}

Windows ARM64 中的替代方法是什么?

最佳答案

虽然可能不是您正在寻找的答案(即直接询问 CPU),但您可以使用如下代码从 Windows 注册表中获取“ProcessorNameString”值:

#define BUFSIZ 64 // For easy adjustment of limits, if required

char answer[BUFSIZ] = "Error Reading CPU Name from Registry!", inBuffer[BUFSIZ] = "";
const char *csName = "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
HKEY hKey; DWORD gotType, gotSize = BUFSIZ;
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 (这正是通过使用 __cpuid() 调用获取“品牌字符串”而返回的结果)。
但是,像您一样,我很想知道一种直接执行此操作的方法-即,Windows 操作系统如何在 ARM64 上获取此信息系统?

关于c - ARM64如何获取CPU品牌信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60588765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com