加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用C – 窗口的CPU ID

发布时间:2020-12-16 09:50:22 所属栏目:百科 来源:网络整理
导读:我想用c获取我的电脑( windows)的CPU Id. 我使用了this code来获得它. 它输出的信息如下: For InfoType 0CPUInfo[0] = 0x5CPUInfo[1] = 0x756e6547CPUInfo[2] = 0x6c65746eCPUInfo[3] = 0x49656e69For InfoType 1CPUInfo[0] = 0xf31CPUInfo[1] = 0x20800CPU
我想用c获取我的电脑( windows)的CPU Id.

我使用了this code来获得它.

它输出的信息如下:

For InfoType 0
CPUInfo[0] = 0x5
CPUInfo[1] = 0x756e6547
CPUInfo[2] = 0x6c65746e
CPUInfo[3] = 0x49656e69

For InfoType 1
CPUInfo[0] = 0xf31
CPUInfo[1] = 0x20800
CPUInfo[2] = 0x41d
CPUInfo[3] = 0xbfebfbff

For InfoType 2
CPUInfo[0] = 0x605b5001
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x7c7040

For InfoType 3
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 4
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 5
CPUInfo[0] = 0x40
CPUInfo[1] = 0x40
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000000
CPUInfo[0] = 0x80000008
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000001
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000002
CPUInfo[0] = 0x20202020
CPUInfo[1] = 0x20202020
CPUInfo[2] = 0x20202020
CPUInfo[3] = 0x20202020

For InfoType 80000003
CPUInfo[0] = 0x47202020
CPUInfo[1] = 0x69756e65
CPUInfo[2] = 0x4920656e
CPUInfo[3] = 0x6c65746e

For InfoType 80000004
CPUInfo[0] = 0x20295228
CPUInfo[1] = 0x20555043
CPUInfo[2] = 0x30382e32
CPUInfo[3] = 0x7a4847

For InfoType 80000005
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000006
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x4008040
CPUInfo[3] = 0x0

For InfoType 80000007
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000008
CPUInfo[0] = 0x2028
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

我无法理解那些是我计算机唯一CPU ID的信息.

任何人都可以帮助我.

解决方法

你的意思是“序列号”,“谁制作了处理器”,或“识别处理器的品牌和型号的字符串”.

序列号:

除非您有Pentium III,否则您没有与CPU关联的“唯一ID”.

英特尔在P3中引入了唯一的id(序列号)指令.但在对隐私产生巨大骚动之后,他们在随后的CPU版本中迅速禁用了该功能.

对于记录,在程序集中执行此功能的指令:

mov eax,3
cpuid

处理器序列号是eax,edx和ecx的串联

通过传递“3”作为第二个参数,您可以使用__cpuid函数实现相同的功能.但除非您有P3,否则它将无法工作或返回序列号.

供应商(制造处理器)

int regs[4] = {0};
char vendor[13];
__cpuid(regs,0);              // mov eax,0; cpuid
memcpy(vendor,&regs[1],4);   // copy EBX
memcpy(vendor+4,&regs[3],4); // copy EDX
memcpy(vendor+8,&regs[2],4); // copy ECX
vendor[12] = '';
print("My CPU is a %sn",vendor);

在您的情况下,这应该打印“GenuineIntel”.

制作和模型(BRAND字符串)

如果您需要CPUID指令的所有详细信息,包括如何获取CPU的品牌,型号和步进,以及“品牌字符串”,例如“Intel(R)Core(TM)i7-3770 CPU” @ 3.4GHZ ….“您可以通过以下链接参考英特尔手册.向下滚动文档以查找CPUID的文档.我懒得为你输入它.

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-2a-manual.pdf

MSVC编译器提供的__cpuid()指令在调用cpuid指令之前将“InfoType”映射到EAX.在该指令返回后,EAX,EBX,ECX和EDX被复制到您传递给此函数的CPUInfo [4]数组中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读