Autor Beitrag
GeriW
Hält's aus hier
Beiträge: 5


delphi
BeitragVerfasst: Di 25.10.05 12:09 
Wie kann ich mehrere grosse Dateien (z.B. 20MB Dateien) am Ende des freien Speicherplatzes einer HD oder partition erstellen?

Mit "CreateFile()" oder "NtCreateFile()" und "SetFilePointer()" müsste es doch gehen, oder?

Danke für Eure Mithilfe.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 25.10.05 13:26 
Ich glaub so einfach nicht.
In der letzten c't war ein Artiekel zum Thema Fragmentierung und da wurde darauf hingewiesen, dass es unter XP eine Defrag API gibt. Also kannst du vielleicht deine Datei normal erstellen und dann "von Hand" in die letzten Sektoren packen.

Ich rate davon ab das als Kopierschutz o.ä. einzusetzen, was hast du denn vor?
GeriW Threadstarter
Hält's aus hier
Beiträge: 5


delphi
BeitragVerfasst: Mi 26.10.05 10:20 
Das Ganze ist etwas komplexer, als so wie es beschrieben ist.

Der Beitrag im c't 2005 Heft 21 habe ich auch gelesen.
Nur das mein Problem nur ein etwas klareres Bild ergibt. Aber trotzdem noch keine Lösung daraus ergibt.

Diese Dateien sollten "Platzhalter" sein und habe eigentlich nichts drin. Dieselben Dateien sollten auch nicht mehr verschoben werden können (z.B. mit dem Defragmentieren) und sollten selber auch nicht fragmentert sein. Weiter dürfen sie auch nicht vom MS Betriebsystem komprimiert werden dürfen.

Der Wurm liegt im Detail. Denn die Grundprinzipien sind klar. (Dateien erstellen, Berechtigungen setzen, ect.)

Die Frage ist viel mehr, wie und wo erstellt MS eine Datei und wie kann man sie überhaupt gegen das Fragmentieren schutzen (an einem Stück erstellt sein). Und sie dürfen danach auch nicht Defragmentiert und MS Betriebsystem komprimiert werden dürfen.

Also ein grosser Fragekatalog

Eine Möglichkeit sehe ich so:
1. Datei erstellen und gleich die Dateigrösse festlegen (Analog c't Heft)
2. Datei an seinen Bestimmungsort verschieben
3. Berechtigungen setzten
3. Datei mit "Null" Char füllen.
matze.de
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 576

Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
BeitragVerfasst: Mi 26.10.05 10:43 
Gehen muss es auf jeden Fall. Beim defragmentieren zeigter ja mit grün an "Nicht Verschiebbare Dateien" Ich glaube dazu zählt auch die "pagefile.sys" Das dürte als Beispiel für dein vorhaben nahe ran kommen.

mfg matze

_________________
si tacuisses, philosophus mansisses.
GeriW Threadstarter
Hält's aus hier
Beiträge: 5


delphi
BeitragVerfasst: Mi 26.10.05 11:04 
Das Defragmentieren von MS ist ein "undurchsichtige" Angelegenheit.
Das "PageFile.sys" und andere sind solche "grünen" Dateien.

Aber wie kann ich meine eigenen Dateien so Definieren am Zielort nach dem Erstellen?
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 26.10.05 12:54 
Ich habe keine Erfahrung mit NTFS naher Programmierung, bezweifle aber mal das es so einfach ist ein Flag "nicht defragmentieren" zu setzen.
Es gibt ja bei NTFS auch noch diese komischen Subfilestreams(keine Ahnung wie die genau heißen) vielleicht lässt sich dadurch was erreichen?

Nützlich dürften die Tools von www.sysinternals.com...ndDiskUtilities.html sein, zumal die ja auch im Sourcecode vorliegen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.10.05 16:38 
Wozu brauchst du Platzhalter und warum dürfen die Dateien nicht in andere Cluster verschoben werden?
GeriW Threadstarter
Hält's aus hier
Beiträge: 5


delphi
BeitragVerfasst: Di 01.11.05 10:59 
Diese Dateien sind Teil eines grossen Produkts.
Es sind so genannte "Platzhalter", damit ein Reinigungsprogramm diese benutzen kann.

Die Schwierigkeit liegt nicht im erstellen oder verschieben solcher Dateien, habe ich herausgefunden, sondern eigentlich, dass sie vom Betriebsystem als "nicht zu verschiebende Dateien" gelten. Also im klassischen Defragmentierungs-Tool als "grüne" Dateien erscheinen.

Der Code zur Erstellung und zur Verschiebung der "Platzhalter" Dateien ist noch in Bearbeitung.
Kommt später.
ripper8472
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: Di 01.11.05 11:23 
du kannst hoffen, dass du sie einmal erstellst mit nullchars und beim ueberscheiben die FS api die daten nicht auf andere sektoren verlagert. mehr auch nicht.

es gibt btw auch unter 2k schon so eine api. ich hab hier o&o defrag und das packts prima, auch wenn parallel auf der platte gearbeitet wird (alles apifunktionen, kein datenverlust, da ntfs ja angeblich journallingfaehig sein soll).