2010-11-23 9 views
1

Wie kann ich den Windows-Datei Lese-Cache mit C++ Win32api leeren (leeren)?Flush File Read Cache

+0

Versuchen Sie eine Kaltstartleistung zu messen? –

+0

Ja, im Moment muss ich den Computer jedes Mal neu starten ... nicht sehr praktisch ... – ronag

+0

Ein Windows "Datei lesen Cache" ist meistens eine Redewendung. Es gibt kein direktes Äquivalent. Ja, es gibt eine Reihe von Seiten im RAM, die den Dateien auf der Festplatte entsprechen, aber diese Zuordnungen könnten auch aufgrund von Speicherabbilddateien oder seitenweise in Modulen existieren. Außerdem kann sich eine einzelne Seite aus mehreren Gründen im RAM befinden. Alle diese Seiten könnten aus dem RAM gelöscht werden; Was würdest du speziell verwerfen wollen? Sie könnten am Ende Ihr eigenes Programm aus dem RAM löschen. – MSalters

Antwort

0

Versuchen Sie DeviceIoControl mit IOCTL_DISK_SET_CACHE_INFORMATION.

+1

Warum sollten Sie nicht hilfreiche Antworten markieren? Sieht für mich aus wie Zach es bekommen sollte. –

2

Ich glaube nicht, dass Sie können (Sie könnten Schreibcache leeren), aber Sie könnten Ihre Datei immer über CreateFile mit FILE_FLAG_NO_BUFFERING öffnen. Auf diese Weise werden Ihre Lesevorgänge nicht vom Systemcache übernommen, sondern direkt von Ihrem Gerät (das Daten zwischenspeichern kann).

+0

Ich habe keinen Zugriff auf den CreateFile-Aufruf, ich verwende eine Third-Party-Bibliothek. – ronag

+0

Dann ist die Bibliothek nicht geeignet für das, was Sie versuchen zu tun. Wenn Sie nur versuchen, eine Datei zu lesen, um die Leistung eines Laufwerks zu messen, ist es wirklich nicht so schwierig, reines WinAPI zu verwenden. –