Added a new utility called fdf,
"find duplicate files".
Also corrected OEM codepage display of filenames on the
console for many of my console based tools.
Rebuilt some other programs due to minor corrections in my
libraries.
Update 28 Sept 2004
Fixed some bugs in fdf.
Rebuilt joindomain
with updated unicode CRT library.
Changed free space and total space report in sizdir32 and it now also
displays used percentage of total space and displays statistics
for the correct volume when the current directory is under a
junction point.
Added fileinfo to
this list.
Update 2 Dec 2004
Added link to RegMagik
above
Added a port of bzip2 optimized for Pentium 4 processors.
Added a new utility called logonwrap
used to run an application and automatically log off the user
session when that application terminates.
Also added some new features to fdf and fileinfo.
Update 21 Jan 2005
Fixed some minor bugs in different applications and libraries,
especially one in the CRT library that caused Unicode
applications to crash on Win 9x/ME platforms.
One of my archive/backup tools from the old Windows NT
3.51/4.0 days is now released on this page as open source under
the name strarc,
"Stream Archiver". This will replace the old xcopynt which was
unable to completely backup all meta data on NTFS volumes. I now
stop development except bugfixes for xcopynt and recommend all
users of xcopynt to use strarc instead.
Added some new features to fdf.
Added a small tool called junc
that is used to manage junction points. This one creates
junctions to native paths,
such as \Device\Floppy0\ or \??\C:\Directory and may therefore
be used to create junctions to volumes or directories not
available through a drive letter under Win32.
Added a small tool called psmod
to this list.
Update 25 Jan 2005
Fixed some bugs in the CRT library and rebuilt most of the
files here.
Release 0.0.7 of strarc
with lots of new features and a strarc.txt with usage description and
how-to:s.
Update 18 Mar 2005
Fixed a bug in the CRT library that could cause exception when
no command line parameters were sent from some shells. Rebuilt
most of the files here.
Release 0.1.1b of strarc
with some new features.
Finally got some time to rebuild the old regrepl and fsplitw tools so that they
linked with my CRT library. The size of regrepl.exe is now 15 360
bytes instead of 396 288 bytes as it was with the old
Borland CRT. I added some new features to regrepl too, like
connecting to remote computers and selecting subkeys.
Added enumproto and
enumps.
Update 10 Apr 2005
Release 0.1.2 of strarc
with some new features, e.g. an extract option that only
freshening existing files.
Added winlogoncfg.
Update 19 Apr 2005
Release 0.1.2b of strarc.
I have received reports about an error in strarc that causes
hard links not to be restored in some directories and I have
only been able to reproduce the error on Windows NT 4.0. I have
changed the restore code so that the hard link restore code now
uses the NtSetInformationFile() API directly and does not use
BackupWrite() API at all and that seems to have corrected the
error. I also made a correction so that an error message is
displayed when hard links cannot be restored and files are
copied instead, unless of course hard link restore is disabled
by command line parameters.
Minor update 11 May 2005
Found and fixed a small memory leak in strarc and fdf when the utilities
created new hard links to files.
Rewrote some CRT stuff and rebuilt some of the programs. The
change made some of the exe files smaller and in other ways more
optimized, nothing else.
Added some new switches to the movent tool.
Added some better error reporting in logonwrap.
Minor update 15 May 2005
Fixed a problem in strarc.
The problem occurred when restoring hard links to files with
read-only attribute set.
Minor update 21 May 2005
Added a new feature to fdf.
It is now possible to skip certain bytes at the beginning of
each file when comparing their contents. This is good if you
e.g. want to search your mp3 archive and find similar files
where only the header is different.
Rebuilt some "Windows NT only" tools as fixed
(non-relocatable) exe files. This saved some file size.
Update 1 Mar 2006
Added a new section called Device
driver projects on this page. Here I will publish the
open-source driver projects I am working on.
Introducing a new device driver project called ImDisk. This is basically a
virtual disk driver for Windows NT/2000/XP/Server 2003 that can
use disk files, virtual memory or a device on another computer
on the network to emulate disk drives. It is even possible to
boot a machine with NTFS partitions using a Unix Live-CD and use
the included devio
tool to let ImDisk on
another computer running Windows on the network mount the NTFS
partition on the machine you booted with the Unix Live-CD. This
way you can recover information and even run chkdsk on drives on
machines where Windows does not boot.
Fixed an issue with fdf.
Previously when the -c switch were used to split links, fdf did
not check if two links found actually were the same link which
could cause it to delete the last link to the file. This
happened when the -j switch was not used and the same link was
found following two paths where one included a junction point
that pointed to the other path. When following the directory
trees fdf did not check if the two paths followed actually were
the same. With this fix, fdf no longer deletes the last link to
a file when running with the -c switch.
Release 0.1.3 of strarc.
With the new switch -r is now possible to include the registry
database files of a running Windows system in a backup. This
makes it much easier to create a complete backup of a running
system. For more information read the strarc.txt file in the zip
file. The default buffer size is now changed from 512 KB to 2
MB. After some benchmark tests I have realized that 512 KB was
not an optimal size for speed, but of course for memory usage.
It is still possible to specify on the command line a smaller or
bigger buffer size than the default.
Added a new device driver called Zero And Random Device Driver. It creates two
device objects called \\.\zero
and \\.\random that
works like /dev/zero and /dev/random in *nix environments. This
makes it possible to create a file filled with zeros using dd, example: dd if=\\.\zero of=zerofile
count=2880.
Added some new features to devioctl.
It is now possible to query disk geometry and partition length
information.
Added a new check box in winlogoncfg.
It is now possible to enable/disable the requirement of pressing
Ctrl+Alt+Delete to log on to Windows.
Rewrote some CRT stuff again and rebuilt most of the programs.
The change made many of the larger exe files smaller and some of
the smaller files got slightly bigger but in many other ways
more optimized for speed and memory usage. I also corrected the
way Windows error messages are displayed in console applications
so that line breaks now works correctly.
Minor update 2 Mar 2006
Fixed an error in my CRT that caused error messages with file
names to be displayed with the wrong character set for the file
name but the correct one for the error message string. At least
it is now consequent after this fix...
Minor update 5 Mar 2006
Added some new features to txtcnv32.
It is now possible to specify codepages to convert from and to,
or to convert from or to 16-bit Unicode from or to a specific
codepage.
Minor update 7 Mar 2006
Still some problems with displaying error messages with
correct line breaks etc. Seem to be fixed now.
Serious bugfix 8 Mar 2006
Revision 0.1.3a of strarc.
Fixed a problem when restoring over existing files with more
than one hard link. The bug caused existing file to be truncated
to zero bytes. Update your strarc.exe
to the latest version before restoring over existing files with
more than one hard link.
Minor update 10 Mar 2006
Small change of the install routine for the Zero And Random Device Driver.
The driver will now load automatically when install is finished.
Minor update 27 Apr 2006
Fixed a problem with popdump
that caused it to not receive messages from some servers. Thanks
to Joseph Brown for notifying me about this bug.
Minor update 18 Jun 2006
Fixed several broken links on this page.
Minor update 26 Jun 2006
Revision 0.1.3b of strarc.
Changed the file listing with the -l switch to not attempt to
break lines at spaces in paths. The reason to this change is to
make it possible to write the backup listing to a log file
without having the paths modified for console display.
Minor update 27 Jun 2006
Revision 0.1.3c of strarc.
Corrected a mistake from yesterday. Extended characters were not
displayed correctly in file listings (converted to OEM charset
twice).
Minor update 29 Jun 2006
Corrected the link to dosdev.zip in the list below.
Minor update 21 Sept 2006
Fixed a problem with ImDisk.
The command line tool imdisk.exe
did not accept the cd
parameter to the -o option.
Minor update 21 Nov 2006
Changed sizdir32.exe
so that the summary now includes total used, total free and per
cent used and free.
Minor update 23 Nov 2006
Fixed a problem with ImDisk.
The command line tool imdisk.exe
had a misleading help text telling that a b suffix to virtual disk
sizes meant bytes and that sizes without suffixes meant number
of 512-byte blocks. Actually, the b suffix was not accepted and sizes without a
suffix was taken as bytes. Now, added a b suffix that takes the
size as number of 512-byte blocks. Without suffix still means
bytes. Also corrected and updated the help text to reflect this.
Minor update 1 Dec 2006
Fixed a problem with ImDisk.
The command line tool imdisk.exe
did not accept multiple options separated by commas as the
documentation stated. This is now corrected.
Minor update 13 Dec 2006
Fixed a problem with ImDisk.
Write permission was required for the image file unless the -o
command line option specified ro
for a read-only virtual disk. This was true even for virtual
CD-ROM drives even though they are always read-only and never
make any use of the write permission for the image file. This is
now corrected so that only read permission for the image file is
required to create virtual CD-ROM drives.
Minor update 4 Feb 2007
Modified the way ImDisk
emulates multi-session CD/DVD. Images of multi-session CD/DVD
were not handled correctly which confused some UDF filesystem
drivers which made it very difficult to read for example the WDK
images from Microsoft with some UDF filesystem drivers
installed. This seems to be fixed with this modification. Thanks
very much to Federico Bianchi for notifying me about this
problem.
Minor update 11 Mar 2007
Fixed a bug in the ImDisk
driver. If the system would run out of kernel pool memory during
driver initialization in combination with registry settings for
creating virtual drives while the driver was loaded, it could
attempt to free other drivers memory and possibly blue screen.
Also rebuilt ImDisk
with the new
Windows Driver Kit (WDK).
Minor update 14 Mar 2007
Fixed the ImDisk
install package. The old .inf file seem to have been packed with
the new version from 11 march (incompatible). Should be fixed
now.
Fixed a problem with strarc.
If a file read operation fails during a backup job, the restore
routine could get confused about the data stream and not
restoring any files until the size of the failed file was
streamed to it, which means that it could skip restoring files
under these circumstances. The behaviour of the restore routine
is now changed so that if a file restore fails it immediately
returns to scanning the stream for new file headers, which
should solve most of these problems.
Update 17 Mar 2007
Several fixes and changes in ImDisk Virtual Disk Driver.
There have been some issues with using subdirectories as mount
points for virtual drives, for example related to file listing
etc. That should be fixed now.
On most Windows NT 3.51 or 4.0 systems it has not been
possible to dismount virtual CD/DVD-ROM drives. Even though
there still seem to be some problems, especially in combination
with some filesystem drivers, it now seem to work at least in
most cases.
The behaviour of the driver is now changed so that it keeps
information about associated drive letter even on Windows NT
3.51 or 4.0. This was changed mainly because it simplified the
development of GUI control tools.
Developed a small Control Panel applet for controlling the
ImDisk Virtual Disk Driver. The default install package installs
it and adds an ImDisk
icon to the Control Panel. The applet can be used for the basic
tasks with ImDisk,
mounting/dismounting virtual disks, but it does not have the
full functionality the command line interface has.
Also fixed a problem in the devioctl
tool so that it now can eject CD/DVD-ROM drives in Windows NT
3.51 or NT 4.0.
Update 19 Mar 2007
Added a new tool called geteltorito.
More information at the link to geteltorito.zip below.
Update 14 Apr 2007
Release of version 1.0.1 of ImDisk.
Corrected the driver so that the auto-selection of device type
never overrides the device type selected manually on the command
line (like it should have worked). Also updated the format the
user interface applications and the driver use to send
information about the virtual device geometry and volume length
so that the volume length (from existing file size or specified
by user) is always preserved and the number of cylinders rounded
down if necessary. This was only a problem when mounting a
volume that was meant to be later written out as a physical
partition and the virtual geometry has to be equal to that of
the future physical volume when filesystem is created or
checked.
Update 23 Apr 2007
Release of version 1.0.2 of ImDisk.
This version includes some new features and small fixes.
Formatting FAT/FAT32 on Windows 2000 now works again. Faster
TCP/IP forwarded I/O through a modified helper service.
Removable and hot-plug device properties with the -o rem switch.
Better handling of removal of devices where I/O to underlying
device have failed. It is now possible to extend the size of
mounted virtual disks with the new -e switch. First free drive
letter is now automatically suggested in the "Mount new virtual
disk" dialog box. When removing virtual disks it is now possible
to force dismounting of the filesystem if it cannot be
gracefully dismounted. A right-click menu item for mounting
files as a virtual disks is now added for Windows Explorer file
objects.
Also added some new features to the devioctl tool. It can now be used to extend
the size of partitions and filesystems and also display more
detailed geometry and size information about disk drives.
Adjusted the default I/O buffer size in strarc. Should be more
cache-effective and reasonable now.
Minor update 24 Apr 2007
Updated strarc so
that it now correctly restores the sparse file attribute (unless
the -s:c option is specified).
Small fixes to ImDisk,
mainly to the install routine. It now adds two context menu
items for file objects in Windows Explorer, one for read-only
and one for read/write mounting and it adds one menu item for
drive objects to unmount them.
Minor update 11 May 2007
I have tried to clarify the license for ImDisk Virtual Disk Driver
and there is now a discussion forum about ImDisk and other tools here
on the boot-land
forum. More about that in the section about ImDisk below.
It is now possible to use the first unused drive letter even
when mounting virtual disks from the command line with ImDisk. Specify #: as drive letter for this
to work.
Changed the behaviour of the context menu items in Windows
Explorer. There is now only one menu item and that one brings up
the "create new virtual disk" dialog before doing anything. This
way I hope to reduce the risk of mounting files as a virtual
disks by mistake as that could be dangerous and lead to
destroyed contents of mounted files.
Minor update 12 May 2007
Fixed a command line parsing bug in the imdisk.exe command line
tool for ImDisk Virtual Disk
Driver. Any string was accepted as a device number with
the -u parameter and in case it was not a number it was
translated to zero. This was confusing and misleading and is now
corrected so that only numbers are accepted with the -u
parameter.
Changed enumwinw.exe
(the graphical tool for finding and manipulating windows) so
that it now uses ShowWindowAsync() instead of ShowWindow() when
showing or hiding windows. This fixes the problem that caused enumwinw.exe to hang when
trying to show/hide a window that belonged to a hung
application.
Update 16 May 2007
Release of version 1.0.3 of ImDisk
Virtual Disk Driver. The following are some of the new
features and changes.
Corrected auto-selection of geometry so that sector size of
512 bytes is selected for virtual hd and fd and 2048 for virtual
cd. It is still possible to manually override the default
settings using the -S parameter on the command line.
The buttons in the Control Panel applet have been re-ordered
and the 'Done' button is renamed to 'Close'.
Corrected some very difficult-to-understand or just mistyped
texts in the help text displayed when imdisk.exe is run without
parameters (or when incompatible or bad syntax is used).
All numeric parameters to imdisk.exe are now checked so that
they are really numeric. Earlier it was possible, although
confusing, to type for example imdisk -d -u F:. Because
-u takes a device number as parameter it translated F: into a
number and because F: is not a number it got zero and removed
device number zero even if that was not actually F:. There was a
risk that users removed the wrong device in such cases.
It is now possible to extend the size of RAM-disks too.
However note that the resizing of RAM-disks may take a long time
because the driver needs to allocate a new block of memory with
the new size, copy the contents of the old memory block to the
new one and then release the old block. This means that RAM and
CPU usage may be very high during the resize operation.
The behaviour when creating a RAM-disk pre-loaded with an
image file has changed so that the loading of the image file
into the RAM-disk memory block is done after control has
returned to the caller but before the driver actually starts
service I/O requests for the virtual disk. This means that when
a RAM-disk with pre-loaded image file is created from for
example a batch file the batch file does no longer hang waiting
for the RAM-disk to be completely loaded with the image file.
It is now possible to format virtual disks directly from the
Control Panel applet.
When a new virtual disk is created using the command line tool
imdisk.exe it is now possible to have the newly created virtual
disk automatically formatted. This is implemented by imdisk.exe
calling format.com after virtual disk creation. The new -p
command line option is used for specifying additional parameters
to the format.com command line, such as switches for specifying
filesystem, volume label etc. Type imdisk.exe without parameters
for more information about this new option.
Support has been added for mounting image files and specifying
offset where the disk partition image begins within the image
file. The new -b command line option is used for this.
It is now possible to double-click on a virtual disk in the
list in the Control Panel applet to open the virtual disk root
folder in a Windows Explorer window.
It is now possible to specify a per cent sign % as a
suffix to the size parameter, -s on the command line. It
means percentage of free physical memory which could be useful
when creating RAM-disks. For example -s 20% creates a
RAM-disk of 20 per cents of the size of currently free physical
memory. (Note that you will need double per cent signs if you
are using this syntax in a batch file.)
A refresh command has been added to the Control Panel applet.
While the list of current virtual disks has keyboard focus it is
now possible to press F5 to refresh the list. This is useful
when virtual disks are added or removed from the command line or
directly from Windows Explorer while the Control Panel applet is
open.
Corrected and added virtual disk geometries for some old
floppy sizes.
Added a new item to the context menu that is displayed when
right-clicking a drive in Windows Explorer. The new menu is used
to save the contents of a disk as an image file.
Most of the these changes come from ideas discussed at forums
at boot-land
forum. If you have any ideas you would like to share you
are welcome to discuss the development of my open source tools
there.
Minor update 25 May 2007
Added support for a couple of more floppy disk sizes to ImDisk.
Fixed the character set used for file name reporting in the fileinfo tool.
Minor update 29 May 2007
Fixed a problem with ImDisk.
When the menu item "Save disk contents as image file" on a drive
icon in Windows Explorer was selected on a drive that was in use
a message box was displayed asking whether or not to continue
without dismounting the volume. The operation continued even if
"Cancel" was selected in the message box. That is now corrected.
Minor update 3 Jun 2007
Added a "Filesystem" column to the virtual disk list in the ImDisk Control Panel
applet.
Corrected an error in the ImDisk
command line tool imdisk.exe. If the -p parameter was
used with a virtual disk without a drive letter the program
crashed. It now displays a message telling that a drive letter
is required for the -p parameter to work.
Update 13 Jun 2007
Some changes have been made to ImDisk. It is now possible to set or reset the
removable and read-only media characteristics of an existing
virtual disk. This means for example that a virtual memory
backed virtual disk now can be made read-only without first
saving an image of it and re-mount that image read-only. I/O
delays to virtual memory backed virtual disks has been removed
so the write performance should be much better now.
Minor update 8 Jul 2007
Some minor changes to ImDisk.
The window style for the Control Panel applet has been changed
so that it shows up on the taskbar and can be minimized as well.
The image size visualization for some common floppy sizes are
now changed in the Control Panel applet to the more commonly
used "thousands of KB". This is done for the floppy sizes 2,880
KB, 1,722 KB, 1,680 KB, 1,440 KB and 1,200 KB.
Minor update 13 Jul 2007
Two buffer-overrun bugs found and fixed in ImDisk. Special thanks to
Sebastian Gottschalk for code reviewing.
Minor update 19 Jul 2007
Two errors in buffer-checking code found, one in ImDisk and the other in Zero and Random Device Driver.
I recommend all users to install the latest versions as these
bugs under some circumstances can blue-screen the system. Thanks
again to Sebastian Gottschalk for code reviewing.
Minor update 6 Sept 2007
Minor layout changes to the "Mount new" dialog box in ImDisk
Control Panel Applet.
Minor update 16 Oct 2007
Fixed an error in the ImDisk Control Panel Applet. The unit
selection radio buttons for offset in image files did not work
correctly.
Added broadcasting of WM_DEVICECHANGE messages when devices
are about to be removed as an attempt to resolve this issue: TortoiseSVN
incompatibility issue
Minor update 18 Nov 2007
Changed the icons in the Control Panel applet and added a
context menu. It is now possible to right-click on a device in
the list and get a menu with commands for that device.
Minor update 4 Feb 2008
Corrected some texts in ImDisk components, for example some
typos and errors in messages and source code comments.
Minor update 15 Feb 2008
New ImDisk feature. It is now possible to type a negative size
value on the command line when creating a virtual disk. This
means that the size of the virtual disk will be the amount of
free physical memory minus this value. This is useful when
creating large RAM-disks where the size should depend on the
amount of free memory.
Minor update 28 May 2008
Changed the ImDisk
install script so that a fixed estimated size is used by the
Add/Remove Program Control Panel applet. This should fix the
problem with Windows 2000 calculating the entire size of the
system32 as the size of ImDisk. Thanks to Stefan Kanthak for
notifying me about this and for suggesting a fix.
Minor update 7 Aug 2008
Correction to the sector size in the geteltorito tool. The extracted boot images
were always four times larger than expected. Thanks to Jose
Acevedo for notifying me about this and for suggesting a fix.
Minor update 4 Nov 2008
Release 1.0.4 of ImDisk Virtual Disk Driver. Added an option
to force removal of ImDisk virtual disks from command line even
when devices are in use. Use a capital letter 'D' in the delete
switch to imdisk.exe to use this option, for example: imdisk -D -m R:
Minor update 18 Nov 2008
Updated error reporting in strarc
so that the name of any directory that cannot be created or
changed to is displayed in the error output. This could be
useful for example when error output from many strarc runs are
appended to the same error log file. The new version is 0.1.4a.
Update 23 Nov 2008
Release 1.1.0 of ImDisk
Virtual Disk Driver. The user interface now supports
auto-selecting values for offset and size by reading partition
table in raw hard disk images. This makes it a lot easier to
mount a partition within a hard disk image file. For the command
line tool a new switch -v has been added used to select which
partition to mount. The user interface also support
auto-selecting offset when mounting Nero .nrg and Microsoft .sdi
image files. With the command line tool imdisk.exe the switch -b
with parameter auto is
used for this.
Minor update 25 Nov 2008
Release 1.1.1 of ImDisk
Virtual Disk Driver. The driver now automatically
detects .iso, .nrg and .bin files as CD/DVD images.
Minor update 2 Dec 2008
Release 1.1.2 of ImDisk
Virtual Disk Driver. Corrected some problems with the
auto-detection of master boot records in image files and added a
new feature where the driver sets a flag when a virtual disk has
been written to. This flag can be cleared with the imdisk -e -o saved command
and is shown for example with imdisk
-l -m R: or similar. This should make it possible to
script a solution where a RAM disk could be saved to an image
file if it has been modified. Thanks to "Zero3K" for suggesting
this feature.
Update 5 Dec 2008
Release 1.1.3 of ImDisk
Virtual Disk Driver. Corrected one additional problem
with the auto-detection of master boot records in image files.
Corrected a serious problem with proxy-type virtual disks where
a malformed I/O message from the proxy server could cause
blue-screens in some cases. The install package now also
includes binaries for 64-bit AMD and Intel architectures.
The server-end program for ImDisk in proxy-mode, devio.exe has been updated.
Auto-detection of file sizes now works under both Windows and
*nix and it also supports auto-detection of master boot records
and selecting parameters for a partition read from the master
boot record. Support has also been added for dynamically
expanding Microsoft .vhd files used with Virtual PC and Virtual
Server. Fixed size .vhd files have been possible to mount
directly with ImDisk before but this adds support for
dynamically expanding .vhd files via devio.exe as a I/O proxy. The tool devio.exe is a command line
tool and can be downloaded here
(Windows version)
or here (FreeBSD version).
Update 27 Jan 2009
Release 1.2.0 of rawcopy.
There is now a -s
switch that creates output files as sparse files.
Minor update 28 Jan 2009
Release 1.2.1 of rawcopy.
The behaviour when -s
switch is used has changed. It now skips writing blocks
containing all zeroes and instead just moves the file pointer
forward.
Update 21 Apr 2009
Release 1.1.4 of ImDisk
Virtual Disk Driver. Automatic partition recognition
was not successful with other sector size than 512 bytes. This
is now fixed.
Update 23 Nov 2009
Release 1.1.5 of ImDisk
Virtual Disk Driver. Corrected a few things regarding
creating and removing drive letters. Sometimes drive letters
were not successfully removed when non-privileged users
unmounted a virtual disk. This seems to be fixed now. Also
corrected shell notifications when drives are mounted and
dismounted so that applications get correct notifications.
Earlier, for example, notifications where sent out for drive
letter X when drive Y was created or removed. A confirmation
dialog has also been added where user has to confirm mounting a
virtual disk over a drive letter that is already in use.
Update 7 Dec 2009
Release 1.1.6 of ImDisk
Virtual Disk Driver.
Added further support for dismounting virtual disks without
administrative privileges. Previously ordinary users could not
force dismount of "fixed" virtual hard disks. This has now been
changed so that any user can force a dismount.
Changed the routine that removes virtual disks so that in case
of RAM disks the drive letter and used memory are freed first
before it waits for handles to close and actually removes the
device object. This means that RAM can now be freed immediately
when a RAM disk is deleted even if the device cannot be
immediately removed.
Changed rawcopy so
that parameters accept K, M and G suffixes for kilobytes,
megabytes and gigabytes.
Added 64-bit versions of regrepl,
strarc and winlogoncfg for better
compatibility with 64-bit versions of Windows.
Minor update 10 Dec 2009
64-bit versions of Zero and
Random Device Driver now uses a new faster kernel API
for generating random characters.
Update 23 Dec 2009
Release 1.2.3 of ImDisk
Virtual Disk Driver.
The driver now supports 64 virtual drives instead of 32.
ImDisk virtual disks can now hold Windows swap files. Useful
if you want to create a swap file on a disk-less (RAM-booted)
machine, or if you want to create a swap file on a network
drive.
Security change. On Windows XP and later, file permissions are
now checked so that user mounting a new virtual disk actually
has requested access to the image file to mount. If user does
not have access to the image file, the device creation operation
is denied by the driver and is reported as an "Access denied"
error message to the user. On Windows 2000 and earlier the
driver works like in previous versions, that is, without any
access checks.
Security fix. There was a privilege check missing in a
callback that the helper service uses to callback into the
driver when a proxy connection has been established and is ready
to be used by the driver. Without this privilege check there is
a backdoor into privileged kernel space. This has now been
fixed.
Minor update 16 Feb 2010
Modified sizdir32.exe
so that it now displays correct allocation size for sparse files
as well as compressed files.
Update 18 Feb 2010
ImDisk Virtual Disk Driver
and Zero and Random Device
Driver 64 bit drivers are now digitally signed with a
certificate trusted by Microsoft. This means that they now work
on 64 bit editions of Windows Vista, Windows Server 2008 and
Windows 7 without Windows running in testsigning mode.
Update 25 Feb 2010
Release 1.2.4 of ImDisk
Virtual Disk Driver. When registry settings where setup
for the driver to auto-create a virtual disk when driver is
loaded, specified drive letter was not assigned for the device.
This has now been corrected.
Update 2 March 2010
Release 1.2.5 of ImDisk
Virtual Disk Driver. Registry settings for
auto-creating a virtual memory backed virtual disk pre-loaded
with an image file did not work without setting disk size
explicitly on 64 bit versions. This has now been corrected to
work as expected, that is, disk size is automatically detected
from image file size like in 32 bit version.
Update 5 March 2010
Release 1.2.6 of ImDisk
Virtual Disk Driver. When contents of a disk volume is
saved as an image file from Control Panel applet or using
Explorer context menu option it is now ensured that the
resulting image file has the same size as the saved disk volume.
This means that even if the underlying filesystem driver does
not return all data at the end of the disk volume the image file
will still be padded and filled up to the matching size so that
everything works correctly when the image file is later mounted
as a virtual disk.
Update 6 March 2010
Release 1.2.7 of ImDisk
Virtual Disk Driver. A correction was made to the
routine that saves disk contents as an image file. Thanks to
"TheK" for suggesting this fix.
Update 9 March 2010
Release 1.2.8 of ImDisk
Virtual Disk Driver. Further corrections to the routine
that saves disk contents as an image file. Buffer sizes are now
adjusted to make sure that the complete disk contents are saved.
New features to rawcopy
including options to select unbuffered I/O and direct DASD I/O.
Minor update 13 April 2010
The zip archives for 64 bit editions of strarc and regrepl had been replaced
by 32 bit versions by mistake in the recent updates of this
page. This has been corrected now. Thanks to Anton Yermakoff for
notifying me about this problem. If you have got 32 bit versions
because of this during this time you can now correct that by
downloading the new archives by the links below.
Update 7 June 2010
Release 1.3.0 of ImDisk
Virtual Disk Driver. New registry setting DisallowedDriveLetters that
can be used to specify drive letters not allowed to be used for
ImDisk virtual disks. It should be a string value containing
drive letters to disallow. The value should be created under the
key HKLM\SYSTEM\CurrentControlSet\Services\ImDisk\Parameters.
Update 27 July 2010
Release 1.3.1 of ImDisk
Virtual Disk Driver. Two problems have been corrected.
Device control code IOCTL_IMDISK_QUERY_DEVICE did not report
image file offset.
On Windows versions with UAC, proxy connection did not work
because of permission errors when connecting to the helper
service.
Update 2 Dec 2010
Some files were missing in the source.7z archive and some old
files included by mistake. Cleaned up Makefile etc. Thanks to
Alberto Martínez for notifying me about this.
Update 9 Dec 2010
Beta release ImDisk Virtual Disk Driver version 1.4.0:
Corrected a serious bug that seems to have particularly caused
blue screen crashes on 64 bit Windows versions on
multi-processor computers. Thanks to Bruce Cran for helping the
project with debugging on 64 bit architecture.
Graphical user interface, that is Control Panel applet and
right-click menu option in Explorer now shows option to add MBR
(Master Boot Record) while saving disk contents to image file.
Algorithm for selecting default virtual disk geometry (C/H/S
geometry) for virtual hard disk volumes changed. From this
version, driver will auto-select 255/63/512 geometry in most
cases. Only exception from this is when virtual disk is smaller
than about 2 GB in which case smaller tracks per cylinder size
is chosen. User defined virtual geometry can still be manually
selected using command line or API directly.
ImDisk source archive now contains a subdirectory called
ImDiskNet. This is a .NET dll file which could be used from for
example VB.NET or C# to create/modify/delete/save etc virtual
disks. This dll also contains a class that can be used as a COM
object from VB6 or VBScript etc. This dll is also available for
direct download here.
64 bit setup now installs 32 bit imdisk.cpl and imdisk.exe in
addition to the usual 64 bit versions. This means that API calls
and command line calls will work from 32 bit applications even
on 64 bit Windows without tweaking with installing dlls manually
in correct directories etc.
Updated "devio" tool. This version supports both reading and
writing dynamic resizing .vhd files used by Microsoft Virtual
PC, Virtual Server and Hyper-V. Earlier version had a serious
bug that would corrupt disk image when mounted for both reading
and writing.
Changed notification that is sent to other applications when a
new virtual disk is created. ImDisk does no longer wait for all
applications to process the notification. It however still waits
for all applications to process the notification that is sent
when a virtual disk is about to be deleted.
Update 11 Jan 2011
Final release ImDisk Virtual Disk Driver 1.4.0.
Update 13 Mar 2011
Release 1.4.1 of ImDisk Virtual Disk Driver. Corrected some
serious memory allocation bugs, memory access bugs etc for 64
bit version. Hopefully this will solve problems reported for
large memory disks. Thanks to David Wren, Passmark, for
debugging. Also changed the "attached disk notification" sent to
other applications in an attempt to solve a few problems
reported about invisible and incompatible ImDisk drives on
Windows 7.
Minor update 21 Apr 2011
Release 1.4.2 of ImDisk Virtual Disk Driver. Added a new API
function, ImDiskCreateDeviceEx where caller can get device
number of created device. Also added a corresponding function to
.NET/COM DLL (now version 1.002).
Minor update 8 May 2011
Chsize32 updated to support larger file sizes than 4 GB.
Rawcopy updated to support skipforward and copylength
parameters in files larger than 4 GB. Also added a new switch -f
that can be used to retry failed I/O operations a specified
number of times before the operation is considered failed.
Update 8 Oct 2011
Release 1.5.0 of ImDisk Virtual Disk Driver.
Rewrote allocation logic in awealloc driver in
ImDisk package. From this version awealloc attempts to allocate
blocks from as high memory addresses as possible, even if not
all requested memory is available there, then allocating rest of
requested memory at lower addresses. This makes it transparent
to user, but each failing allocation attempt is logged in
Windows event log.
ImDisk now supports shared memory and kernel synchronization
objects for transferring I/O requests and data between driver
and user mode proxy service. This should speed up I/O request
somewhat, although performance gain compared to TCP/IP is most
notable on old Windows versions, especially prior to Windows XP.
The devio tool, the sample proxy service for
proxy-mode ImDisk operation has got some new features. Most
notably support for new shared memory communication described
above, but also support for loading third-party DLL files
implementing a simple I/O request API which makes it easier for
developers to write modules that support other image file
formats and similar. The I/O request API could be either plain
DLL function calls or a class in a .NET class library. This has
for example been tested with DiscUtils library, a library that
supports many image file formats.
Fixed a problem in ImDiskNet.dll, the .NET/COM class library
for using ImDisk API. The problem caused exceptions about
missing functions on 64 bit Windows and when that was later
fixed the same exceptions started to occur on 32 bit Windows
instead. The current combination of latest imdisk.cpl and
ImDiskNet.dll should work correctly.
Update 15 Oct 2011
Release 1.5.1 of ImDisk Virtual Disk Driver.
Setup package changed. It now registers drivers and service
with start mode set to "auto" so that they will start
automatically at system startup. It also automatically starts
drivers and service automatically at the end of setup so that
they will be immediately available. This should make setup
easier, particularly on Windows versions with UAC.
Setup package now operate as follows. First, it checks if
there is an existing version of ImDisk installed and if there
are any virtual disks mounted. If there are any, it displays a
message that existing virtual disks should be dismounted before
upgrade. Otherwise it stops any existing drivers and service
that are about to be upgraded and continues with install/upgrade
.inf script. Then, starts the drivers and service and displays a
message box that setup was successful. This means that installed
or upgraded version will be available immediately.
A new switch has been added to ImDisk command line control
program. The new option is -R and it can be
used to remove a hung virtual disk when nothing else helps. It
is a dangerous operation though, it does not attempt to dismount
the filesystem on the virtual disk or any other cleanup
operation, so it should only be used when no other option is
available. It could be useful for example for proxy type virtual
disks where the proxy server has stopped responding and driver
thread is hung waiting for a proxy response.
The devio program has moved to version 3.01. It now
checks if the object name to be used for shared memory
communication is already used. In that case it just displays an
error message and exits. The objects for shared memory
communication are now also automatically created in global
namespace so explicitly prefix object names with Global
prefix is no longer needed. The DiscUtilsDevio tool
has also been changed in the same ways.
Update 17 Oct 2011
Release 1.5.2 of ImDisk Virtual Disk Driver. Fixed an error in setup package. On
some systems, ImDisk could be upgraded but not installed without an existing
older version already installed. Application notifications changed when virtual
disks are created or removed. Added a flag to tell Windows not to wait for
applications that appear hung to process the notification.
Minor update 5 Nov 2011
The -i switch to rawcopy did not work correctly. The copy
progress stopped on read errors even if -i switch was given on command line and
error messages were not displayed correctly in verbose mode for each I/O error.
This is now fixed.
Changed the swapadd tool to display both current size and used size of
swapfiles.
Update 15 Nov 2011
New feature added to the rawcopy tool. Differential copy mode where
each block is compared between source and target and only copied when different.
There is a new switch -D for this. Thanks to "LZ" for idea and
modification.
Release 1.5.3 of ImDisk Virtual Disk Driver:
A serious bug in awealloc driver has been corrected. Data corruption could occur
on awealloc backed disks larger than 4 GB.
Function ImDiskStartService in API has changed so that it returns TRUE
when the service is already running. GetLastError() will return
ERROR_SERVICE_ALREADY_RUNNING in that case. This means that imdisk.exe and
Control Panel applet will behave more correctly now when another start control
has been sent to driver or service while these ImDisk control programs are
waiting to be able to start them. Thanks to "dickfitzwell" in reboot.pro forum
for reporting this problem.
.NET/COM API has changed to use the modified ImDiskStartService native
API function instead of .NET ServiceController class which means that no
exception is thrown now when LoadDriver or LoadHelperService methods are called
when driver or service are already loaded.
Update 14 Jan 2012
Added 64 bit ports of some more tools.
Added some console based .NET tools, coordtool, checksum and
netcheck.
Update 15 Feb 2012
Corrected a problem with txtcnv32. In-place conversion of files larger
than 1 GB were correct.
Release 1.5.6 of ImDisk Virtual Disk Driver:
API has been extended with new
functions. Read inc\imdisk.h in source archive for documentation about C/C++
usage, or
look here for documentation about .NET API. There are also, as usual, xml
files with method/parameter descriptions available to each assembly file.
Control Panel applet: When a new virtual disk is created, it is automatically
selected in device list.
Minor update 16 Feb 2012
Release 1.5.7 of ImDisk Virtual Disk Driver. Change in Control Panel applet:
When user double clicks on a disk icon in device list, the applet will now check
first that drive letter is recognized by Windows Explorer, before sending a
command to Windows Explorer to open the drive root folder. This check avoids the
possible "Path does not exist" error messages from Windows Explorer that could
turn up in earlier versions. The change does not apply on Windows NT 4.0 and
older where there is no drive list internally cached within Windows Explorer.
While the applet code is waiting for drive letter to appear in Explorer, user
can click a "Cancel" button to cancel out from the wait operation.