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