#ifndef FAT_H
#define FAT_H
struct DirEntry {
unsigned char name[11];
unsigned char attribute;
unsigned char reserved[10];
unsigned char date[4];
short int startingCluster;
int fileSize;
};
struct BootSector {
char jump[3];
char oemLable[8];
unsigned short bytesPerSector;
unsigned char sectorsPerCluster;
unsigned short reservedSectors;
unsigned char fats;
unsigned short rootEntries;
unsigned short smallSectors;
unsigned char mediaDescriptor;
unsigned short sectorsPerFat;
unsigned short sectorsPerTrack;
unsigned short heads;
unsigned int hiddenSectors;
unsigned int largeSectors;
};
struct PartTable {
unsigned char status;
unsigned char sectorAddress[3];
unsigned char partitionType;
unsigned char lastSectorAddress[3];
unsigned int LBA;
unsigned int sectorsInPartition;
};
struct MBR {
char code[0x1B8];
char diskSignature[4];
char nulls[2];
struct PartTable PT[4];
};
struct vDirNode {
unsigned char *name;
unsigned long startSector;
struct vDirNode *parent;
struct vDirNode *nextSibling;
struct vDirNode *firstChild;
};
struct DirSects {
int cluster;
int sector;
int sectorNo;
int sectorInCluster;
struct vDirNode *directory;
};
unsigned long FirstFAT;
unsigned long RootDir;
unsigned long DataStart;
unsigned long FATLength;
unsigned short BytesPerSector;
unsigned char SectorsPerCluster;
unsigned short RootDirectoryEntries;
#endif