Einzelnen Beitrag anzeigen

Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#7

Re: Datei kopieren ohne Cache (FILE_FLAG_NO_BUFFERING)

  Alt 28. Nov 2009, 09:11
Luckie wollte sagen, dass

Handle:=CreateFile(PChar('\\.\' + Laufwerk + ':'), GENERIC_READ, FILE_SHARE_READ, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_NO_BUFFERING, 0); dir ein Handle auf das Laufwerk, nicht aber auf die Datei gibt, die du ja eigentlich haben willst. Deswegen vermutlich auch die panische Reaktion des Vorposters.

Zitat:
Mit normalen Dateifunktionen wie Assign, BlockRead/BlokWrite bzw. auch über Streams kann ich nicht arbeiten, da sie den Windows Cache verwenden.
Das ist - mit Verlaub - Schwachsinn. Wenn du die Funktionen nutzt, die Delphi bereitstellt, um mit dem Handle von CreateFile zu arbeiten, dann wird Delphi nicht das Handle spontan ändern und das FILE_FLAG_NO_BUFFERING herausnehmen.

Zitat:
Existiert denn überhaupt noch eine andere Möglichkeit, um dies ohne den Windows Cache zu erledigen?
Siehe Absatz vorher. Ansonsten:
MSDN-Library durchsuchenReadFile,MSDN-Library durchsuchenWriteFile

Was ich mich frage: Zu was soll das eigentlich gut sein? Wenn es dir um einen Benchmark geht, oder du prüfen möchtest, ob die CD in Ordnung ist, würde ich eher zu SPTI greifen...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat