解析SMBIOS言息详解
1.SMBIOS简介
SMBIOS是System Management BIOS 的概念,SMBIOS是主板或系统制造 者以标准格式显示产品管理信息所需遵循的统一规范, 显示有关系统管理 BIOS 主板的信息。 SMBIOS 使您能够出有关的计算机制造商的详细信息、 模型类 型、 序列号和 BIOS 版本、 处理器数量、 物理内存,等等。
对一些特殊制定需求, 如只能针对某一厂商机器使用, 往往需要通过获取 SMBIOS 内容解析得到该信息,添加到代码中,实现该自定义定制需求。本章主要介绍 windows API 获取 SMBIOS 信息的方法
2.SMBIOS吉构信息
从SMBIOS 2.3版本开始,兼容SMBIOS勺实现必须包含以下10个数据表 结构:BIOS信息(Type 0)、系统信息(Type 1)、系统外围或底架(Type 3)、处 理器信息 (Type 4) 、高速缓存信息 (Type 7)、系统插槽 (Type 9) 、物理存储阵列 (Type 16) 、存储设备 (Type 17) 、存储阵列
映射地址 (Type 19) 、系统引导信息 (Type 32) 。
其他的结构表则可根据实际来决定是否需要实现。最新的 SMBIOS 2.7.0版 中定义的所有结构表包括 Type 0-Type 42 ,其中 Type 5 、 Type 6 和 Type 10 已 经废弃。另外还有Type 126和Type 127两个特殊结构表。
BIOS信息(Type 0)、系统信息(Type 1)、基板(或模块)信息(Type 2)、系 统外围或底架 (Type 3)、处理器信息 (Type 4)、存储控制器信息 (Type 5,已废弃)、 存储模块信息 (Type 6,已废弃)、调整缓存信息 (Type 7) 、端口连接器信息 (Type 8)、系统插槽(Type 9)。板载设备信息(Type 10)、OEM字符串(Type 11)、系统 配置选项(Type 12)、BIOS语言信息(Type 13)、组相联(Type 14)、系统事件日 志(Type 15)、物理存储阵列(Type 16)、存储设备(Type 17)、32-bit内存错误 信息(Type 18)、存储阵列映射地址(Type 19)。存储设备映射地址(Type 20)、 内建指针设备(Type 21)、便携式电池(Type 22)、系统重置(Type 23)、硬件安 全(Type 24)、系统电源控制(Type 25)、电压探针(Type 26)、冷却设备(Type 27)、 温度传感器(Type 28)、电流探头(Type 29)。越界远程访问(Type 30)、弓I导完 整性服务(BIS)入口点(Type 31)、系统引导信息(Type 32)、64-bit内存错误信 息(Type 33)、管理设备(Type 34)、管理设
备组件(Type 35)、管理设备门槛数 据(Type 36)、存储信道(Type 37)、IPMI设备信息(Type 38)、系统供电电源(Type
39)。附加信息(Type 40)、板载设备扩展信息(Type 41)、管理控制器主机接口 (Type 42) 0
不活动指示(Type 126)、表格结束指示(Type 127)。
SMBIOS勺大部分结构表数据在CIM模型中都有对应的实现,比如底架信息对 应CIM_Chassis,处理器信息对应 CIM_Processor,内存信息对应 CIM_Memory 等。下面介绍主要的结构表。
1、BIOS信息(Type 0):
位置 | 名称 | 长度 | 描述 |
00h | TYPE号 | 1BYTE | 结构的TYPE号,此处是 0 |
01h | 长度 | 1BYTE | TYPE 0格式区域的长度,一般为 14h,也有13h |
02h | 句柄 | 2BYTE | 指向本结构的句柄 |
04h | Bios厂商信息 | 1BYTE | 此处是bios卖方的信息,可能是 OEMT商名,一般为 01h, 代表紧随格式区域后的字符串区域的第一个字符串 |
05h | BIOS版本 | 1BYTE | BIOS版本号,一般为 02h,代表字符串区域的第二个字符串 |
06h | Bios开始地址 段 | 2BYTE | 用于计算常驻BIOS镜像大小的计算,方法为 |
(10000h-BIOS 开始地址段)X 16 | |||
08h字符串截取20位 | BIOS发布日期 | 1BYTE | 一般为03h,表示字符区第三个字符串 |
09h | BIOS ROM size | 1BYTE | 计算方法为(n + 1)X 64K,n为此处读岀数值 |
0Ah | BIOS特征 | 8BYTE | Bios的功能支持特征,如 PCI,PCMCIA,FLASH等 |
12h | BIOS特征扩展 | 不定 | 从2.4版开始包含两个扩展字节 (12h-13h),以及字节 14h-17h |
14h | BIOS版本主号 | 1BYTE | 若系统不支持此域,则值设为 ffh |
15h | BIOS版本从号 | 1BYTE | 若系统不支持此域,则值设为 ffh |
16h | 内置控制器固件 的版主号 | 1BYTE | 若系统不支持此域,则值设为 ffh |
17h | 内置控制器固件 的版从号 | 1BYTE | 若系统不支持此域,则值设为 ffh |
BIOS特征域表示 BIOS对一些特性的支持情况, Bit 1 和Bit 1 保留,Bit 2 未知,Bit 3
表示本BIOS特征域是否被支持。
Bit 4-Bit 19 分别表示是否支持 ISA、MCA EISA、PCI、PCMCIA PnP、APM BIOS 刷新、 BIOS影像(把BIOS的只读内容拷贝到快一些的内存中)、 VL-VESA、ESCD从CD引导、可选择
的引导、BIOS ROM是否被插装、从 PCMCIA引导、EDD规范。
Bit 20-Bit 25表示对各种型号的软盘支持情况(均为中断 Int 13h),包括NEC9800 1.2MB
软盘、Toshiba 1.2MB 软盘、5.25 ” /360KB 软盘、5.25 ” /1.2MB 软盘、3.5 ” /720KB 软盘、3.5 ” /2.88MB 软盘。
Bit 26-Bit 29 表示是否支持中断 Int 5h(PrintScreen 屏幕截取服务)、Int 9h(8042 键盘
服务)、I nt 14h(串口服务)、I nt 17h(打印机服务)、Int 10h(CGA/M ono 视频服务)
、NECPC-98。
Bit 32:47 保留给BIOS厂商使用
Bit 48:63 保留给计算机系统厂商使用
BIOS特征扩展字节1(偏移12h处)表示对另外一些设备的支持情况, Bit 0-Bit 1分别表示
是否支持 ACPI、USB遗留、AGP I2O引导、LS-120 SuperDisk 引导、ATAPI ZIP驱动器引导、 1394引导、智能电池。
BIOS特征扩展字节2(偏移13h处)表示对一些高级特性的支持情况。 Bit 1-Bit3 表示是否
支持功能键初始化网络服务引导、激活目标内容分发、 UEFI规范。Bit 4 表示SMBIOS表描述的
是一台虚拟机,Bit 5:7 保留。
2、系统信息(Type 1) : SMBIOS实现只关联一个单一的系统实例,并且包含 且只包含一个系统信息结构。
位置 | 名称 | 长度 | 描述 |
00h | TYPE号 | 1BYTE | 结构的TYPE号,此处是 1 |
01h | 长度 | 1BYTE | 格式区域总长度,2.0版为08h,2.1-2.3.4 版为19h,从2.4 版开始为1Bh |
02h | 句柄 | 2BYTE | 指向本结构的句柄 |
04h | 电脑制造商 | 1BYTE | 一般为01h,表示在字符串区域中的编号 |
05h | 产品名称 | 1BYTE | 在字符串区域中的编号 |
06h | 版本号 | 1BYTE | 在字符串区域中的编号 |
07h | 序列号 | 1BYTE | 在字符串区域中的编号 |
09h | UUID | 16BYTE | 通用唯一标识符 |
18h | 唤醒类型 | BYTE | 用来标识导致系统开电启动的事件 |
19h | SKU号 | BYTE | 在字符串区域中的编号, SKU号通常为产品ID或采购订单号 |
1Ah | 产品家族 | 1BYTE | 在字符串区域中的编号 |
UUID为128 bit长,是一个穿越时间和空间的唯一标识符,不需要集中的注 册过程。它的格式在RFC4122有详细的描述,内容比较繁锁,但 SMBIOS并不关 注这个,它只关注字节序。UUID的字节顺序以及在RFC4122中对应域的名字如 下:
time_low :偏移00h处,4BYTE§为时间戳的低位域部分。
time_mid : 04h处,2BYTE§为时间戳的中间域部分。
time_hi_and_version : 06h处,2BYTEs为时间戳的高位域,同时还包含版 本号。
clock_seq_hi_and_reserved : 08h处,1BYTE时钟序列的高位域部分,同 时还包含保留部分。
clock_seq」ow : 09h处,1BYTE时钟序列的低位域部分。
Node 0Ah处,6BYTE§唯一结点标识符。
虽然RFC4122建议对所有域都使用网络字节序(为大端字节序),但 PC工
业界(包括ACPI, UEFI和微软的规范)都对前面的三个域time_low,time_mid, time_hi_and_version 使用小端字节序。同样地,电报格式的编码也被用来描述 SMBIOS规范中的 UUIB 因此,UUID{00112233-4455-6677-8899-AABBCCDDEEFF} 被表示为 33 22 11 00 55 44 77 66 88 99 AA BB CC DD EE FF 。如果 ID 的所 有字节都为FFh,表示当前ID在系统中不存在但可以被设置。如果所有字节都 为00h,表示ID在系统中不存在。
对于唤醒类型域,00h保留,01h为其他,02h未知,03h为APM定时器,04h 调制解调器拨响,05h为LAN远程,06h电源开关,07h为PCI PME# 08h为AC 电源恢复。
基板或模块单元信息 (Type 2) :制造商、产品名、版本、序列号、资产标签、 特征标志、基板在底架上的位置、底架句柄、基板类型、包含的对象句柄个数、 包含的个各对象句柄。
系统外围或底架 (Type 3) :制造商、类型、版本、序列号、资产标签号、启 动状态、供电电源状态、热量状态、安全状态、 OEMS义信息、高度、电源线个
数、包含的单元个数、包含的单元记录长度、包含的各个单元、 SKU号o
处理器信息 (Type 4) :插座指示、处理器类型、处理器家族、制造商、 ID、 版本、电压伏特
数、外部时钟频率(MHz)、最大速率(MHz)、当前速率、状态、处 理器升级、L1级缓存信息结构的句柄、L2级缓存信息结构的句柄、L3级缓存信 息结构的句柄、序列号、资产标签、部件号码、内核个数、激活的内核个数、线 程个数、处理器特征、处理器家族 2o
高速缓存信息 (Type 7):插座指示、缓存配置、最大缓存容量、已安装的容 量、支持的SRA喋型、当前SRA喋型、缓存速率、纠错类型、系统缓存类型、 关联性。
端口连接器信息 (Type 8):例如并口、串口、键盘、鼠标器端口等都属于端 口连接器。包含的信息有内部引用指示符、内部连接器类型、外部引用指示符、 外部引用类型、端口类型。
系统插槽 (Type 9):插槽指示符、插槽类型、插槽数据总线宽度、当前是否 在使用、插槽长度、插槽ID、插槽特征1、插槽牲2、段组编号、总线编号、设 备/函数编号。
OEM字符串(Type 11):由OEM旨定的描述字符串。
系统配置选项 (Type 12) :用来配置基板跳线和开关的信息字符串
BIOS语言信息(Type 13):可安装的语言、标志位字节、保留的 15字节、当 前语言。这里的语言是指英语、 法语、汉语等国家语言, 而不是计算机编程语言。
组相联(Type 14):组名、本项的类型、本结构的句柄。级相联用于指明某 些部件的布局或层次,例如指明两个 CPU共享一个外部缓存系统。
系统事件日志 (Type 15) :事件日志存放在非易失性的存储单元中,占据固 定长度的区域,以 一个固定长度(和特定于厂商)的头部开始,后跟一个或多 个可变长度的日志记录。 应用程序可以通过周期性地读取系统事件日志结构 (通 过它的句柄) 并在日志改 变标记中搜索日志的更新, 以实现事件日志改变通知。 这里日志改变标记唯一地标识事件日志最后一次更新的时间。 本结构包含的信息 有日志区域长度、日志头部起 始偏移、日志数据起始偏移、存取方法(如索引 I/O, 内存映射物理地址,通知目的非易失性数据函数等)、日志状态、日志改变 标记、存取方法地址、日志头部格式、支持的日志类型描述符、每个日志类型描 述符的长度、日志类型描述符列表。 这里存取方法地址可用以下联合类型来表示:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论