MFC-GetSystemFirmwareTable获取系统固件表

news2024/11/20 20:38:24

获取ACPI表格


void CgetSystemFirmwareTableDlg::OnBnClickedButton1()
{
	//
	UINT bufferSize = GetSystemFirmwareTable('ACPI', 0, NULL, 0);//获取系统固件表
	/*
	【参数3和参数4为NULL和0,只是为了返回真实大小】


	这个函数可以用来获得系统中的各种固件信息,如ACPI(高级配置与电源接口)、SMBIOS(系统管理BIOS)、UEFI(统一固件接口)等。
	每种固件都有其对应的表格,这些表格包含了硬件设备的描述信息、配置数据等
	参数1:[in]  DWORD FirmwareTableProviderSignature  表示要获取的固件表的提供者标识符。常见的标识符有:
			ACPI:获取ACPI表格(高级配置和电源接口)
			SMCI:获取SMBIOS表格
			UEFI:获取UEFI表格
			FIRM	原始固件表提供程序
			RSMB	原始 SMBIOS 固件表提供程序

	参数2:DWORD FirmwareTableID  表示要获取的固件表的唯一标识符

	参数3:PVOID pFirmwareTableBuffer  指向存储固件表数据的缓冲区的指针

	参数4:DWORD BufferSize  指定缓冲区的大小

	返回值:为获取到的固件表的字节数。
			如果函数调用失败或指定的固件表不存在,返回值为0
	
	*/


	if (bufferSize == 0) {
		AfxMessageBox(_T("获取ACPI大小失败"));
		//PostQuitMessage(0);
		return;
	}

	BYTE* buffer = new BYTE[bufferSize];//申请空间
	DWORD result = GetSystemFirmwareTable('ACPI', 0, buffer, bufferSize);
	if (result == 0) {
		AfxMessageBox(_T("获取ACPI固表失败"));
		
		delete[] buffer;
		return;
	}

	AfxMessageBox(_T("获取ACPI固表成功"));
	delete[] buffer;
	return;

}

获取主板信息

SMBIOS结构:

SMBIOS(System Management BIOS)是一种由系统管理委员会(DMTF)定义的标准,用于描述计算机硬件组件和配置信息的数据结构。SMBIOS提供了一种跨平台的方式,使操作系统和应用程序能够获取有关计算机硬件的详细信息

SMBIOS定义了一组数据结构,每个结构都包含了特定类型的硬件信息。这些结构被组织成一个层次结构,可以通过唯一的类型值进行识别和访问。以下是常见的SMBIOS结构类型:

1.BIOS信息(Type 0)

  • 描述计算机的BIOS固件版本、制造商、发布日期等信息

2.系统信息(Type 1)

  • 描述计算机的型号、制造商、序列号等基本信息

3.主板信息(Type 2)

  • 描述主板的制造商、型号、版本等信息

4.处理器信息(Type 4)

  • 描述计算机的处理器相关信息,如制造商、型号、核心数、时钟频率等

5.内存模块信息(Type 6、16、17)

  • 描述计算机的内存模块相关信息,如制造商、型号、容量、速度等

6.硬盘信息(Type 9)

  • 描述计算机的硬盘驱动器相关信息,如制造商、型号、容量、接口类型等

7.显示器信息(Type 13)

  • 描述计算机的显示器相关信息,如制造商、型号、分辨率等

8.电池信息(Type 22)

  • 描述计算机的电池相关信息,如制造商、设备ID、电池类型等

这只是SMBIOS结构的一小部分示例,实际上SMBIOS定义了更多的结构类型,每个类型都涵盖了不同硬件组件的信息。每个SMBIOS结构都包含固定的字段和可变长度的数据区域,用于存储具体的信息

SMBIOS结构通过一个叫做SMBIOS表的数据块来呈现,该表位于系统固化的固件中,例如系统的BIOS中。操作系统和应用程序可以通过访问SMBIOS表来获取硬件信息,以便进行系统管理、故障诊断、设备兼容性检查等操作

需要注意的是,SMBIOS是与x86架构的计算机系统关联度较高,不同架构的计算机可能采用其他的固件和硬件描述标准

type=2时结构:

当 SMBIOS 中的类型字段(Type)为 2 时,表示该结构是一个系统基本信息(System Information)结构。它提供了关于计算机系统的基本描述和属性信息。

SMBIOS Type 2 结构由多个字段组成,每个字段用于描述特定的系统属性。下面是 Type 2 结构中常见的字段及其含义:

  1. Manufacturer(制造商):表示制造商或品牌名称。长度不超过 64 个字节
  2. Product Name(产品名称):指定计算机系统的型号或名称。长度不超过 64 个字节
  3. Version(版本):标识计算机系统的版本号,通常是硬件或固件的版本信息。长度不超过 64 个字节
  4. Serial Number(序列号):唯一标识该计算机系统的序列号。长度不超过 20 个字节
  5. UUID(通用唯一识别码):一个 16 字节的唯一标识符,可用于在网络中唯一标识该系统。固定为 16 个字节
  6. SKU Number(SKU 编号):计算机系统的库存单位编号。长度不超过 64 个字节
  7. Family(系列):指定计算机系统所属的产品系列。长度不超过 64 个字节

这些字段中的大部分都是可选的,但通常至少会提供制造商、产品名称和版本号。

需要注意的是,SMBIOS 结构中的字段都是以 ASCII 码表示的,且长度有限制。例如,Manufacturer、Product Name 和 Version 字段的长度不能超过 64 个字符,Serial Number 字段的长度不能超过 20 个字符。

