SMBIOS'tan bilgi alma

 

SMBIOS'tan donanım bilgilerini (anakart ve platform) okumak için kod yazdı. Doğal olarak WinAPI kullanılır. Ürünleri ütüye bağlamak için kullanılabilir. Bence anakarttan başka bir şeye bağlamanın bir anlamı yok. Diskler, video kartları - değişken.

SMBIOS.mqh'yi Dahil Et'e koyun.

SMBIOS.mq5'i Test Edin - Komut Dosyalarında.

Gerçek kullanım için, ekstra bilgiye ihtiyacınız olmadığında, yorum yapın / #define SMBIOS_DEBUG tanımlamayın

Yalnızca bir dizüstü bilgisayarda ve VPS'de test ettim ve düzgün çalışmıyorsa topluluk incelemesine ve raporlarına ihtiyacım var. Verileri hwinfo programı ile kontrol edin.

1. Kod, SMBIOS'tan gelen verilerin sabit bir sırayla verildiğini varsayar. Bu nedenle, tutarsızlıklar varsa, Anakart / SMBIOS DMI ağacından BIOS, Sistem, Anakart ve Sistem muhafazası sekmelerinden hwinfo'dan testin ve ekran görüntülerinin tam bir özetini vermeniz önerilir. Aksi takdirde, hata ayıklama yapamam.

2. Yakışıklı programcılardan burayı nasıl güzelleştireceklerine dair tavsiyeye ihtiyacınız var:

 //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
Dosyalar:
SMBIOS.mqh  6 kb
 
2021.03.23 14:33:50.492 array out of range in 'SMBIOS.mqh' (170,8)
 
fxsaber :

Başka bir dizi alan yayınlanıyor gibi görünüyor. Kenar boşluğu olan bir dizi yapmaya çalıştım, bakalım dışarı çıkacaklar mı. SMBIOS.mqh yeniden yüklendi.

Not: Dediğim gibi sadece bir bilgisayarda kontrol ettim. Diğerlerine erişim yok. O yüzden yargılama.
Dosyalar:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev :

burada güzel yapmak nasıl:

 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 :

Başka bir dizi alan yayınlanıyor gibi görünüyor. Kenar boşluğu olan bir dizi yapmaya çalıştım, bakalım dışarı çıkacaklar mı. SMBIOS.mqh yeniden yüklendi.

 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 :

Teşekkür ederim. Daha güzel, ama bir şekilde gereksiz. Yürütülebilir kod olmadan arzu edilir.

 

Win7 x64


 

Kazanılan, 4ke'ye tutturmak gerekiyor,

Kayıtsız bir hesapla çalıştı.

2021.03.23 15:40:24.109 terminal Windows 7 Service Pack 1 build 7601, Intel Core i3-3220 @ 3.30GHz, 0/7 Gb bellek, 11/298 Gb disk, 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 :

Bir düzeltme arıyorum.

Dosyalar:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev :

Bir düzeltme arıyorum.

 
Vitaly Muzichenko :

Win7 x64

Bu TÜM egzoz mu?