Comment obtenir les informations sur le matériel sous Linux à l'aide de C++

J'ai besoin pour obtenir les spécifications du disque dur à Gagner et *nix machines. J'ai utilisé <hdreg.h> sur Linux comme ceci:

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

J'ai besoin de hd_driveid de me dire quelques informations sur le disque. Je veux savoir:

  • Nombre de partitions
  • Spécifications de chaque partition (format, l'étiquette, les drapeaux, la taille, le point de départ, le nombre de pistes, etc.)
  • Nombre de pistes par cylindre
  • Nombre total de pistes
  • Taille de bloc maximale
  • Minimum de la taille du Bloc
  • Taille de bloc par défaut
  • Taille totale de l'appareil

Mes questions sont:

  1. Commun
    (indépendant de la plate -) de manière à
    connectez le matériel? Je voudrais utiliser
    même code pour gagner et *nix. (même si
    il n'y a aucun moyen autre que
    l'incorporation de code assembleur en rpc)
  2. Si il n'y en a pas, comment puis-je obtenir de l'information ci-dessus sous *nix?
  • Certains systèmes n'ont pas de cloisons... Certains (généralement dans les *BSD) l'utilisation des "tranches" au lieu de cela, et d'autres pourraient bien être tout en utilisant le disque dur. (c'est à dire, non partitionné).
InformationsquelleAutor sorush-r | 2011-03-04