求救!!!vc中win98下如何取得BIOS序列号?

wangwolue 2003-12-28 01:10:57
求救!!!vc中win98下如何取得BIOS序列号?不要win2k的。
///////////////////////////
AMI的序列号地址在0x000ff478,Award的序列号地址在0x000fec71,而Phoenix的序列号不太明确,可能是0x000f6577、0x000f7196、0x000f7550中的一个,

以下这个程序什么都没有显示。我的是Award。
///////////////////////
#include <stdio.h>

main()
{

char *pSN=(char *)0x000fec71;
printf("%s\n",pSN);

}
...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwolue 2003-12-28
  • 打赏
  • 举报
回复
谢谢。
yintongshun 2003-12-28
  • 打赏
  • 举报
回复
不同主板厂商的ID地址可能不同,先取得Name判断一下该取哪个地址来得到ID
qfly 2003-12-28
  • 打赏
  • 举报
回复
CString bname, bcopy, bdate, bserial;

bname.Format("%s",(char*)(0xFE061)); // Bios name
bcopy.Format("%s",(char*)(0xFE091)); // Bios copyright
bdate.Format("%s",(char*)(0xFFFF5)); // Bios date
bserial.Format("%s",(char*)(0xFEC71)); // Bios serial number
wangwolue 2003-12-28
  • 打赏
  • 举报
回复
老大,你上面取的是 CPU 的序列号,不是BIOS序列号。
StdAfx 2003-12-28
  • 打赏
  • 举报
回复
应该使用内嵌汇编来处理:
__asm
{
mov eax,01h;
cpuid;
}
现在eax里面保存的就是最前面的四位16进制数。

__asm
{
mov eax,03h;
cpuid;
}
现在edx里面保存的是中间的四为16进制数,ecx里面保存的是最后的四位16进制数。

请参考下面的文章:
http://developer.intel.com/design/pentiumiii/applnots/245125.htm

注意,我指的是intel,但我想这应该适合别的常见bios

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