荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店