第3期郭智等:ASPI在访问磁带机程序设计中的应用·121·ASPI在访问磁带机程序设计中的应用郭智,姚萍,吴一戎(中科院电子所现代信息技术研究室,北京100080)摘要:介绍了高级SCSI编程接口ASPI技术,并详细给出了应用ASPI在Windows环境下访问SCSI接口磁带机的原理、方法以及具体实现。关键词:ASPI;磁带机;小型计算机系统接口(SCSI)中图法分类号:TN919文献标识码:A:100123695(2003)0320121202SCSITapeDeviceProgrammingwithASPIinWindowsGUOZhi,YAOPing,WUYi2rong(StateLaboratoryofModernInformationTechnology,InstituteofElectronics,ChineseAcademyofSciences,Bei激ng100080,China)Abstract:ThispaperintroducesAdvancedSCSIProgrammingInterface(ASPI)technology.Theprinciple,methodandprogrammingus2ingASPItoaccessaSCSItapedeviceinMicrosoftWindowsaregiven.Keywords:ASPI(AdvancedSCSIProgrammingInterface);TapeDevice;SCSI(SmallComputerSystemInterface)1引言磁带机是一种在数据存储领域广泛使用的设备,具有介质容量大、高速、保存时间长和成本较低等特点,在数据库应用领域多用于数据备份和大数据量交换。比如购买国外的卫星数据,就都是采用磁带为媒介。现有磁带机基本上都是SCSI接口,多配置于UNIX主机上。SCSI总线是一种高性能并行总线,是高端服务器的标准配置,具有高稳定性、高速以及低CPU占用率等特点。随着计算机技术的进步以及成本的降低,SCSI也逐渐应用到PC机。只需要在PC机上配置一块SCSI卡,就可以连接各种SCSI设备,包括磁带机。因此在Windows平台下直接访问磁带机的需求也越来越多,尤其是当需要从磁带读取数据却没有UNIX主机时。笔者在Windows环境中应用ASPI技术,实现了对磁带机的基本操作接口,可对所有符合SCSI标准的磁带机进行操作,使在Windows下开发磁带机应用程序变得简单易行,并在某军工重大项目中得到了实际的应用。2关键技术211SCSISCSI(SmallComputerSystemInterface,小型计算机系统接口)是一种智能型计算机设备接口,它主要用于连接高性能的外设,例如外置硬盘、光驱、ZIP、MO、扫描仪、磁带机、磁盘阵列、打印机等。SCSI具有性能稳定、传输收稿日期:2002204214;修返日期:2002207223速度快、连接设备多,CPU占用率低等许多优点,因此在高端应用中占据了绝对优势,如服务器领域几乎全部采用SCSI接口的硬盘和外设。SCSI发展到现在已经经历了三代的发展,最初的SCSI21为8位,只有5MB/s的数据传输率;SCSI22扩展到了16位,数据传输率可达到80MB/s的速度;现在已经成熟的SCSI23更是已经达到了160MB/s的带宽。212SCSI工作方式SCSI设备全部工作在SCSI总线上,每一个SCSI应用系统至少要有一个SCSI主控制器(SCSIHost),每一个SCSI通道可以连接7个~15个SCSI设备,每个设备都由独立的SCSI标识(SCSIID)来区分,每个SCSI设备又可以带有自己的子设备,共享同一个SCSIID,通过不同的逻辑设备号(LUN)来区分。SCSI设备间通过发送SCSI命令来互相通信。通常由SCSI控制器向SCSI设备发出命令,设备响应该命令。比如SCSI控制器向SCSI硬盘发送一个读数据命令,SCSI硬盘根据命令中的地址信息读取相应数据并发回到SC2SI控制器。SCSI总线的数据传输可以有同步和异步两种方式。同步传输时两个SCSI设备以固定的数据率传输;异步传输时两个设备间对每个数据块传输进行握手,用于速度不同的设备间通信。通常在访问SCSI设备时都使用速度较快的同步传输方式。213ASPI在开发Windows环境中读写磁带机接口程序时,可使用高级SCSI编程接口,即AdvancedSCSIProgrammingInterface(ASPI)。ASPI最早由Adaptec公司提出,最终成·122·计算机应用研究2003年为了在DOS,Windows,OS/2和Netware环境中SCSI应用的工业标准,它使得编写SCSI设备驱动和应用程序不依赖于具体的SCSI控制器而具有统一的形式。ASPI使用ASPI管理器来接管SCSI控制器,所有使用ASPI接口的驱动或应用程序称为ASPI客户(ASPIClient)。当接收到ASPI客户的请求时,ASPI管理器通过相应的SCSI控制器将客户请求的SCSI命令发送到SCSI总线上,然后接收SCSI设备的返回消息及数据并返回到ASPI客户。所以对于ASPI客户来说,只需要向ASPI管理器提出请求,并给出要通信的SCSI设备I...