# Advanced SCSI Programming Interface

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Advanced_SCSI_Programming_Interface
> Markdown URL: https://mediated.wiki/source/Advanced_SCSI_Programming_Interface.md
> Source: https://en.wikipedia.org/wiki/Advanced_SCSI_Programming_Interface
> Source revision: 1321176104
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Computer software for connecting SCSI devices

The **Advanced SCSI Programming Interface** (**ASPI**) is a programming interface developed by [Adaptec](/source/Adaptec) which standardizes communication on a [computer bus](/source/Computer_bus) between a [SCSI](/source/SCSI) [driver](/source/Device_driver) module and SCSI (and [ATAPI](/source/ATAPI)) [peripherals](/source/Peripheral).[1]: 55–56[2]

## Structure

The ASPI manager software provides an interface between ASPI modules (device drivers or applications with direct SCSI support), a [SCSI host adapter](/source/SCSI_host_adapter), and SCSI devices connected to the host adapter. The ASPI manager is specific to the host adapter and [operating system](/source/Operating_system); its primary role is to abstract the host adapter specifics and provide a generic software interface to SCSI devices.[1]: 56

On [Windows 9x](/source/Windows_9x) and [Windows NT](/source/Windows_NT), the ASPI manager is generic and relies on the services of SCSI miniport drivers. On those systems, the ASPI interface is designed for applications which require SCSI pass-through functionality (such as [CD-ROM](/source/CD-ROM) burning software).[1]: 57

The primary operations supported by ASPI are discovery of host adapters and attached devices, and submitting [SCSI commands](/source/SCSI_command) to devices via SRBs (SCSI Request Blocks).[1]: 233 ASPI supports concurrent execution of SCSI commands.[3]: 231

## History

ASPI was developed by [Adaptec](/source/Adaptec) around 1989[4] and was formally introduced in January 1990. Originally supporting only [MS-DOS](/source/MS-DOS),[5] support for [NetWare](/source/NetWare) was added in 1991, while support for [OS/2](/source/OS%2F2) and [Windows 3.x](/source/Windows_3.x) was added in 1992.[4][6] Originally developed only for SCSI devices, support for [ATAPI](/source/ATAPI) devices was added later.[7]: 772 Most other SCSI host adapter vendors (for example [BusLogic](/source/BusLogic), DPT, AMI, [Future Domain](/source/Future_Domain), DTC) shipped their own ASPI managers with their hardware.[8]

Adaptec also developed generic SCSI disk and CD-ROM drivers for DOS (ASPICD.SYS and ASPIDISK.SYS).[3]: 60–61

At least a couple of other programming interfaces for SCSI device drivers competed with ASPI in the early 1990s, including CAM (Common Access Method), developed by Apple; and Layered Device Driver Architecture, developed by [Microsoft](/source/Microsoft). However, ASPI was far and away more common than any of its competitors in this space, with *PC Magazine* declaring it a *de facto* standard for developing SCSI device drivers only two years after its introduction.[9]

Starting in 1995, Microsoft licensed the interface for use with their [Windows 9x](/source/Windows_9x) operating systems. At the same time [Microsoft](/source/Microsoft) developed SCSI Pass Through Interface (SPTI), an in-house substitute that worked on the NT platform. Microsoft did not include ASPI in [Windows 2000](/source/Windows_2000)/[XP](/source/Windows_XP), in favor of its own SPTI.[10]

To support [USB](/source/Universal_Serial_Bus) drives under DOS, [Panasonic](/source/Panasonic) developed a universal ASPI driver (USBASPI.SYS) that bypasses the lack of native USB support by DOS.[11]

## Drivers

Examples of ASPI drivers:

Operating system Driver filename Bundled MS-DOS ASPI4DOS.SYS or USBASPI.SYS (USB drives only) No Windows 3.1x WINASPI.DLL No Windows 95, 98 and ME WNASPI32.DLL, WINASPI.DLL, APIX.VXD and ASPIENUM.VXD Yes Windows NT, 2000, XP WNASPI32.DLL, ASPI32.SYS No

## See also

- [SCSI Pass-Through Direct](/source/SCSI_Pass-Through_Direct) (SPTD)

## References

