Lab 11
Project 3 Requests
The FAT
Cluster | Value {Cluster, EOC, 0} |
2 | EOC |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
How to get value of cluster N=4?
Formula from the whitepaper:
FATOffset = 4*N;
ThisFATSecNum = BPB_ResvdSecCnt + (FATOffset / BPB_BytsPerSec);
ThisFATEntOffset = REM(FATOffset / BPB_BytsPerSec);
Translated to functions of N
ThisFATSecNum(N) = BPB_ResvdSecCnt + ((4*N) / BPB_BytsPerSec);
ThisFATEntOffset(N) = REM((4*N) / BPB_BytsPerSec);
The FAT
Cluster | Value |
2 | EOC |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
ReadFAT(4)
int sector = ThisFATSecNum(4);
The FAT
Cluster | Value |
2 | EOC |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
ReadFAT(4)
int sector = ThisFATSecNum(4);
int offset = sector*BytsPerSec;
The FAT
Cluster | Value |
2 | EOC |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
ReadFAT(4)
int sector = ThisFATSecNum(4);
int offset = sector*BytsPerSec;
offset += ThisFATEntOffset(4);
The FAT
Cluster | Value |
2 | EOC |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
ReadFAT(4)
int sector = ThisFATSecNum(4);
int offset = sector*BytsPerSec;
offset += ThisFATEntOffset(4);
fseek(...,offset, SEEK_SET);
uint32_t someint;
int value = fread(&someint, 4, 1, ...);
return value;
The FAT
Cluster | Value |
2 | EOC |
3 | 0 |
4 | 12345 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
10 | 0 |
... | |
WriteFAT(4, Val = 12345)
int sector = ThisFATSecNum(4);
int offset = sector*BytsPerSec;
offset += ThisFATEntOffset(4);
fseek(...,offset, SEEK_SET);
fwrite(&val, 4, 1, ...)
What's the point?
What's the point
FAT Examples
Next Week...
Forget about all of this for your holiday break
Questions/Requests?