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
Normalerweise nennt sich sowas "flushing", vielleicht findest du damit was...
Siehe Doku vom Windows API, Funktion CreateFile mit Parameter FILE_FLAG_NO_BUFFERING.
> 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.
soweit ich weiss ist das umgehen des festplatten cache NICHT möglich .... das hat technische gründe ...
@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.
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).
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.