mikrocontroller.net

Forum: PC-Programmierung Wie Festplatten-Cache umgehen?


Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei einem selbstprogrammierten Delphi-Tool zum Kopieren von Dateien auf 
DVD-RAM's unter Windows (mit dem Packet-Driver Adaptec DirectCD) schlage 
ich mich mit dem Problem herum, daß mitunter die Daten fehlerhaft auf 
die DVD-RAM kopiert werden; Adaptec DirectCD meldet dann, daß nicht alle 
Daten korrekt kopiert werden konnten, und tatsächlich steht in einigen 
Ziel-Dateien Schrott drin.

Ich möchte nun so verfahren, daß ich von einer Quellendatei zunächst 
eine Prüfsumme berechne (CRC32), die Datei dann kopiere, anschließend 
vom Zieldatenträger zurücklese, wieder die CRC32 berechne und mit dem 
Original vergleiche. Dabei möchte ich aber vermeiden, daß die Daten vom 
Ziel-Cache geholt werden; sie sollen direkt vom Datenträger gelesen 
werden (DVD-RAM).

Weiß jemand auf die Schnelle, wie ich vermeide, daß aus einem Cache 
(Windows-Cache oder HD-Cache) gelesen wird? (D.h. es soll im 
übertragenen Sinne ein "volatile" gemacht werden wie bei einem 
C-Programm).

Danke.

Günter

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise nennt sich sowas "flushing", vielleicht findest du damit 
was...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Doku vom Windows API, Funktion CreateFile mit Parameter 
FILE_FLAG_NO_BUFFERING.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich möchte nun so verfahren, daß ich von einer Quellendatei zunächst
> eine Prüfsumme berechne (CRC32), die Datei dann kopiere, anschließend
> vom Zieldatenträger zurücklese, wieder die CRC32 berechne und mit dem
> Original vergleiche.

Eigentlich machen DVD-RAM-Laufwerke schon selbst eine Verifizierung der 
geschriebenen Daten. Deshalb sind sie beim Schreiben so langsam. Mir ist 
auch nicht ganz klar, was dir die CRC bringen soll. Mit der erkennst du 
doch eh nur das, was du schon weißt.

Autor: hellboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soweit ich weiss ist das umgehen des festplatten cache NICHT möglich 
.... das hat technische gründe ...

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Philip Burch:

Danke; "flushing" ist klar; aber wahrscheinlich findet der Vorgang auf 
einer Ebene statt, die dem Flushing nicht zugänglich ist, den ein Flush 
leert wahrscheinlich nur den User-Buffer (File Control Block), aber 
nicht unbedingt den System-Cache; da mag hellboy recht haben.

@Andreas Kaiser:

Danke, werde ich mir ansehen. Wird aber möglicherweise nicht viel 
bringen, da ich die Windows-Funktion CopyFile verwende, da mach ich kein 
explizites CreateFile, sondern das steckt im CopyFile und ich habe 
keinen Einfluß darauf.

@Rolf Magnus:

>Eigentlich machen DVD-RAM-Laufwerke schon selbst eine Verifizierung der
>geschriebenen Daten. Deshalb sind sie beim Schreiben so langsam.

Das hatte ich auch gedacht; Du glaubst nicht, welche katastrophalen 
Schreibfehler vorgestern ständig - auch bei mehrfachem Wiederholen - 
passiert sind, beim Beschreiben einer DVD-RAM 1X mit EasyCDCreator 
5/DirectCD 5.3 (zugegeben: recht alte Software). Das hat mein Vertrauen 
schwer geschädigt, sodaß ich von jetzt ab Backups auf DVD-RAM zur 
Kontrolle immer verifiziere, und zwar, indem ich CRC32-Checks vom 
Original und dem Backup vergleiche; dies würde ich ggf. in mein 
Backup-Tool reinprogrammieren, nützt aber nur etwas, wenn auch immer 
direkt von der DVD-RAM gelesen wird (also ggf. mit den Fehlern) und 
nicht eine Ebene höher aus dem Cache, wo noch keine Fehler drinstehen.

>Mir ist auch nicht ganz klar, was dir die CRC bringen soll. Mit der >erkennst du 
doch eh nur das, was du schon weißt.

Ob auf die DVD-RAM fehlerhafte Daten geschrieben wurden, weiß ich eben 
nicht, das weiß ich erst nach einem Verify, z.B. mittels CRC32.


Möglicherweise ist aber auch die DVD-Software (EasyCDCreator 5) 
fehlerhaft; das glaube ich inzwischen, sodaß ich erstmal eine bessere 
Brennsoftware installieren werde, nämlich Nero und sein InCD.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was du beschrieben hast, sieht wie ein Problem im Filesystem-Treiber von 
EasyCDCreator aus.

Daß das Problem auf dem Laufwerk selbst entstanden ist, ist eher 
unwahrscheinlich.

Wenn du ganz sicher gehen willst, daß keine Daten aus irgend einem Cache 
deine CRC-Berechnung verfälschen, wirf einfach die Scheibe aus und lade 
sie nochmal, um kontrollzulesen.

InCD hat eine Verify-Funktion, die das Kontrollesen automatisch für dich 
erledigt (ohne auswerfen).

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das schöne an DVD-RAM ist ja gerade, dass das Laufwerk selbst die Daten 
kontrolliert. Offensichtlich macht dann der Treiber bzw die Software 
Murks, oder das Laufwerk ist hinüber. ich hatte noch nie fehlerhafte 
Daten auf DVD-RAM, hab das öfters nachher verifiziert. Und wozu braucht 
man da überhaupt eine Software? Windows kann das doch ganz normal wie 
eine festplatte behandeln. Einfach rüber kopieren, löschen, was auch 
immer. Sehr seltsam.

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uhu Uhuhu wrote:
> Was du beschrieben hast, sieht wie ein Problem im Filesystem-Treiber von
> EasyCDCreator aus.
>
> Daß das Problem auf dem Laufwerk selbst entstanden ist, ist eher
> unwahrscheinlich.

Das sehe ich auch so.

> Wenn du ganz sicher gehen willst, daß keine Daten aus irgend einem Cache
> deine CRC-Berechnung verfälschen, wirf einfach die Scheibe aus und lade
> sie nochmal, um kontrollzulesen.
> InCD hat eine Verify-Funktion, die das Kontrollesen automatisch für dich
> erledigt (ohne auswerfen).

Das werde ich prüfen; habe eh den Eindruck, daß Nero die bessere 
Software ist.


Christian R. wrote:

>Und wozu braucht man da überhaupt eine Software? Windows kann das doch >ganz 
normal wie eine festplatte behandeln. Einfach rüber kopieren, >löschen, was auch 
immer. Sehr seltsam.

Ich verwende Win2000, das kann es m.W. nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.