Мне нужно получить характеристики жесткого диска на машинах Win и * nix. Я использовал <hdreg.h>
в Linux следующим образом:
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;
}
Мне нужно, чтобы hd_driveid
сообщил мне дополнительную информацию о диске. Я хочу знать:
- Количество разделов
- Характеристики каждого раздела (формат, метка, флаги, размер, начальная точка, количество дорожек и т. д.)
- Количество дорожек на цилиндр
- Общее количество дорожек
- Максимальный размер блока
- Минимальный размер блока
- Размер блока по умолчанию
- Общий размер устройства
Мои вопросы:
- Существует ли общий (независимый от платформы) способ подключения оборудования? Я хотел бы использовать один и тот же код для win и * nix. (даже если не было другого выхода, кроме как встроить ассемблерный код в cpp)
- Если нет, как мне получить вышеуказанную информацию в * nix?