You are on page 1of 2

Fat32

- Đọc sector đầu của vùng Boot Sector và lưu thông số quan
trọng của volume:
+ Đầu tiên đọc 2 bytes tại offset 0x1FE ( Offset kết thúc Boot
Sector), nếu khác 43605 thì báo lỗi
+ Tiếp theo đọc số byte của 1 sector mỗi giây (bps): Tại offset
0xB (2 bytes)
+ Số sector mỗi cluster (sc): tại offset 0xD (1 bytes)
+ Số sector trong bootsector (sb): tại offset 0xE (2 bytes)
+ Số lượng bảng fat (nf): tại offset 0x10 (1 bytes)
+ Kích thước mỗi bảng fat (sf): tại offset 0x24 (4 bytes)
+ RDET cluster: Cluster bắt đầu của RDET tại offset 0x2C (4
bytes)
+ Sector đầu tiên: được tính bằng sb + nf*sf
+ Kích thước volume: tại offset 0x20, 4 bytes
- Đọc RDET, SDET:
+ Đầu tiên kiểm tra entry chính hoặc phụ tại offset 0xB ( 1
bytes)
+ Đọc tên của tập tin/ thư mục: tên chính tại offset 0 (8 bytes)
và tên mở rộng tại offset (3 bytes)
* Nếu có entry phụ thì đọc tên của tập tin/ thư mục của entry
phụ: 5 ký tự tại offset 0x1 ( 1 bytes), 6 ký tự tiếp theo tại offset
0xE, 2 ký tự kế tiếp tại offset 0x1C.
+ Xác định thuộc tính entry tại offset 0xB ( 1 bytes) bằng cách
đổi về nhị phân
+ Tại offset 0x1B (2 bytes) xác định phần highbyte của cluster
bắt đầu
+ Tại offset 0x1A (2 bytes) xác định phần lowbyte của cluster bắt
đầu
-> Từ đó biết được cluster đầu tiên: highbyte*0x100 + lowbyte
+ Từ chỉ số cluster đầu tiên, xác định các phần tử của tập tin
tương ứng các cluster của tập tin này tới khi gặp dấu hiệu kết
thúc [0xFFFFFFF, 0xFFFFFF7, 0xFFFFFF8]
+ Từ đó chuyển chuỗi cluster thành sector: i = SB + SF*NF +
[SRDET] + (k – 2)*Sc
i = SB + SF*NF + [SRDET] + (k – 2)*Sc

You might also like