MFC-GetSystemFirmwareTable获取系统固件表

2023-09-14 15:40:33

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

更多推荐

目前最流行的无人机摄影测量软件有哪些?各有什么特点?

文章目录1.Pix4Dmapper2.PhotoScan3.ContextCapture4.天工GodWork5.TrimbleInpho6.IMAGINEPhotogrammetry7.大疆智图推荐阅读:《无人机航空摄影测量精品教程》包括:无人机航测外业作业流程(像控点布设、航线规划、仿地飞行、航拍)和内业数据处理软

PDCA循环

目录1.认识PDCA:2.PDCA循环的经典案例3.PDCA的四个阶段和八个步骤4.PDCA循环的优缺点:5.案例6.其他作用1.认识PDCA:PDCA循环最早由美国质量统计控制之父Shewhat(休哈特)提出的PDS(PlanDoSee)演化而来,由美国质量管理专家戴明改进成为PDCA模式,所以又称为“戴明环”。PD

机器人中的数值优化(十七)—— 锥与对称锥

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例二十八、锥与对称锥1、尖锥锥是一种特殊的集合,当满足

【2023年11月第四版教材】第14章《沟通管理》(第一部分)

第14章《沟通管理》(第一部分)1章节说明2管理基础2.1沟通具体形式包括2.2沟通模型:★★★(17下41)(18下43)2.3沟通模型包含5种状态2.4沟通分类3管理过程3.1管理的过程★★★(21上42)(22上43)⑵下42)(22下43)(22下案例)3.2管理ITTO汇总★★★1章节说明【本章分值预测】大部

IP地址与代理IP:了解它们的基本概念和用途

在互联网世界中,IP地址和代理IP是两个常见但不同的概念,它们在网络通信、隐私保护和安全方面发挥着重要作用。本文将介绍什么是IP地址和代理IP,以及它们在网络中的作用和应用。IP地址是什么?IP地址,全称为InternetProtocolAddress,是互联网上设备的唯一标识符。它类似于房屋地址,帮助数据包找到它们需

软件测试用例经典方法 | 单元测试法案例

单元测试又称模块测试,是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验,检查程序在语法、格式和逻辑上的错误,并验证程序是否符合规范,以发现单元内部可能存在的各种缺陷。单元测试的对象是软件设计的最小单位——模块、函数或者类。在传统的结构化程序设计语言(如C语言)中,单元测试的对象一般是函数或者过程。在

python文件(概念、基本操作、常用操作、文本文件的编码方式)

嗨喽,大家好呀~这里是爱看美女的茜茜呐👇👇👇更多精彩机密、教程,尽在下方,赶紧点击了解吧~python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可1.文件的概念1.1文件的概念和作用计算机的文件,就是存储在某种长期储存设备上的一段数据长期存储设备包括:硬盘、U盘、移动硬盘、光盘…文件的作

清水模板是什么材质?

清水模板是建筑施工中常用的一种模板,用于浇筑混凝土结构的形成和支撑。它是指没有进行任何装饰和涂层处理的模板,通常由木材制成,如胶合板、钢模板等。下面是关于清水模板的详细介绍。清水模板的材质多样,其中最常见的是胶合板。胶合板是由多层薄木板通过交错堆叠、胶合而成的板材。由于其具有较高的强度、稳定性和耐久性,因此在建筑施工中

Java-根据模板生成PDF

文章目录前言一、准备模板二、代码实现三、源代码总结前言在有些场景下我们可能需要根据指定的模板来生成PDF,比如说合同、收据、发票等等。因为PDF是不可编辑的,所以用代码直接对PDF文件进行修改是很不方便的,这里我是通过itext和AdobeAcrobat来实现的,以下就是具体实现方法。一、准备模板AdobeAcroba

这些PLC串口通讯和通讯接口知识,你都了解吗?

在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗?一、什么是串口通讯?串口是一种接口标准,是计算机上一种非常通用设备通信的协议。它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。典型的串口通讯标准常见有如下三种。EIARS232(通常简称“RS232”):

【视觉SLAM入门】7.4.后端优化 --- 基于位姿图和基于因子图

"议论平恕,无所向背”1.位姿图1.1具体做法1.2小结2.因子图2.1具体做法2.1.1贝叶斯网络2.1.2因子图2.1.3更具体的因子图2.1.4增量的求解方法引入:上节BA将位姿和路标都作为优化的节点,H矩阵也告诉我们路标远大于位姿,时长会导致资源等问题。办法:滑动窗口法:保持H固定大小,丢弃历史位姿图:不管路标

热文推荐