DOS Compatibility Mode
One performance killer (and early-warning marker) is "DOS Compatibility Mode". Check this via Start button, Settings, Control Panel, System, Performance, and if you see "Compatibility mode paging reduces overall system performance" and "Drive X is using an MS-DOS compatibility mode file system" then you are affected.
Tip: Quicker ways to the System applet are; WinKey+Pause, or Rt-click "My Computer" object and choose Properties.
The normal cause of this is that when Windows follows the existing vectors to see what code is managing the disks, it doesn't recognize the destination as being the usual BIOS services, and so wisely steps aside - assuming some weirdo/incompatible device drivers are active.
Most often the "weirdo/incompatible' driver is a low-level code virus, but other possibilities are incompatible MBR driver overlays to work around BIOS HD addressing limitations (OnTrack, EZ-IDE, Disk Manager, MaxBlast, etc.), genuine custom drivers or controllers, unrecognized real-mode CD-ROM drivers, and other MBR code such as partition or multi-boot managers (unlikely to do this) and disk encryption (very likely to do this).
Some Viruses can cause this problem in a different way. Traditional diskette boot infectors aren't allowed to write to diskette boot sector by the native Win32 diskette driver code, but some are Win9x-aware and get around this by deleting the Win32 driver concerned (HSFlop.pdr, in the System\IOSubSys directory). When this forces the system to fall back on IO.sys diskette driver code, it allows diskette boot sector writes to pass unhindered by Windows. So suspect this cause if only the diskette drives are affected.
Other non-malware causes are where there is ambiguity about a device or its geometry; e.g. BIOS says diskette is 1.2M, PnP says it's 1.44M, etc. This might be expected to apply to a hard drive geometry mismatch between CMOS settings and the volume boot record, though in practice I haven't seen this.
It's also been reported than an invalid disk drive ID within the Master Boot Record (reportedly located as 4 bytes starting from offset 220 decimal) can drop the system into DOS compatibility mode. Note that this is not the volume serial number or volume label that are stored within the volume boot record.
Final cause is because you have requested the system to not use Win32 code for the drives; you are in Safe Mode, ran Windows explicitly using a command line parameter to similar effect, or disabled 32-bit driver support under Control Panel, System, File System, Troubleshooting, or (maybe) have a Win3.yuk-era setting in System.ini
Main dread is a low-level code virus, though - you should formally exclude that. Also, don't confuse this "DOS Compatibility Mode" problem with the various flavors of DOS within Windows 9x.
(C) Chris Quirke, all rights reserved - December 2000, last content update January 2001