如何测试软硬盘驱动器参数_第1页
如何测试软硬盘驱动器参数_第2页
如何测试软硬盘驱动器参数_第3页
如何测试软硬盘驱动器参数_第4页
如何测试软硬盘驱动器参数_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/10如何测试软硬盘驱动器参数一、如何测试驱动器类型随着PC硬件的高速发展,各种应用软件对外设的要求亦不断提高,这使得有些软件的设计者在开发软件时需要对主机的配套设备进行检查,以便能更好地利用这些设备。如对处理器CPU及协处理器的检测、对驱动器的检测等等。对于上述的测试,除CPU及协处理器的测试方法已有不少文章论述过外,还很少有对驱动器测试的论述。本文将详细介绍如何测试驱动器,并给出相应的子程序源码,读者可根据需要将其变成一独立程序,也可将其加入到自己的应用程序中去。在提供的测试驱动器子程序中,使用了DOSINT1H的设备管理功能调用4XXHIOCTL的两个子功能AX4409H和AX440DH。通过对WHATDRV子程序的调用,可得到指定驱动器的类型。该测试子程序的调用方式为输入AL驱动器标号A,B,C,程序CALLWHATDRV输出CF0成功AL驱动器类型提供之源码中有各种类型说明DSDXDEVICEPARAMS读取参数缓冲区,共有32BYTES长度2/10CF1失败AX错误代码1测试指定驱动器状态本子功能是测试所指定驱动器是否为单机或网络之共享状态输入AX409HBL0,1,2,0DEFULT,1A,2B,3C,中断INT1H输出CF0成功DX返回状态这里仅讨论DX寄存器的BIT12,在返回的参数中,DX还有其它许多状态值,本节将不在此讨论若BIT120,则为单机状态BIT121,则为服务器共享状态CF1失败AX错误代码2读取指定驱动器参数本子功能将读出指定驱动器的各种参数,包括驱动器类型、文件分配表FAT大小,根目录ROOT大小,及其它BPB各种磁盘参数。本子程序仅读取驱动器类型参数。输入AX40DH,BL0,1,2,0DEFULT,1A,2B,3C,CX0860H这里CH08H表示磁盘驱动器CL60H表示读取驱动器参数3/10DSDXDEVICEPARAMS指向读取参数缓冲区,共有3BYTES长度中断INT1H输出CF0成功DSDX缓冲区包含读出驱动器参数CF1失败AX错误代码3磁盘参数区表1为一130MM的软盘驱动器参数信息共32字节长度。表14测试驱动器源码程序1程序1CHECKDRIVETYPEINPUTALCANBEANYDRIVELETTERA,B,COUTPUTCF0SUCCESSFULLYALDRIVETYPEWILLBERETURNEDASANERRORLEVELDSDXPOINTERTOPARAMETERBLOCKCF1FAILEDALLREGISTERSRESTORED4/10ERRORLEVELRESULT1DRIVEISNTLOCAL0320K/360KHARDDISKTYPEDRIVEDRIVESOMETHINGELSEWHATDRVPROCNEARPUSHCXSAVEREGISTERSPUSHBXMOVBL,ALANDBL,LFHBL0,1,2MOVAX,4409HCHECKWORKSTATION/SERVERPUSHBX5/10INT1HPOPBXJBWHATERRORERRORTOEXITTESTDH,10HTESTSERVERJZWHATCONTINUEMOVAL,1JMPSHORTWHATEXITWHATCONTINUEMOVAX,440DHMOVCX,0860HGETDEVICEPARAMTERSPUSHCSPOPDSMOVDX,OFFSETDEVICEPARAMSINT1HJBWHATERRORERRORTOEXITMOVAL,DEVICEPARAMS1GETDEVICETYPEWHATEXITCLCSUCCESSFULLYFLAGWHATERRORPOPBXRECOVERREGISTERS6/10POPCXRETNWHATDRVENDPDEVICEPARAMSDBDUP0二、读取硬盘参数硬盘是主机重要的存储设备,不同厂家,不同大小的硬盘参数均不相同。这里所说的硬盘参数是磁头数、簇面数和扇区数。本节将给出一个读取硬盘参数的子程序不含逻辑,即将一个大硬盘分成两个以上分区。当然读者也可修改本程序,以便能识别两个以上分区的硬盘。在下面的程序中,将首先读取硬盘的主引导区MASTERBOOTRECORD,因为所有的硬盘参数都存放在里面。程序流程如下1将指定的物理硬盘主引导区读入缓冲区2在引导区偏移地址1BEH处获取相应的硬盘参数3通过计算求得该硬盘的磁头数、簇面数和扇区数4由得到的硬盘参数求得其容量大小GETFDISKPARAM子程序调用方式为输入AL硬盘物理ID号80H或1H程序CALLGETFDISKPARAM输出CF0成功AX硬盘容量大小HEXCX簇面数7/10DL扇区数DH磁头数CF1失败1硬盘分区表参数在硬盘主引导区的1BEH位置即为硬盘分区表参数区,一个硬盘最多只能分成四个逻辑分区,每个分区参数表占10HBYTES长度。本节为方便起见,仅设定硬盘为一个分区的情况,至于多分区情况,请读者通过修改本程序亦可获得。这里以162MB硬盘主引导区中的分区表参数为例。表硬盘分区表参数由参数表可查出磁头数15,簇面数1010,扇区数222硬盘容量计算通过分区表的参数,还可求得硬盘的容量大小。在提供的程序中对硬盘容量的计算均按16进制方式硬盘容量MB磁头数簇面数扇区数512/1024为精简程序,笔者在计算时舍掉了许多余数舍掉较多,仅保留整数,故此计算得来的容量与实际容量有些差异,请读者引用时注意。3读硬盘参数源码程序2程序2GETHARDCYLS,SECTOR,HEAD,SIZE8/10INPUTALFDISKID80H,81HOUTPUTCF0SUCCESSFULLYAXFDISKSIZEHEXCXNUMBEROFCYLINDERSDLNUMBEROFSECTORSDHNUMBEROFHEADSCF1FAILEDGETFDISKPARAMPROCNEARCMPAL,80HTESTFDISKIDJBGETFDISKEXITMOVCX,CSMOVDS,CXMOVES,CXSETDS,ESSEGMENTMOVDL,ALFDISKIDMOVBX,OFFSETPARTITIONAREAMOVCX,1MOVDH,0MOVAX,201HREADPARTITIONSECTORINT13HJBGETFDISKEXITFAILEDTOEXITMOVBX,OFFSETPARTITONAREA1BEH9/10MOVAL,BX8SECTORCOUNTERMOVAH,BX5HEADCOUNTERMOVDL,BX7CYLINDERLOWERMOVDH,BX6CYLINDERHIGHMOVCX,6SHRDH,CLINCDXGETCYLINDERPUSHDXSAVECYLINDERPUSHAXSAVEHEADCOMPUTEFDISKSIZEMULDXMOVCX,11LOOPSHIFTSHRDX,1RCRA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论