SMBIOS Type 2 结构提供了有关计算机系统的基本信息,可以通过解析该结构获取计算机的制造商、型号、序列号等重要属性,用于系统管理、故障排除和硬件识别等用途。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL中SQL语句执行顺序分析

1、 MySQL手写执行顺序 2、 MySQL机读执行顺序 随着Mysql版本的更新换代,其优化器也在不断的升级,优化器会分析不同执行顺序产生的性能消耗不同而动态调整执行顺序。下面是经常出现的查询顺序:

SpringBoot使用Mybatis查询数据

1.创建工程 说明:创建springboot工程,数据库表book,实体类Book 1.1创建项目 1.2 勾选相应的配置 1.3数据表book 说明:创建了book表,添加了id,type,name,description字段。 1.4创建Book实体类 说明:生成…

微服务保护-流控效果

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

【AI】推理系统和推理引擎的整体架构

本文主要是对 B 站 Up 主 ZOMI酱 推理系统系列视频 的理解,可以认为是重点笔记。 一、深度学习模型的全生命周期 相信很多人和我一样,刚看到深度学习模型中的推理系统或推理引擎时是一头雾水,因为学习 DL 时通常关注于模型的设计和训练。下图…

MFC - 一文带你从小白到项目应用(全套1)

文章篇幅可能会比较长,从入门到基本能上项目的全部内容。建议观看的过程中,用电脑跟着学习案例。 持续输出优质文章是作者的追求,因为热爱,所以热爱。 最近看动漫被一句鸡汤感动到了,也送给各位朋友: 只要有…

微服务保护-热点参数限流

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

Dubbo3基础使用

1、Dubbo概述 现在SpringCloud Alibaba比较火,用的比较多是吧,那dubbo是不是过时的呢? 并不是的,以前有人把Dubbo和SpringCloud进行对比,其实两者是不同维度的,不能对比,dubbo就是一个rpc框架&…

Adobe Bridge 2024:解锁创意力的数字媒体利器

在当今数字化的时代,创意工作者们需要处理和管理大量的数字媒体资源,如照片、视频、音频等。为了提高工作效率和创作质量,他们需要一个功能强大、易于使用的工具来组织、浏览和共享这些媒体文件。幸运的是,Adobe Bridge 2024 正好…

Linux文件类型与根目录结构

目录 一、文件类型 二、目录结构 1、FHS Linux目录结构的特点 2、路径以及工作目录 1)路径 2)工作目录 3)存放路径 一、文件类型 主目录下部分文件如下: [rootlocalhost ~]# cd ~ [rootlocalhost ~]# ll total 52 -rw-r--…

烟雾报警系统设计与实现

摘要 随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解…

不可思议,无密码登录所有网站!

hello,我是小索奇 居然可以免密码登录你的网站?听起来是不是很恐怖 确实如此,Cookie可以用于保持用户在网站上的登录状态,从而实现 免密码登录,学会了不要做坏事哈 这里仅做免密码登录的实操,就不介绍Cooki…

如何从第一性原则的原理分解数学问题

如何从第一性原则的原理分解数学问题 摘要:牛津大学入学考试题目展示了所有优秀数学家都使用的系统的第一原则推理,而GPT4仍然在这方面有困难 作者:Keith McNulty 我们中的许多人都熟悉直角三角形的边的规则。根据毕达哥拉斯定理,…

动态的中秋爱心演示送女友用python生成爱心软件文末附c++语言写法

用python生成爱心软件 用python生成动态爱心软件 目录 用python生成爱心软件 完整代码 代码解释 逐句解释 效果展示: 如何打包 c写法 完整代码 import turtledef draw_heart():love turtle.Turtle()love.getscreen().bgcolor("black")love.…

python使用execjs利用jsdom来执行含有document的js代码方案(上)

先说一下环境:win7 64位,python3.8.10。 python使用execjs执行含有document的js代码时,会出现报错: execjs._exceptions.ProgramError: TypeError: document 未定义 原因是纯js代码中是不包含浏览器里对象的(如document、windo…

结构体变量的初始化和引用

任务描述 本关任务:从键盘输入两个学生的学号,姓名和成绩(整数),分别存入结构体中,输出成绩较高的学生的学号,姓名和成绩。 相关知识 结构体类型用于描述由多个不同数据类型的数据构成的复合…

ENSP防火墙错误40解决办法

推荐版本: win10:ensp-1.3.00、virtualbox-5.2.40 win11:ensp-1.3.00、virtualbox-5.2.44 错误代码40 一、安装路径中不可有中文字符,最好直接安装在默认路径 双击安装好的vbox软件看能否运行,如果可以则跳过该步骤…

C语言入门log02

2023.9.17 周日 江苏 软件:visual studio 2017 ;注释快捷键 ctrlk,ctrlc;运行快捷键 ctrlf5 B站视频 P2 #define _CRT_SECURE_NO_WARNINGS 1 用于vs软件的scanf函数报错。 设置方法打开文件粘贴这句话,如果无法…

VuePress网站如何使用axios请求第三方接口

前言 VuePress是一个纯静态网站生成器,也就是它是无后端,纯前端的,那想要在VuePress中,发送ajax请求,请求一些第三方接口,有时想要达到自己一些目的 在VuePress中,使用axios请求第三方接口,需要先安装axios,然后引入,最后使用 本文…

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

【自学开发之旅】Flask-前后端联调-异常标准化返回

注册联调: 前端修改: 1.修改请求向后端的url地址 文件:env.development修改成VITE_API_TARGET_URL http://127.0.0.1:9000/v1 登录:token验证 校验forms/user.py from werkzeug.security import check_password_hash# 登录校验…