我如何确定计算机上安装的物理RAM? (视窗)

时间:2017-04-30 11:18:51

标签: c++ c windows winapi ram

如何在Windows中使用c ++将物理ram安装到我的计算机上? 我的意思不仅是能够GlobalMemoryStatusEx()的容量参数,还包括已用内存插槽的数量,内存类型(如DDR1 / DDR2 / DDR3),插槽类型(DIMM / SO-DIMM)和内存总线的时钟速率。 我需要使用SMBIOS吗?或者有其他方式来获取此信息?

1 个答案:

答案 0 :(得分:3)

在我的机器上,您请求的大部分信息都可通过WMI获得。看看Win32_PhysicalMemory及相关课程。

例如,我机器上的wmic memorychip输出为:

C:\>wmic memorychip
Attributes  BankLabel  Capacity     Caption          ConfiguredClockSpeed  ConfiguredVoltage  CreationClassName     DataWidth  Description      DeviceLocator   FormFactor  HotSwappable  InstallDate  InterleaveDataDepth  InterleavePosition  Manufacturer  MaxVoltage  MemoryType  MinVoltage  Model  Name             OtherIdentifyingInfo  PartNumber        PositionInRow  PoweredOn  Removable  Replaceable  SerialNumber  SKU  SMBIOSMemoryType  Speed  Status  Tag                TotalWidth  TypeDetail  Version
2           BANK 0     17179869184  Physical Memory  2133                  1200               Win32_PhysicalMemory  64         Physical Memory  ChannelA-DIMM0  12                                                                              Samsung       0           0           0                  Physical Memory                        M471A2K43BB1-CPB                                                    15741117           26                2133           Physical Memory 0  64          128
2           BANK 2     17179869184  Physical Memory  2133                  1200               Win32_PhysicalMemory  64         Physical Memory  ChannelB-DIMM0  12                                                                              Samsung       0           0           0                  Physical Memory                        M471A2K43BB1-CPB                                                    21251413           26                2133           Physical Memory 2  64          128

如上面的链接所示,FormFactor 12是SODIMM。

值得注意的是电压(你没有要求,但通常是有意义的)和MemoryType,其文档已在MSDN上过时,而最近的DMIOS的SMBIOS文档包括DDR4枚举中的值。等

因此,您可能不得不采用手动或多或少的方式查看SMBIOS表。请参阅:How to get memory information (RAM type, e.g. DDR,DDR2,DDR3?) with WMI/C++