获取CPU编号,主板编号,硬盘编号的C ++源代码 [英] C++ source code to get CPU number, motherboard number,HDD number

查看:416
本文介绍了获取CPU编号,主板编号,硬盘编号的C ++源代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要c ++源代码来获取CPU号,主板号,硬盘号

I need c++ source code to get CPU number, motherboard number,HDD number

推荐答案

我不会给你源代码,但你可以使用这些信息自己编写代码:



系统信息功能在这里: http://msdn.microsoft.com/en-us/library/ms724953(VS.85).aspx [ ^ ]



例如,您可能对 GetSystemInfo() [ ^ ] API,它为您提供 SYSTEM_INFO [< a href =http://msdn.microsoft.com/en-us/library/ms724958(v=vs.85).aspx target =_ blanktitle =New Window> ^ ]结构,它将包含您需要的一些信息。
I won't give you source code, but you can use this information to write the code yourself:

The system information functions are here: http://msdn.microsoft.com/en-us/library/ms724953(VS.85).aspx[^]

For instance, you might be interested in the GetSystemInfo()[^] API, which gives you with a SYSTEM_INFO[^] structure, which will have some of the information you need.


自问题发布以来很长时间但是这里是一些答案如果你将在Linux上



主板 id可以从以下位置检索:/ sys / class / dmi / id / board_serial cpuinfo
运行命令的
hdd info / sbin / udevadm info --query = property --name = sda
Long time since the question was posted but here's some answers if you would be on Linux

motherboard id can be retrieved from: /sys/class/dmi/id/board_serial
cpuinfo from /proc/cpuinfo
hdd info from running the command: /sbin/udevadm info --query=property --name=sda


// CPU序列号

#include< stdio.h> ;



void getPSN(char * PSN)

{

int varEAX,varEBX,varECX,varEDX;

char str [9];

//%eax = 1给出eax中最重要的32位
__asm__ __volatile __(cpuid: = a(varEAX),= b(varEBX),= c(varECX),= d(varEDX):a(1));

sprintf( str,%08X,varEAX); //i.e。 XXXX-XXXX-xxxx-xxxx-xxxx-xxxx

sprintf(PSN,%C%C%C%C-%C%C%C%C,str [0],str [ 1],str [2],str [3],str [4],str [5],str [6],str [7]);

//%eax = 3给出最少edx和ecx中有效64位[如果PN已启用]

__asm__ __volatile __(cpuid:= a(varEAX),= b(varEBX),= c(varECX ),= d(varEDX):a(3));

sprintf(str,%08X,varEDX); //i.e。 xxxx-xxxx-XXXX-XXXX-xxxx-xxxx

sprintf(PSN,%s-%C%C%C%C-%C%C%C%C,PSN,str [ 0],str [1],str [2],str [3],str [4],str [5],str [6],str [7]);

sprintf(str ,%08X,varECX); //i.e。 xxxx-xxxx-xxxx-xxxx-XXXX-XXXX

sprintf(PSN,%s-%C%C%C%C-%C%C%C%C,PSN,str [ 0],str [1],str [2],str [3],str [4],str [5],str [6],str [7]);

}



int main()

{

char PSN [30]; // 24个十六进制数字,5' - '分隔符和一个'\0'

getPSN(PSN);

printf(%s \ n, PSN); //与之比较:lshw | grep序列:

返回0;

}
//CPU serial number
#include <stdio.h>

void getPSN(char *PSN)
{
int varEAX, varEBX, varECX, varEDX;
char str[9];
//%eax=1 gives most significant 32 bits in eax
__asm__ __volatile__ ("cpuid": "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));
sprintf(str, "%08X", varEAX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx
sprintf(PSN, "%C%C%C%C-%C%C%C%C", str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
//%eax=3 gives least significant 64 bits in edx and ecx [if PN is enabled]
__asm__ __volatile__ ("cpuid": "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (3));
sprintf(str, "%08X", varEDX); //i.e. xxxx-xxxx-XXXX-XXXX-xxxx-xxxx
sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
sprintf(str, "%08X", varECX); //i.e. xxxx-xxxx-xxxx-xxxx-XXXX-XXXX
sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
}

int main()
{
char PSN[30]; //24 Hex digits, 5 '-' separators, and a '\0'
getPSN(PSN);
printf("%s\n", PSN); //compare with: lshw | grep serial:
return 0;
}


这篇关于获取CPU编号,主板编号,硬盘编号的C ++源代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