Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Harddisks auslesen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
06.10.2009, 23:17 Uhr
Mango



Wie kann ich die Harddisks auslesen. Größe? Vllt auch die Partitionen mit Format?

MFG

Dieser Post wurde am 07.10.2009 um 11:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.10.2009, 00:10 Uhr
Hans
Library Walker
(Operator)


Hi,

wenn Du die Frage mal konkretisieren würdest, wäre uns allen geholfen. Denn so wie die Frage bisher da steht, kann man Dir viele Antworten geben, wobei du Dir die richtige Aussuchen kannst. Da wären zuerst zum Beispiel:
* die Befehle des Betriebssystems wie copy, xcopy oder diskcopy, die zum Auslesen taugen.
* Dann gibt es noch so Programme wie fdisk, oder Partition Magic, die für bestimmte Zwecke nützlich sind, die man aber nur dann benutzen sollte, wenn man weis, was man tut. Sonst macht man damit mehr kaputt, als man ahnt.
* Und dann gibt es von Festplatten-Herstellern noch so Programme, mit denen man an spezielle Informationen dran kommt, die auch mal nützlich sein können, die man als "Otto-normal-user" aber nur selten oder gar nicht braucht.

Was willst Du nun wissen?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.10.2009, 13:04 Uhr
Mango



Das hier ist ein C++ Forum. Ich bräuchte die Befehle + Libs.

MFG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.10.2009, 14:40 Uhr
okraits



Das, was Du vermutlich möchtest, ist stark betriebssystemabhängig.
--
www.okraits.de/

Dieser Post wurde am 07.10.2009 um 14:41 Uhr von okraits editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.10.2009, 18:39 Uhr
Mango



Wie siehts mit dem Linux Betriebsystem aus?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.10.2009, 18:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da wäre ein opendir/readdir über "/dev" ne möglichkeit, und dann halt über stat rausfinden, ists ein block-device und wenn ja, kannst ja mit fdisk die geometrie auslesen lassen. gut denk da gibts evtl noch was api-mäßiges, für das auslesen der geometrie, oder fdisk hat ne bibliothek die man einbinden kann o.ä
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.10.2009, 19:58 Uhr
okraits



Oder z.B. einen 'df -h' Aufruf absetzen und die Ausgabe parsen. Sind halt dann die gemounteten Partitionen.
--
www.okraits.de/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.10.2009, 20:34 Uhr
0xdeadbeef
Gott
(Operator)


Da kommt man mit ioctl ran. Welche ioctls wofür gebraucht werden, steht in der Kernel-Dokumentation, die ist bei den Kernel-Sourcen dabei. In diesem speziellen Fall sähe das etwa so aus:

C++:
#include <sys/ioctl.h>
#include <linux/hdreg.h>

/* ... */

int fd = open("/dev/sda", O_RDONLY);
struct hd_geometry hg;

if(!ioctl(fd, HDIO_GETGEO, &hg)) {
  // hg beinhaltet die Plattengeometrie von /dev/sda
  // Struct-Definition ist in /usr/include/linux/hdreg.h nachlesbar
} else  {
  // Fehler
}

close(fd);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 07.10.2009 um 21:05 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.10.2009, 09:46 Uhr
Mango



Hey danke, jedoch brauch ich erstmal die Platten die verbaut sind. Also sda oder hda..

Edit: "Oder z.B. einen 'df -h' Aufruf absetzen und die Ausgabe parsen. Sind halt dann die gemounteten Partitionen." Ich brauche auch die ungemounteten.


Edit2: "/dev" Ja funkt, jedoch woher bekomme ich die groe0e?

MFG

Dieser Post wurde am 08.10.2009 um 09:59 Uhr von Mango editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.10.2009, 16:06 Uhr
0xdeadbeef
Gott
(Operator)


In dem Fall wohl am einfachsten so:

C++:
#include <fcntl.h>
#include <inttypes.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/mount.h>

int main(void) {
  int fd = open("/dev/sda", O_RDONLY);
  uint64_t groesse;

  if(!ioctl(fd, BLKGETSIZE64, &groesse)) {
    printf("Größe von /dev/sda: %" PRIu64 "\n", groesse);
  } else {
    puts("Fehler.");
    return 1;
  }

  return 0;
}


Du brauchst natürlich die Rechte, um auf die Festplatte zuzugreifen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 08.10.2009 um 16:06 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: