扩展int13h调用详解(修正)
驱动器参数数据包是在扩展 Int13H 的取得驱动器参数子功能调用中使用的数据包. 格式如下: struct DriveParametersPacket { WORD InfoSize; // 数据包尺寸: //(固定值,等于26,即1AH,指本结构所占用的存储空间) WORD Flags; // 信息标志 DWORD Cylinders; // 磁盘柱面数 DWORD Heads; // 磁盘磁头数 DWORD SectorsPerTrack; // 每磁道扇区数 QWORD Sectors; // 磁盘总扇区数 WORD SectorSize; // 扇区尺寸 (以字节为单位) }; 信息标志用于返回磁盘的附加信息, 每一位的定义如下:
0 位: 0 = 可能发生 DMA 边界错误 1 = DMA 边界错误将被透明处理 如果这位置 1, 表示 BIOS 将自动处理 DMA 边界错误, 也就是说 错误代码 09H 永远也不会出现.
1 位: 0 = 未提供 CHS 信息 1 = CHS 信息合法 如果块设备的传统 CHS 几何信息不适当的话, 该位将置 0.
2 位: 0 = 驱动器不可移动 1 = 驱动器可移动
3 位: 表示该驱动器是否支持写入时校验.
4 位: 0 = 驱动器不具备介质更换检测线 1 = 驱动器具备介质更换检测线
5 位: 0 = 驱动器不可锁定 1 = 驱动器可以锁定 要存取驱动器号大于 0x80 的可移动驱动器, 该位必须置 1 (某些驱动器号为 0 到 0x7F 的设备也需要置位)
6 位: 0 = CHS 值是当前存储介质的值 (仅对于可移动介质), 如果 驱动器中有存储介质, CHS 值将被返回. 1 = CHS 值是驱动器支持的最大值 (此时驱动器中没有介质).
7 - 15 位: 保留, 必须置 0.
三. 接口规范
1. 寄存器约定 在扩展 Int13H 调用中一般使用如下寄存器约定: |