荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: gevic (午夜空围), 信区: Program
标 题: Re: 请问
发信站: 荔园晨风BBS站 (Thu Apr 1 12:19:04 2004), 站内信件
建议你看下《scsi协议、应用、**》忘记书名了
你对磁盘的数据存储物理结构不了解
其中的fat文件系统:
硬盘上的数据按照其不同的特点和作用大致可分为5 部分:MBR 区、DBR 区、FAT 区、
DIR 区和DATA 区。下列分别介绍:
0 磁道0 柱面1
扇区
MBR 区(主引导记录区)
0 磁道1 柱面1
扇区
DBR 区(操作系统引导记录区)
0 磁道1 柱面2
扇区~
0 磁道1 柱面
2+i-1 扇区
FAT 区(文件分配表区)
视磁盘容量而定,其占用的扇区数为i,
磁盘总空间/32K=总簇数,对于FAT16,则所占扇区数
i=(总簇数*2/512),每扇区字节数为512 字节
0 磁道1 柱面
2+i 扇区~
0 磁道1 柱面
2+2i-1 扇区
第二个FAT 区,内容与第一个FAT 区一样
0 磁道1 柱面
2+2i 扇区~
0 磁道1 柱面
2+2i+j-1 扇区
DIR 区(根目录区)
视磁盘根目录项而定,其占用扇区数为j
0 磁道1 柱面
2+2i+j 扇区
DATA 区(数据区)
文件数据真正开始存放的地方
--------磁盘上的数据结构
请先看看书.
【 在 sometimesA (sometimesA) 的大作中提到: 】
函数名: absread, abswirte
功 能: 绝对磁盘扇区读、写数据
用 法: int absread(int drive, int nsects, int sectno, void *buffer);
int abswrite(int drive, int nsects, in tsectno, void *buffer);
----------------------------->这四个参数代表什么啊?
程序例:
/* absread example */
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <dos.h>
int main(void)
{
int i, strt, ch_out, sector;
char buf[512];
printf("Insert a diskette into drive A and press any key\n");
getch();
sector = 0;
if (absread(0, 1, sector, &buf) != 0) -------->不明白
{
perror("Disk problem");
exit(1);
}
printf("Read OK\n");
strt = 3; --------->它等于3有什么用
for (i=0; i<80; i++) --------->为什么是80
{
ch_out = buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
}
--
※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 192.168.73.169]
--
住外校的学生,是郁闷的,是悲惨的!请不要把我们遗忘!
一个差点被遗忘的人字。
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.100]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店