# Advanced SCSI Programming Interface

ASPI (Advanced SCSI Programming Interface, sinngemäß Erweiterte SCSI-Programmierschnittstelle) ist eine Programmierschnittstelle für die einheitliche Ansteuerung von CD-ROM- bzw. DVD-Laufwerken, insbesondere Brennern unter den Betriebssystemen MS-DOS, Windows, OS/2 und Netware. Anders als der Name vermuten lässt, wird ASPI nicht nur für tatsächliche SCSI-Geräte, sondern auch für Geräte mit ATAPI-, USB- und FireWire-Anschlüssen eingesetzt, da diese ebenfalls das SCSI-Kommunikationsprotokoll einsetzen.

## Funktionsweise

Eine ASPI-Manager genannte Software stellt eine Schnittstelle zwischen sogenannten ASPI-Modulen (Gerätetreiber bzw. Anwendungen mit direkter SCSI-Unterstützung), einem SCSI-Hostadapter (ugs. SCSI-Controller), sowie daran angeschlossenen SCSI-Geräten zur Verfügung. Diese Software ist spezifisch für einen Hostadapter und ein Betriebssystem geschrieben; sein Hauptzweck ist dabei, die Eigenheiten des Hostadapters zu abstrahieren und eine einheitliche Zugriffsmethode zur Verfügung zu stellen.
Unter DOS wird diese Schnittstelle schließlich von einem ASPI-fähigen Laufwerkstreiber verwendet, der dem Betriebssystem den Laufwerksinhalt bereitstellt.
Unter Windows 9x und Windows NT ist der ASPI-Manager hingegen universell und stützt sich auf die bereits vom Betriebssystem bereitgestellten Gerätetreiber. Daher konzentrieren sich die Fähigkeiten des ASPI-Managers hier weniger auf eine ggf. bereits hergestellte SCSI-Verbindung, sondern auf das Senden von standardisierten SCSI-Kommandos an z. B. auch ATAPI-Geräte (SCSI-Pass-Through-Funktionalität), wie sie vor allem Brennprogramme benötigen, und das Erkennen dazu befähigter Geräte.

## Geschichte

ASPI wurde etwa 1990 von Adaptec entwickelt, einem damals führenden Hersteller von SCSI-Hostadaptern. Vorbild war das im Jahr 1983 von Douglas Goodall erdachte Treibermodell für SCSI-Geräte an Ampro-Computern, das von einem eingeweihten Ampro-Mitarbeiter übernommen wurde, als er zu Adaptec wechselte. Anfänglich wurden die Betriebssysteme DOS, Windows 3.x, OS/2 und Netware unterstützt. Ursprünglich konnten nur SCSI-Geräte angesprochen werden; mit der steigenden Verbreitung von CD-Brennern Mitte der 1990er-Jahre folgte Unterstützung für ATAPI-Geräte, da die bisher verwendete Schnittstelle noch keine Schreibzugriffe auf CDs vorsah. Die Hersteller von SCSI-Hostadaptern (zum Beispiel BusLogic, DPT, AMI, Future Domain, DTC) lieferten zusammen mit ihrer Hardware eigene ASPI-Manager aus, womit sich ein softwareseitiger Standard etablierte.
Adaptec lieferte auch universelle DOS-Treiber für SCSI-Festplatten (ASPIDISK.SYS) und CD-ROM-Laufwerke (ASPICD.SYS). Für den Lesezugriff auf CD-/DVD-ROM-Laufwerke unter Windows 3.x reicht ein unter DOS installiertes Laufwerk aus, der Windows-3.x-Treiber (WNASPI.DLL) ist nur für Windows-Brennprogramme notwendig.
Unter DOS muss für SCSI Festplatten mit einer Kapazität von über 1 GiB das SCSI BIOS des Host Adapter eine Unterstützung für den Extended BIOS Translation Support bieten, dieses erlaubt dann Festplatten bis zu einer Größe von 8 GiB unter DOS zu verwenden. Alternativ zum SCSI BIOS kann auch der ASPIDISK.SYS Treiber geladen werden, der diese Unterstützung dann auch mitbringt.
Microsoft lizenzierte die ASPI-Treiber von Adaptec und lieferte sie zusammen mit seinen Windows 9x-Betriebssystemen aus. Währenddessen entwickelte Microsoft mit SPTI (SCSI Pass-Through Interface), einen hauseigenen Ersatz für ASPI zur Verwendung mit Windows NT. Daher wurde in 2000, XP und Windows Server 2003 zugunsten von SPTI auf einen eingebauten ASPI-Treiber verzichtet. Da der Standard jedoch schon weit verbreitet war, lieferten Hersteller von Hardware sowie von Brenner-Software weiterhin ASPI-Manager aus, um bestehende Kompatibilität beizubehalten. SPTI hingegen kann nicht auf anderen Systemen nachinstalliert werden.
Für die Unterstützung von USB-Laufwerken unter DOS entwickelte Panasonic einen universell verwendbaren ASPI-Treiber (USBASPI.SYS), der gleichzeitig das Fehlen von nativer USB-Unterstützung durch DOS umgeht.
Bei Adaptec endete im November 2003 mit der Versionsnummer 4.71.2 die Entwicklung der offiziellen ASPI-Treiber.

## Treiber

ASPI wird hauptsächlich durch die folgenden Treiber bereitgestellt.
| Betriebssystem | Treiberdatei(en) | Mitgeliefert |
| DOS | Ein Host-Adapter SCSI-Controller spezifischer Treiber (z. B. ASPI2DOS.SYS, ASPI4DOS.SYS, ASPIEDOS.SYS, ASPI7DOS.SYS, ASPI8DOS.SYS, ASPI8U2.SYS oder diverse OEM Treiber) und ASPIDISK.SYS (für SCSI-Festplatten wenn das SCSI BIOS des Host Controllers nicht installiert ist oder dieses für Festplatten über 1 GiB Größe nicht über das Feature Extended BIOS Translation Support verfügt), ASPICD.SYS (für SCSI CD-ROM-Laufwerke), USBASPI.SYS (für USB-Laufwerke) | Nein |
| OS/2 1.1 | ASPI4OS2.SYS | Nein |
| OS/2 2.1, Warp | OS2ASPI.DMD | Ja |
| NetWare 2.15 | ASWNOVL.OBJ und ASWNOVL.DSK | Nein |
| NetWare 3.x | ASPITRAN.DSK | Nein |
| Windows 3.1x | WINASPI.DLL | Nein |
| Windows 95, 98 und ME | WNASPI32.DLL, WINASPI.DLL, APIX.VXD, ASPIENUM.VXD | Ja |
| Windows NT, 2000, XP und 2003 | WNASPI32.DLL, ASPI32.SYS | Nein |