Necesito obtener las especificaciones del disco duro en las máquinas Win y * nix. Solía <hdreg.h>
en Linux así:Cómo obtener información de hardware en Linux usando C++
static struct hd_driveid hd;
int device;
if ((device = open("/dev/sda", O_RDONLY | O_NONBLOCK)) < 0)
{
cerr << "ERROR: Cannot open device /dev/sda \n";
exit(1);
}
if (!ioctl(device, HDIO_GET_IDENTITY, &hd))
{
cout << hd.model << endl;
cout << hd.serial_no << endl;
cout << hd.heads << endl;
}
necesito hd_driveid
decirme algo más de información sobre el disco. Quiero saber:
- número de particiones
- Especificaciones de cada partición (formato, etiquetas, banderas, tamaño, punto de inicio, número de pistas, etc.)
- Número de pistas por cilindro
- Número de pistas totales
- tamaño de bloque máximo
- bloque mínimo tamaño
- tamaño de bloque predeterminado
- Tamaño total del dispositivo
Mis preguntas son:
- ¿Hay una forma común (independiente de la plataforma) para de hardware de conexión? Me gustaría usar el mismo código para win y * nix. (incluso si no había otra manera que incrustando código de ensamblado en cpp)
- Si no hay, ¿cómo obtengo la información anterior en * nix?
Algunos sistemas no tienen particiones ... Algunos (normalmente en los * BSD) usan "sectores" en su lugar, y otros podrían estar simplemente usando el disco duro completo. (es decir, sin particionar). – Arafangion