CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

p3以上的cpu就支持cpuid了,在delphi 中如何取出cpuid呢?

楼主tsj68(tsj)2003-10-03 12:14:44 在 Delphi / VCL组件开发及应用 提问

如题. 问题点数:100、回复次数:10Top

1 楼gardenyang(天高云淡)回复于 2003-10-03 12:53:37 得分 10

function   GetCPUID:   TCPUID;   assembler;   register;  
  asm  
      PUSH         EBX                   {Save   affected   register}  
      PUSH         EDI  
      MOV           EDI,EAX           {@Resukt}  
      MOV           EAX,1  
      DW             $A20F               {CPUID   Command}  
      STOSD                               {CPUID[1]}  
      MOV           EAX,EBX  
      STOSD                               {CPUID[2]}  
      MOV           EAX,ECX  
      STOSD                               {CPUID[3]}  
      MOV           EAX,EDX  
      STOSD                               {CPUID[4]}  
      POP           EDI                   {Restore   registers}  
      POP           EBX  
  end;  
   
  function   GetCPUVendor:   TCPUVendor;   assembler;   register;  
  asm  
      PUSH         EBX                   {Save   affected   register}  
      PUSH         EDI  
      MOV           EDI,EAX           {@Result   (TVendor)}  
      MOV           EAX,0  
      DW             $A20F               {CPUID   Command}  
      MOV           EAX,EBX  
      XCHG         EBX,ECX           {save   ECX   result}  
      MOV           ECX,4  
  @1:  
      STOSB  
      SHR           EAX,8  
      LOOP         @1  
      MOV           EAX,EDX  
      MOV           ECX,4  
  @2:  
      STOSB  
      SHR           EAX,8  
      LOOP         @2  
      MOV           EAX,EBX  
      MOV           ECX,4  
  @3:  
      STOSB  
      SHR           EAX,8  
      LOOP         @3  
      POP           EDI                   {Restore   registers}  
      POP           EBX  
  end;  
  Top

2 楼gardenyang(天高云淡)回复于 2003-10-03 12:54:21 得分 10

TCPUID   =   array[1..4]   of   Longint;  
      TCPUVendor   =   array[0..11]   of   Char;Top

3 楼tsj68(tsj)回复于 2003-10-03 13:15:05 得分 0

谢谢,这个我试了,但是如果cpu型号相同,不同的电脑则会得出一样的结果.我想知道如何得到每个cpu的唯一id.Top

4 楼jpyc(九品-沉默)回复于 2003-10-03 15:14:21 得分 25

看看这个:  
  http://218.56.11.178:8020/web/index.aspx  
   
  -》下载基地-》例程-硬件控制-》内存CPU硬盘检测  
   
  可能和上边的差不多。试试吧Top

5 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-10-03 15:19:41 得分 25

process   number   因为隐私权的问题已近去掉了,只有PIII才有,而且大部分主板都把它屏蔽了。  
   
  Top

6 楼web700(*FS*的小狗腿子)回复于 2003-10-03 15:49:21 得分 5

高人太多Top

7 楼gardenyang(天高云淡)回复于 2003-10-03 20:29:16 得分 0

不会吧,这个程序我正在用,在不同的机器上面得出的cpu的id是不同的,把同一个cpu放在不同的机器上,得出的id是一样的,还需要什么唯一id呢?  
  这个本身就是全球唯一的id啊!Top

8 楼ehom(?!)回复于 2003-10-03 21:02:03 得分 20

那就完全是你理解错误了,CPUID是什么?它其实也是条指令,通过该指令返回CPU的各种相关信息而已,同一类型的CPU,它的描述信息自然也完全相同.  
   
  也没有必要通过  
  DW   $A20F  
  去插入字去实现该指令,这是低版本Delphi中的做法,在D6中直接写CPUID完全没有问题.  
   
  如果是Intel的CPU,并且要取的是PSN的话,如Pazee所说,能取到PSN的只有在早期的P3配合早期的主版,而且用户没有主动关闭它的情况下才能实现,估计这个概率是非常非常的小的.  
   
  另外CPUID指令在486时代以后就有了,而不是P3以后才得到支持的.Top

9 楼gardenyang(天高云淡)回复于 2003-10-03 21:06:06 得分 5

不会吧,难道上面的那个算法的不到唯一的id吗?  
  好想我测试的时候还真的用的不是同一种cpu,当时我测试时忘了这个问题,就在intel   2.0上面和amd2400+上面测试,然后在intel1.8,2.0等上面测试,最后得出不同的id,然后就没在测试,想想好像还真的没有在不同的同一种cpu上面测试过!感谢搂住,上班之后我重新测试我的程序!Top

10 楼gardenyang(天高云淡)回复于 2003-10-03 21:09:02 得分 0

http://expert.csdn.net/Expert/topic/1905/1905459.xml?temp=.9408533Top

相关问题

  • P
  • &*p
  • VC++中的void * p指针转换成DELPHI该怎么写?
  • 用Delphi如何取得CPU号.......
  • Delphi?
  • Delphi?
  • 求急:Delphi中不能调用Dll(PB写的DLL)(运行环境win2000 P+Delphi 5.0)
  • 请教多CPU的情况下的CPUID获取问题
  • Pirm is P!
  • int **p

关键词

  • cpu
  • 测试
  • 指令
  • intel
  • cpuid
  • a20f
  • stosd
  • eax
  • 得出
  • stosb shr

得分解答快速导航

  • 帖主:tsj68
  • gardenyang
  • gardenyang
  • jpyc
  • pazee
  • web700
  • ehom
  • gardenyang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo