[Windows] Access SMBIOS
SMBIOS architecture
System Management BIOS (SMBIOS) is the premier standard for delivering management information via system firmware. Since its release in 1995, the widely implemented SMBIOS standard has simplified the management of more than two billion client and server systems.
For OS-present, OS-absent, and pre-OS environments, SMBIOS offers motherboard and system vendors a standard format to present management information about their products.
SMBIOS Entry Point Structure
- The only access method defined for the SMBIOS structures is a table-based method, defined in version 2.1 of SMBIOS spec
- It provides the SMBIOS structures as a packed list of data referenced by a table entry point.
- How to recognized SMBIOS Entry Point structure
- Anchor String and Intermediate Anchor String
- BYTE[0x00] — '_SM_'(5F 53 4D 5F)
- BYTE[0x10] — '_DMI_'(5F 44 4D 49 5F)
- Anchor String and Intermediate Anchor String
- Other information in Entry Point Structure (detail defined in spec)
- include SMBIOS version, structure table address, number of SMBIOS Structures, etc.
SMBIOS structures
Each SMBIOS structure has a formatted section and an optional unformed section. The formatted section of each structure begins with a 4-byte header.
And SMBIOS structures contains many information about the hardware platform, such as the system manufacturer or the the system BIOS version.
Structure usage guidelines (Incomplete):
- If a new field is added to an existing structure, that field is added at the end of the formatted area of that structure and the structure’s Length field is increased by the new field’s size.
- Any software that interprets a structure shall use the structure’s Length field to determine the formatted area size for the structure rather than hard-coding or deriving the Length from a structure field.
- Each structure shall be terminated by a double-null (0000h), either directly following the formatted area (if no strings are present) or directly following the last string. This includes system- and OEM-specific structures and allows upper-level software to easily traverse the structure table.
The unformed section of the structure is used for passing variable data such as text strings
Header format of each structure

Samples of some structures
BIOS information with string

BIOS information without string

SMBIOS in Windows
Microsoft SMBIOS Driver
- Support by windows XP SP2 and later OS
- collects information and stores this information in the registry at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data
Access SMBIOS
Different ways of access SMBIOS
- Access registry (no guarantee)
- System APIs for Reading SMBIOS Data (for applications)
- Using WMI (for drivers)
Key structure for Driver access SMBIOS
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length; // length of SMBIOSTableData
BYTE SMBIOSTableData[]; // all smbios structures
};
The SMBIOSTableData property contains the entire SMBIOS data table, except for the SMBIOS structure table entry point.
Key APIs:
- Application: "EnumSystemFirmwareTables()" and "GetSystemFirmwareTable()"
- Driver:
- Windows XP and later: "IoWmiOpenBlock()" and the "IoWMIQueryAllData()"
- Windows Vista and later: "AuxKlibGetSystemFirmwareTable()"
How to check SMBIOS data correct
SMBIOS Viewer — A good tool for viewing SMBIOS in windows platform.
Reference:
SMBIOS Reference Specification: https://www.dmtf.org/standards/smbios
[Windows] Access SMBIOS的更多相关文章
- Windows Access Token
security descriptor A structure and associated data that contains the security information for a sec ...
- Windows access Linux / Ubuntu via Remote Desktop via xrdp
Windows 多用户远程桌面连接到 Ubuntu / Linux Access Ubuntu from Windows remotely Follow these steps : Step 1 ...
- wordcount在本地运行报错解决:Exception in thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.native.NativeID$Windows.access
在windows中的intellij中运行wordcount程序,控制台输出以下报错 在Intellij编辑器中解决办法:本地重新创建NativeIO类,修改一个方法返回值,然后用新建的NativeI ...
- atorg.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)
错误原因: 你当前开发环境中{Hadoop_HOME}\bin\hadoop.dll 文件和你当前的hadoop版本不匹配. 解决方案: 网络下载相应版本的hadoop.dll,并将该文件放入c:\ ...
- Windows下Eclipse连接hadoop
2015-3-27 参考: http://www.cnblogs.com/baixl/p/4154429.html http://blog.csdn.net/u010911997/article/de ...
- 解决在windows的eclipse上面运行WordCount程序出现的一系列问题详解
一.简介 要在Windows下的 Eclipse上调试Hadoop2代码,所以我们在windows下的Eclipse配置hadoop-eclipse-plugin- 2.6.0.jar插件,并在运行H ...
- SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)
SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...
- java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
在 windows 上运行 MapReduce 时报如下异常 Exception in thread "main" java.lang.UnsatisfiedLinkError: ...
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
1.window操作系统的eclipse运行wordcount程序出现如下所示的错误: Exception in thread "main" java.lang.Unsatisfi ...
随机推荐
- winform显示、隐藏任务栏及开始菜单
private const int SW_HIDE = 0; //隐藏 private const int SW_RESTORE = 9;//显示 /// <summary> /// 获取 ...
- TCP_Wrappers简介
转载自:http://www.cnblogs.com/duzhaoqi/ TCP_Wrappers 简介 TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服 ...
- MySQL--InnoDB 启动、关闭与恢复
在关闭时,参数 innodb_fast_shutdown 影响着表的存储引擎为 InnoDB 的行为.该参数可取值为 0.1.2,默认值为 1. 0:表示在 MySQL 数据库关闭时,InnoDB 需 ...
- 解决Android Studio的安装问题
今天开始了android studio的下载与安装,我再官网上下载了Android studio,下载不难,运行出来可需要一定的时间,在中途中我遇到了一些问题 一:Build错误: 在我最开始下载完A ...
- Linux-线程引入
1.使用进程技术的优势 (1).CPU分时复用,单核心CPU可以实现宏观上的并行 (2).实现多任务系统需求(多任务的系统是客观的) 2.进程技术的劣势 (1).进程间切换开销大 (2).进程间通信麻 ...
- 总结一些常用的训练 GANs 的方法
众所周知,GANs 的训练尤其困难,笔者自从跳入了 GANs 这个领域(坑),就一直在跟如何训练 GANs 做「对抗训练」,受启发于 ganhacks,并结合自己的经验记录总结了一些常用的训练 GAN ...
- 微信小程序2048开发进度(一)
父亲是个体劳动者,他的兴趣就是下象棋,针对平时兴趣,我想做一款自己的2048小游戏,在慕课网观看了2048小游戏的讲解,以及关于开发小游戏的理论知识,对开发一款小游戏有了基本的认识.
- 第二季 第十一天 part2
const greeting = function() { // 注意,这个 this.name 取决于谁调用了 greeting() 函数 console.log('Hi, ', this.name ...
- windows server 2012 安装sql server集群
第一步:准备工作 虚拟环境下模拟创建: 准备好3台虚拟机 操作系统,WindowsServer2012R2 操作系统安装完成后,需要注意如果虚拟机是克隆出来的,后面操作集群的时候需要计算机的sid不同 ...
- 复杂json解析方式[GsonFormat]
针对开发人员来讲,善于用工具,事半功倍. 干货: 1.IntelliJ IDEA 通过GsonFormat插件将JSONObject格式的String 解析成实体 插件地址:https://plugi ...