Recuperación de información de SMBIOS - página 4

 
Vitaly Muzichenko:

Me gustaría que alguien hubiera comprobado el vin.

Fui yo quien lo subió.

 
JRandomTrader:

Estaba subiendo desde un winepad.

Bueno, no quisiste comprobar con hwinfo si el uuid era correcto.

 

Aquí están los arreglos.

Para el uso en el mundo real, cuando no necesite la información extra, comente/no defina #define SMBIOS_DEBUG

Archivos adjuntos:
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Aquí están los arreglos.

Para un uso real, cuando no necesite información extra, comente/no defina #define SMBIOS_DEBUG

Y cómo se puede limpiar mqh de código innecesario, para que sólo quedePrint("UUID: ", uuid);

 
Vitaly Muzichenko:

Y cómo se puede limpiar mqh del exceso de código para que sólo quedePrint("UUID: ", uuid);

Eliminar todas las envolturas #ifdef SMBIOS_DEBUG / #endif

No borrar partes en #else

 
Edgar Akhmadeev:

Borrar todo lo envuelto #ifdef SMBIOS_DEBUG / #endif

No borres las partes en #else

No se puede leer el código en absoluto, es tan jodido. Al borrar algo lo rompo todo.

Quiero dejar algunas líneas con transferencia al propio guión

Este es el código para obtener el número de partición C, es corto y directo.

#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);
}

---

¿Puedes hacerlo así, por favor?

 
Vitaly Muzichenko:

No puedo leer el código en absoluto, es demasiado complicado. Si borro algo, lo rompo todo.

Me gustaría dejar unas líneas en el propio script

Este es el código para obtener el número de partición C, es corto y directo.

---

¿Puedes hacerlo así, por favor?

¿Qué sentido tiene limpiar el código de la biblioteca, retocarlo para adaptarlo a las necesidades privadas? Esos trozos de código no se compilan cuando no se necesitan. Sólo para incluir la biblioteca, y se llama por una sola línea.

string uuid = SMBIOS::Read();

¿Con el fin de dar sentido al código? La función es pequeña para mis estándares. Si lo quitas con cuidado, como he explicado - todo en la envoltura #ifdef/#endif, pero dejando entre #else/#endif - nada se romperá. La mitad del código seguirá estando ahí. No se trata sólo de una consulta y una salida, sino de una secuencia de bloques de datos, procesamiento y recodificación.

 
Edgar Akhmadeev:

¿Qué sentido tiene limpiar el código de la biblioteca, ajustándolo a las necesidades privadas? Estas piezas de código no se compilan cuando no se necesitan. Es una biblioteca en línea, y se llama con una sola línea

¿Con el fin de dar sentido al código? La función es pequeña para mis estándares. Si lo quitas con cuidado, como he explicado - todo en la envoltura #ifdef/#endif, pero dejando entre #else/#endif - nada se romperá. La mitad del código seguirá estando ahí. No se trata sólo de una consulta y una salida, sino de una secuencia de bloques de datos, procesamiento y recodificación.

Intentaré mirarlo desde el otro lado, quizás algo funcione.

El último intento llevó a esto, pero por supuesto tampoco vi ningún dato.


 

Hecho un arreglo cosmético, no es necesario volver a descargar

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

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

Me gustaría que fuera como en c++

const uint SMBIOS_signature = 'RSMB';

Hay uno en MQL

datetime d = D'2020.07.06';

¿Quizás no conozco algunas sutilezas?

Archivos adjuntos:
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Hecho un arreglo cosmético, no es necesario volver a descargar

Me gustaría que fuera como en c++

Hay uno en MQL

¿Quizás no conozco ninguna sutileza?

Muchas gracias, ¡ha funcionado!

Razón de la queja: