CnPack Forum


 
Subject: Cnpack组件包里面的取CPU序列号函数的问题
mestars
新警察
Rank: 1



UID 585
Digest Posts 0
Credits 30
Posts 12
点点分 30
Reading Access 10
Registered 2004-11-29
Location 山东青岛
Status Offline
Post at 2008-6-27 10:59  Profile | Blog | P.M.  | QQ
Cnpack组件包里面的取CPU序列号函数的问题

有没有人用过Cnpack组件包里面的取CPU序列号的函数,我在XP+D7下编译后使用正常,但是在Vista+D2007下编译后运行取不出CPU正确的序列号,取出的都是0000-0000-0000-0000-0000-0000
Top
f00l (色舞天姬)
普通灌水员
Rank: 2



UID 40612
Digest Posts 0
Credits 57
Posts 24
点点分 57
Reading Access 10
Registered 2008-6-30
Status Offline
Post at 2008-6-30 15:14  Profile | Blog | P.M. 
应该是Vista的关系吧0.0
权限问题?
Top
mestars
新警察
Rank: 1



UID 585
Digest Posts 0
Credits 30
Posts 12
点点分 30
Reading Access 10
Registered 2004-11-29
Location 山东青岛
Status Offline
Post at 2008-7-7 09:14  Profile | Blog | P.M.  | QQ
和Vista的权限好像没有关系,因为相同的代码我在XP+D7下编译后的程序,在Vista下运行时可以取到的.有条件的可以测一下,Vista+D7是否有问题.

另外Vista+D2007下我也跟踪了,没有发现异常
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2008-7-7 13:49  Profile | Blog | P.M. 
跟进ASM里头看看,看看cpuid这个指令执行完后取出内容来了没?
如果有内容,而最后全0,说明是俺们代码的问题。
Top
tt031026
新警察
Rank: 1



UID 40669
Digest Posts 0
Credits 10
Posts 3
点点分 10
Reading Access 10
Registered 2008-7-18
Status Offline
Post at 2008-7-18 15:12  Profile | Blog | P.M. 
CPU序列号是一个建立在处理器内部的、唯一的、不能被修改的编号。它由96位数字组成。高32位是CPU ID,用来识别CPU类型。低64位每个处理器都不同,唯一地代表了该处理器。CPU号可以用来识别每一个处理器。为了适应这一新特征,Intel在处理中增加了两条指令(“读取”和“禁止”)和一个寄存器位(模式指定寄存器位:Model Specific Register一“MSR”)。读取指令扩展了CPUID读取指令。当执行读取指令时可以得到96位的处理器序列号。禁止指令可以禁止对处理器序列号的读取。为了配合CPU序列号的读取和禁止,设置了MSR位。当MSR位为“0”时可以读取CPU序列号;当MSR为“1”时只能读取高32位(即CPU ID)而低64位全为零。
Top
 




All times are GMT++8, the time now is 2024-11-25 13:05

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007993 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP