| Program created
|| November 2007
| Program last touched
|| February 2008
Yet another defragmenter! Why-o-why-o-why? Well, just as a challenge, I think that MS's DefragNT sucks and I dont like any other (free) defragmenters either, so I started making my own. The idea is that there are several classes of files on the disk - folders, active documents, passive documents, system / program files and spacehogs. Each of these classes should be handled a bit differently by the defragmenter. Folders need to be at the beginning of the disk, where the access time is the smallest. Active documents should follow, but each of them should have a little gap behind it so that resizing the document ("working on it") doesn't immediately fragment it all over the place. Passive documents on the other hand need no such extra space, since they are already finished. System / program files like to be grouped together so that they all load faster. And spacehogs are so sparsely accessed that they can be at the back of the disk.
With this design in mind, I started out. First worries were that the filesystem description data needed for classification would not fit the available memory. This concern was discarded once tests showed that an average disk doesn't contain more than tens of megabytes worth of descriptor data. Then the correct API was to be learnt and mastered. The NT Defrag API seems a bit awkward, but it'll do.
Unfortunately that's where the enthusiasm wore off and no more development has been done since. Perhaps next time I am forced to defragment my drives I'll regain incentives to finish this program. For now, it is up for display as a failure.
Update 2008_02_29: Currently, the program scans the drive indicated by the first parameter and shows its cluster structure in a viewer (though not all fragmented files are marked as fragmented yet). Also three files are created in c:\ root, listing current and optimized structures and current free fragments.