|
Copyright © 1996-1999 Mark Russinovich and Bryce Cogswell
|
Last Updated October 14, 1999, Version 3.0R+ |
Introduction |
If you are interested in
accessing NTFS drives from Windows 95 or Windows 98, then you should use
NTFS for Windows 98 rather than NTFSDOS. Full
read/write access to NTFS drives from DOS is available with
NTFSDOS Professional Edition.
NTFSDOS.EXE is a read-only network
file system driver for DOS/Windows that is able to recognize and mount NTFS
drives for transparent access. It makes NTFS drives appear indistinguishable
from standard FAT drives, providing the ability to navigate, view and execute
programs on them from DOS or from Windows, including from the Windows 3.1 File
Manager and Windows 95 Explorer.
Please read this entire file before contacting us for help. |
Enhancements over v2.00 |
Version 3.0's enhancement over
v2.0 is that it is capable of accessing NTFS drives with sizes larger than
4GB. |
Contents of the Package |
The NTFSDOS package (see the
bottom of this page) contains the following files:
- README.TXT: This file
- NTFSDOS.EXE: File system
driver
- NTFSHLP.VXD: Helper VxD needed
only for long filename support in Windows 95
|
Installation and Use |
To use NTFSDOS, simply execute
it from the DOS command line (DOS 5.0 or greater is required), or from your
AUTOEXEC.BAT. Executing NTFSDOS before Windows is started will create NTFS
drives that are visible globally once inside Windows. Executing NTFSDOS in a
DOS box means that the NTFS drives only exist within the DOS box where NTFSDOS
was executed.
When NTFSDOS starts, it will scan all hard-disk partitions on your system to
look for NTFS drives. It will mount all NTFS drives it finds as unique DOS
logical drive letters, and will inform you as it does so.
If you run NTFSDOS under DOS 7.0, NTFS drives will support long filename calls
even before Windows starts. To propagate this support into Windows 95, NTFSDOS
automatically has Windows run the NTFSHLP.VXD VxD device driver. No changes to
SYSTEM.INI or the registry are necessary for this to occur - NTFSDOS will
detect when Windows 95 starts and load the driver without user-intervention.
You need NTFSHLP.VXD only if you will be running NTFSDOS with Windows 95.
NTFSDOS implements its own caching, and uses one of two types of memory,
depending on how your system is configured. Its first choice is to use XMS
memory for caching, as this minimizes demands placed on conventional memory. If
you start NTFSDOS before Windows, then HIMEM.SYS, which can be found in the
WINDOWS directory under Windows 95 or the DOS directory under Windows 3.1, or
its equivalent, must be started before NTFSDOS. If NTFSDOS does not detect an
XMS server, it will resort to allocating 64KB of conventional memory for its
cache. In either case, it will inform you of its action.
NTFSDOS takes six command line parameters.:
- The /L parameter lets you
specify which drive letters NTFSDOS should attempt to use as it mounts NTFS
drives.
- The /C option lets you override
the default XMS cache size.
- The /V option directs NTFSDOS
to print some messages detailing the drives it looks at and the memory it
allocates.
- The /X switch forces NTFSDOS to
use standard BIOS Int 13 services. Use this if NTFSDOS has problems with your
computer's extended Int 13 services.
- The /U option has NTFSDOS
correctly sort through files with unicode names. You should only use this if a
NTFSDOS directory listing enters an infinite loop within directories that
contain files with unicode names.
- Finally, the /N switch can be
used to disable NTFSDOS support for compression. Much of the conventional
memory that NTFSDOS normally uses is for compression buffers, so if you will be
accessing drives or files that are not compressed and would like to optimize
NTFSDOS use of memory, use this switch.
The syntax for these parameters is:
|
|
|
/L:<letter> |
Specifies drive letter to start
mounting at |
|
/C:<size> |
Specifies size of XMS cache in
KB |
|
/V |
Verbose |
|
/X |
Disable extended int 13
support |
|
/U |
Tolerate unicode file names |
|
/N |
Disable support for
compression |
|
If You Have Problems Running NTFSDOS |
This section lists and
addresses various issues that may arise when you run NTFSDOS.
- NTFSDOS does not
recognize my NTFS drive
NTFSDOS does not handle cluster sizes > 4K on NT 4.0 formatted
drives. This is rare, since NTFS compression does not handle these cluster
sizes either.
NTFSDOS requires that disks be accessible via BIOS, using the INT 13 or
extended INT 13 services. In some cases, SCSI drives may not be fully
accessible without a DOS device driver (see your SCSI adapter documentation).
- NTFSDOS uses too much
conventional memory
Some people have complained that NTFSDOS is a memory hog.
Unfortunately, this fact is largely imposed on us by the architecture of NTFS
itself (sorry, but its a little more complicated than FAT, and much more memory
intensive), coupled with our desire to provide reasonable performance across a
wide variety of NTFS installations. In general, the footprint of NTFSDOS
increases largely with the clustersize of the largest NTFS partition, and
slightly with the number of NTFS volumes mounted.
- Accessing an NTFSDOS
drive causes a hang or crash
NTFSDOS does not support disk striping. Further, it cannot handle
drives that are on partitions extending beyond the 2GB boundary, or that are
larger than 2GB in size, UNLESS the computer's BIOS has extended INT 13 support
for the drives in question. The latter restrictions are due to limitations in
standard disk BIOS code that prevent it from addressing sectors 2GB or more
from the start of a disk.
NTFSDOS has not been thoroughly bullet-proofed against corrupt NTFS drive data
structures, so it may cause Windows to crash or hang when it runs into
problems. To insure that a crash or hang is due to a problem with NTFSDOS
rather than your NTFS drive, be sure to chkdsk the drive from Windows NT and
try NTFSDOS again.
- Starting programs or
loading files seems very slow
Access of large compressed files may be noticeably slower than of their
non-compressed versions.
- File times are not
correct when running under DOS 7.0 without Windows 95
This problem is due to the fact that NTFS and LFN FAT time stamps are
stored in Coordinated Universal Time (UTC), which is based on Greenwich Mean
Time, and Windows 95 automatically converts times stamps returned by LFN calls
to local time. Since local time zone information is not accessible outside of
Windows 95, running NTFSDOS under DOS 7.0 without Windows 95 results in the
display of unadjusted times.
- Programs complain about
not being able to find files when they are there
A directory listing of files that have no short filename will result in
the short filename field of the listing being blank. Changing the current
directory to a path where any component of the pathname does not have a short
filename will result in all short filename calls failing while in the
directory. This makes most Windows 3.1 and DOS programs and many DOS commands
(e.g. MORE) inoperative in these directories. However, LFN calls are supported
in these directories.
- Data read from a file
appears to be corrupt
Since this work is based on reverse-engineering rather than official
Microsoft specifications (which are reportedly available under special
circumstances for large amounts of money), we do not guarantee data integrity
of NTFSDOS drives. This is especially important if you are considering using
NTFSDOS as a file backup utility.
- Files or directories seem
to be missing
Remember that files and directories that were created with no DOS 8.3
short filenames will not be visible if you are running DOS versions earlier
than 7.0.
- You get the message
"No drive letter to mount NTFS partition..."
If NTFSDOS complains that it cannot mount a drive because there are no
available drive letters, you must find the line in your CONFIG.SYS that begins
with "LASTDRIVE=". If you do not find one, then add one. Set the
LASTDRIVE variable to a letter that is greater, by the number of NTFS drives on
your system, than the largest drive letter you normally have under DOS/Windows.
For example, if the highest drive letter normally in use is E: and you have two
NTFS drives, set LASTDRIVE to G: with a statement in CONFIG.SYS like:
LASTDRIVE=G:
If you still get the message then increment the letter and try again. Remember
to reboot after every change to CONFIG.SYS.
- You get the message
"Could not allocate XMS or conventional cache"
Memory usage on your machine is so high that NTFSDOS could not allocate
64KB for a conventional cache. Try removing unnecessary TSRs and drivers and/or
running a DOS memory optimizer or manager.
- XCOPY does not work in a
DOS box
XCOPY will not work on NTFS drives that are mounted in DOS boxes under
Windows 95 (e.g. running NTFSDOS in a DOS box). This is because you cannot run
Windows programs off of non-global drives, and under Windows 5, XCOPY starts
the Windows console program XCOPY32.EXE.
|
Reporting Bugs |
When you report a bug please
provide the following information about your system:
- disk types (IDE, etc.)
- disk and partition sizes
- BIOS version
- drive sizes and formats
- version of NT that was used to
format NTFS drives
- version of NTFSDOS you are
using
- an output dump of NTFSDOS run
with the /V (verbose) option
- version of DOS and/or Windows
you are running NTFSDOS on
|
Implementation |
NTFSDOS scans the system's
partition tables looking for partitions that have the NTFS attribute byte. When
it finds one, it looks for an unused DOS driver letter and registers a network
drive on it. After it completes the drive search it hooks the network
redirector interrupt and goes resident. Requests come into NTFSDOS as full path
names, or continuations of a previous directory traversal (as with findnext),
so it proceeds to determine where, based on NTFS internal data structures, the
target file is located. When it retrieves the header for the target file it can
determine where the file's data is located, and read it when it receives
requests to do so.
To provide long filename support (LFN), NTFSDOS hooks INT 21/AH=0x71 calls and
implements LFN functionality when it sees an LFN call. Under Windows 95,
NTFSHLP.VXD is required to send LFN calls down to the NTFSDOS for it to
process; otherwise NTFSDOS would not see LFN calls since Windows assumes DOS
redirected drives do not provide LFN support.
NTFSDOS also uses the INT 2F/11 and INT 13 APIs. In addition, it contains
memory and cache management plus interpretation of the NTFS on-disk
structures. |
Read-write NTFSDOS |
Full read/write capability for
NTFS from DOS is available with NTFSDOS Professional.
Full read/write capability for DOS from Windows 95/98 is available with
NTFS for Windows 98.
Full read/write capability for NTFS
drives from a boot floppy is now available in the form of
ERD Commander. ERD
Commander is a command-line that starts after booting off of a standard set
of Windows NT boot disks. NTFS and FAT drives can be accessed with a full suite
of standard file-related commands like move, copy, delete, and rename. Get more
information and download a free read-only version that has working rmdir
and mkdir commands here.
|
Acknowlegements |
We thank everybody that
e-mailed us with bug reports and other feedback.
Significant understanding of the NTFS file system layout was derived by
studying the Linux-based NTFS driver code maintained by Martin von Loewis. We acknowledge his indirect contribution to this
endeavor.
Andrew Schulman, et. al.'s, book, Undocumented DOS 2nd Edition
(Addison-Wesley), was invaluable in providing network redirector information
necessary for implementing NTFSDOS. |
Download NTFSDOS (39KB)
|
|