扩展INT 13H调用规则(续)
标 题: HardDisk,Partition,Boot,OSLoader专题(5)
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会调用 Int15h
(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 子功能调用相同, 只是允许任何驱动器
标号. 如果对一台支持可移动介质功能子集的固定驱动器使用此功能,则永远
返回 CF = 0, AH = 0.
简单地将可移动介质锁定再解锁就可以激活检测线, 而无须真正更换介质.
10) Int 15h 可移动介质弹出支持
入口:
AH = 52h
DL = 驱动器号
返回:
CF = 0, AH = 0 弹出请求可能可以执行
CF = 1, AH = 错误码 B1h 或 B3h 弹出请求不能执行
这个调用是由 Int13h AH=46h 弹出介质功能调用内部使用的.