使用C – 窗口的CPU ID
我想用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,®s[1],4); // copy EBX memcpy(vendor+4,®s[3],4); // copy EDX memcpy(vendor+8,®s[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]数组中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |