How to get memory information (RAM type, e.g. DDR,DDR2,DDR3?) with WMI/C++

后端 未结 1 1825
野趣味
野趣味 2021-01-05 01:54

I have DDR2 RAM on my windows XP SP 2 Machine, but on WMI explorer (win32_physicalMemory) I am getting Memory Type = 0(Unknown) instead of 21(the code for DDR2). NameSpace i

1条回答
  •  迷失自我
    2021-01-05 02:21

    One of the most reliable ways to get such info is reading the SMBIOS Tables, you must look for the Memory Device (Type 17) Structure (this structure describes a single memory device installed on the system), and the Memory Type Field.

    These are the possible values of this field.

    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
    

    In order to access the SMBIOS from a C++ application you can use the MSSmBios_RawSMBiosTables WMI Class or the EnumSystemFirmwareTables and GetSystemFirmwareTable functions.

    Additionally check these articles to see how parse the infor of the SMBIOS tables.

    • SMBIOS Demystified (C++)
    • Reading the SMBios Tables using Delphi (Delphi)

    0 讨论(0)
提交回复
热议问题