WriteFile + [FILE_FLAG_NO_BUFFERING] + <windows.h>
-
Wieso willst du unbedingt FILE_FLAG_NO_BUFFERING nutzen? Windows buffered doch selber gar nicht so schlecht?
Oder willst du eigentlich das hier: FILE_FLAG_WRITE_THROUGH ("Write operations will not go through any intermediate cache, they will go directly to disk.")?
-
Ich muss laut Vorgabe "FILE_FLAG_NO_BUFFERING" benutzen, daher komme ich da nicht drum herum. Gibt es noch eine andere Möglichkeit?
-
Ich muss laut Vorgabe
Warum so eine Vorgabe?
Simon
-
Studiums-Vorgabe des Professors mit Notenabzug für mit internem Buffering...
-
Dann musst du wohl wie schon vorgeschlagen wurde mehr schreiben als nötig und dann mit SetEndOfFile() die Datei auf die richtige Länge kürzen.
-
Hallo,
SetEndOfFile() hat ja keine Parameter, daher verstehe ich noch nicht so ganz wie cih dann zum beispiel nach 50Zeichen abschneiden soll, da ich ja immer 512Byte auf einmal schreibe. Kann mir das jemand näher erklären?
Danke!
-
Du setzt vorher den Filepointer auf die entsprechende Stelle:
http://msdn.microsoft.com/en-us/library/aa365541(VS.85).aspx
-
Leider kann ich mit SetFilePointer auch immer nur 512(oder ein vielfaches davon) nach vorne oder nach hinten springen.. daher bringt mir das leider nichts
Noch andere Ideen?
-
Hier beisst sich die Katze in den Schwanz. Wenn Du kein Buffering verwendest dann kanst Du eben nur auf den Boundaries navigieren.
Lesen bildet

http://msdn.microsoft.com/en-us/library/aa365541(VS.85).aspxIf an application calls SetFilePointer with distance to move values that result in a position not sector-aligned and a handle that is opened with FILE_FLAG_NO_BUFFERING, the function fails, and GetLastError returns ERROR_INVALID_PARAMETER.
Es macht auch NULL-Sinn FILE_FLAG_NO_BUFFERING zu verwenden und dann eine nicht alignierte Dateigröße zu nutzen!
-
Okay, hat sich erledigt, habe mit dem Prof. gesprochen und ich soll die restliche Datei einfach mit Whitspaces füllen.. es wäre einfach nur um denn Umgang mit Buffern zu verstehen. Danke an alle!