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

时间:2013-08-20 06:14:44

标签: c++ hardware

我想确定硬件信息,如CPU,RAM,硬盘,GPU等。 我的应用程序是在C ++中,但建立在Qt上。 如何获得这些信息? 谢谢。

编辑:看起来没有与平台无关的方式。所以,请列出Windows,OSX和OS等知名操作系统的代码。 Ubuntu的?

编辑:我说的是基本信息,如处理器速度,可用内存量,硬盘速度,GPU速度和速度等。存储器中。

3 个答案:

答案 0 :(得分:2)

MS提供了一些以编程方式查找这些信息的函数(包括Windows.h):

BOOL WINAPI GetPhysicallyInstalledSystemMemory(  _Out_  PULONGLONG TotalMemoryInKilobytes );

检索有关RAM的信息,请参阅documentation

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

检索有关磁盘卷上可用空间量的信息,请参阅documentation

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

包含有关当前计算机系统的信息。这包括处理器的体系结构和类型,系统中的处理器数量,页面大小以及其他此类信息,请参阅此MS site

答案 1 :(得分:0)

您可以使用dmidecode获取有关硬件的各种信息。由于该软件是开源的(GPL),您可以查看源代码以了解它是如何完成的:

  

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

该实用程序还有一个windows port

答案 2 :(得分:0)

您可以查看KDE源代码中名为“solid”的组件。 KDE基于Qt,我认为你可以在Linux系统上重用开箱即用,也可以在其他平台上重用。