导航:首页 > 编程系统 > linuxc获取cpu序列号

linuxc获取cpu序列号

发布时间:2023-03-17 17:19:07

Ⅰ C语言 编程实现获取cpu信息

耐心看看啊,运行通过啦,希望对你有帮助啊!
#include<stdio.h>
unsigned int veax;
unsigned int vebx;
unsigned int vedx;
unsigned int vecx;
//执行CPUID指令
void cpuid(unsigned int veax1)
{

_asm{

mov eax,veax1

cpuid

mov veax,eax

mov vebx,ebx

mov vecx,ecx

mov vedx,edx

}
}

//做移位操作,把寄存器中的ASCII码,以字符形式输出
void LeftMove(unsigned int var)
{
printf("%c",var);
for(int i=0;i<3;i++)
{
var=(var>>;
printf("%c",var);
}
}

//做移位操作,把寄存器中的值以“%d”形式输出
void LM(unsigned int var)
{
printf("%d",var);
for(int i=0;i<3;i++)
{
var=(var>>;
printf("%d",var);
}
}

//得到CPU的生产厂商(当EAX值为0时),依次存放在EBX,EDX,ECX中
void getCpuName()
{
cpuid(0);
LeftMove(vebx);
LeftMove(vedx);
LeftMove(vecx);
printf("\
";
}

//得到CPU的商标,当EAX中的值为0x80000003和0x80000004时分别返回16个字符,组成商标
//依次存放在EAX,EBX,ECX,EDX中
void getCpuBrand()
{
for(int j=0;j<2;j++)
{
cpuid(0x80000003+j);
LeftMove(veax);
LeftMove(vebx);
LeftMove(vecx);
LeftMove(vedx);
}
printf("\
";
}

//获得CPU的特性,参数是eax = 1,返回值放在edx和ecx,通过验证edx或者ecx的某一个bit,
//可以获得CPU的一个特性是否被支持。比如说,edx的bit 32代表是否支持MMX,
//edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed sted。
void getCpuFeature()
{//由于特性太多,无法一一编写,需要的时候再写,方法是一样的。

}

//获得CPU序列号,获得序列号需要两个步骤,首先用eax = 1做参数,返回的eax中存储序列号的高两个word
//用eax = 3做参数,返回ecx和edx按从低位到高位的顺序存储前4个WORD。
void getCpuSeris()
{
cpuid(1);
LM(veax);
cpuid(3);
LM(vecx);
LM(vedx);
printf("\
";
}
void main()
{
getCpuName();
getCpuBrand();
getCpuSeris();
}

Ⅱ 如何获取cpu序列号

一、CPU都有一个唯一的ID号,称CPUID,是在制造CPU的时候,由厂家置入到CPU内部的回。

二、查看方法:答

1、右点开始,选运行,并输入CMD。

三、作用和意义:

由于CPU外在的所有标记、符号,都是可以人为打磨,而CPUID却是终身不变的,只能用软件读出ID号;因此,利用这个原理,CPU ID工具可以显出CPU的确切信息,包括移动版本、主频、外频、二级缓存等关键信息,从而查出超频的CPU,并且醒目地显示出来。

Ⅲ 如何用C语言获取硬盘或主板或CPU的序列号

获取CPU序列号要使用 汇编指令

比较麻烦

static DWORD g_eax; // 存储返回的eax
static DWORD g_ebx; // 存储返回的ebx
static DWORD g_ecx; // 存储返回的ecx
static DWORD g_edx; // 存储返回的edx

void Executecpuid(DWORD veax)
{
asm("cpuid"
:"=a"(g_eax),
"=b"(g_ebx),
"罩耐=c"(g_ecx),
"=d"(g_edx)
:"a"(g_eax));
}
int isSupport;
void GetSerialNumber(WORD nibble[6])
{
Executecpuid(1); // 执行物型春cpuid,参数为 eax = 1
isSupport = g_edx & (1<<18); // edx是否租盯为1代表CPU是否存在序列号
if (FALSE == isSupport) // 不支持,返回false
{
return ;
}
Executecpuid(3); // 执行cpuid,参数为 eax = 3
memcpy(&nibble[4], &g_eax, 4); // eax为最高位的两个WORD
memcpy(&nibble[0], &g_ecx, 8); // ecx 和 edx为低位的4个WORD

}

linux下怎么用c获取硬盘物理序列号

1、在Linux系统中通过C语言获取硬盘序列号,可以借助于ioctl()函数,该函数原型如下:

intioctl(intfd,unsignedlongrequest,...);
ioctl的第一个参数是文件标识符,用open()函数打开设备时获取。
ioctl第二个参数为用于获得指定文件描述符的标志号,获取硬盘序列号,一般指明为HDIO_GET_IDENTITY。
ioctl的第三个参数为一些辅助参数,要获取硬盘序列号,需要借助于structhd_driveid结构体来保存硬盘信息,该结构体在Linux/hdreg.h中,structhd_driveid的声明如下
structhd_driveid{
unsignedshortconfig;/lotsofobsoletebitflags*/
unsignedshortcyls;/*Obsolete,"physical"cyls*/
unsignedshortreserved2;/*reserved(word2)*/
unsignedshortheads;/*Obsolete,"physical"heads*/
unsignedshorttrack_bytes;/*unformattedbytespertrack*/
unsignedshortsector_bytes;/*unformattedbytespersector*/
unsignedshortsectors;/*Obsolete,"physical"sectorspertrack*/
unsignedshortvendor0;/*vendorunique*/
unsignedshortvendor1;/*vendorunique*/
unsignedshortvendor2;/*Retiredvendorunique*/
unsignedcharserial_no[20];/*0=not_specified*/
unsignedshortbuf_type;/*Retired*/
unsignedshortbuf_size;/*Retired,512byteincrements
*0=not_specified
*/
……
};


2、源代码如下

#include<stdio.h>
//ioctl()的声明头文件
#include<sys/ioctl.h>
//硬盘参数头文件,hd_driveid结构声明头文件
#include<linux/hdreg.h>
//文件控制头文件
#include<sys/fcntl.h>
intmain()
{
//用于保存系统返回的硬盘数据信息
structhd_driveidid;
//这里以第一块硬盘为例,用户可自行修改
//用open函数打开获取文件标识符,类似于windows下的句柄
intfd=open("/dev/sda",O_RDONLY|O_NONBLOCK);
//失败返回
if(fd<0){
perror("/dev/sda");
return1;}
//调用ioctl()
if(!ioctl(fd,HDIO_GET_IDENTITY,&id))
{
printf("SerialNumber=%s ",id.serial_no);
}
return0;
}

编译完成后,执行效果如下:

Ⅳ linux如何查看服务器序列号

1、单独查看服务器的序列号
[root@localhost ~]# dmidecode -t system | grep 'Serial Number'
Serial Number: 2102310YPY10J30*****

2、单独查看服务器型号
[root@localhost ~]# dmidecode | grep "Proct"
Proct Name: PowerEdge R730
Proct Name: 0WCJNT

3、统一查看服务器SN序列号和型号
[root@localhost ~]# dmidecode | grep "System Information" -A9 | egrep "Manufacturer|Proct|Serial"
Manufacturer: Huawei 厂商
Proct Name: RH2288 V3 型号
Serial Number: 2102310YPY10J3****** 序列号

4、查看内存条信息及使用情况(内存的插槽数,已经使用多少插槽.每条内存多大,下图为16个内存插糟,用了12个插槽,每根内存条16G)《Linux就该这么学》一起学习linux
[root@localhost ~]# dmidecode -t memory | grep Size
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: No Mole Installed

Ⅵ 银河麒麟系统查看cpu序列号

银河麒麟系统查看cpu序列号基衫步骤:
1、在左侧树状菜单点击操作系统。
2、在右侧可以清楚的看到产品密钥,后慧锋源面就是麒麟系统的授权码了。
3、登录到linux服务器执行lsbrelease-a命令,即可查看所有版本信息,授权码。
4、登录到linux执行cat,etc,issue(切记前态cat后要空一格)即可看到版本信息。

Ⅶ hp linux如何查看设备序列号信息

当我们需来要获取机器自硬件信息时,可使用linux系统自带的dmidecode工具进行查询。例:下面的Serial Number信息。

[root@az01node021 ~]# dmidecode -t 1
# dmidecode 2.11
SMBIOS 2.7 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Proct Name: PowerEdge R720xd
Version: Not Specified
Serial Number: FJ2SHY1
UUID: 4C4C4544-004A-3210-8053-C6C04F485931
Wake-up Type: Power Switch
SKU Number: SKU=NotProvided;ModelName=PowerEdge R720xd
Family: Not Specified

阅读全文

与linuxc获取cpu序列号相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接