扩展Int 13H调用规范
2008-04-29 09:34:09 来源:WEB开发网三.接口规范
1.寄存器约定
在扩展Int13H调用中一般使用如下寄存器约定:
ds:si==>磁盘地址数据包(diskaddresspacket)
dl==>驱动器号
ah==>功能代码/返回码
在基本Int13H调用中,0-0x7F之间的驱动器号代表可移动驱动器0x80-0xFF之间的驱动器号代表固定驱动器。但在扩展Int13H调用中0x80-0xFF之间还包括一些新出现的可移动驱动器,比如活动硬盘等。这些驱动器支持先进的锁定,解锁等功能。
ah返回的错误码除了标准Int13H调用规定的基本错误码以外,又增加了以下错误码:
B0h驱动器中的介质未被锁定
B1h驱动器中的介质已经锁定
B2h介质是可移动的
B3h介质正在被使用
B4h锁定记数溢出
B5h合法的弹出请求失败
2.API子集介绍
1.x版的扩展Int13H调用中规定了两个主要的API子集。
第一个子集提供了访问大硬盘所必须的功能,包括检查扩展In13H是否存在(41h),扩展读(42h),扩展写(43h),校验扇区(44h),扩展定位(47h)和取得驱动器参数(48h)。
第二个子集提供了对软件控制驱动器锁定和弹出的支持,包括检查扩展Int13H是否存在(41h),锁定/解锁驱动器(45h),弹出驱动器(46h),取得驱动器参数(48h),取得扩展驱动器改变状态(49h),int15h。
如果使用了调用规范中不支持的功能,BIOS将返回错误码ah=01h,CF=1。
3.API详解
1)检验扩展功能是否存在
入口:
AH=41h
BX=55AAh
DL=驱动器号
返回:
CF=0
AH=扩展功能的主版本号
AL=内部使用
BX=AA55h
CX=API子集支持位图
CF=1
AH=错误码01h,无效命令
这个调用检验对特定的驱动器是否存在扩展功能。如果进位标志置1则此驱动器不支持扩展功能。如果进位标志为0,同时BX=AA55h,则存在扩展功能。此时CX的0位表示是否支持第一个子集,1位表示是否支持第二个子集.
对于1.x版的扩展Int13H来说,主版本号AH=1。AL是副版本号,但这仅限于BIOS内部使用,任何软件不得检查AL的值。
2)扩展读
入口:
AH=42h
DL=驱动器号
DS:DI=磁盘地址数据包(DiskAddressPacket)
返回:
CF=0,AH=0成功
CF=1,AH=错误码
这个调用将磁盘上的数据读入内存。如果出现错误,DAP的BlockCount项中则记录了出错前实际读取的数据块个数。
3)扩展写
入口:
AH=43h
AL
0位=0关闭写校验
1打开写校验
1-7位保留,置0
DL=驱动器号
DS:DI=磁盘地址数据包(DAP)
返回:
CF=0,AH=0成功
CF=1,AH=错误码
这个调用将内存中的数据写入磁盘。如果打开了写校验选项,但BIOS不支持,则会返回错误码AH=01h,CF=1。功能48h可以检测BIOS是否支持写校验。
如果出现错误,DAP的BlockCount项中则记录了出错前实际写入的数据块个数。
- ››Intent和IntentFilter详解
- ››Interface继承至System.Object?
- ››调用已注册会员人数和最新会员名称
- ››Intent调用大全
- ››IntentService实现原理及内部代码
- ››Internet Explorer 无法打开
- ››Intel和Nokia宣称MeeGo将比Android更加开放且方便...
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››Intent Android 详解
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››Internet Explorer 9 Platform 1.9.7916.6000 Pre...
更多精彩
赞助商链接