Recuperare informazioni da SMBIOS - pagina 4

 
Vitaly Muzichenko:

Vorrei che qualcuno avesse controllato il vin.

Sono io che l'ho caricato.

 
JRandomTrader:

Stavo solo caricando dal Win.

Beh, non volevi controllare con hwinfo per vedere se l'uuid era corretto.

 

Ecco le correzioni.

Per un uso reale, quando non avete bisogno di informazioni extra, commentate/non definite #define SMBIOS_DEBUG

File:
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Ecco le correzioni.

Per un uso reale, quando non avete bisogno di informazioni extra, commentate/non definite #define SMBIOS_DEBUG

E come si può pulire mqh dal codice non necessario, in modo che rimanga soloPrint("UUID: ", uuid);

 
Vitaly Muzichenko:

E come si può pulire mqh dal codice in eccesso in modo che rimanga soloPrint("UUID: ", uuid);

Rimuovere tutti i wrapper #ifdef SMBIOS_DEBUG / #endif

Non cancellare le parti in #else

 
Edgar Akhmadeev:

Cancellare tutti i wrapped #ifdef SMBIOS_DEBUG / #endif

Non cancellare le parti in #else

Non si riesce a leggere il codice, è così incasinato. Quando si cancella qualcosa si rompe tutto.

Voglio lasciare alcune linee con il trasferimento allo script stesso

Ecco il codice per ottenere il numero della partizione C, è breve e diretto.

#import "kernel32.dll"
   bool GetVolumeInformationW(const string root_path_name,
                              string volume_name_buffer,
                              uint volume_name_size,
                              uint &volume_serial_number[],
                              uint maximum_component_length,
                              uint file_system_flags,
                              string file_system_name_buffer,
                              uint file_system_name_size
);
#import

string SystemDriveSerialNumber() {
   int iVolumeSerialNumber[1]= {0};
   string sVolumeSerialNumber="";
   if(GetVolumeInformationW("C:\\",NULL,15,iVolumeSerialNumber,0,0,NULL,15)) {
      sVolumeSerialNumber=IntegerToHexString(iVolumeSerialNumber[0]);
      sVolumeSerialNumber=StringSubstr(sVolumeSerialNumber,0,4)+"-"+StringSubstr(sVolumeSerialNumber,4);
   }
  return(sVolumeSerialNumber);
}

---

Puoi farlo così, per favore?

 
Vitaly Muzichenko:

Non riesco a leggere il codice, è troppo complicato. Se cancello qualcosa, rompo tutto.

Vorrei lasciare alcune righe nello script stesso

Ecco il codice per ottenere il numero della partizione C, è breve e diretto.

---

Puoi farlo così, per favore?

Che senso ha ripulire il codice della libreria, modificandolo per adattarlo alle esigenze private? Quei pezzi di codice non si compilano quando non servono. Solo per includere la libreria, ed è chiamata da una sola linea.

string uuid = SMBIOS::Read();

Per dare un senso al codice? La funzione è piccola per i miei standard. Se lo rimuovi con attenzione, come ho spiegato - tutto nel wrapper #ifdef/#endif, ma lasciando tra #else/#endif - non si romperà nulla. La metà del codice sarà ancora lì. Non è solo una query e un output, ma una sequenza di blocchi di dati, elaborazione e ricodifica.

 
Edgar Akhmadeev:

Che senso ha pulire il codice della libreria, modificandolo per adattarlo alle esigenze private? Questi pezzi di codice non vengono compilati quando non sono necessari. Solo una libreria inline, ed è chiamata con una linea di codice?

Per dare un senso al codice? La funzione è piccola per i miei standard. Se lo rimuovi con attenzione, come ho spiegato - tutto nel wrapper #ifdef/#endif, ma lasciando tra #else/#endif - non si romperà nulla. La metà del codice sarà ancora lì. Non è solo una query e un output, ma una sequenza di blocchi di dati, elaborazione e ricodifica.

Proverò in un altro modo, forse qualcosa funzionerà.

L'ultimo tentativo ha portato a questo, ma ovviamente non ho visto neanche un dato.


 

Fatta una correzione cosmetica, non c'è bisogno di riscaricare

#define  SIG(a, b, c, d) ((a << 24) + (b << 16) + (c << 8) + d)

const uint SMBIOS_signature = SIG('R','S','M','B');

Vorrei che fosse come in c++

const uint SMBIOS_signature = 'RSMB';

Ce n'è uno in MQL

datetime d = D'2020.07.06';

Forse non conosco alcune sottigliezze?

File:
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Fatta una correzione cosmetica, non c'è bisogno di riscaricare

Vorrei che fosse come in c++

Ce n'è uno in MQL

Forse non conosco nessuna sottigliezza?

Grazie mille, ha funzionato!