Wie Windows-Diskpuffer/Dateicache leeren ? [Erledigt]
Verfasst: 25.02.2012 21:11
Hallo! Mein Problemchen wurde vielleicht schonmal behandelt, und es scheitert
mal wieder nur am richtigen Suchbegriff
.... aber man kanns bestimmt nur
per Windows-API lösen, deshalb hier.
Um zu Testzwecken "schön langsam" zu sein schliesse ich einen USB-Stick über
einen alten USB-Repeater an. (max 1MB/s schreiben/lesen) Darauf befindet sich ein Testfile von ca. 30MB.
Bei Schreiben zum Stick (z.B. per WriteData aus dem Speicher) stellt sich auch immer
die erwartete Geschwindigkeit von knapp 1 MB/s ein. Auch bei Wiederholungen.
(Bei meiner internen SATA-HD gibts aber auch hier schon Phantasiewerte bis 500MB/s, ist jetzt aber egal.)
Aaaber beim Lesen : Zwischen ""Datei geöffnet" und "Datei gelesen" vergehen nur beim ersten Start die erwarteten ca. 30s.
Beim weiteren Starts liegen dazwischen nur Sekundenbruchteile. Genauso beim Lesen via CRC32FileFingerprint.
Ergo fliessen über die physikalisch langsame USB-Verbindung keine Daten. Aber eben das möchte ich erzwingen.
Auch ein Umbenennen des Testfile oder ändern von Bytes im Testfile per Hexeditor ändern da nichts,
wenngleich die Hexeditor-Änderungen danach korrekt eingelesen wurden. Win7-Vodoo
Kann man da was machen, ausser Gigabyte-grosse Files zu verwenden ?
mal wieder nur am richtigen Suchbegriff

per Windows-API lösen, deshalb hier.
Um zu Testzwecken "schön langsam" zu sein schliesse ich einen USB-Stick über
einen alten USB-Repeater an. (max 1MB/s schreiben/lesen) Darauf befindet sich ein Testfile von ca. 30MB.
Bei Schreiben zum Stick (z.B. per WriteData aus dem Speicher) stellt sich auch immer
die erwartete Geschwindigkeit von knapp 1 MB/s ein. Auch bei Wiederholungen.
(Bei meiner internen SATA-HD gibts aber auch hier schon Phantasiewerte bis 500MB/s, ist jetzt aber egal.)
Aaaber beim Lesen :
Code: Alles auswählen
*MemID = AllocateMemory(1048576*32) ; 32MB reservieren
filenr= OpenFile(#PB_Any, "G:\Testfile") ; Inklusive Pfad
;FlushFileBuffers(filenr) ; Bringt nix (?)
;FileBuffersSize(filenr, 0) ; Bringt nix (?)
Debug "Datei geöffnet"
length = Lof(filenr) : Debug length
If filenr
wb=ReadData(filenr, *MemID, length) ; Datei in Speicherblock schreiben
EndIf
Debug "Datei gelesen"
Debug PeekS(*MemID,200)
CloseFile(filenr)
Debug CRC32FileFingerprint("G:\Testfile")
Beim weiteren Starts liegen dazwischen nur Sekundenbruchteile. Genauso beim Lesen via CRC32FileFingerprint.
Ergo fliessen über die physikalisch langsame USB-Verbindung keine Daten. Aber eben das möchte ich erzwingen.
Auch ein Umbenennen des Testfile oder ändern von Bytes im Testfile per Hexeditor ändern da nichts,
wenngleich die Hexeditor-Änderungen danach korrekt eingelesen wurden. Win7-Vodoo

Kann man da was machen, ausser Gigabyte-grosse Files zu verwenden ?