Die Cdrtools sind unter
Microsoft Windows auf einen funktionierenden ASPI-Treiber angewiesen. Windows NT/2000/XP kommen ohne installiertes ASPI daher, welches deshalb
erst installiert werden muss (empfohlen: Adaptec ASPI). Unter diesen Betriebssystemen gibt es noch eine andere Zugriffsmöglichkeit,
SPTI (SCSI Pass-Through Interface). Dies wird inzwischen von vielen Brennprogrammen genutzt und von Microsoft propagiert.
Ich habe aus der AKRip CD-DA Audio Extraction Library die zur Unterstützung von SPTI
benötigten Routinen entnommen und in die libscg (scsi-wnt.c) integriert. AKRip bildet hierbei im wesentlichen die Funktionen
von ASPI nach.
Vorteile:
Cdrtools laufen ohne ASPI Installation.
Alternative Zugriffsmöglichkeit, auch bei installiertem ASPI.
Evtl. werden Geräte unterstützt, die von ASPI nicht erkennt werden aber unter Windows ansprechbar sind.
Gerät kann nicht SHARED geöffnet werden, dann ist der gleichzeitige Zugriff für andere Programme nicht möglich.
Nachteile:
Administrator Rechte notwendig, kann evtl. umgangen werden, siehe EAC-FAQ (Q: I use Windows NT/2000, but EAC seems to have problems to store the options or get any SCSI response)
Einige Funktionen sind AFAIK nicht möglich, diese werden derzeit von den Cdrtools nicht unbedingt benötigt, obwohl
in scsi-wnt.c implementiert: SC_ABORT_SRB, SC_RESET_DEV. Wenn jemand weiß, wie man dies implementieren kann, möge er es mir bitte mitteilen.
BTW: Nach diesen ASPI-FAQ arbeiten diese Funktionen unter Adaptec ASPI auch nicht, meine Versuche mit ASPI 4.60 (1021) sind negativ.
Es kann Geräte (bzw. Gerätetreiber) geben, die nur über ASPI funktionieren und nicht über SPTI.
Arbeitsweise:
SPTI läuft nur unter Windows NT/2000/XP, nicht 95/98/ME. Wird ein ASPI erkannt (wnaspi32.dll funktioniert), so wird dieses verwendet, die Programme laufen wie bisher. Andernfalls wird automatisch SPTI verwendet. Mann kann SPTI auch erzwingen, indem man dem Target den String "SPTI:" voransetzt, z.B. dev=SPTI:1,0,0. Durch ein #define PREFER_SPTI (jetzt im patch gesetzt, SPTI soll ja getestet werden!) kann man dies umkehren, ASPI erzwingt man dann mit dev=ASPI:x,y,z.
Diese Erweiterung für die Cdrtools wird vorerst hier nur als Source-Patch angeboten. Man muss sich also die Quelltexte
beschaffen, den Patch anwenden und dann das Paket compilieren. Der Patch modifiziert libscg/scsi-wnt.c und fügt
libscg/scg/scsipt.h hinzu. Alle Versionen cdrtools-2.0 bis 2.01a23 arbeiten damit, bitte den Patch entsprechend
der Version auswählen.
Neu: Ab cdrtools-2.01a24 ist der Patch in den cdrtools integriert und kann nicht mehr angwendet werden, folgende Anleitung hat also mehr historische Bedeutung.
Cdrtools gibt es hier: ftp.berlios.de/pub/cdrecord bzw. ftp.berlios.de/pub/cdrecord/alpha patch herunterladen und auspacken, dann anwenden (im aktuellen Verzeichnis befindet sich das cdrtools Verzeichnis) mit:
>patch -p0 --binary <cdrtools-spti-x.xx.diff
Evtl. die defines PREFER_SPTI und CREATE_NONSHARED in scsi-wnt.c auskommentieren, wenn gewünscht.
Danach die Cdrtools wie gewohnt erstellen.
Da es sich um eine frühe Version dieser Erweiterung handelt, können noch Fehler enthalten sein. Deshalb sollte zunächst auf Rechnern getestet werden, wo auch ein funktionierendes ASPI vorhanden ist. Zur Vorsicht kann man auch noch Cdrtools ohne diese Erweiterung erstellen, schließlich könnte sich ja schon beim Zugriff durch ASPI ein Fehler eingeschlichen haben, obwohl die Änderungen hier minimal sind. Kommt es zu Fehlfunktionen können die beiden Zugriffsmöglichkeiten verglichen werden. Tritt der Fehler bei ASPI und SPTI auf, so liegt es wohl nicht an SPTI. Tritt der Fehler nur bei SPTI auf, sollte unter beiden Zugriffsmöglichkeiten eine Log-Datei mit dem Programmparameter "-V" erstellt werden, der Fehler sollte dann eigentlich an einer Stelle auftreten, wo sich die aufgezeichneten Daten unterscheiden, dies wäre zur Fehlersuche sehr hilfreich.
Weitere Hinweise:
Meine Tests habe ich bisher hauptsächlich mit Windows 2000 und XP durchgeführt, nur ein Rechner mit NT 4.0 (SP5) war dabei. Des weiteren empfehle ich, unabhängig von meiner Erweiterung, an cdda2wav.c und cdrecord.c einen Patch vozunehmen, der auf REALTIME_PRIORITY_CLASS verzichtet, siehe hier:
news://e1b4bvo7n82d93p1vdg78h5i8p5bb5up3m@4ax.com
oder bei Google Groups. Ergänzung: Mit Cygwin 1.5.3 ist dies nicht mehr notwendig, siehe news://mk5clv81sveg8rphasktlj1itc42u31t28.com oder Google Groups.