SMBIOS에서 정보 얻기

 

SMBIOS에서 하드웨어 정보(마더보드 및 플랫폼)를 읽는 코드를 작성했습니다. 당연히 WinAPI가 사용됩니다. 제품을 철에 묶는 데 사용할 수 있습니다. 제 생각에는 마더보드 이외의 다른 것에 묶는 것은 의미가 없습니다. 디스크, 비디오 카드 - 가변.

SMBIOS.mqh를 Include에 넣습니다.

스크립트에서 SMBIOS.mq5를 테스트합니다.

실제 사용을 위해 추가 정보가 필요하지 않은 경우 주석 처리/#define SMBIOS_DEBUG 정의하지 않음

저는 한 대의 노트북과 VPS에서만 테스트했으며 제대로 작동하지 않으면 커뮤니티 검토 및 보고가 필요합니다. hwinfo 프로그램으로 데이터를 확인하십시오.

1. 코드는 SMBIOS의 데이터가 고정된 순서로 발행된다고 가정합니다. 따라서 불일치가 있는 경우 BIOS, 시스템, 메인보드 및 시스템 인클로저 탭의 마더보드/SMBIOS DMI 트리에서 hwinfo의 전체 테스트 및 스크린샷을 제공하는 것이 좋습니다. 그렇지 않으면 디버그할 수 없습니다.

2. 여기를 아름답게 만드는 방법에 대해 잘생긴 프로그래머의 조언이 필요합니다.

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

다른 수의 필드가 발행되고 있는 것 같습니다. 여백이 있는 배열을 만들려고 했습니다. 밖으로 이동하는지 보겠습니다. SMBIOS.mqh를 다시 업로드했습니다.

추신: 내가 말했듯이, 나는 한 대의 컴퓨터에서만 확인했습니다. 다른 사람은 액세스할 수 없습니다. 그러니 판단하지 마세요.
파일:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev :

여기에서 아름답게 만드는 방법:

 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 :

다른 수의 필드가 발행되고 있는 것 같습니다. 여백이 있는 배열을 만들려고 했습니다. 밖으로 이동하는지 보겠습니다. 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 :

고맙습니다. 더 아름답지만 어떻게 든 중복됩니다. 실행 코드가 없으면 바람직할 것입니다.

 

윈7 x64


 

적립, 4ke에 고정이 필요합니다,

로그인되지 않은 계정으로 작업했습니다.

2021.03.23 15:40:24.109 단말기 Windows 7 서비스 팩 1 빌드 7601, Intel Core i3-3220 @ 3.30GHz, 0/7 Gb 메모리, 11/298 Gb 디스크, 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 :

해결 방법을 찾고 있습니다.

파일:
SMBIOS.mqh  5 kb
 
Edgar Akhmadeev :

해결 방법을 찾고 있습니다.

 
Vitaly Muzichenko :

윈7 x64

ALL 배기인가요?

사유: