⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000006.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;suzhe&nbsp;(I&nbsp;Love&nbsp;Linux),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;HardDisk,Partition,Boot,OSLoader专题(4)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Nov&nbsp;23&nbsp;17:35:15&nbsp;1999)&nbsp;<BR>&nbsp;<BR>三.&nbsp;接口规范&nbsp;<BR>&nbsp;<BR>1.&nbsp;寄存器约定&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在扩展&nbsp;Int13H&nbsp;调用中一般使用如下寄存器约定:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ds:di&nbsp;==&gt;&nbsp;磁盘地址数据包(&nbsp;disk&nbsp;address&nbsp;packet&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dl&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;驱动器号&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ah&nbsp;&nbsp;&nbsp;&nbsp;==&gt;&nbsp;功能代码&nbsp;/&nbsp;返回码&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在基本&nbsp;Int13H&nbsp;调用中,&nbsp;0&nbsp;-&nbsp;0x7F&nbsp;之间的驱动器号代表可移动驱动器&nbsp;<BR>0x80&nbsp;-&nbsp;0xFF&nbsp;之间的驱动器号代表固定驱动器.&nbsp;但在扩展&nbsp;Int13H&nbsp;调用中&nbsp;<BR>0x80&nbsp;-&nbsp;0xFF&nbsp;之间还包括一些新出现的可移动驱动器,&nbsp;比如活动硬盘等.&nbsp;<BR>这些驱动器支持先进的锁定,解锁等功能.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ah&nbsp;返回的错误码除了标准&nbsp;Int13H&nbsp;调用规定的基本错误码以外,又增加&nbsp;<BR>了以下错误码:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B0h&nbsp;&nbsp;&nbsp;驱动器中的介质未被锁定&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B1h&nbsp;&nbsp;&nbsp;驱动器中的介质已经锁定&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B2h&nbsp;&nbsp;&nbsp;介质是可移动的&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B3h&nbsp;&nbsp;&nbsp;介质正在被使用&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B4h&nbsp;&nbsp;&nbsp;锁定记数溢出&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;B5h&nbsp;&nbsp;&nbsp;合法的弹出请求失败&nbsp;<BR>&nbsp;<BR>2.&nbsp;API&nbsp;子集介绍&nbsp;<BR>&nbsp;&nbsp;&nbsp;1.x&nbsp;版的扩展&nbsp;Int13H&nbsp;调用中规定了两个主要的&nbsp;API&nbsp;子集.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;第一个子集提供了访问大硬盘所必须的功能,&nbsp;包括&nbsp;检查扩展&nbsp;In13H&nbsp;<BR>是否存在(&nbsp;41h&nbsp;),&nbsp;扩展读(&nbsp;42h&nbsp;),&nbsp;扩展写(&nbsp;43h&nbsp;),&nbsp;校验扇区(&nbsp;44h&nbsp;),&nbsp;<BR>扩展定位(&nbsp;47h&nbsp;)&nbsp;和&nbsp;取得驱动器参数(&nbsp;48h&nbsp;).&nbsp;<BR>&nbsp;&nbsp;&nbsp;第二个子集提供了对软件控制驱动器锁定和弹出的支持,&nbsp;包括&nbsp;检查扩展&nbsp;<BR>Int13H&nbsp;是否存在(&nbsp;41h&nbsp;),&nbsp;锁定/解锁驱动器(&nbsp;45h&nbsp;),&nbsp;弹出驱动器(&nbsp;46h&nbsp;),&nbsp;<BR>取得驱动器参数(&nbsp;48h&nbsp;),&nbsp;取得扩展驱动器改变状态(&nbsp;49h&nbsp;),&nbsp;int&nbsp;15h.&nbsp;<BR>&nbsp;&nbsp;&nbsp;如果使用了调用规范中不支持的功能,&nbsp;BIOS&nbsp;将返回错误码&nbsp;ah&nbsp;=&nbsp;01h,&nbsp;<BR>CF&nbsp;=&nbsp;1.&nbsp;<BR>&nbsp;<BR>3.&nbsp;API&nbsp;详解&nbsp;<BR>&nbsp;<BR>1)&nbsp;检验扩展功能是否存在&nbsp;<BR>入口:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;41h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;=&nbsp;55AAh&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DL&nbsp;=&nbsp;驱动器号&nbsp;<BR>&nbsp;<BR>返回:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;0&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;扩展功能的主版本号&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AL&nbsp;=&nbsp;内部使用&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;=&nbsp;AA55h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CX&nbsp;=&nbsp;API&nbsp;子集支持位图&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;错误码&nbsp;01h,&nbsp;无效命令&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;这个调用检验对特定的驱动器是否存在扩展功能.&nbsp;如果进位标志置&nbsp;1&nbsp;<BR>则此驱动器不支持扩展功能.&nbsp;如果进位标志为&nbsp;0,&nbsp;同时&nbsp;BX&nbsp;=&nbsp;AA55h,&nbsp;则&nbsp;<BR>存在扩展功能.&nbsp;此时&nbsp;CX&nbsp;的&nbsp;0&nbsp;位表示是否支持第一个子集,&nbsp;1位表示是否&nbsp;<BR>支持第二个子集.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;对于&nbsp;1.x&nbsp;版的扩展&nbsp;Int13H&nbsp;来说,&nbsp;主版本号&nbsp;AH&nbsp;=&nbsp;1.&nbsp;AL&nbsp;是副版本号,&nbsp;<BR>但这仅限于&nbsp;BIOS&nbsp;内部使用,&nbsp;任何软件不得检查&nbsp;AL&nbsp;的值.&nbsp;<BR>&nbsp;<BR>2)&nbsp;扩展读&nbsp;<BR>入口:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;42h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DL&nbsp;=&nbsp;驱动器号&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DS:DI&nbsp;=&nbsp;磁盘地址数据包(Disk&nbsp;Address&nbsp;Packet)&nbsp;<BR>&nbsp;<BR>返回:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;0,&nbsp;AH&nbsp;=&nbsp;0&nbsp;成功&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;1,&nbsp;AH&nbsp;=&nbsp;错误码&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;这个调用将磁盘上的数据读入内存.&nbsp;如果出现错误,&nbsp;DAP&nbsp;的&nbsp;BlockCount&nbsp;<BR>项中则记录了出错前实际读取的数据块个数.&nbsp;<BR>&nbsp;<BR>3)&nbsp;扩展写&nbsp;<BR>入口:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;43h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AL&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;位&nbsp;=&nbsp;0&nbsp;关闭写校验&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;打开写校验&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;-&nbsp;7&nbsp;位保留,&nbsp;置&nbsp;0&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DL&nbsp;=&nbsp;驱动器号&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DS:DI&nbsp;=&nbsp;磁盘地址数据包(DAP)&nbsp;<BR>返回:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;0,&nbsp;AH&nbsp;=&nbsp;0&nbsp;成功&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;1,&nbsp;AH&nbsp;=&nbsp;错误码&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;这个调用将内存中的数据写入磁盘.&nbsp;如果打开了写校验选项,&nbsp;但&nbsp;BIOS&nbsp;<BR>不支持,&nbsp;则会返回错误码&nbsp;AH&nbsp;=&nbsp;01h,&nbsp;CF&nbsp;=&nbsp;1.&nbsp;功能&nbsp;48h&nbsp;可以检测BIOS是否&nbsp;<BR>支持写校验.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果出现错误,&nbsp;DAP&nbsp;的&nbsp;BlockCount&nbsp;项中则记录了出错前实际写入的数&nbsp;<BR>据块个数.&nbsp;<BR>&nbsp;<BR>4)&nbsp;校验扇区&nbsp;<BR>入口:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;AH&nbsp;=&nbsp;44h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DL&nbsp;=&nbsp;驱动器号&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DS:DI&nbsp;=&nbsp;磁盘地址数据包(Disk&nbsp;Address&nbsp;Packet)&nbsp;<BR>&nbsp;<BR>返回:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;0,&nbsp;AH&nbsp;=&nbsp;0&nbsp;成功&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CF&nbsp;=&nbsp;1,&nbsp;AH&nbsp;=&nbsp;错误码&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;这个调用校验磁盘数据,&nbsp;但并不将数据读入内存.如果出现错误,&nbsp;DAP&nbsp;的&nbsp;<BR>BlockCount&nbsp;项中则记录了出错前实际校验的数据块个数.&nbsp;<BR>&nbsp;<BR>(未完&nbsp;待续)&nbsp;<BR>&nbsp;<BR>抱歉,&nbsp;没时间了,&nbsp;下回再写吧.&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.26.196]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -