在 C++ 应用程序中检测硬件信息?

7
我想获取硬件信息,例如CPU、RAM、硬盘、GPU等。我的应用程序是基于Qt构建的C++应用。如何获取这些信息?谢谢。 编辑:看起来没有平台无关的方法可以做到这一点。所以,您能否列出Windows、OSX和Ubuntu等知名操作系统的代码? 编辑:我说的是基本信息,比如处理器速度、可用RAM数量、硬盘速度、GPU速度和内存。

5
简而言之,这方面没有独立于平台的通用方法。Linux、BSD和OSX之间可能存在相似性,但仍然有足够的差异需要编写特定的代码。此外,Windows系统与POSIX系统差别很大。如果你想针对手机/平板电脑开发,可能甚至无法获取所有硬件设备。 - Some programmer dude
@Joachim Pileborg 感谢您的评论。我已经更新了问题。 - Cool_Coder
另外,您可能需要更具体地说明,您需要什么信息?供应商名称、技术规格、运行状态等等? - KillianDS
https://github.com/lfreist/hwinfo 目前正在开发中,旨在提供一个跨平台的解决方案。 - prog2de
3个回答

2

微软提供了一些函数可通过编程方式查找这些信息(包括Windows.h):

BOOL WINAPI GetPhysicallyInstalledSystemMemory(  _Out_  PULONGLONG TotalMemoryInKilobytes );

获取有关RAM的信息,请参阅文档

BOOL WINAPI GetDiskFreeSpaceEx(
 _In_opt_   LPCTSTR lpDirectoryName,
 _Out_opt_  PULARGE_INTEGER lpFreeBytesAvailable,
 _Out_opt_  PULARGE_INTEGER lpTotalNumberOfBytes,
 _Out_opt_  PULARGE_INTEGER lpTotalNumberOfFreeBytes
);

获取磁盘卷上可用空间的信息,详见文档

SYSTEM_INFO siSysInfo; 
// Copy the hardware information to the SYSTEM_INFO structure.  
GetSystemInfo(&siSysInfo); 

包含有关当前计算机系统的信息。这包括处理器的架构和类型、系统中的处理器数量、页面大小以及其他相关信息,请参见此Microsoft网站


0

您可以使用dmidecode获取有关硬件的各种信息。由于该软件是开源的(GPL),因此您可以查看源代码以了解其实现方式:

Dmidecode根据SMBIOS/DMI标准(请参见示例输出)报告有关系统BIOS中描述的系统硬件的信息。此信息通常包括系统制造商、型号名称、序列号、BIOS版本、资产标记以及其他许多具有不同程度的兴趣和可靠性的详细信息,这取决于制造商。这通常包括CPU插座、扩展插槽(例如AGP、PCI、ISA)和内存模块插槽的使用状态,以及I/O端口列表(例如串行、并行、USB)。

该实用程序还有一个Windows端口


0
你可以在 KDE 源代码中查看名为“solid”的组件。KDE 基于 Qt,我认为你可以在 Linux 系统上直接重用它,也可能适用于其他平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接