festplatteninfo auslesen
-
Hallo,
gibt es in C eine Möglichkeit Informationen über die Festpaltte (wie Größe, Speicherplatz, usw) auszulesen. Wenn ja wie?
-
in Standard C geht das nicht. Aber dein Betriebssystem bietet da sicher Möglichkeiten. Welches verwendest du denn?
-
Schnelle Notlösung:Es gibt die Umgebungsvariable 'df' oder mit grafig 'kdf'...die du über system("kdf");in deinem c-code aufrufen kannst...
-
Ciro schrieb:
Schnelle Notlösung:Es gibt die Umgebungsvariable 'df' oder mit grafig 'kdf'...die du über system("kdf");in deinem c-code aufrufen kannst...
Aber sicher nicht unter Windows. Und soviel ich weiss, ist df ein Programm.
-
Ciro schrieb:
Schnelle Notlösung:Es gibt die Umgebungsvariable 'df' oder mit grafig 'kdf'...die du über system("kdf");in deinem c-code aufrufen kannst...
Das Beispiel gilt natürlich nur für Unix Betriebssysteme.Für Windoof mußt du die Dos Befehle einbinden...
-
Shade Of Mine schrieb:
Ciro schrieb:
Schnelle Notlösung:Es gibt die Umgebungsvariable 'df' oder mit grafig 'kdf'...die du über system("kdf");in deinem c-code aufrufen kannst...
Aber sicher nicht unter Windows. Und soviel ich weiss, ist df ein Programm.
@shade of mine:Sicher ist es ein Programm...Es sollte ja nur eine Notlösung sein...
@cppdanny:Schau dir die stat()funktion mal genauer an...#include <sys/stat.h> /* LINUX/UNIX /
#include <sys/types.h> / LINUX/UNIX /
#include <sys\stat.h> / MS-DOS/WINDOWS */int stat(const char *pfad, struct stat *puffer);
-
Ciro schrieb:
@shade of mine:Sicher ist es ein Programm...Es sollte ja nur eine Notlösung sein...
Schonmal daran gedacht zu warten um zu erfahren welches Betriebssystem der OP verwendet?
Es ist doch sinnlos 100 'Not'-Lösungen zu posten um - wenn man sowieso warten muss welches OS verwendet wird.
-
Shade Of Mine schrieb:
In Standard C geht das nicht.
Wie ich diesen Satz doch mag.
-
Ich verwende Win XP.
-
dann wäre wohl winapi die beste wahl
bsp: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/disk_management_functions.asp
-
Zu DOS Zeiten konnte man eine Assembler
Block in C einfügen, mit dem man das BIOS abgefragt hatte.Ich glaube es war Interrupt 13h, Funktion 08h
Also:
__asm { mov ah, 08h mov dl, 80h //Nummer des Festplatten Laufwerks (80h oder 81h) int 13h }
Ausgabe:
DL = Anzahl der angeschlossenen Festplatten
DH = Anzahl der Lese-Schreibköpfe
CH = Nummer des Zylinders
CL = Nummer des Sektors
Kapazität = Köpfe*Zylinder*Sektoren*512
Aber Windows NT und höher lässt keine Hardware Interrupts zu, soweit ich weiß.
Bei Linux weiß ich es nicht.
-
Ovaron123 schrieb:
Zu DOS Zeiten konnte man eine Assembler
Block in C einfügen, mit dem man das BIOS abgefragt hatte.Ich glaube es war Interrupt 13h, Funktion 08h
Also:
__asm { mov ah, 08h mov dl, 80h //Nummer des Festplatten Laufwerks (80h oder 81h) int 13 }
Ausgabe:
DL = Anzahl der angeschlossenen Festplatten
DH = Anzahl der Lese-Schreibköpfe
CH = Nummer des Zylinders
CL = Nummer des Sektors
Kapazität = Köpfe*Zylinder*Sektoren*512
Aber Windows NT und höher lässt keine Hardware Interrupts zu, soweit ich weiß.
Bei Linux weiß ich es nicht.WinNT lässt Programme nicht mehr 13h benutzen, glaube aber dass es 13h emuliert bin mir aber nicht sicher.
-
Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.