User:Clarity02/sandbox

FAT64 Partiton Scheme

FAT64 is a continuation of the previous FAT32 along side FATex. Journaling is supported, as is encryption inherently in the system.

Following are standard values used by FAT64 by default

SCRUT_PACKAGE_ENTRY_DEFAULTSIZE 512U

SCRUT_PACKAGE_BLOCK_DEFAULTSIZE 32000000U

The states of an entry is implemented by a descriptor.

SCRUT_FILESYSTEM_FREE              = 0x01

SCRUT_FILESYSTEM_OPEN             = 0x02

SCRUT_FILESYSTEM_CORUPT        = 0x04

SCRUT_FILESYSTEM_HIDDEN         = 0x08

SCRUT_FILESYSTEM_SYSTEM         = 0x10

SCRUT_FILESYSTEM_ARCHIVED     = 0x20

SCRUT_FILESYSTEM_ENCRYPTED = 0x30

SCRUT_FILESYSTEM_RECYCLE      = 0x40

enum eEntry {

eEntryInvalid = 0U,

eEntryLink,  // hard link

eEntryFile,  // data file ( binary / clean 8bit char )

eEntryFolder, // contains linked list of files

eEntryStream // streaming file system

};

struct stDate { type::u8 m_u8Day; type::u8 m_u8Month; type::u8 m_u8Year;

struct stTime { unsigned char m_u8Seconds; unsigned char m_u8Minutes; unsigned char m_u8Hours; }; };

struct stHeader { char *m_pc8Package[32U]; char *m_pc8Author[32U];

unsigned long long m_u64Version; unsigned long long m_u64Revision;

stDate m_stDate;

unsigned long long m_u64RootEntries; unsigned long long m_u64BlockSize; };

struct stEntry { date::stDate m_stCreated; date::stDate m_stRevision;

type::c8 m_pc8Name[16U]; type::u8 m_u8BitField; eEntry  m_eType;

type::u64 m_u64Offset; type::u64 m_u64Next; };

struct stBlock { unsigned char m_u8BitField;

unsigned long long m_u64NextOffset; unsigned char m_u8DataBlock[2048U]; };

struct stFileSystem { stHeader m_stHeader; pstEntry m_pstEntry; pstBlock m_pstBlock; };

struct stFile { pstFileSystem m_pstFileSystem; pstEntry     m_pstEntry; pstBlock     m_pstBlock; };