x86软件中需要读取当前的系统信息,区别出不同的系统类型,以实现不同的功能。如:A、B、C、D等等。前面也有通过桥片PCI DEVICE ID来判断的方法,但是这种方法碰到桥片相同但是系统功能不同方法就无能为力了。现有的代码已经实现,研究了一下原理,整理了一下相关资料。

1、SMBIOS概念

SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。

简单的说SMBIOS是x86 bios遵循的一个标准,bios把一些硬件信息按照一定的标准格式保存在内存当中,应用软件可以通过读出这些数据来获取想要的信息。

2、SMBIOS读取方法

bios一般把smbios信息保存在物理内存000F0000h 至 000FFFFFh之间,BIOS内容可以通过文件”/dev/mem”读取。

  • ⑴打开”dev/mem”文件
  • ⑵通过mmap(),将文件的内容映射到进程的空间,并通过memcpy()将BIOS内容考到相应缓冲区。之所以不用文件的read(),而用mmap()的原因是后者能解决在IA-64机时read()所遇到的问题。
  • ⑶通过SMBIOS的规范,读出内容。

3、SMBIOS信息解析

- ⑴首先通过找读出的一段数据内容中的锚字符”SM“找到smbios的entry point。

  • ⑵再通过entry point中指定的地址和长度,找到对应smbios的信息表项,我们读系统名称信息的表项为其中的type2。

4、实例:

目前DMI有多个版本,大多为2.0、2.1、2.2,对于我们主板BIOS中所使用的DMI版本,可使用WINXX自带的DEBUG程序来测试。

在WINXX的MS-DOS模式下,键入DEUBG。
c:\debug
-s f000:0 ffff '_SM_'(SM必须大写)  回车
f000:13e0
如果显示了一个地址, 则此 BIOS 支持至少 DMI 2.1. 如果没有, 再试试下面的
c:\debug
-s f000:0 ffff '_DMI_'(DMI必须大写) 回车
f000:13e0
(如果显示了一个地址, 则此 BIOS 仅支持 DMI 2.0. 如果没有, 那么 连 DMI 2.0 都不支持)

确认 BIOS 支持 DMI 2.10 或 DMI 2.20, 进行以下操作:

 c:\debug
-d f000:13e0   回车(f000:13e0 是你上面的得到的结果,每个人不同哦)
具体以你的主板BIOS为准。这里以技嘉6OXE F7版BIOS为便。请参考以下屏幕图片:
02 02 意味着 DMI 2.20
02 01 意味着 DMI 2.10

1.6 x86读取smbios信息相关推荐

  1. UEFI 基础教程 (十一) - Shell下读取SMBIOS信息

    一. 编写源代码 编写UEFI Application 代码C:\edkii\OvmfPkg\MyHelloWorldSMBios\MyHelloWorldSMBios.c, EFI_STATUS E ...

  2. Linux下读取smBIOS源码,Linux下读取SMBIOS信息

    来源:http://www.linuxde.net/2013/02/12499.html uefi shell下使用smbiosview linux下使用dmidecode 或者amidecode(a ...

  3. linux查询bois信息,Linux下读取SMBIOS信息

    来源:http://www.linuxde.net/2013/02/12499.html uefi shell下使用smbiosview linux下使用dmidecode 或者amidecode(a ...

  4. 基于Android NFC传感器读取身份证信息demo

    摘要:通过导入开发包sdk开发基几Android NFC设备读取身份证信息 1. 开发条件: 1)鱼住往来科技的身份验证sdk :下载地址:https://www.yzfuture.cn/views/ ...

  5. c#使用WPD读取便携式设备信息一(枚举设备、连接设备及读取设备信息)

    手机或其他电子设备通过USB插入电脑上,并且以MTP(媒体传输协议)方式连接时,可在"计算机"中看到类似计算机盘符的便携式设备文件夹显示,但是这并不是一个计算机盘符,并不能通过常规 ...

  6. 读取SMBIOS第二个Type和所有Type41(根据SMBIOS 3.0 (64-bit) Entry Point)

    64位的SMBIOS EPS表可以根据SMBIOS 3.x GUID (SMBIOS3_TABLE_GUID, {F2FD1544-9794-4A2C-992EE5BBCF20E394})找到,这在所 ...

  7. 如何定制虚拟机smbios信息

    (文章来自作者维护的社区微信公众号[虚拟化云计算]) (目前有两个微信群<kvm虚拟化>和<openstack>,扫描二维码点击"云-交流",进群交流提问) ...

  8. dedecms部分文章出现读取附加信息出错的解决办法

    问题: 估计是新版本开发的时候,没有考虑旧版,文章内容为空的新闻,新版不在允许文章内容为空的新闻,这样旧版的内容为空的新闻升级后将无法再编辑.  解决: 你可以对如下文件进行如下修改: article ...

  9. 一文读懂马斯克展示脑机接口:硬币大小芯片植入猪脑 实时读取猪脑信息

    视频:马斯克展示脑机接口设备无线实时读取猪脑信息,时长约7分10秒 来源:腾讯科技 马斯克展示了一群实验猪.这些实验猪之前曾接受过外科手术,由手术机器人将最新版的Neuralink设备植入大脑. 这些 ...

最新文章

  1. 异步系统接口调用流程图
  2. iOS开发笔记 8、真机调试和发布软件
  3. 静态路由_在Android中模拟静态方法:让我们总结一下
  4. Android 国际化问题
  5. Delphi中点击网页弹出的Alert对话框的确定按钮
  6. 第四周课程总结实验报告二
  7. amd860k能装黑苹果吗_想用黑苹果?这些硬件不要买(内附支持列表)
  8. Win10的 IntelliJ idea中log4j2控制台中文乱码的几种处理方法
  9. wince只运行一次应用程序
  10. matlab2016 win10,新手,win10电脑上面装matlab2016a还是b好呢?64位操作系统
  11. 菜鸟笔记——html整理
  12. 类人猿手游内存技术教程
  13. linux系统改键盘系统,Linux 修改键盘设置
  14. 什么是EDI报文标准?
  15. DELPHI盒子上的RAD studio 2010安装过程及体验(超多图)
  16. Ajax详解第六篇(jQuery实现Ajax)
  17. 二叉树遍历【递归非递归】
  18. SQL的多条件查询语句
  19. easyUI折叠表格-默认展开操作-去除扩展符号(+)-清除滚轮--实例加效果图
  20. mitmproxy 抓包神器-1.环境准备与抓取浏览器请求

热门文章

  1. RISC-V 麻雀 D1s Buildroot 基本笔录
  2. ios5.1.1旧版软件下载_将夜记老版本下载-将夜记旧版下载v1.1.0 安卓版
  3. Excel输入不符合有效性规则的内容后如何设置错误提示
  4. PAT甲级真题(结构体排序)——1012. The Best Rank (25)
  5. Java中可变与不可变类型
  6. HM解码(一) :提取一个NALU信息
  7. 自媒体文章质量如何AI知道,这是微信的自动评估算法
  8. 传奇私服制作小地图的知识详解
  9. 配置 Site-to-Site and Extranet ***
  10. 天创速盈:关于拼多多店铺层级,你了解多少?