2017-02-10 9 views
14

Szukałem dużo, ale nie znalazłem żadnych działających kodów uzyskujących informacje tabel SPD przez C#. Jest tam wiele programów, które otrzymują te informacje, ale JAK?SMBIOS - Uzyskaj informacje o modułach SPD (Serial Presence Detect) C#

enter image description here

jak pokazano na rysunku, na urządzeniach pamięci RAM, można zobaczyć nazwe, która nie może być pobierać w ogóle przez WMI etc

Jeśli istnieje DLL do używania w C# będzie idealny również

Po znaleźć jakieś badania to:

https://github.com/sapozhnikovay/SMBIOS

ale nie można odczytać tabeli 17, aby uzyskać informacje o urządzeniu pamięci.

+0

widziałeś [to] (https://social.msdn.microsoft.com/Forums/en-US/59257760-3db9-49e7-b575-36ca98e660cc/ram-manufacturer-info? Forum = Vsexpressvcs)? – jsanalytics

+0

@jstreet thanks, ale tak, dużo szukałem i widziałem cię link kilka dni temu. Ale korzysta z usługi WMI, która nie działa tak, jak tego potrzebuję. – Nofuzy

+0

Ten fragment kodu zwraca nazwę producenta, o której wyraźnie wspomniałeś. Co nie działa tak, jak potrzebujesz? – jsanalytics

Odpowiedz

4

Kiedyś badałem na ten temat, musisz uzyskać tę informację przez SMBUS (nie SMBIOS). Ale aby uzyskać dostęp do tych informacji, musisz utworzyć sterownik (WDM w C/C++).

+0

jeśli istnieje biblioteka dll do używania w języku C# będzie również idealny. – Nofuzy

1

Upewnij się, że dodano System.Management jako odniesienie.

Oto ciąg, który powróci prawie żadnych informacji, które chcesz z części:

private string getComponent(string hwClass, string syntax) 
    { 
     ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwClass); 
     foreach (ManagementObject mj in mos.Get()) 
     { 
      return Convert.ToString(mj[syntax]); 
     } 
     return null; 
    } 

Korzystanie ciąg będzie wyglądać tak, powiedzmy na kliknięcie przycisku:

label1.Text = getComponent("Win32_PhysicalMemory", "SerialNumber"); 

Testowałem to i zwrócił numer seryjny, możesz również spojrzeć na listę rzeczy, które można umieścić w rodzaju producenta, nazwa, pojemność itp.

Mam wszystkie te informacje od this YouTube video.

można znaleźć wszystkie urządzenia i ich właściwości here (CPU, GPU itp)

+0

Nie można uzyskać typu urządzenia pamięciowego ani dokładnej nazwy tego urządzenia za pomocą usługi WMI. – Nofuzy

+0

@Stranger Testowałem producenta i działało dobrze. Oto link msdn do składni "PhyscialMemory": https://msdn.microsoft.com/en-us/library/aa394347(v=vs.85).aspx. W tym miejscu możesz znaleźć składnię "MemoryType", która zwraca liczbę, informuje, jaki numer odpowiada rodzajowi pamięci.Na przykład 24 = DDR3, 25 = FBD2 mój komputer zwraca 26 (co, jak przypuszczam, jest numerem dla DDR4, ponieważ dokumentacja nie jest jeszcze zaktualizowana). Możesz więc sprawdzić te liczby i sprawić, by odpowiadały typowi pamięci z instrukcją IF. Przy okazji użyłem "SMBIOSMemoryType", aby uzyskać wartość – Unknown

+0

W moim laptopie, nawet na moim komputerze, 'MemoryType' zwróci 0, a także' SMBIOSMemoryType' nie zostanie znaleziony. – Nofuzy

Powiązane problemy