11.02

任务目标 // 进度:

  • SMBIOS学习,编写DOS下小工具,读取SMBIOS表信息,并解析TYPE0/TYPE1/TYPE4/TYPE7/TYPE17等Type信息。

工作结果:

学习笔记:

DMI(Desktop Management Interface )

SMBIOS(System Management BIOS)

EPS(Entry Point Structure)

1.访问方式
1.1.通过即插即用功能接口访问 SMBIOS 结构,这个在 SMBIOS2.0 标准里定义了,从 SMBIOS 2.1 开始这个访问方法不再被推荐使用。
1.2.基于表结构的方法,表内容是 table entry point 的数据,这个访问方法从 SMBIOS 2.1 以后开始被使用,从 2.1 开始,以后的版本都推荐使用这种访问方式。在 2.1 版本中允许支持这两种方法中的任意一种和两种都支持,但在 2.2 以后的版本,必须支持方法 2 。在最新的 2.7.0 版中第一种方法已经废弃。

​ 1.2.1.访问 SMBIOS EPS表
​ 对于非 EFI 的系统,访问 SMBIOS EPS 表的操作过程如下:

 1.从物理内存 0x000F0000-0x000FFFFF 之间寻找关键字 “ _SM_” 。("_"对应地址0x000f05e0)2.找到后再向后 16 个字节,看后面 5 个 BYTE 是否是关键字 “_DMI_” ,如果是, EPS 表即找到。

​ 进入EPS表和进入数据表:

 1.EPS-入口结构表 (Entry Piont Structure)(输入00H地址0x000f05e0)2.SMBIOS数据表(18H)(输入18H地址0xb7eea)

​ EPS表:

00H SM
10H DMI
16H 数据表长度
18H 数据表地址
1CH 数据表结构的总数

​ SMBIOS数据存储结构表由两部分构成:格式区,字符串区

注:结构 01H 处标识的结构长度仅是格式区域的长度,字符串区域的长度是不固定的。有的结构有字符串区域,有的则没有。

Type 0 BIOS Information BIOS信息
Type 1 System Information 系统信息
Type 7 Cache Information 高速缓存信息
Type 4 Processor Information 处理器信息
Type 17 Memory Device 存储设备

处理器信息 (Type 4) :插座指示、处理器类型、处理器家族、制造商、 ID 、版本、电压伏特数、外部时钟频率 (MHz) 、最大速率 (MHz) 、当前速率、状态、处理器升级、 L1 级缓存信息结构的句柄、 L2 级缓存信息结构的句柄、 L3 级缓存信息结构的句柄、序列号、资产标签、部件号码、内核个数、激活的内核个数、线程个数、处理器特征、处理器家族 2 。

高速缓存信息 (Type 7) :插座指示、缓存配置、最大缓存容量、已安装的容量、支持的 SRAM类型、当前 SRAM 类型、缓存速率、纠错类型、系统缓存类型、关联性。

存储设备 (Type 17) : 用于描述物理存储器阵列中的单个存储设备。在物理存储器阵列中的句柄、存储错误信息句柄、存储总宽度、数据宽度、存储容量、形体尺寸、设备集、设备定位 器、记忆槽定位器、存储器类型、类型额外细节、速率、制造商、序列号、资产标签、部件号码、属性标志、已扩展的容量、已配置的存储时钟速率。

每个字符串都以 00H 作为结束标志。如果我们要找下一个 TYPE ,因为最后一个字符串以 00H 结尾,而整个字符区域又以 00H 结尾,故只要在字符串区域找到连续的0000H 即可。

typedef unsigned short ushort;
typedef unsigned char uchar;
typedef struct {uchar Type;uchar Length;ushort Handle;
} HEADER;
ushort FindStructure(char* TableAddress, ushort StructureCount, uchar Type) {ushort i, handle;uchar lasttype;i=0;handle=0xFFFF;/* 从整个SMBIOS的首个结构开始搜索指定类型的第一个结构 */while(i<StructureCount && handle==0xFFFF) {i++;lasttype=((HEADER *)TableAddress)->Type; /* 获取当前结构的类型 */if(lasttype==Type) {handle=((HEADER *)TableAddress)->Handle;}else {/* 移动到当前结构的字符串区域处 */TableAddress+=((HEADER *)TableAddress)->Length;while(*((int *)TableAddress)!=0) /* 移动到字符串区域的结尾符0000h处 */TableAddress++;TableAddress+=2;  /* 跳过0000h,移动到下一结构起始处 */}}return handle;
}

程序读取信息的步骤可以概括为:通过GUID将EPS表找到,根据EPS表的TableAddress找到所有Type的起始地址,然后遍历Type表,找到要读取的Type读取相应信息。其中遍历每一个Type表并返回每一个Type的起始地址是最关键的部分,代码中由函数LibGetSmbiosString 实现。


