开发者社区> 问答> 正文

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

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

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

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

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

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

    ######

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

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

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

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

    ######都是汇编,难道就没有封装好的函数么?######

    引用来自“firstrose”的答案

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

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

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

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

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

    2020-06-09 22:25:49
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RDS SQL Server CPU高使用率性能优化 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载