Virtual Floppy Drive 2.1

This is a virtual floppy drive for Windows NT / 2000 / XP developed by Ken Kato
(Reported to work also on 2003 Server and Vista).
Note !!! This version works only on 32 bit systems !!!
See technical info on 64 bit compilation.

You can mount a floppy image file as a virtual floppy drive and directly access the contents -- view, edit, rename, delete or create files on a virtual floppy, format a virtual floppy, launch a program on a virtual floppy... almost anything you can do with a real floppy.


Introduction to version 2.1

The latest version is 2.1.2008.206

Changes from 2.1.2005.404 version

No change at all to the device driver.

Major changes since 2.0 RC

Other 2.x major features

TOP

Download

vfd21-080206.zip

vfdsrc-080206.zip (source code)

CAUTION! This version can not coexist with previous versions.

Please carefully read the readme.txt before using the program.

Please send your comments, even if you don't get any problems. Even just one sentence like "Works on Windows ** SP*" would be appreciated.

TOP

FAQ & known issues (including unconfirmed)

TOP

Todo

You bet: Maybe: ...suggestions?
TOP

Useful programs to accompany the VFD

TOP

64 bit compilation

Recently two people have independently gave me some information about compiling and running VFD driver on a 64 bit system, and I decided they are worth sharing here on this page. Please note that I cannot answer any question on the matter as I myself have never used a 64 bit system.

A person with a handle name "critical0" gave me the info and a driver binary compiled for AMD64. Here is an extract from an email he sent to me:

On Sat, 21 Oct 2006 critical0 wrote:
Third, x64 support is lacking, but not that
difficult to implement.
the driver builds well for AMD64 (i'm using winddk
3790.1830 for win 2003 server x64).
All I had to change was vfdioctl.c line 120 became :
    (PULONG)&Irp->IoStatus.Information);
to fix up the warning about incompatible types.

I just switched driver to the one I've built and it
works perfectly.
The driver binary he sent to me: vfd-x64-critical0.zip

Igor Levicki also gave me the info about changing driver code for 64-bit compilation:

On Wed, 22 Nov 2006 Igor Levicki wrote:
This is what you have to change in driver code
to enable compilation for 64-bit platform:

vfdimg.c:
466:
< OUT PULONG          ReturnLength)
> OUT ULONG_PTR*        ReturnLength)
vfddrv.h
< OUT PULONG          ReturnLength);
> OUT ULONG_PTR*        ReturnLength);

Rationale behind this change is that in ntddk.h
IoStatus.Information field is defined as ULONG_PTR,
and not ULONG.

In case you don't know the difference, ULONG_PTR is
defined as unsigned __int3264 while ULONG is just
unsigned long. So, ULONG_PTR should be used for
portability reasons.

NOTE: Both critical0's and Igor's suggestions take different approaches to the same problem. Igor has pointed out that type casting from ULONG_PTR * to PULONG, which appears in critical0's fix, is unsafe and I agree that type casting in general can be dangerous.
However, in this particular case, I believe that critical0's fix is reasonably safe. Because the address referred to by the pointer in question is first initialized properly with 0 and a value to be stored in that address never gets to be negative or exceeds 300 or so, which is not even close to the 32 bit limitation.

NOTE2: According to Igor, type casting method has another drawback in terms of processor and memory bus cycles. So you should take Igor's suggestion when you build a 64-bit binary yourself . However if you cannot build it yourself, I still believe that critical0's binary is not likely to crash or anything. Sorry for inconvenience but I'm not going to build and distribute a 64-bit binary myself for the time being, largely because I cannot even confirm that my build works on a 64-bit system. At least critical0's binary actually works for him.

TOP

Previous version (Version 1.01)

Binary: vfd.zip (78,508 bytes) Apr. 27, 2003
Source: vfdsrc.zip (91,767 bytes) Apr. 27, 2003
TOP

HISTORY

Feb. 6, 2008
Version 2.1.2008.206
Apr. 4, 2005
Version 2.1
Oct. 3, 2004
Version 2.0 Release Candidate
Sep. 24, 2004
Version 2.0 beta 3
Sep. 12, 2004
Version 2.0 beta 2
Jun. 17, 2004
Version 2.0 beta preview
Apr. 27, 2003
vfdwin.exe 1.01 -- Fixed a few bugs in user interface.
Apr. 16, 2003
Initial Release