如何使用WMI/C++获取内存信息(RAM类型,例如DDR,DDR2,DDR3?)

use*_*883 8 c++ wmi

我的Windows XP SP 2机器上有DDR2内存,但是在WMI资源管理器(win32_physicalMemory)上我得到内存类型= 0(未知)而不是21(DDR2的代码).NameSpace是CIMV2.你能告诉我如何从WMI获得DDR2内存类型吗?

RRU*_*RUZ 8

获取此类信息的最可靠方法之一是读取SMBIOS表,您必须查找Memory Device (Type 17) Structure(此结构描述系统上安装的单个内存设备)和Memory TypeField.

这些是该字段的可能值.

01h Other
02h Unknown
03h DRAM
04h EDRAM
05h VRAM
06h SRAM
07h RAM
08h ROM
09h FLASH
0Ah EEPROM
0Bh FEPROM   
0Ch EPROM
0Dh CDRAM
0Eh 3DRAM
0Fh SDRAM
10h SGRAM
11h RDRAM
12h DDR
13h DDR2
14h DDR2 FB-DIMM
15h-17h Reserved
18h DDR3
19h FBD2
1Ah DDR4
1Bh LPDDR
1Ch LPDDR2
1Dh LPDDR3
1Eh LPDDR4
Run Code Online (Sandbox Code Playgroud)

要从C++应用程序访问SMBIOS,您可以使用MSSmBios_RawSMBiosTablesWMI类或EnumSystemFirmwareTablesGetSystemFirmwareTable函数.

另外,请查看这些文章,了解如何解析SMBIOS表的infor.