Abrufen von Informationen aus dem SMBIOS

 

Geschriebener Code zum Lesen von Hardware-Informationen (Motherboard und Plattform) aus SMBIOS. Natürlich wird die WinAPI verwendet. Kann verwendet werden, um Produkte an Hardware zu binden. Meiner Meinung nach macht es keinen Sinn, sich an etwas anderes als die Hauptplatine zu binden. Laufwerke und Grafikkarten sind variabel.

Fügen Sie SMBIOS.mqh in Include ein.

Test SMBIOS.mq5 - in Skripten.

Für den echten Gebrauch, wenn Sie keine unnötigen Informationen benötigen, kommentieren Sie es aus / definieren Sie nicht #define SMBIOS_DEBUG

Ich habe es nur auf einem Laptop und einem VPS getestet, und es muss überprüft und gemeldet werden, wenn es nicht richtig funktioniert. Überprüfen Sie die Daten mit dem Programm hwinfo.

1. Der Code geht davon aus, dass die Daten von SMBIOS in einer festen Reihenfolge ausgegeben werden.Wenn es alsoUnstimmigkeiten gibt, ist es ratsam, eine vollständige Testausgabe und Screenshots von hwinfo auf den Registerkarten BIOS, System, Mainboard und Systemgehäuse im Motherboard/SMBIOS-DMI-Baum zu erstellen. Andernfalls kann ich keine Fehlersuche durchführen.

2. Ich brauche einen Rat von Handy-Programmierern, wie man es hier schön aussehen lassen kann:

//const uint    SMBIOS_signature = 'RSMB';
const uint      SMBIOS_signature = ('R' << 24) + ('S' << 16) + ('M' << 8) + 'B';
HWiNFO - Free System Information, Monitoring and Diagnostics
  • www.hwinfo.com
Free Hardware Analysis, Monitoring and Reporting. In-depth Hardware Information, Real-Time System Monitoring, Reporting & more
Dateien:
SMBIOS.mqh  6 kb
 
2021.03.23 14:33:50.492 array out of range in 'SMBIOS.mqh' (170,8)
 
fxsaber:

Es scheint eine andere Anzahl von Feldern zu geben. Ich habe versucht, ein Array mit einem Rand zu erstellen und zu sehen, ob es sich bewegt. Wiederveröffentlichte SMBIOS.mqh.

PS: wie gesagt, nur auf einem Computer getestet. Kein Zugang zu den anderen. Es muss Ihnen also nicht leid tun.
Dateien:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev:

wie man es hübsch aussehen lässt:

template <typename T>
T StringToInteger2( const string Str )
{
  T Res = 0;
  
//  const int Size = MathMin(StringLen(Str), sizeof(T));
  const int Size = StringLen(Str);
  
  for (int i = 0; i < Size; i++)
    Res = (Res << 8) + Str[i];
    
  return(Res);
}

//const uint    SMBIOS_signature = 'RSMB';
const uint      SMBIOS_signature = StringToInteger2<uint>("RSMB");
 
Edgar Akhmadeev:

Es scheint eine andere Anzahl von Feldern zu geben. Ich habe versucht, ein Array mit einem Rand zu erstellen und zu sehen, ob es sich verschiebt. Wiederveröffentlichte SMBIOS.mqh.

2021.03.23 14:49:24.516 Location in chassis:  
2021.03.23 14:49:24.516 array out of range in 'SMBIOS.mqh' (192,24)
 
fxsaber:

Ich danke Ihnen. Schön, aber irgendwie überflüssig. Ich möchte es ohne ausführbaren Code.

 

Win7 x64


 

Es hat geklappt, ich muss es mit 4 verschrauben,

Funktioniert auch, wenn man nicht eingeloggt ist.

2021.03.23 15:40:24.109 Terminal Windows 7 Service Pack 1 build 7601, Intel Core i3-3220 @ 3.30GHz, 0 / 7 Gb Speicher, 11 / 298 Gb Festplatte, IE 11, UAC, GMT+3


FM      0       15:51:26.042    Test_SMBIOS (USDSEK,M1) System Management BIOS Version: 2.7
GF      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) System BIOS Version: 4.6
RM      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Embedded Controller Firmware Version: 255.255
LJ      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) BIOS Vendor: American Megatrends Inc.
QN      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) BIOS Version: V1.6
DI      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) BIOS Release Date: 04/17/2012
RE      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) UUID: {0000-00-00-00-8 c89a5ffbfb6}
FL      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) System Manufacturer: MSI
DE      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Product Name: MS-7788
QR      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Product Version: 1.0
KK      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Product Serial Number: To be filled by O.E.M.
ON      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) SKU Number: To be filled by O.E.M.
KH      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Family: To be filled by O.E.M.
FH      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Mainboard Manufacturer: MSI
OL      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Mainboard Name: H61M-P20 (G3) (MS-7788)
ED      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Mainboard Version: 1.0
KM      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Mainboard Serial Number: To be filled by O.E.M.
EN      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Asset Tag: To be filled by O.E.M.
CI      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) Location in chassis: To be filled by O.E.M.
MP      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) {0000-00-00-00-8 c89a5ffbfb6}
EH      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) To be filled by O.E.M.
IP      0       15:51:26.043    Test_SMBIOS (USDSEK,M1) To be filled by O.E.M.
 
fxsaber:

Eine weitere Korrektur.

Dateien:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev:

Eine weitere Korrektur.

 
Vitaly Muzichenko:

Win7 x64

Ist das die gesamte Ausgabe?