Viết tắt của RDET, là bảng thư mục gốc.

  • Là nơi lưu trữ thuộc tính của tất cả các tập tin/thư mục trên thư mục gốc.
  • Bảng thư mục gốc sẽ được tổ chức thành nhiều mục (entry) có cùng kích thước 32 byte.
  • Mỗi entry sẽ lưu trữ thuộc tính cho một tập tin/thư mục.

Entry Status

Byte đầu tiên của mỗi entry cho biết trạng thái của entry:

  • Giá trị 0x00: entry trống, có thể được dùng để lưu thuộc tính cho tập tin/thư mục mới.
  • Giá trị 0xE5: tập tin/thư mục chiếm entry này đã bị xóa, có thể được dùng để lưu thuộc tính cho tập tin/thư mục mới.
  • Giá trị 0x2E: entry đại diện cho thư mục hiện tại và thư mục cha (...).
  • Giá trị khác: entry đang chứa thuộc tính của tập tin/thư mục nào đó. Khi đó, giá trị này sẽ là tên của tập tin/thư mục đó.

Entry Structure

Để lưu được tên tập tin/thư mục dài, hệ thống tập tin FAT qui định thêm một entry phụ chỉ chứa tên tập tin. Đây là tính năng hỗ trợ tên dài (Long filename support - LFNs).

Một RDET có thể có nhiều entry chính và phụ xen lẫn kết hợp với nhau. Các entry chính sẽ xếp sau các entry phụ:

Cấu trúc của một entry chính:

OffsetĐộ dàiNội dung
0x08Tên chính của tập tin
0x83Tên mở rộng (extension)
0xB1Thuộc tính của tập tin, nếu có giá trị là 0x0F thì entry này sử dụng cho LFNs
0xC1Không dùng
0xD3Giờ tạo
0x102Ngày tạo
0x122Ngày truy cập gần nhất
0x142Cluster bắt đầu (2 byte cao)
0x162Giờ cập nhật tập tin
0x182Ngày cập nhật tập tin
0x1A2Cluster bắt đầu (2 byte thấp)
0x1C4Kích thước tập tin

Các thông tin cần chú ý:

  • Tên tập tin được lưu trong 11 byte đầu tiên. Với 8 byte được dùng để lưu tên chính hoặc tên ngắn dưới dạng mã ASCII, 3 byte còn lại được dùng để lưu đuôi mở rộng (cũng có dạng mã ASCII).
  • Thông tin ở offset 0xC là cluster bắt đầu dành cho FAT32. Còn ở offset 0x1A là cluster bắt đầu dành cho FAT12/FAT16.
  • Thuộc tính của tập tin có thể là sự kết hợp của nhiều giá trị thuộc tính khác nhau. Ví dụ 0x21 là sự kết hợp của 0x010x20, tương ứng với thuộc tính “chỉ đọc” và thuộc tính “lưu trữ”. Các loại thuộc tính của tập tin:
MaskMô tả
0x01Read only
0x02Hidden
0x04System
0x08Volume label
0x10Sub directory
0x20Archive
0x40Device (internal use only, never found on disk)
0x80Unused

Cấu trúc của entry phụ:

OffsetĐộ dàiNội dung
0x001Số thứ tự của entry (bắt đầu từ 1)
0x0110Các ký tự của tên file (5 ký tự UTF-16)
0x0B1Các thuộc tính (luôn có giá trị là 0x0F)
0x0C1Dành riêng, luôn có giá trị là 0x00
0x0D1Checksum của tên file MS-DOS
0x0E12Các ký tự của tên file (6 ký tự UTF-16)
0x1A2Cluster đầu tiên (luôn có giá trị là 0x0000)
0x1C4Các ký tự của tên file (2 ký tự UTF-16)

Tip

  • Để phân biệt entry chính và entry phụ thì ta cần nhìn vào vị trí B (11 theo cơ số thập phân). Nếu giá trị này là 0F thì ta biết đây là entry phụ. Ngược lại thì là entry chính. Nếu là entry chính thì giá trị sẽ là thuộc tính của tập tin hoặc thư mục.
  • Khi đọc entry phụ, ta chỉ cần đọc các offset 0x1 (10 byte), 0xE (12 byte) và 0x1C (4 byte) để lấy ra tên của entry.