MFC-GetSystemFirmwareTable获取系统固件表

MFC-GetSystemFirmwareTable获取系统固件表_第1张图片

获取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;

}

你可能感兴趣的:(mfc,c++)