PCH(Platform Controller Hub):Intel集成南桥

MCH(Memory Control Hub):intel北桥

翻页:

​ PauseBreak+enter

​ /p

​ > name.txt
​ edit name.txt

SMBIOS-初识

SMBIOS介绍(1):概述

SMBIOS介绍(2):结构表

SMBIOS介绍(3):实现

读取SMBIOS第二个Type和所有Type41

心情感悟:

11.02-smbios相关推荐

  1. qgc地面站如何导入离线地图_QGC地面站工具下载 QGroundControl(QGC地面站软件) v2018.11.02 免费安装版 下载-脚本之家...

    QGroundControl是非常实用,由dronecode推出的一款专业的地面站软件,这款软件为任何支持MAVLink的无人机提供全面的飞行控制和任务规划,而且同样也为ArduPilot或PX4 P ...

  2. Interview:算法岗位面试—11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录

    ML岗位面试:11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 Interview:算法岗位面试-11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 导读:预约考点的 ...

  3. 每日学习小记 11/02

    1. 移动前端开发头部标签 1 <!-- Retina iPhone 和 Retina iTouch,114x114 像素,可以没有,但推荐有 --> 2 <link rel=&qu ...

  4. star ccm+ 11.02安装

    STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作 2 正式安装 3 软件破解 4 软件测试 1 ...

  5. O2OA V4 Build 11.02 发布! 全功能分布式企业信息化办公平台

    项目主页 : https://www.oschina.net/p/o2oa 下载地址 : http://www.o2oa.io v4 build 11.02更新内容:  新增功能:     1.[内容 ...

  6. 11.02 长者题解

    11.02 校内模拟赛 题 长者题解和自身体会 #include<bits/stdc++.h> using namespace std; typedef long long ll; typ ...

  7. jozj5945. 【NOIP2018模拟11.02】昆特牌

    5945. [NOIP2018模拟11.02]昆特牌 Description 作为一个资深OIer,你被邀请到位于波兰的CDPR总部参观.但没想到你刚一到就遇到了麻烦.昆特牌的数据库发生了故障.原本昆 ...

  8. 中鸣教育计算机二级,中鸣机器人教育套装使用指南2012.11.02.pdf

    鸣机器人教育套装使用指南 -- 钟 毅 .认识硬件 1.机器人的积木件 1.1 积木的分类 3.5.7.9.11.15 直梁 拐角梁 双向衔接件 转角点衔接件 齿轮 滑轮.轴连接件 板件 链接轴 1. ...

  9. 学习杂记0001:2019.11.02

    av47288166:刚用Python写了个扫雷脚本,8s完成游戏 Automatic-minesweeping-master 代码分析 代码来自 https://github.com/buaazyc ...

  10. Linux一句话精彩问答--2008/11/02更新--20071212pdf版本下载

    进入"linux一句话问答2007年12月12日PDF版下载"页面 编者按:鉴于目前中国Linux的发展现状,90%以上的问题都可以用一句话来回答,这便是本文的初衷.欢迎大家添加自 ...

最新文章

  1. PX4编写msg文件
  2. java linkedlist排序_用Java对用户定义对象的LinkedList进行排序
  3. 浅析Linux Native AIO的实现
  4. javascript 比量str今天的日期是,参数diff
  5. Maximum.TV 发布西班牙语Silverlight TV网站
  6. 谷歌和GitHub 联手提出新方法,提振软件供应链安全
  7. 架构师必备之最全最系统的 Android 界面性能调优资料
  8. springboot处理静态资源
  9. 服务器是怎样进行中断的,企业如何减少服务器中断风险
  10. Nitrux 图标主题与 Faenza 一样的设计 – 漂亮
  11. SVN添加账户及删除MyEclipse中记住的SVN账户名密码信息
  12. 2018上半年最有价值科技类的微信公众号有哪些?
  13. 学习BoundsChecker
  14. 防火墙、WAF、IPS、IDS、堡垒机的区别
  15. Hadoop安装及部署
  16. Zhong__pymysql基本使用
  17. 【文末送书】2022世界杯冠军预测,机器学习为你揭晓
  18. 王道计算机网络第三章
  19. 官宣:这所“双一流”大学更换校徽
  20. SAP FI 系列 (034) - 应收票据冲销

热门文章

  1. C# FTP操作工具
  2. @Autowired注入、构造器注入、setter注入的使用方式?区别?
  3. android 壁纸服务,Android-Service实现手机壁纸自动更换
  4. 记微服务架构实战学习笔记
  5. 【转】关于软件外包企业如何建立员工归属感的问题
  6. LXD 2.0系列之二:LXD安装和配置
  7. IIS 元数据访问失败
  8. 2015年Android作品集
  9. 将虚拟机VMware从C盘移动到E盘
  10. java实现后台直接生成二维码图片并直接上传到七牛云上面