CD-Vergleich

Hallo,
ich hab mir ein kleines Projekt vorgenommen:
Es gibt doch so CD_Vergleich-Programme
So etwas wollte ich mit C++ auf DOS machen, weil man mir gesagt hat, dass man dort uneingeschränkten Zugriff auf die Hardware hat.
Ich hab mal ne Frage dazu:
Ich wollte das Programm so aufbauen, dass das Programm die CD’s von ganz am Anfang durchgeht und keine Dateien als solche sieht, sondern immer nur Pit für Pit und Land für Land durchgeht und auf Unterschiede untersucht. (Bzw. eigentlich zählen ja nur die Übergänge, dass dann diese verglichen werden)
Das ganze sollte ohne Fehlerkorrektur vom Laufwerk laufen um das Ergebnis nicht zu verfälschen.
Weiß jemand von euch, ob man das mit C++ realisieren kann, vielleicht auch wie, oder kennt jemand von euch vielleicht Links oder Literatur, die sich mit so einer Hardwareprogrammierung auseinandersetzt, weil ich nicht glaube, dass man das mit den herkömmlichen I/O-Streams machen kann.

Vielen Dank für eine Antwort und viele Grüße

Manfred

Hallo Manfred,

ob C++ das kann ist zunächst nebensächlich, denn zuerst müsstest du ein Laufwerk finden, das überhaupt pits und lands oder wenigstens 0 und 1 roh ausgibt, aber beides gibt es meines Wissens nicht - zumindest nicht dort, wo du es kaufen könntest. Du müsstest schon die Daten gleich vom Lesekopf abnehmen.

Übrigens, in der Qualitätskontrolle werden CDs holografisch verglichen.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
vielen Dank für die Antwort.

Du müsstest schon die Daten gleich vom Lesekopf
abnehmen.

Meinst du dieses einfach hypotetisch, wie das Laufwerk sein müsste, oder kann man das wirklich programmieren und wenn ja, wie unter DOS?

Übrigens, in der Qualitätskontrolle werden CDs holografisch
verglichen.

wie meinst du das?
http://www.chip.de/downloads/c1_downloads_13002909.html
Auf dieser Seite steht auch, dass eine CD auch Bit für Bit verglichen wird.

Wenn das mit den Pits und Lands nicht geht, funktionert das denn dann auf Byte-Ebene, wenn das Laufwerk nichts korrigiert?

Gibt es denn dafür Beispiele, wie ich dem Laufwerk unter DOS sage, dass es nichts korrigieren soll? (Muss man dafür den Treiber manipulieren?)

Viele Grüße

Manny

An die Pits und Lands wirst du nicht rankommen. Du kannst aber die Sektoren ohne Fehlerkorrektur des Laufwerks auslesen. Genau das machen ja auch die ganzen Brennprogramme. Such mal nach aspi.

Hallo,
vielen Dank für die Antwort.

Du müsstest schon die Daten gleich vom Lesekopf
abnehmen.

Meinst du dieses einfach hypotetisch, wie das Laufwerk sein
müsste, oder kann man das wirklich programmieren und wenn ja,
wie unter DOS?

Ob es so etwas für Messzwecke gibt, weiss ich nicht, es wäre aber unbezahlbar. Du greifst auch nicht auf Hardware zu, insofern ist das mit DOS obsolet (und die Frage nach der Programmiersprache eigentlich auch). Was geht, ist vom Laufwerk unkorrigierte Rohdaten anzufordern, wenn Laufwerk und Treiber das zulassen. Ob es solche Treiber für DOS gibt, bezweifle ich, übliche Brennsoftware läuft ja auch nicht unter DOS, sondern unter Windows oder Linux.

Übrigens, in der Qualitätskontrolle werden CDs holografisch
verglichen.

wie meinst du das?

Ohne weitere Details, ein Computer wirft einen Blick drauf und sieht innerhalb von Sekunden, ob Abweichungen vorliegen.

http://www.chip.de/downloads/c1_downloads_13002909.html
Auf dieser Seite steht auch, dass eine CD auch Bit für Bit
verglichen wird.

naja, wenn man daheim in der Küche keine Laser-Hologramme erzeugen kann, ist das der einfachere Weg. Für die Massenfertigung aber viel zu langsam.

Wenn das mit den Pits und Lands nicht geht, funktionert das
denn dann auf Byte-Ebene, wenn das Laufwerk nichts korrigiert?

s.o.

Gibt es denn dafür Beispiele, wie ich dem Laufwerk unter DOS
sage, dass es nichts korrigieren soll? (Muss man dafür den
Treiber manipulieren?)

s.o. , aber wohl nicht unter DOS. Du bräuchtest halt das Knowhow der Fa. Nero. Wahrscheinlich findest du aber im Internet auch genügend über das Auslesen unkorrigierter CD/DVD-Daten. Letzlich massgebend ist sowieso das Manual zum Laufwerk (nicht der beigelegte Zettel über Risiken und Nebenwirkungen in 25 Sprachen).

Viele Grüße

Manny

Gruss Reinhard

Vielen Dank für die Antwort.

Aber ich habe da auch so etwas wie Sub-Channel gelesen. Steht der in einem Extra Sektor, sodass wenn ich die CD auf Byte für Byte durchgehe, mitvergleiche, oder ist das was spezielles, wo man so noch nicht rankommt?
Habe ich das mit dem Aspi richtigverstanden, dass es sich dabei um einen Ersatztreiber handelt, der dafür sorgt, dass das Laufwerk die Daten nicht manipuliert?

Viele Grüße
Manny

Die Subchannel - Daten werden mit in den Sektoren gespeichert. Moderne Brennprogramme können diese auch auslesen, somit solltest auch du an die Daten kommen.
Bezüglich ASPI.: Dazu kann ich dir nicht viel sagen, da ich damit noch nie gearbeitet habe. Ich kenn es nur von diversen CD-Rippern die die ASPI-Treiber benötigen. Musst also selber danach suchen.

Vielen Dank für die Antwort!

Die Subchannel - Daten werden mit in den Sektoren gespeichert.
Moderne Brennprogramme können diese auch auslesen, somit
solltest auch du an die Daten kommen.

Heißt dass denn, das wenn ich jeden Sektor bis aufs letzte Byte durchgehe, den Subchannel dabei habe, oder ist das irgendwie so eine „Konstruktion“, die zwischen den einzelnen Sektoren , Bahnen , etc liegt?

Viele Grüße
Manny

Siehe http://www.tecchannel.de/ueberblick/archiv/401905/in….

Hallo Manny,

Habe ich das mit dem Aspi richtigverstanden, dass es sich
dabei um einen Ersatztreiber handelt, der dafür sorgt, dass
das Laufwerk die Daten nicht manipuliert?

Nein.
Das ist einfach eine Software-Schnittstelle um jedes CD/DVD-Laufwerk gleich ansprechen zu können.

http://de.wikipedia.org/wiki/ASPI

MfG Peter(TOO)

Vielen Dank für den Link, der war sehr aufschlussreich!

Das ich auf die Pits und Lands als solche nicht zugreifen kann, sehe ich ein, aber ist es denn unter Dos mit C/C++ möglich auf die Channel-Bits zuzugreifen oder ist das kleinste, was man bekommen kann schon das mit EFM umgerechnete Byte?

Viele Grüße
Manny