Как получить информацию об оборудовании в Linux с помощью C ++

Мне нужно получить спецификации жесткого диска на машинах Win и * nix. Я использовал на 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?
9
задан sorush-r 4 March 2011 в 13:49
поделиться