speicheradresse einer datei abfragen

blacksb

Grünschnabel
hallo!

im grunde steht alles schon im titel! naja, also im prinzip geht es mir nur darum mal die speicheradresse einer datei abzufragen! gibt es da in c++ bereits fertige befehle?

vielen dank im voraus!

gruß blacksb
 
moin


Was verstehst du unter Speicheradresse?

Wenn du das selbe darunter verstehst wie ich:
Code:
#include <stdio.h> 

int main () 
{ 
	FILE *datei;
	datei = fopen("foobar.cpp", "r");

	printf("0x%x", datei);	

	return 0; 
}

Edit:
Du hast uns grad zum diskutieren gebracht...
Mit dem Code oben bekommst du nur nen Pointer der auf eine Struktur zeigt, in der Informationen zu der Datei stehen. Unter anderem auch die Adresse der Datei, aber nur der Adresse im Ram und nicht auf der Platte.


mfg
umbrasaxum
 
Ich glaube wenn du die genaue Adresse einer Datei auf der Partition haben willst, musst du,
zumindestens wenn du NTFS als Filesystem verwendest, die Master File Table auslesen und interpretieren.
Wie der Code dazu aussieht, weiß ich auch nicht - ich meine dass man dafür bei
OpenFile oder CreateFile bestimmte Paramter angeben muss!
 
Morgen!

Erstmal danke für eure Antworten!

Ja, genau, ich möchte die Adresse der Festplatte haben! Hätte meine Frage genauer Stellen sollen! Wie kommt man an die MFT ran?

gruß blacksb
 
moin


Du hast doch schon nen Hinweiss bekommen wo du gucken könntest! Also schmeiss google oder die MSDN an und such selber.
Ich hab grad mal in der MSDN geguckt, aber nicht gefunden was die Position angibt im Zusammenhang mit CreateFile oder OpenFile.

Ich sehe aber das wenn man sich mit CreateFile den Handle einer geholt hat, kann man mit DeviceIoControl viel machen.


mfg
umbrasaxum
 
Wie C Coder bereits gesagt hat wirst du nicht drum rum kommen die Master File Table auszulesen. Es gibt Seiten im Internet da wird beschrieben wie die einzelnen Dateisysteme aufgebaut sind (meist im Zusammenhang mit Betriebssystem entwicklung).
 
Auf direktem Weg (BIOS - Interrupt) sicher nicht. Da Windows NT ja den direkten Hardwarezugriff verweigert. Windows bietet aber mit CreateFile teilweiße die Möglichkeit trotzdem direkt auf die Hardware zuzugreifen. So wie in deinem Link. Oder mann macht es über einen Treiber, den Treiber haben direkten Hardwarezugriff.
Es reicht aber schon aus Daten aus der Master File Table lesen zu können, denn die enthalten die exakte Position auf der Platte. Dein Link müsste also gut weitergeholfen haben.

Wozu? Da kann ich mir nur folgendes Vorstellen:

- Defragmentierungsprogramm
- Datei Wiederherstellungsprogramm
- Partitionierungsprogramm

mehr fällt mir dazu auch nicht ein, denn eigentlich braucht man das nicht
 
Zurück