Hallo Gemeinde,
offenbar kann man via WMI Namespace Win32_PhysicalMemory den Typ (z.B. DDR3 oder DDR4, etc.) des verbauten RAM auslesen.
Auf meinem Laptop wird da aber 0 für unbekannt ausgegeben.
Tools wie CPU-Z oder HWiNFO64 lesen aber den DDR-Typ aus.
Hat jemand eine Idee wie ich das auch hinbekomme Vielleicht via Registry oder Windows API, etc.
RAM-Typ auslesen
-
hipfzwirgel -
18. Juni 2024 um 14:35 -
Erledigt
-
-
Versuch es mal mit dem SMBIOSMemoryType anstatt dem MemoryType (beides in Win32_PhysicalMemory enthalten).
Bei mir gibt SMBIOSMemoryType 26 aus, was meines Wissens für DDR4 steht, wobei MemoryType 0 für unknown ausgibt.
Seite 98 von hier: https://www.dmtf.org/sites/default/…P0134_3.2.0.pdf
Keine Ahnung was er bei meinem Heim-PC machen würde, der hat shcon DDR5, das taucht hier noch garnicht auf
-
Hallo Moombas,
danke dir vielmals für den Denkanstoß. Dem war ich gerade auf der Spur via powershell Get-WmiObject Cim_PhysicalMemory | fl *. Konnte leider nur noch nicht DDR5 verifizieren...
Da suche noch ein Gerät dazu. -
Hallo Moombas,
so ich habe jetzt anhand eines HP-Zbooks 16 G10 folgendes verifiziert:
Wert SMBIOSMemoryType: 34 -> DDR-Typ gem. HWiNFO64 = DDR5
Damit komme ich weiter. vielen lieben Dank nochmals...Nachtrag: ich habe den Wert auch auf Lenovo L16 G1 und Lenovo T16 G3 verifiziert. Ebenfalls die Ausgabe des Wertes 34 und Hwinfo Ausgabe DDR5...
-
Hallo,
hier ein Switch für die möglichen Werte SMBIOSMemorytype:Code
Alles anzeigenSwitch $s_DDRType Case 0 $s_DDRType = "Unbekannt" Case 1 $s_DDRType = "Sonstiges" Case 2 $s_DDRType = "DRAM" Case 3 $s_DDRType = "Synchrones DRAM" Case 4 $s_DDRType = "Cache-DRAM" Case 5 $s_DDRType = "EDO" Case 6 $s_DDRType = "EDRAM" Case 7 $s_DDRType = "VRAM" Case 8 $s_DDRType = "SRAM" Case 9 $s_DDRType = "RAM" Case 10 $s_DDRType = "ROM" Case 11 $s_DDRType = "Blitz" Case 12 $s_DDRType = "EEPROM" Case 13 $s_DDRType = "FEPROM" Case 14 $s_DDRType = "EPROM" Case 15 $s_DDRType = "CDRAM" Case 16 $s_DDRType = "3DRAM" Case 17 $s_DDRType = "SDRAM" Case 18 $s_DDRType = "SGRAM" Case 19 $s_DDRType = "RDRAM" Case 20 $s_DDRType = "DDR" Case 21 $s_DDRType = "DDR2" Case 22 $s_DDRType = "DDR2 FB-DIMM" Case 24 $s_DDRType = "DDR3" Case 25 $s_DDRType = "FBD2" Case 26 $s_DDRType = "DDR4" Case 34 $s_DDRType = "DDR5" Case Else $s_DDRType = "Unbekannter Wert in Win32_PhysicalMemory: SMBIOSMemoryType" EndSwitch
-
Nice, evtl. gibts ja auch irgendwo eine aktuellere Doku über die möglichen Werte als das was ich da gefunden habe
-
Nice, evtl. gibts ja auch irgendwo eine aktuellere Doku über die möglichen Werte als das was ich da gefunden habe
Zu der Doku (Date: 2018-04-26 , Version: 3.2.0 aus deinem Beitrag 2) gibt es eine aktuelle Version (Date: 2024-05-22 , Version: 3.7.1) , siehe https://www.dmtf.org/sites/default/…P0134_3.7.1.pdf
Die Tabelle 'Memory Device — Type' wurde erweitert (siehe Seite 102 und 103)
-
Danke Musashi die hatte ich leider nicht gefunden.
hipfzwirgel Jetzt kannst du damit deine Liste vervollständigen
-
hipfzwirgel
Irgendwie passen die Nummern Deines Switch Beispiels und die in der von Musashi genannten Doku nicht zusammen.
"Blitz" kommt da gar nicht vor, "SRAM" ist bei Dir die #8 und in der Doku #6.Oder habe ich da ein Verständnisproblem 🤔
-
Nein da hast du recht, da sollte hipfzwirgel definitv nochmal drüber schauen
-
Hallo,
ich habe die Werte von der Microsoftseite https://learn.microsoft.com/de-de/windows/…-physicalmemory kopiert.
Dort stehen sie unter MemoryType. Offenbar gibt es also zwischen den beiden Quellen Abweichungen.
Allerdings wüsste ich auch nicht welcher jetzt der richtigere Wert ist. SRAM kann ich definitiv nicht testen...
Wer die Werte benötigt aber falsche Ergebnisse bekommt, der möchte bitte anhand der Referenzen zunächst testen
Es gibt auch die nachfolgende Referenz und dort steht SRAM auch an achter Stelle...
Intel AMT SDK Implementation and Reference Guide -> https://software.intel.com/sites/manageab…sicalMemory.htm
Wer es braucht, muss sich also den Switch gem. den benötigten Werten anpassen... -
Damn, ich hasse es wenn Dokumentationen abweichen, wobei gewisse Speichertypen heutzutage wohl kaum bis garnicht mehr auftreten.
Alles was älter ist als DDR3 würde ich nichtmal mehr anfassen
-
Hallo Moombas,
ja es ist gerade als Programmierer nervenzerfetzend das so etwas vorkommt. Ich muss u.a. mein Computererfassungstool fortwährend anpassen
wegen solcher Dinge...
Da ich doch tatsächlich eben gerade ein Device mit LPDDR5 rein bekommen habe hier der angepasste Switch gem. Intel-Referenz:
Code
Alles anzeigenSwitch $s_DDRType Case 0 $s_DDRType = "Unknown" Case 1 $s_DDRType = "Other" Case 2 $s_DDRType = "DRAM" Case 3 $s_DDRType = "Synchronous DRAM" Case 4 $s_DDRType = "Cache DRAM" Case 5 $s_DDRType = "EDO" Case 6 $s_DDRType = "EDRAM" Case 7 $s_DDRType = "VRAM" Case 8 $s_DDRType = "SRAM" Case 9 $s_DDRType = "RAM" Case 10 $s_DDRType = "ROM" Case 11 $s_DDRType = "Flash" Case 12 $s_DDRType = "EEPROM" Case 13 $s_DDRType = "FEPROM" Case 14 $s_DDRType = "EPROM" Case 15 $s_DDRType = "CDRAM" Case 16 $s_DDRType = "3DRAM" Case 17 $s_DDRType = "SDRAM" Case 18 $s_DDRType = "SGRAM" Case 19 $s_DDRType = "RDRAM" Case 20 $s_DDRType = "DDR" Case 21 $s_DDRType = "DDR-2" Case 22 $s_DDRType = "BRAM" Case 23 $s_DDRType = "FB-DIMM" Case 24 $s_DDRType = "DDR3" Case 25 $s_DDRType = "FBD2" Case 26 $s_DDRType = "DDR4" Case 27 $s_DDRType = "LPDDR" Case 28 $s_DDRType = "LPDDR2" Case 29 $s_DDRType = "LPDDR3" Case 30 $s_DDRType = "LPDDR4" Case 31 $s_DDRType = "Logical non-volatile device" Case 32 $s_DDRType = "HBM (High Bandwidth Memory" Case 33 $s_DDRType = "HBM2 (High Bandwidth Memory Generation 2" Case 34 $s_DDRType = "DDR5" Case 35 $s_DDRType = "LPDDR5" Case 36 $s_DDRType = "HBM3 (High Bandwidth Memory Generation 3" Case Else $s_DDRType = "Unbekannter Wert in Win32_PhysicalMemory: SMBIOSMemoryType" EndSwitch
-
-
Hab das mal mit Map realisiert:
AutoIt
Alles anzeigenGlobal $mDDRType[] $mDDRType[0] = "Unknown" $mDDRType[1] = "Other" $mDDRType[2] = "DRAM" $mDDRType[3] = "Synchronous DRAM" $mDDRType[4] = "Cache-DRAM" $mDDRType[5] = "EDO" $mDDRType[6] = "EDRAM" $mDDRType[7] = "VRAM" $mDDRType[8] = "SRAM" $mDDRType[9] = "RAM" $mDDRType[10] = "ROM" $mDDRType[11] = "Flash" $mDDRType[12] = "EEPROM" $mDDRType[13] = "FEPROM" $mDDRType[14] = "EPROM" $mDDRType[15] = "CDRAM" $mDDRType[16] = "3DRAM" $mDDRType[17] = "SDRAM" $mDDRType[18] = "SGRAM" $mDDRType[19] = "RDRAM" $mDDRType[20] = "DDR" $mDDRType[21] = "DDR2" $mDDRType[22] = "BRAM" $mDDRType[23] = "FB-DIMM" $mDDRType[24] = "DDR3" $mDDRType[25] = "FBD2" $mDDRType[26] = "DDR4" $mDDRType[27] = "LPDDR" $mDDRType[28] = "LPDDR2" $mDDRType[29] = "LPDDR3" $mDDRType[30] = "LPDDR4" $mDDRType[31] = "Logical non-volatile device" $mDDRType[32] = "HBM (High Bandwidth Memory)" $mDDRType[33] = "HBM2 (High Bandwidth Memory Generation 2)" $mDDRType[34] = "DDR5" $mDDRType[35] = "LPDDR5" $mDDRType[36] = "HBM3 (High Bandwidth Memory Generation 3)" $mDDRType[37] = "DMTF Reserved" ; 37 – 32567 $mDDRType[32568] = "Vendor Reserved" ; 32568 – 65535 ; Beispielaufruf ConsoleWrite(_GetDDRTypeText($mDDRType, 28) & @CRLF) Func _GetDDRTypeText(ByRef $mDDRType, $iDDRType) ; Set ranges of numbers to the first number in the range. This number has to be defined in the $mDDRType map. If $iDDRType >= 37 And $iDDRType <= 32567 Then $iDDRType = 37 If $iDDRType >= 32568 And $iDDRType <= 65535 Then $iDDRType = 32568 If Not MapExists($mDDRType, $iDDRType) Then Return "Unbekannter Wert in Win32_PhysicalMemory: SMBIOSMemoryType" Else Return $mDDRType[$iDDRType] EndIf EndFunc ;==>_GetDDRTypeText
-
Hey Water,
Deutschland liegt nicht nur bei der EM vorn. Richtig cool.
Ich habe mich heute Nachmittag mit einem Kollegen unterhalten der mir dann die Intel-Referenz zeigte und anregte, das statt des Switches, so etwas wie das Enum-Construct bei Powershell leichter verwaltbar wäre und ich sach noch: da gibbet es etwas das ein Pendant bei Autoit is...
Und sogleich präsentierst du die MAP. ECHT TOP.
-
-
In der deutschen Übersetzung fälschlich "Blitz"
Jedes Mal, wenn ich auf der MS Seite etwas nachschlage und diese furchtbaren deutschen Übersetzungen (teilweise von Naturkonstanten wie "BLACKNESS" beim BitBlt) sehe, klicke ich "diese Seite war nicht hilfreich" an und schreibe in den Kommentar rein, dass sämtliche Wörter die mit Programmcode zu tun haben bitte nicht übersetzt werden sollen. Ich hab schon Tabellen mit Enums gesehen die man von Start bis Ende in die Tonne treten konnte weil fast alle Bezeichnungen falsch waren
Ist denen aber egal. Wenn ich nicht 90% der Namen von Sachen die ich dort suche schonmal gehört hätte wäre ich echt sauer, aus genanntem Grund bin ich nur "genervt" von sowas...
M
-
Ich habe mir inzwischen angewöhnt, MS auf English umzuschalten. besonders wenn ich eine Enum-Liste kopieren will.
Aber manchmal erwischt es mich doch -
Hallo Mars,
da geb ich dir recht: Microsoft und Dokumentation geht nicht zusammen.