还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

c/c++如何获取CPU的序列号?

来源:清泛原创     2016-08-02 10:36:09    人气:     我有话说( 0 人参与)

获取CPU序列表的完整实例代码如下:#include "stdafx.h"#include <afx.h>CString GetCpuSerial(){unsigned long st1 = 0;un...

获取CPU序列表的完整实例代码如下:
#include "stdafx.h"
#include <afx.h>

CString GetCpuSerial()
{
	unsigned   long   st1 = 0;
	unsigned   long   st2 = 0;
	unsigned   long   s1,s2;   
	unsigned   char   vendor_id[]="------------";   

	char CPUSERIAL[20];
	memset(CPUSERIAL,0,20);

	__asm{
		xor   eax,eax
			cpuid
			mov   dword   ptr   vendor_id,ebx
			mov   dword   ptr   vendor_id[+4],edx
			mov   dword   ptr   vendor_id[+8],ecx
	}
		
	__asm{
		mov   eax,01h
			xor   edx,edx
			cpuid
			mov   s1,edx
			mov   s2,eax
	}
	st1 = s1+s2;

	__asm{
		mov   eax,03h
			xor   ecx,ecx
			xor   edx,edx
			cpuid
			mov   s1,edx
			mov   s2,ecx
	}
	st2 = s1+s2;

	memset(&CPUSERIAL,0,20);
	sprintf_s(CPUSERIAL,"%08X",st1+st2);

	return CPUSERIAL;
}


int _tmain(int argc, _TCHAR* argv[])
{
	printf("%s\n", GetCpuSerial());

	return 0;
}
主要用到汇编指令 cpuid。

cpuid指令

cpuid就是一条读取CPU各种信息的一条指令,大概是从80486的某个版本开始就存在了。 CPUID这条指令,除了用于识别CPU(CPU的型号、家族、类型等),还可以读出CPU支持的功能(比如是否支持MMX,是否支持4MB的页等等),内容的确是十分丰富。CPUID指令有两组功能,一组返回的是基本信息,另一组返回的是扩展信息。

继续了解请参考:https://www.tsingfun.com/it/cpp/1965.html


运行结果:

CPU 序列号 cpuid

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: