扩展int13h调用详解(修正)
支持写校验.如果出现错误, DAP 的 BlockCount 项中则记录了出错前实际写入的数据块个数.
4) 校验扇区 入口: AH = 44h DL = 驱动器号 DS:DI = 磁盘地址数据包(Disk Address Packet)
返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码
这个调用校验磁盘数据, 但并不将数据读入内存.如果出现错误, DAP 的BlockCount 项中则记录了出错前实际校验的数据块个数.
5) 锁定/解锁驱动器 入口: AH = 45h AL = 0 锁定驱动器 = 1 驱动器解锁 = 02 返回锁定/解锁状态 = 03h-FFh - 保留 DL = 驱动器号
返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码
这个调用用来缩定指定驱动器中的介质. 所有标号大于等于 0x80 的可移动驱动器必须支持这个功能. 如果在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用, 将 会成功返回. 驱动器必须支持最大255次锁定, 在所有锁定被解锁之前, 不能在物理上将驱动器解锁. 解锁一个未锁定的驱动器,将返回错误码 AH= B0h. 如果锁定一 个已锁定了255次的驱动器, 将返回错误码 AH = B4h. 锁定一个没有介质的驱动器是合法的.
6) 弹出可移动驱动器中的介质 入口: AH = 46h AL = 0 保留 DL = 驱动器号
返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码
这个调用用来弹出指定的可移动驱动器中的介质. 所有标号大于等于 0x80 的可移动驱动器必须支持这个功能. 如果在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用, 将 会返回错误码 AH = B2h (介质不可移动). 如果试图弹出一个被锁定的介质将返回错误码 AH = B1h (介质被锁定). 如果试图弹出一个没有介质的驱动器, 则返回错误码 Ah = 31h (驱动器 中没有介质). 如果试图弹出一个未锁定的可移动驱动器中的介质, Int13h会调用 Int5h(AH = 52h) 来检查弹出请求能否执行. 如果弹出请求被拒绝则返回错误码(同 Int15h). 如果弹出请求被接受,但出现了其他错误, 则返回错误码 AH = B5h.7) 扩展定位入口: AH = 47h DL = 驱动器号 DS:DI = 磁盘地址数据包(Disk Address Packet)
返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码
这个调用将磁头定位到指定扇区.
8) 取得驱动器参数 入口: AH = 48h DL = 驱动器号 DS:DI = 返回数据缓冲区地址
返回: CF = 0, AH = 0 成功 DS:DI 驱动器参数数据包地址, (参见前面的文章) CF = 1, AH = 错误码
这个调用返回指定驱动器的参数.
9) 取得扩展驱动器介质更换检测线状态 入口: AH = 49h DL = 驱动器号
返回: CF = 0, AH = 0 介质未更换 CF = 1, AH = 06h 介质可能已更换
这个调用返回指定驱动器的介质更换状态. 这个调用与 Int13h AH = 16h 子功能调用相同, 只是允许任何驱动器标号. 如果对一台支持可移动介质功能子集的固定驱动器使用此功能,则永远 |