VMware Virtual Disk Driver for Windows
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cmn
drv
inc
win
.gitignore
COPYING.TXT
README.TXT
READMEJ.TXT
dirs
sherpya.txt

README.TXT

    Virtual Disk Driver for Windows NT platform.
    Copyright (C) 2003-2005 Ken Kato (chitchat-lj@infoseek.jp)
    http://chitchat.at.infoseek.co.jp/vmware/vdk.html

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    The GNU General Public License is also available from:
    http://www.gnu.org/copyleft/gpl.html

    This program owes a great deal to Bo Brantén's 'ntifs' project and
    'filedisk' program (http://www.acc.umu.se/~bosse/).
    This program simply could not happen without his great works.


INTRODUCTION
============

    This is a Virtual Disk Driver (VDK) Version 3 for Windows NT / 2000 / XP.
    I have received some reports that it also works on Windows 2000 Server.

    With VDK you can mount a VMware virtual disk to your Windows hosts and
    use them as another disk drive attached to your system.

    VDK can open the following VMware virtual disk types for both read-only
    and read-write access:

    - VMware 2.x Plain Disks (*.pln).
    - VMware 2.x / 3.x Virtual Disks (*.dsk, *.vmdk).
    - VMware 2.x / 3.x REDO log files based on both Plain Disks and
      Virtual Disks.
    - VMware 2.x / 3.x differential / nested Virtual Disks (which actually
      are renamed REDO logs), based on both Plain Disks and Virtual Disks.
      There is no limitation on the nesting level.
    - VMware 4.x Flat virtual disks (both split and monolithic).
    - VMware 4.x Sparse virtual disks (both split and monolithic).
    - VMware 4.x REDO log files (which actually are the same thing as
      split-sparse virtual disks) and differential / nested virtual disks
      (ditto).

    VDK allows you to use these types of virtual disks with minor errors,
    such as timestamp mismatch, sequence number mismatch, etc.
    (VDK simply ignores those errors, it does not fix them.)


    VDK can also open the following types of virtual disks.

    - Raw sector image which you can create with regular disk dump tools
      such as Linux dd command.

    - Non-partitioned disk image, such as floppy image, removable disk image,
      and dd image of one partition.  (This is not actually a type of virtual
      disk, but rather how the virtual disk is formatted.)
      In this case, the whole image is treated as a single partition.


    VDK is also capable of creating REDO log files which VMware can use.
    This means that VDK can open virtual disks in undoable mode, then you
    can commit the changes using VMware, or discard the changes by simply
    deleting created REDO log files.


    VDK cannot use the following virtual disks for the time being, but I'm
    planning to implement them:

    - Any disk types with serious errors.


    VDK cannot use the following disk types, and I have no intention of
    implementing them:

    - Raw Disks for any version of VMware.
    - REDO log files for Raw Disks.


    In this text, the term "Virtual Disk" (with capitals) specifically means
    growable virtual disk created with VMware 2.x / 3.x, whereas "virtual
    disk" (in lower case) is used in more generic sense as opposed to
    "physical disk".  I know it's kind of confusing, but I just couldn't
    come up with more suitable terms.


WARNING & LIMITATIONS
=====================

    The VMware virtual disk format and structure on which VDK was
    developed is entirely the result of my *personal* investigation.
    Absolutely no official information is provided by VMware, Inc. or any
    other resources.
    Please note that there is ABSOLUTELY NO WARRANTY and be sure to use it
    AT YOUR OWN RISK.

    You must have administrative privileges to use the VDK.  This is
    becuase Windows does not allow non-administrative users to manipulate
    hard disk volumes.

    VDK is a *disk* driver, not a file system driver, therefore you can
    only access partitions which your Windows host can recognize.
    For example, you cannot access ext2 partitions on virtual drives unless
    you have a 3rd party ext2 file system driver installed on your Windows
    system (See NOTES below for more information).

    VDK does not communicate with Windows 2000/XP Mount Manager.
    Therefore:

    - Disk Management Console (partition manipulation and mount point
      configuration) does not recognize the VDK virtual drives.
      Most of third party utilities, such as PartitionMagic, should work.

    - Disk Defragment utility does not recognize the VDK virtual drives.
      Third party defrag utility, such as Diskeeper, works file.

    - Graphical mode of Check Disk may not work.  Sometimes it works and
      sometimes it doesn't for me, though I couldn't figure out the pattern
      so far.  (command line chkdsk.exe works fine).

    VDK does not handle GPT partitioned disk (I don't really know what it
    is.  All I know is that it's a new type of partition table.)

    Also, I suspect that you cannot use Windows NT Fault Tolerant Volumes
    (mirror, stripe, volume set, etc) or Windows 2000/XP Dynamic Volumes on
    virtual drives.  I simply don't know because I've never used them.


TO DO
=====

    - Allow non-administrative users to use the program.

    - Better compatibility with Win2K/XP
      (PnP support, Mount Manager support, etc).

    - GUI front end program.

    - Virtual disk error correction.

    - Virtual disk type conversion.


FILES
=====

    vdk.sys       Virtual Disk kernel-mode Driver.

    vdk.exe       Virtual Disk Driver control program (console).

    README.TXT    Explanation of the Virtual Disk Driver (this file).

    COPYING.TXT   GNU GENERAL PUBLIC LICENSE Version 2.


INSTALL
=======

    Place VDK.SYS and VDK.EXE into a directory on a local drive.
    Then use VDK.EXE to install the driver (VDK.SYS) onto the system.
    Read the following sections for more information.

    If you have previous version of VDK.SYS installed on your system, you
    don't usually need to uninstall the previous driver from the system.
    You can just stop the old driver, replace the driver file, and restart
    the driver.

    !!! NOTE !!!
    Device drivers cannot be started from a network drive.  Make sure that
    at least the driver file (VDK.SYS) is placed on a local drive.


UNINSTALL
=========

    Use VDK.EXE to remove the driver entry from the system registry.
    Then delete VDK.SYS and VDK.EXE from the local drive.


VDK.EXE REFERENCE
=================
    
    VDK.EXE is a command line front end program to control the Virtual
    Disk Driver (VDK.SYS).
    
    SYNTAX:
      VDK.EXE command [command specific options...]

    COMMANDS:
      INSTALL   Install the Virtual Disk Driver.
      REMOVE    Uninstall the Virtual Disk Driver.
      START     Start the Virtual Disk Driver.
      STOP      Stop the Virtual Disk Driver.
      DRIVER    Print Virtual Disk Driver status.
      DISK      Set the initial number of Virtual Disk devices.
      CREATE    Create a new Virtual Disk device.
      DELETE    Delete a Virtual Disk device.
      VIEW      Print disk image files information.
      OPEN      Open disk image files as a virtual drive.
      CLOSE     Close disk image files.
      LINK      Assign a drive letter to a partition.
      ULINK     Remove a drive letter from a partition.
      IMAGE     Print opened image file information.
      HELP      Print command help.

    All commands and options are case insensitive.


VDK INSTALL
===========

    Install the Virtual Disk Driver.

    SYNTAX:
      VDK.EXE INSTALL [driver] [/AUTO]

    OPTIONS:
      driver    Specifies the path to the Virtual Disk Driver file (VDK.SYS).
                Default is VDK.SYS in the same directory as VDK.EXE.
                (Note: *NOT* current working directory.)

      /AUTO     Configures the driver to start at the system startup.
                (Note: this option does not start the driver after
                installation is completed.)
                By default the driver has to be started manually.

    Device drivers cannot be started from network drives.
    Make sure to place VDK.SYS on a local drive.


VDK REMOVE
==========

    Uninstall the Virtual Disk Driver.

    SYNTAX:
      VDK.EXE REMOVE

    OPTIONS:
      NONE

    This command removes the Virtual Disk Driver entries from the system
    registry, but does not delete the driver file from the drive.
    If the driver is running, this command closes all image files and
    stops the driver before removing it from the system.


VDK START
=========

    Start the Virtual Disk Driver.

    SYNTAX:
      VDK.EXE START

    OPTIONS:
      NONE

    If the driver is not already installed, this command attempts to install
    it with the default options.


VDK STOP
========

    Stop the Virtual Disk Driver.

    SYNTAX:
      VDK.EXE STOP

    OPTIONS:
      NONE

    This command closes all image files before stopping the driver.
    The driver cannot be stopped if virtual drives are used by any other
    programs.


VDK DRIVER
==========

    Print Virtual Disk Driver status.

    SYNTAX:
      VDK.EXE DRIVER

    OPTIONS:
      NONE

    This commands prints the following information:
        Driver file path
        Driver file version
        Driver start type (AUTO/MANUAL)
        Current running state
        Number of disk devices


VDK DISK
========

    Set the initial number of virtual disks.

    SYNTAX:
      VDK.EXE DISK number

    OPTIONS:
      number    Number of virtual disks between 1 and 22.
                The default value is 4.

    This command sets the number of virtual disk devices created when the
    driver is started.
    If the driver is already running, this value takes effect the next time
    the driver is started.


VDK CREATE
==========

    Create a new virtual disk device.

    SYNTAX:
      VDK.EXE CREATE

    OPTIONS:
      NONE

    This commands creates a new virtual disk device.
    The created disk has the highest disk number.


VDK DELETE
==========

    Delete a virtual disk device.

    SYNTAX:
      VDK.EXE DELETE

    OPTIONS:
      NONE

    This command deletes a virtual disk device with the highest disk number.
    A disk cannot be deleted if an image is opened, or any process is using it.
    Disk #0 cannot be deleted (there must exist at least one disk device).


VDK VIEW
========

    Print disk image information.

    SYNTAX:
      VDK.EXE VIEW image [/SEARCH:path]

    OPTIONS:
      image     Path to the image to print the information.

      /SEARCH:path
                Specifies a path to search the image file (and related files).
                The specified path has the highest priority in the searching
                order, and searched even before the explicit paths in the
                command line, descriptor files and virtual disk files.

    This command prints the following information for the specified image:

        Virtual disk capacity (in 512 byte sectors)
        Number of files composing the image
        Type, capacity and path of each component file
        Size and type of each partition in the image


VDK OPEN
========

    Open a disk image as a virtual drive.

    SYNTAX:
      VDK.EXE OPEN disk# image [/RW | /WB | /UNDO | /UNDO:path]
            [/SEARCH:path] [/P:part#] [/L:drive]

    OPTIONS:
      disk#     Specifies the virtual disk number.
                This must be the first parameter.
                '*' means the first available disk, and if all existing disk is
                busy a new virtual disk is created.

      image     Specifies the path to the disk image file.
                This must be the second parameter.
                See IMAGE TYPES section below for more information

      /RW       Open the image in Read-Write mode.

      /WB       Open the image in Write-Block mode.

      /UNDO | /UNDO:path
                Creates a REDO log for the image and open in Read-Write mode.
                If you specify a path, the REDO log is created in the specified
                directory.

      /P:part#  Specifies a partition number to set a drive letter.
                Drive letters can be set/removed later with LINK/ULINK commands.
                By default, drive letters are assigned to all mountable partitions.

      /L:drive  Specifies drive letters to assign to partitions.
                By default, the first available drive letter is used.

      /SEARCH:path
                Specifies a path to search the image file (and related files).
                The specified path has the highest priority in the searching
                order, and searched even before the explicit paths in the
                command line, descriptor files and virtual disk files.

    Only one of /RW, /WB and /UNDO can be used at a time.
    When none of these is specified, the image is opened in Read-Only mode.
    See ACCESS MODES section below for more information about these options.


VDK CLOSE
=========

    Close a disk image.

    SYNTAX:
      VDK.EXE CLOSE disk#
      VDK.EXE CLOSE drive

    OPTIONS:
      disk#     Specifies the target virtual disk number.
                '*' means all existing virtual disks.

      drive     Specifies one of drive letters of partitions on the target
                disk.

      /Q        Suppresses prompting and fails the operation when an error
                has occured.

      /F        Suppresses prompting and forces the image to close even if
                an error has occured.

    Make sure that other programs are not using any partitions on the drive
    before closing the image.  Generally, the image should not be closed
    while the virtual drive is used by any processes.
    Although you can force to close the image by answering to do so when
    asked or by using the /F option, you should be aware that to forcibly
    closing an image may lead to loss of data or unexpected behavior of the
    operating system.


VDK LINK
========

    Assign a drive letter to a partition.

    SYNTAX:
      VDK.EXE LINK disk# part# [drive]

    OPTIONS:
      disk#     Specifies the target virtual disk number.

      part#     Specifies the target partition number.

      drive     Specifies a drive letter to assign.
                By default, the first available drive letter is used.

    You cannot assign more than one drive letters to one partition.
    You cannot assign a drive letter already used for another volume.
    Use IMAGE command to see partition numbers and the current drive
    letter assignment.

    With usual (partitioned) virtual disks, the first partition on the disk
    is partition 1, the second is partition 2, and so on.
    Unlike Linux, partition numbers for primary partitions and logical
    partitions are not distinguished -- logical partition number starts just
    after the last primary partition and can be any number from 1.

    Partition 0 represents the whole disk (like /dev/hda, /dev/hdb,
    /dev/sda, etc. in Linux) and you should not assign a drive letter to it.
    You can assign a drive letter, but file system drivers cannot access the
    partition, because it is not formatted in any file system.  It is just
    like you don't usually mount /dev/hda in Linux.

    Non-partitioned virtual disks (such as floppy image and removable disk
    image) only have partition 0, and a drive letter is to be assigned to
    this partition.  Again, it is like mounting /dev/fd0 in Linux.


VDK ULINK
=========

    Remove a drive letter from a partition.

    SYNTAX:
      VDK.EXE ULINK disk# part#
      VDK.EXE ULINK drive

    OPTIONS:
      disk#     Specifies the target virtual disk number.

      part#     Specifies the target partition number.

      drive     Specifies the drive letter to remove.

    This command can remove drive letters of virtual disk drives only.
    Use IMAGE command to see partition numbers and the current drive
    letter assignment.

    Closing a virtual disk automatically unlinks all drive letters assigned
    to partitions on the virtual disk.


VDK IMAGE
=========

    Print current virtual disk image information.

    SYNTAX:
      VDK.EXE IMAGE [disk#]
      VDK.EXE IMAGE [drive]

    OPTIONS:
      disk#     Specifies the target virtual disk number.

      drive     Specifies one of drive letters of partitions on the target
                disk.

    This command prints the following information for the target disk:

        Virtual disk access mode
        Virtual disk capacity (in 512 byte sectors)
        Number of files composing the virtual disk
        Type, capacity and path of each component file
        Drive letter, size and type of each partition on the virtual disk

    When target is not specified, information for all drives are printed.


VDK HELP
========

    Print VDK.EXE command help.

    SYNTAX:
      VDK.EXE HELP [command]

    OPTIONS:
      command   Specifies a VDK.EXE command to display help.
                Following commands can be specified:

                    INSTALL REMOVE  START   STOP    DRIVER
                    DISK    CREATE  DELETE  VIEW    OPEN
                    CLOSE   LINK    ULINK   IMAGE   HELP

                If not specified, the general help is printed.


IMAGE TYPES
===========

    You can use virtual disks on both local and network drives.
    VIEW and OPEN commands accept the following path expressions:

      relative paths    [<dir>\]<filename>
      absolute paths    x:\<dir>\<filename>
      UNC paths         \\<server>\<share>\<dir>\<filename>

    VIEW/OPEN commands can handle the following types of virtual disks:

    - VMware 2.x Plain Disk
        Consists of one descriptor file (*.pln) and one or more raw data
        files (*.dat).
        Use the path to the descriptor file for VIEW/OPEN commands.

    - VMware 2.x Virtual Disk / REDO log / differential disk (COWD version 1)
        Consists of only one virtual disk file (*.dsk or *.REDO).
        Use this path for VIEW/OPEN commands.

    - VMware 3.x Virtual Disk / REDO log / differential disk (COWD version 3)
        Consists of one or more virtual disk files (*.vmdk or *.REDO)
        Use any one of the composing files for VIEW/OPEN commands.

    - VMware 4.x Monolithic Flat Virtual Disk
        Consists of a descriptor file (*.vmdk) and a data file (*-flat.vmdk).
        Use the path to the descriptor file for VIEW/OPEN commands.

    - VMware 4.x Split Flat Virtual Disk
        Consists of one descriptor file (*.vmdk) and one or more raw data
        files (*-fxxx.vmdk).
        Use the path to the descriptor file for VIEW/OPEN commands.

    - VMware 4.x Monolithic Sparse Virtual Disk (VMDK version 1)
        Consists of only one virtual disk file (*.vmdk).
        Use this path for VIEW/OPEN commands.

    - VMware 4.x Split Sparse Virtual Disk / REDO log / differential disk
        (VMDK version 1)
        Consists of a descriptor file (*.vmdk or *.REDO_*) and one or more
        virtual disk files (*-sxxx.vmdk or *-sxxx.REDO_*).
        Use the path to the descriptor file for VIEW/OPEN commands.

    - Single raw sector image file
        Consists of only one raw sector image file.  The file size must
        be an integer multiple of 512.
        Use this path for VIEW/OPEN commands.

    - A set of raw sector image files
        Consists of a descriptor file and one or more raw sector image files.
        Use the path to the descriptor file for VIEW/OPEN commands.

        The descriptor file in this case is a plain text file which simply
        lists composing image files:

        e.g.1
        image01.dat
        image02.dat
        image03.dat
        ...

        e.g.2
        c:\data\volume.001
        c:\data\volume.002
        c:\data\volume.003
        ...

        e.g.3
        disk.img
        c:\work\part2.dsk
        ..\image\data


ACCESS MODES
============

    When an image is opened for read-only access (without any access mode
    options) the virtual drive is treated as a write protected volume.

    Even with /RW or /UNDO option, underlying files for REDO log,
    differential/nested Virtual Disks are always opened for read-only access.

    Use /RW option with extreme care because this option causes VDK to
    modify the virtual disk files.

    When you use /WB (write-block) option, you should avoid using the drive
    for a long period of time or writing large amount of data to the drive.
    The difference between data on the drive, which is unmodified, and data
    in the OS's disk cache, which the OS believes to be written successfully
    to the drive, may lead to an unpredictable behavior.


NOTES
=====

    Encrypted/compressed virtual disk files

        NTFS has native support for encrypting/compressing files on the
        volume.  However VDK does not allow to open encrypted or compressed
        virtual disk files.  This is because the Windows cache manager may
        deadlock if a virtual disk file is encrypted/compressed.


    Resolving relative paths

        If relative paths are used in descriptor files or REDO log,
                differential/nested Virtual Disks, VMware resolves them from the
        *.vmx file's location.  However VDK.EXE tries to resolve them from
        the current file's location, and VDK.EXE may not be able to find
        the target files.  In such cases, VDK.EXE will prompt you for the
        correct path.


    REDO logs created with /UNDO option

        If you use /UNDO option for opening *.pln, *.dsk or *.vmdk files,
        VMware will recognize the REDO log created by VDK.EXE, and you can
        commit or discard the REDO log using VMware.

        However VMware will not look for the REDO log for *.REDO files, so
        if you use /UNDO option for opening *.REDO files, you have to
        manually delete the created REDO log files afterward.


    Opening REDO logs

        VDK.EXE does not automatically open REDO log for the target disk as
        VMware does (unless /UNDO option is specified).  If you want to
        open a REDO log, you have to explicitly specify the path to the REDO
        log file as shown in the examples below:

        VDK.EXE OPEN VDISK.VMDK

            Opens VDISK.VMDK, even if VDISK.VMDK.REDO exists.
            VDISK.VMDK.REDO is not used at all.

        VDK.EXE OPEN VDISK.VMDK.REDO

            Opens VDISK.VMDK.REDO, which must exist.
            Also uses VDISK.VMDK for read-only access.

        VDK.EXE OPEN VDISK.VMDK /UNDO

            Creates VDISK.VMDK.REDO, which must NOT exist, then opens it
            for read-write access.
            Also uses VDISK.VMDK for read-only access.
            VMware can use VDISK.VMDK.REDO and will automatically recognize
            it when you use VDISK.VMDK as a virtual disk.

        VDK.EXE OPEN VDISK.VMDK.REDO /UNDO

            Creates VDISK.VMDK.REDO.REDO, which must NOT exist,
            then opens it for read-write access.
            Also uses VDISK.VMDK.REDO and VDISK.VMDK for read-only access.
            VMware can use VDISK.VMDK.REDO.REDO but will not automatically
            recognize it when you use VDISK.VMDK or VDISK.VMDK.REDO.
            You must explicitly specify VDISK.VMDK.REDO.REDO for VMware to
            use it.

    Using REDO logs, differential/nested Virtual Disks

        When changes are made to Virtual Disks, VDK does not update
        timestamp or sequence number in the Virtual Disk header as VMware
        does.

        If you made any changes to parent/underlying disks of REDO log or
        differential/nested Virtual Disks, VMware wouldn't know that they
        are consequently invalidated.

        Make sure not to make any changes to parent/underlying disks.
        Do not use /RW option to open them, and use /UNDO or /WB option
        instead if you need read-write access to the virtual drive.


    Partition types on virtual disks

        After successfully opened the virtual disk, VDK.EXE assigns drive
        letters to partitions of the following types on the virtual drive:
        
        - FAT16, NTFS partitions on Windows NT
        - FAT16, FAT32, NTFS partitions on Windows 2000/XP

        If you have 3rd party file system drivers installed on your system
        and want to access those partitions, you have to manually assign
        drive letters with VDK.EXE LINK command.

        The following file system driver works on VDK without any known
        problems:

        - FAT32 for Windows NT
            FAT32 file system driver for Windows NT 4.0
            available from Sysinternals.
            http://www.sysinternals.com/

        - Paragon Ext2FS Anywhere Demo version
            ext2/ext3 file system driver for Windows 95/98/ME/NT/2000/XP
            (free trial version with restricted features)
            available from Paragon Software Group
            http://www.paragon-gmbh.com/

            Thanks to Dave Parsons for mentioning this product to me.
            I suppose that the product version also works, but I cannot
            confirm it because I cannot afford it for the time being ;-)

        The following file system drivers work on VDK with some issues:

        - Ext2Fsd
            ext2 file system driver for Windows 2000/XP
            written by Matt Wu.
            http://sys.xiloo.com/

            * This driver only partially supports dismounting of the
            volumes.  Once you have mounted an ext2 partition, this driver
            keeps hold of the partition object and prevents the VDK driver
            from unloading (means that you cannot stop the VDK driver without
            rebooting your system).

        - Ext2 File System Driver for Windows NT 4.0
            ext2 file system driver for Windows NT 4.0
            written by Manoj Paul Joseph
            http://freesourcecodes.tripod.com/ext2.htm

            * This driver does not support dismounting of the volumes.
            As a consequence, once you have mounted an ext2 partition, this
            driver keeps hold of the partition object and prevents the VDK
            driver from unloading.

        - EXT2IFS
            ext2 file system driver for Windows NT/2000/XP
            written by John Newbigin
            http://uranus.it.swin.edu.au/~jn/linux/ext2ifs.htm

            * This driver does not support dismounting of the volumes.
            As a consequence, once you have mounted an ext2 partition, this
            driver keeps hold of the partition object and prevents the VDK
            driver from unloading.

            ** The GUI front end program included in EXT2IFS assumes
            that all ext2 partitions exist only on fixed disks (very
            reasonable assumption, I must say), so its drive letter
            assignment method does not work well with VDK.
            However if you assign drive letters to ext2 partitions on the
            virtual drive with VDK.EXE, the EXT2IFS driver recognizes the
            partition and you can access it.

        You can also use other utitity programs to access such partitions:

        - explore2fs
            A program to access ext2 volume from Windows.
            http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm

            Thanks to João Alves for mentioning this program to me.


    Read-only virtual drives and Windows

        By default VDK.EXE opens virtual disks read-only for some safety.
        However stupid Windows does not seem to cope well with the idea of
        read-only hard disk drives:
        
        - Windows NT and Windows 2000 simply cannot access NTFS partitions
          on read-only volumes.  (See the next section)

        - Windows may occasionally complain that it cannot write to the
          disk and warn you about loss of data.  You can safely ignore it.
          How can you lose data on read-only volumes anyway?

          When VDK opens a virtual disk for read-only access, it properly
          sets a flag to declare the drive as read-only, answers that the
          volume is write protected whenever asked by the system, and
          declines every write request with polite "no, you can't write
          to this volume because it's write protected" status code.
          Still, Windows tries to write.  If Windows does not believe what
          the drivers say and try to write anyway, why does it bother to
          ask in the first place?

        - Windows NT Disk Administrator causes the whole system to freeze
          if you are using a read-only virtual drive.

        - and, I suspect, many more...


    Using NTFS partitions on virtual drives

        Windows NT and Windows 2000 cannot mount NTFS partitions if the
        volume is read-only, so you have to open virtual disks in writable
        mode if you want to use NTFS partitions on it.
        (Windows XP can mount read-only NTFS partitions).

        However you must be very careful when you use NTFS partitions
        created with Windows NT from Windows 2000/XP.

        Windows NT and Windows 2000/XP actually use different versions of
        NTFS (Windows NT uses NTFS 4, Windows 2000/XP uses NTFS 5).
        When Windows 2000/XP finds NTFS 4 partitions it automatically
        upgrades the file system to NTFS 5 WITHOUT EVER ASKING IF THE USER
        WANTS IT.  Actually Windows 2000/XP cannot mount NTFS 4 partitions
        without converting it to NTFS 5.

        On the other hand, Windows NT cannot access NTFS 5 partition at all
        without the Service Pack 4 or later applied to the system, or even
        with proper Service Packs some disk management programs cannot work
        on NTFS 5 partition (chkdsk, certain defragment application, etc).
        And it is impossible to revert the upgrading process.

        Outrageous, isn't it?

        When you want to access NTFS 4 partitions from Windows 2000/XP, do
        not EVER use /RW option.  Use /UNDO or /WB option instead.


HISTORY
=======

    06-04-2005  Version 3.2 (VDK.SYS 3.1, VDK.EXE 3.2)
                - Accept virtual disks created with VMware 5.x
                - Accept virtual disks with "lsilogic" virtual controller.
                - Added /SEARCH option to VIEW and OPEN commands.
                - Added /UNDO:path option to OPEN command.

    10-11-2003  Version 3.1 (VDK.SYS 3.1, VDK.EXE 3.1)
                - Fixed a bug that the driver could cause the system to stall
                  during the system shutdown.
                - Fixed a bug that vdk.exe could not read extended partition
                  tables stored beyond 4GB from the beginning of the disk.
                - Added /Q (quiet) and /F (force) options to CLOSE command.
                - Corrected description of required privileges in the help
                  and the doc.

    04-11-2003  Version 3.0 Release (VDK.SYS 3.0, VDK.EXE 3.0)
                Added support for multiple virtual drives, write-block
                mode, sector image file set, view information command.

    30-07-2003  Version 2.0 Release (VDK.SYS 2.0, VDK.EXE 2.0)
                Added support for VMware 4.0 virtual disks, simple sector
                image files, non-partitioned disk image files.

    27-05-2003  VDK.SYS 1.01
                Fixed a major bug where it couldn't handle virtual disks
                larger than 4GB properly.

    20-05-2003  Initial Release (VDK.SYS 1.0, VDK.EXE 1.0)