Hi guys,
You really stirred me up with this exFAT discussion and Eric gave me a
great idea with requesting LTOOLS. I connected the two, I delved into it
and spent most of the last five days with implementing an exFAT file
system processor. It is _very_ exciting!
I have _not_ looked into any existing source, the software is written
from scratch, according to the contents of a virtual disk image (created
and filled with data under Windows 7 running in VirtualBox) and reverse
engineering documentations at:
- SANS Institute: Reverse Engineering the Microsoft exFAT File System
http://www.sans.org/reading-room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system-33274
- Paradigm Solutions: Extended FAT File System (1.4)
https://paradigmsolutions.files.wordpress.com/2009/12/exfat-excerpt-1-4.pdf
- NTFS.com: exFAT overview
http://ntfs.com/exfat-overview.htm
Currently it has the following limitations:
- no physical disk access, only virtual disks (= files);
- read only;
- files can't be accessed yet, only the directory tree traversed;
- cluster chains are not yet followed;
- it's written in C (not assembly), too big;
- there will probably be a couple of nasty tricks to handle integers larger
than 32 bits in DOS (LBA48 support).
Its nice features are:
- it's written in C (not assembly) ;-) , should be portable;
- disks, partitions, volumes, clusters are abstract, should be able to support
other file systems;
- I _really_ tried to follow C coding conventions;
- I'm aware of DOS memory constraints and try not to rely on lots of megabytes
of memory available;
- it compiles under both Borland C++ (DOS, 16 bit) and MinGW/gcc (Windows, 32
bit), without errors or warnings (all gcc warnings enabled)
- it outputs debug messages in _great_ detail;
- it does an _insane_ amount of checks on the partition table, exFAT boot
sector and exFAT directory structures, could also be used as (read-only)
CheckDisk/fsck;
- it supports (or is supposed to support at the end) all exFAT details except
for TexFAT (transactions; switch DOS disk cache off instead! ;-) ) and ACL
table (no documentation available).
I also found a few errors in the documentations mentioned above.
I plan to release it, with full source, as soon as it can read files, a
piece of standalone software (DOS and Windows) in the style of LTOOLS:
http://www2.hs-esslingen.de/~zimmerma/software/ltools.html . (If you'd
like to help or are interested, E-mail me.) I'm not sure about licensing,
as I was previously planning to donate _all_ my software into the public
domain, but I've been seduced here to go for GPL instead. ;-)
I've also been working on a Windows port of FATSort:
http://fatsort.sourceforge.net . Actually, I've had it and been using
every day for _years_, just haven't found time to apply all changes into
the latest release. This software could also be extended to support
exFAT.
I just need more free time. (But who doesn't? :-) )
Joe
--
KOVÁCS Balázs aka Joe Forster/STA; s...@c64.rulez.org; http://sta.c64.org
Don't E-mail spam, HTML or uncompressed files! More contacts on homepage
------------------------------------------------------------------------------
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel