如何测试软硬盘驱动器参数

上传人:M****1 文档编号:504639640 上传时间:2022-11-08 格式:DOC 页数:3 大小:16KB
返回 下载 相关 举报
如何测试软硬盘驱动器参数_第1页
第1页 / 共3页
如何测试软硬盘驱动器参数_第2页
第2页 / 共3页
如何测试软硬盘驱动器参数_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《如何测试软硬盘驱动器参数》由会员分享,可在线阅读,更多相关《如何测试软硬盘驱动器参数(3页珍藏版)》请在金锄头文库上搜索。

1、如何测试软硬盘驱动器参数一、如何测试驱动器类型随着P硬件的高速开展,各种应用软件对外设的要求亦不断进步,这使得有些软件的设计者在开发软件时需要对主机的配套设备进展检查,以便能更好地利用这些设备。如对处理器PU及协处理器的检测、对驱动器的检测等等。对于上述的测试,除PU及协处理器的测试方法已有不少文章阐述过外,还很少有对驱动器测试的阐述。本文将详细介绍如何测试驱动器,并给出相应的子程序源码,读者可根据需要将其变成一独立程序,也可将其参加到自己的应用程序中去。在提供的测试驱动器子程序中,使用了DSINT21h的设备管理功能调用44XXh(ITL)的两个子功能:AX=4409h和AX=440Dh。通

2、过对hat-Drv子程序的调用,可得到指定驱动器的类型。该测试子程序的调用方式为:输入:AL=驱动器标号(A,B,.)程序:ALLhat-Drv输出:F=0成功AL=驱动器类型(提供之源码中有各种类型说明)DS:DX=Devie-Paras读取参数缓冲区,共有32Bytes长度F=1失败AX=错误代码1.测试指定驱动器状态本子功能是测试所指定驱动器是否为单机或网络之共享状态输入:AX=4409hBL=0,1,2,.(0=defult,1=A,2=B,3=,.)中断:INT21h输出:F=0成功DX=返回状态(这里仅讨论DX存放器的Bit12,在返回的参数中,DX还有其它许多状态值,本节将不在此

3、讨论)假设Bit12=0,那么为单机状态Bit12=1,那么为效劳器共享状态F=1失败AX=错误代码2.读取指定驱动器参数本子功能将读出指定驱动器的各种参数,包括驱动器类型、文件分配表FAT大小,根目录RT大小,及其它BPB各种磁盘参数。本子程序仅读取驱动器类型参数。输入:AX=440Dh,BL=0,1,2,.(0=defult,1=A,2=B,3=,.)X=0860h这里H=08h表示磁盘驱动器L=60h表示读取驱动器参数DSDX=Devie-Paras指向读取参数缓冲区,共有32Bytes长度中断:INT21h输出:F=0成功DSDX=缓冲区包含读出驱动器参数F=1失败AX=错误代码3.磁

4、盘参数区表1为一1301.2B的软盘驱动器参数信息(共32字节长度)。08a08600.GIF;表14.测试驱动器源码(程序1)程序1:;-;hekDriveType;Input:AL=anbeanydriveletter(A,B,.);utput:F=0Suessfully;AL=drivetypeillbereturnedasan;ERRRLEVEL.;DSDX=Pintertparaeterblk;F=1Failed;allregistersrestred.;-;ERRRLEVELResu-;-1Driveisntlal;0320K/360K130.drive;11.2130.drive

5、;2720K90.drive;3Single-density203.drive;4Duble-density203.drive;5Harddisk;6Typedrive;71.44drive;8Sethingelse;-;hat-drvprnearpushx;saveregisterspushbxvbl,alandbl,lfh;bl=0,1,2.vax,4409h;hekrkstatin/serverpushbxint21hppbxjbhat-errr;Errrtexittestdh,10h;testserver?jzhat-ntinueval,-1jpshrthat-Exithat-ntin

6、ue:vax,440dhvx,0860h;Getdevieparaterspushsppdsvdx,ffsetDevie-parasint21hjbhat-errr;Errrtexitval,Devie-Paras+1;Getdevietypehat-Exit:l;Suessfullyflaghat-errr:ppbx;reverregistersppxretnhat-drvendpDevie-Parasdb32dup(0)二、读取硬盘参数硬盘是主机重要的存储设备,不同厂家,不同大小的硬盘参数均不一样。这里所说的硬盘参数是:磁头数、簇面数和扇区数。本节将给出一个读取硬盘参数的子程序(不含逻辑,

7、即将一个大硬盘分成两个以上分区。当然读者也可修改本程序,以便能识别两个以上分区的硬盘)。在下面的程序中,将首先读取硬盘的主引导区asterbtrerd,因为所有的硬盘参数都存放在里面。程序流程如下:(1)将指定的物理硬盘主引导区读入缓冲区(2)在引导区偏移地址1BEh处获取相应的硬盘参数(3)通过计算求得该硬盘的磁头数、簇面数和扇区数(4)由得到的硬盘参数求得其容量大小Get-FdiskPara子程序调用方式为:输入:AL=硬盘物理ID号(80h或81h)程序:ALLGet-FdiskPara输出:F=0成功AX=硬盘容量大小(Hex)X=簇面数DL=扇区数DH=磁头数F=1失败1.硬盘分区表

8、参数在硬盘主引导区的1BEh位置即为硬盘分区表参数区,一个硬盘最多只能分成四个逻辑分区,每个分区参数表占10hBytes长度。本节为方便起见,仅设定硬盘为一个分区的情况,至于多分区情况,请读者通过修改本程序亦可获得。这里以162B硬盘主引导区中的分区表参数为例。08A08601.GIF;表2硬盘分区表参数由参数表可查出:磁头数=15,簇面数=1010,扇区数=222.硬盘容量计算通过分区表的参数,还可求得硬盘的容量大校在提供的程序中对硬盘容量的计算均按16进制方式:硬盘容量(B)=磁头数簇面数扇区数512/1024为精简程序,笔者在计算时舍掉了许多余数(舍掉较多,仅保存整数),故此计算得来的容

9、量与实际容量有些差异,请读者引用时注意。3.读硬盘参数源码(程序2)程序2:;-;GetHardyls,Setr,Head,Size;Input:AL=FdiskID(80h,81h);utput:F=0suessfully;AX=Fdisksize(Hex);X=Nuberfylinders:DL=NuberfSetrs;DH=NuberfHeads;F=1failed;-Get-Fdiskparaprnearpal,80h;testFdiskIDjbGet-FdiskExitvx,svds,xves,x;setDS,ESsegentvdl,al;FdiskIDvbx,ffsetPartit

10、in-areavx,1vdh,0vax,201h;readpartitinsetrint13hjbGet-FdiskExit;failedtexit.vbx,ffsetPartitn-area+1behval,bx+8;Setruntervah,bx+5;Headuntervdl,bx+7;ylinderlervdh,bx+6;ylinderhighvx,6shrdh,lindx;getylinderpushdx;saveylinderpushax;saveheadsetrulah;puteFdisksizeuldxvx,11Lp-shift:shrdx,1rrax,1lpLp-shift;GetFdisksizeppdx;setrsheadsppx;ylinderunterl;learFflagGet-FdiskExit:retnGet-FdiskParaendpPartitin-areadb512dup(0);readPartitinbuffer

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号