1. ^ [***a***](#cite_ref-guide_1-0) [***b***](#cite_ref-guide_1-1) [***c***](#cite_ref-guide_1-2) [***d***](#cite_ref-guide_1-3) Sawert, Brian (1998). [*The Programmer's Guide to SCSI*](https://archive.org/details/programmersguide0000sawe/page/55/). Addison-Wesley. pp. 55–102, 233. [ISBN](/source/ISBN_(identifier)) [0201185385](https://en.wikipedia.org/wiki/Special:BookSources/0201185385) – via Google Books.

1. **[^](#cite_ref-2)** White, Myles (May 25, 1995). ["Getting your components to work together, part II"](https://www.newspapers.com/article/the-toronto-star-getting-your-components/159678613/). *The Toronto Star*: H3 – via Newspapers.com.

1. ^ [***a***](#cite_ref-bookofscsi_3-0) [***b***](#cite_ref-bookofscsi_3-1) Ridge, Peter M. (1995). [*The Book of SCSI: A Guide for Adventurers*](https://books.google.com/books?id=etcmAQAAMAAJ&q=%22ASPIDISK.SYS%22+%22ASPICD.SYS%22). No Starch Press. [ISBN](/source/ISBN_(identifier)) [9781886411029](https://en.wikipedia.org/wiki/Special:BookSources/9781886411029) – via Google Books.

1. ^ [***a***](#cite_ref-hoovers_4-0) [***b***](#cite_ref-hoovers_4-1) Spain, Patrick J.; James R. Talbot, eds. (1995). [*Hoover's Handbook of Emerging Compa\[n\]ies 1995: Profiles of America's Most Exciting Growth Enterprises*](https://archive.org/details/hoovershandbooko0000unse_j4c4/page/118/). The Reference Press. p. 118. [ISBN](/source/ISBN_(identifier)) [9781878753755](https://en.wikipedia.org/wiki/Special:BookSources/9781878753755) – via Google Books.

1. **[^](#cite_ref-brownstein_5-0)** Brownstein, Mark (January 15, 1990). ["Adaptec Unveils SCSI Interface Standard"](https://books.google.com/books?id=eTAEAAAAMBAJ&pg=PA409). *InfoWorld*. **12** (3). IDG Publications: 23 – via Google Books.

1. **[^](#cite_ref-redefines_6-0)** Guzman, Ed (June 1992). ["ASPI Refines SCSI I/O Routing"](https://www.proquest.com/docview/220619290). *Computer Technology Review*. **12** (7). West World Publications: 22. [ProQuest](/source/ProQuest) [220619290](https://www.proquest.com/docview/220619290).

1. **[^](#cite_ref-7)** Mueller, Scott (2003). [*Upgrading and Repairing PCs*](https://books.google.com/books?id=eV1_LjW3pTkC) (14th ed.). Que. pp. 563–564, 771–772. [ISBN](/source/ISBN_(identifier)) [9780789727459](https://en.wikipedia.org/wiki/Special:BookSources/9780789727459) – via Google Books.

1. **[^](#cite_ref-8)** Myers, Ben (May 1994). ["More on ASPI"](https://www.drdobbs.com/letters/184409247). *Dr. Dobb's Journal*. **19** (5). UBM LLC: 10. [Archived](https://web.archive.org/web/20241125034059/https://www.drdobbs.com/letters/184409247) from the original on November 25, 2024.

1. **[^](#cite_ref-9)** Thomas, Susan G. (April 28, 1992). ["SCSI Protocol Wars: ASPI, CAM, LADDR"](https://books.google.com/books?id=HERlo0BgpGYC&pg=PT32). *PC Magazine*. **11** (8). Ziff-Davis: 31 – via Google Books.

1. **[^](#cite_ref-10)** Tewell, Thomas (December 1997). ["Writing Portable Win32 SCSI Applications"](https://web.archive.org/web/20141218172923/https://www.drdobbs.com/windows/writing-portable-win32-scsi-applications/184410340). *Dr. Dobb's Journal*. **22** (12). UBM LLC: 56–57. Archived from [the original](https://www.drdobbs.com/windows/writing-portable-win32-scsi-applications/184410340) on December 18, 2014.

1. **[^](#cite_ref-11)** [*软件安装完全手册*](https://books.google.com/books?id=bf6LjPgbE9QC&dq=%22USBASPI.SYS%22&pg=PA130) [*Complete Software Installation Manual*] (in Chinese). Science Press. 2006. p. 130. [ISBN](/source/ISBN_(identifier)) [978-7-03-018123-7](https://en.wikipedia.org/wiki/Special:BookSources/978-7-03-018123-7) – via Google Books.

---
Adapted from the Wikipedia article [Advanced SCSI Programming Interface](https://en.wikipedia.org/wiki/Advanced_SCSI_Programming_Interface) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Advanced_SCSI_Programming_Interface?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
