Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
4. Apr 2024, 11:55
Das war jetzt erstmal eine Kopfnuss, diese Bitmasken zu sortieren und gedanklich für OR übereinander zu stellen. Aber tatsächlich geht CreateFile mit 0 oder FILE_READ_ATTRIBUTES durch, auch wenn die Datei durch eine vorherige Öffnung mit GENERIC_READ or GENERIC_WRITE, 0, komplett blockiert ist. Im Gegenzug kann man den Parameter dwShareMode auf 0 setzen, da er bei FILE_READ_ATTRIBUTES ignoriert...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
3. Apr 2024
Wenn ich die Dokumentation richtig verstehe, ist 0 sogar noch besser:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
3. Apr 2024
Danke dir. Leider kann ich keine der C-Sprachen. Dort ist die Code-Situation viel günstiger, aber bei Delphi besteht kein Interesse offenbar oder keiner veröffentlich was.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
3. Apr 2024
Ja, das direkte Auslesen der MFT ist schon lange ein Traum von mir, und ich habe da schon einige Arbeit hineingesteckt. Der einzige wirklich hilfreiche Code, den ich finden konnte, ist der von Alexander Freudenberg; den bekam ich auch gut ans Laufen, aber nicht völlig zuverlässig. Ich suche immer noch nach etwas Besserem; vielleicht hat sich da ja etwas getan und jemand hier weiß davon?...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
2. Apr 2024
Andreas, das ist natürlich auch genial. Und das Beste ist, dass ich es mit Uwes Rat kombinieren kann.
Meine Ergebnisse sind:
DateiInfoByHandle
Neustart mit Defender|20 sec
Neustart ohne Defender|12 sec
Zweitstart mit Defender|19 sec
Zweitstart ohne Defender|19 sec
Interessant, dass die Routine nach einem Neustart sogar schneller ist, aber dafür gibt es vermutlich auch eine Erklärung.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
2. Apr 2024
@Uwe Raabe: Jesus Christus. Das drückt die Zeit auf 2 Sekunden bei Neustart; bei Zweitstart und ausgeschaltetem Defender auf 0,7 Sekunden. Ganz abgesehen davon, dass man die Dateien ja sowieso einlesen muss.
Jetzt erinnere ich mich auch, dass ich damals das SearchRec bei Predicate gesehen hatte, aber das wäre mir im Leben nicht mehr eingefallen. Alle Achtung, Herr Raabe. :thumb:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
2. Apr 2024
Wie soll ich die nicht alle einzeln abfragen? Ich brauche die Daten für jede einzelne Datei. Ich habe eine Klasse TDat und eine TObjectList<TDat>, lese die Dateien mittels TDirectory.GetFiles in ein TStringDynArray ein und lege für jede Datei eine Instanz von TDat an. Bisher habe ich das mit GetFileInformationByHandle gemacht und von allen Dateien die entsprechenden Felder gefüllt; jetzt denke...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
2. Apr 2024
Schwer zu verstehen. Wie soll das gehen, nicht alle einzeln abzufragen? Ein Test mit dem direkten Aufruf von FindFirstFileExW ergab Zeiten zwischen 13 und 19 Sekunden, also wesentlich langsamer als GetFileAttributesEx. Der Aufruf von GetFileInformationByHandle lässt sich nicht umgehen, da ich die Anzahl der Links und den File Index benötige.
Die Dateigröße benötige ich nur, um festzustellen,...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Benmik,
2. Apr 2024
Aus gegebenem Anlass habe ich mal gemessen, wie die Funktion GetFileInformationByHandle, mit der auch die Dateigröße bestimmt werden kann, sich schlägt. Hierbei wurde die Zeit bei GetFileAttributesEx und GetFileInformationByHandle für die Verarbeitung von etwa 165.000 Dateien mit zusammen > 3 TB von einer SSD gemessen. Die Messungen erfolgten einerseits nach Rechner-Neustart und dann beim...