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

📄 00000004.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专题(3)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Nov&nbsp;22&nbsp;14:35:19&nbsp;1999)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;第二部分&nbsp;技术资料&nbsp;<BR>第一章&nbsp;扩展&nbsp;Int13H&nbsp;技术资料&nbsp;<BR>&nbsp;<BR>一.&nbsp;简介&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;设计扩展&nbsp;Int13H&nbsp;接口的目的是为了扩展&nbsp;BIOS&nbsp;的功能,&nbsp;使其支持&nbsp;<BR>多于1024柱面的硬盘,&nbsp;以及可移动介质的琐定,&nbsp;解锁及弹出等功能.&nbsp;<BR>&nbsp;<BR>二.&nbsp;数据结构&nbsp;<BR>&nbsp;<BR>1.&nbsp;数据类型约定&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;字节整型&nbsp;(&nbsp;&nbsp;8&nbsp;位&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;字节整型&nbsp;(&nbsp;16&nbsp;位&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;&nbsp;4&nbsp;字节整型&nbsp;(&nbsp;32&nbsp;位&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;QWORD&nbsp;&nbsp;&nbsp;8&nbsp;字节整型&nbsp;(&nbsp;64&nbsp;位&nbsp;)&nbsp;<BR>&nbsp;<BR>2.&nbsp;磁盘地址数据包&nbsp;Disk&nbsp;Address&nbsp;Packet&nbsp;(DAP)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DAP&nbsp;是基于绝对扇区地址的,&nbsp;因此利用&nbsp;DAP,&nbsp;Int13H&nbsp;可以轻松地逾&nbsp;<BR>越&nbsp;1024&nbsp;柱面的限制,&nbsp;因为它根本就不需要&nbsp;CHS&nbsp;的概念.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DAP&nbsp;的结构如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;DiskAddressPacket&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;PacketSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数据包尺寸(16字节)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;Reserved;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;==0&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;BlockCount;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;要传输的数据块个数(以扇区为单位)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;BufferAddr;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;传输缓冲地址(segment:offset)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QWORD&nbsp;BlockNum;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;磁盘起始绝对块地址&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PacketSize&nbsp;保存了&nbsp;DAP&nbsp;结构的尺寸,&nbsp;以便将来对其进行扩充.&nbsp;在&nbsp;<BR>目前使用的扩展&nbsp;Int13H&nbsp;版本中&nbsp;PacketSize&nbsp;恒等于&nbsp;16.&nbsp;如果它小于&nbsp;<BR>16,&nbsp;扩展&nbsp;Int13H&nbsp;将返回错误码(&nbsp;AH=01,&nbsp;CF=1&nbsp;).&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BlockCount&nbsp;对于输入来说是需要传输的数据块总数,&nbsp;对于输出来说&nbsp;<BR>是实际传输的数据块个数.&nbsp;BlockCount&nbsp;=&nbsp;0&nbsp;表示不传输任何数据块.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BufferAddr&nbsp;是传输数据缓冲区的&nbsp;32&nbsp;位地址&nbsp;(段地址:偏移量).&nbsp;数据&nbsp;<BR>缓冲区必须位于常规内存以内(1M).&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BlockNum&nbsp;表示的是从磁盘开始算起的绝对块地址(以扇区为单位),&nbsp;<BR>与分区无关.&nbsp;第一个块地址为&nbsp;0.&nbsp;一般来说,&nbsp;BlockNum&nbsp;与&nbsp;CHS&nbsp;地址的关系&nbsp;<BR>是:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BlockNum&nbsp;=&nbsp;cylinder&nbsp;*&nbsp;NumberOfHeads&nbsp;+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head&nbsp;*&nbsp;SectorsPerTrack&nbsp;+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sector&nbsp;-&nbsp;1;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;其中&nbsp;cylinder,&nbsp;head,&nbsp;sector&nbsp;是&nbsp;CHS&nbsp;地址,&nbsp;NumberOfHeads&nbsp;是磁盘&nbsp;<BR>的磁头数,&nbsp;SectorsPerTrack&nbsp;是磁盘每磁道的扇区数.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;也就是说&nbsp;BlockNum&nbsp;是沿着&nbsp;扇区-&gt;磁道-&gt;柱面&nbsp;的顺序记数的.&nbsp;这一顺&nbsp;<BR>序是由磁盘控制器虚拟的,&nbsp;磁盘表面数据块的实际排列顺序可能与此不同&nbsp;<BR>(如为了提高磁盘速度而设置的间隔因子将会打乱扇区的排列顺序).&nbsp;<BR>&nbsp;<BR>3.&nbsp;驱动器参数数据包&nbsp;Drive&nbsp;Parameters&nbsp;Packet&nbsp;<BR>&nbsp;&nbsp;&nbsp;驱动器参数数据包是在扩展&nbsp;Int13H&nbsp;的取得驱动器参数子功能调用中&nbsp;<BR>使用的数据包.&nbsp;格式如下:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;DriveParametersPacket&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;InfoSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数据包尺寸&nbsp;(26&nbsp;字节)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;Flags;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;信息标志&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;Cylinders;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;磁盘柱面数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;Heads;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;磁盘磁头数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;SectorsPerTrack;&nbsp;&nbsp;//&nbsp;每磁道扇区数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QWORD&nbsp;Sectors;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;磁盘总扇区数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;SectorSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;扇区尺寸&nbsp;(以字节为单位)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;信息标志用于返回磁盘的附加信息,&nbsp;每一位的定义如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;可能发生&nbsp;DMA&nbsp;边界错误&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;DMA&nbsp;边界错误将被透明处理&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果这位置&nbsp;1,&nbsp;表示&nbsp;BIOS&nbsp;将自动处理&nbsp;DMA&nbsp;边界错误,&nbsp;也就是说&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;错误代码&nbsp;09H&nbsp;永远也不会出现.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;未提供&nbsp;CHS&nbsp;信息&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;CHS&nbsp;信息合法&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果块设备的传统&nbsp;CHS&nbsp;几何信息不适当的话,&nbsp;该位将置&nbsp;0.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;驱动器不可移动&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;驱动器可移动&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;位:&nbsp;表示该驱动器是否支持写入时校验.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;驱动器不具备介质更换检测线&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;驱动器具备介质更换检测线&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;驱动器不可锁定&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;驱动器可以锁定&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要存取驱动器号大于&nbsp;0x80&nbsp;的可移动驱动器,&nbsp;该位必须置&nbsp;1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(某些驱动器号为&nbsp;0&nbsp;到&nbsp;0x7F&nbsp;的设备也需要置位)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;位:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&nbsp;CHS&nbsp;值是当前存储介质的值&nbsp;(仅对于可移动介质),&nbsp;如果&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;驱动器中有存储介质,&nbsp;CHS&nbsp;值将被返回.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&nbsp;CHS&nbsp;值是驱动器支持的最大值&nbsp;(此时驱动器中没有介质).&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;-&nbsp;15&nbsp;位:&nbsp;保留,&nbsp;必须置&nbsp;0.&nbsp;<BR>&nbsp;<BR>(未完&nbsp;待续)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.26.12]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

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