logoAnerty's Lair - News << Home
^ Software Documents

BugFix & Update: DriveSort 1.225

A DriveSort user reported that he couldn't sort his 2TB drive, which is an interesting effect of Moore law applied to storage given this program was initially created to sort 128MB-256MB USB keys.

After investigation, when the size of a FAT-32 partition to sort is larger than a few hundred gigabytes the Windows file system drivers become more reluctant to allow application to directly write to disk since volumes of such size exceed the Microsoft recommandations concerning FAT-32 format and many programs do not support such excesses.

When this happens the direct reads from disk are still possible for all existing programs, but when a program wishes to write directly to parts of the disk reserved to the file system it needs to take some additional measures to tell Windows that it's capable of handling FAT-32 formats which exceed the recommanded limits.

I've updated DriveSort to let it correctly handle these large volumes by:

  • Disabling buffering when opening the disk (FILE_FLAG_NO_BUFFERING)
  • Using an operation which lets read-write boundary checks be delegated to the device driver instead of letting the FAT file system driver do it (FSCTL_ALLOW_EXTENDED_DASD_IO)
  • Aligning the read and write buffers on memory addresses which are a multiple of the sector size by using VirtualAlloc instead of standard allocations

These improvements also apply to the backup and restore features available in the contextual menu in the volume tree of the disk open dialog, so it is now possible to work with volumes of the maximum possible size for FAT-32 (2TB) without issue.

My old build toolchain for DriveSort was very out of date (VC++6) so I've had to migrate DriveSort sources to be compatible with VisualStudio 2017, but I'm still targetting the oldest Windows version supported by this tool chain (Windows XP).

For DriveSort to work on old Windows versions it may thus be necessary to install the new Visual C++ redistributables (vc_redist.x86.exe in The latest supported Visual C++ downloads, [ Direct Download link ]).

Indeed programs compiled with this Visual C++ version require some DLLs to be present and they are not systematically provided by Windows Update (mfc140u.dll, and the Universal C Runtime DLLs named api-ms-win-crt-*.dll), according to Microsoft the VCRedist package seems to do what's necessary to install all these wherever it should go.

If you encouter some issue while trying to run DriveSort on your Windows don't hesitate to mail me.


BugFix & Update: jSAVF 1.31

While testing jSAVF with a SAVF found on the net, I noticed a bug in my LZ1 (*HIGH) unpacking routine which sometimes mangled the extracted data or made the unpacking fail. This update fixes the issue and a few minor ones (fixed the version check URL, cleanup of unpacking temporary files, ...).


Update: jSAVF 1.30

I've recently been asked about jSAVF, so I thought finally getting around to publishing the latest version might help. The code in this version is a bit more recent than the one in v1.28, but I haven't touched it in about 7 years except for some finishing touches for this release.

This version brings a lot of change, amongst which the support of the more modern SAVF compression algorithms TERSE (*MEDIUM) and LZ1 (*HIGH) together with the previously supported SNA (*LOW / *YES), and some user interface and performance improvements. I'm now considering finishing the physical file export to CSV, or the debugging sources included in *PGM objects.


Announce: Happy new year

Happy new year for 2010, and thanks to all who mailed me their thanks, bug reports and ideas.

There hasn't been much activity here for some time, but I'm still developping the tools available here. I've had less spare time than I thought I would, which delayed the new versions of DriveSort and JSavf. I hope I'll be able to release those faster this year.

Aside from this, a satisfied user of DriveSort recently asked me if there was any way to send me a small donation to thank me for it, but until now there wasn't anything like this on the site so I added a PayPal donation link near my mail down there should you feel generous.