c语言 如何实现查看cpu 序列号。

zhouxingxing 发布于 2012/07/11 18:28
阅读 2K+
收藏 1

刚开始工作,今天要写个小代码 ,实现下查看cpu序列号,本来想用ioctl这个函数,可是发现,虽然它可以用来查看硬盘的序列号,网卡地址等等,但是好像不支持查看cpu系列号,在网上找了找,需要用cpuid指令,写内联函数,我想知道,ioctl不能实现么? 有么有么 兄弟知道

加载中
0
中山野鬼
中山野鬼
用特殊汇编指令应该是能读出来的。除非OS把这个指令锁了。就是OS启动时配置CPU的状态位,把这个内容给锁了。 如果INTEL的片子,你查下INTEL的相关开发文档。应该有的。
helloworld_go
helloworld_go
回复 @中山野鬼 : 这个函数是用来做readfile,writefile以外的事情的。
中山野鬼
中山野鬼
回复 @zhouxingxing : ioctl就不是标准库函数,只是编译器提供的库函数,我没研究过这个函数。除非不用编译器提供的库函数我就很SB,否则那些函数我当无视。
zhouxingxing
zhouxingxing
嗯嗯,看了汇编的代码,也不难,但是,想知道,ioctl是让程序从用户态陷入到内核态,应该可以实现,还是说函数本身只是实现了部分功能。
0
helloworld_go
helloworld_go
cpuid在用户态就可以用,不需要进入内核态。ioctl的功能哪这个没关系的。ioctl要你预先有个设备有取cpuid的功能才行。
helloworld_go
helloworld_go
ioctl的作用就是你写个驱动,然后用ioctl与其通信。
zhouxingxing
zhouxingxing
就是说ioctl没有这个功能呗
0
firstrose
firstrose

ioctl是用来做in/out的,没法取cpuid

顺便说一下,现在已经没有真正的cpu序列号了,除非你有p3

cpuid出来的只是cpu的型号和features

0
宏哥
宏哥

引用来自“中山野鬼”的答案

用特殊汇编指令应该是能读出来的。除非OS把这个指令锁了。就是OS启动时配置CPU的状态位,把这个内容给锁了。 如果INTEL的片子,你查下INTEL的相关开发文档。应该有的。
传说为了保护隐私, 芯片把这个锁了.
0
逝水fox
逝水fox

http://wenku.baidu.com/view/f7fc9dc24028915f804dc2c3.html

大约在85页左右,有获取CPUID信息的代码,以前读书的时候在VC6上写来试过倒是能取到,现在不知道是什么情况了

0
n
nose
都是汇编,难道就没有封装好的函数么?
0
雅各宾
雅各宾

引用来自“firstrose”的答案

ioctl是用来做in/out的,没法取cpuid

顺便说一下,现在已经没有真正的cpu序列号了,除非你有p3

cpuid出来的只是cpu的型号和features

正解!美国法律处于保护隐私的需要,禁止CPU厂商刻入CPU Serial NO

现在搞的什么CPUID就是CPU型号,不是Serial NO

返回顶部
顶部