Archive for January, 2009

USB Image Tool 1.40 status

Thursday, January 29th, 2009

It has been a successful week for USB Image Tool. I was able to replace all compression routines by the new ones. I modified minizip to work with UNICODE file functions. I get a lot of referers to my page from asian websites (Korean and Vietnamese especially), so I consider this important.

Additionally I was able to get the Restore in device mode working without resetting und unplugging it before writing to the USB flash drive (the 3 step message box). All that was to do was to perform the correct Locking and Dismounting on the volume handle, not on the device handle. Updating the disk properties must be done on the device handle, though. I found some forum topics, that were dealing with it about the time (summer 2008), I was trying to get it running, too. Some keywords are:

FSCTL_LOCK_VOLUME
FSCTL_DISMOUNT_VOLUME
FSCTL_UNLOCK_VOLUME
IOCTL_UPDATE_DISK_PROPERTIES

All that is to do for the version 1.40 is to add some checks on image sizes and zip files and some testing. I’m thinking about releasing a beta version, because some of the changes were major ones, so if you want to help in the development progress, keep an eye on this page.

USB Image Tool 1.40 development status

Tuesday, January 13th, 2009

I’m currently working on version 1.40 of USB Image Tool. I have removed the faulty XZip routines and already implemented an new gzip compatible compression based on zlib. For compatibility reasons I will also implement an extraction for the old zip based imz files (minizip). It’s also included in the zlib package and contributed by the author of WinImage (Gilles Vollant). I still have to modify the source a little bit to make it working nicely with my UNICODE based program, because I don’t want to do to much character set conversion. At least I want to have the the file access routines working with UNICODE functions.

Unfortunately both compression routines have issues with files larger than 4 GiB. Gzip files are valid, but the original file size is stored in a 32 bit integer, limiting it to 4 GiB. The files will unzip correctly, but file size checks will not work properly. Zip files were originaly limited to 4 GiB as well. For the new zip64 extension I couldn’t find any free library, that can implement it, although most compression programs (WinZip, TUGZip) can work with it. Eventually I will implement 7zip, but it’s not documented as nicely as zlib is.

I also want to add some new functions like boot sector import/export, image checksum creation and access to USB hard drives. Eventually I will implement some of this feature with later minor version changes.

Yesterday I tested USB Image Tool with the public beta of Windows 7. Everything in USB Image Tool seemed to be working so far. On the other hand, Microsoft changed some internal USB handling routines very late in the Windows Vista development progress. Hopefully this won’t happen with Windows 7 again.

Update: After looking a little bit into zlib and minizip sources, it seems, that both can already be used with UNICODE programs (fdopen can be used instead of fopen in gzio.c). I still have to check for minizip, but this could make things a lot easier.