Windows 3.11 32-Bit File Access on IDE Drives

Microsoft Windows for Workgroups 3.11 significantly improved system performance on IDE hard drives by replacing the legacy 16-bit real-mode MS-DOS and BIOS disk routines with protected-mode drivers. By combining 32-bit disk access via FastDisk technology with the newly introduced 32-bit file access subsystem, Windows 3.11 allowed the operating system to manage both the FAT file system and the underlying IDE hardware directly in 32-bit protected mode, completely eliminating costly CPU mode switches.

The Problem with 16-Bit Real-Mode I/O

In early versions of Windows running in 386 Enhanced Mode, every file operation required transitioning the CPU from protected mode back to real mode. When an application requested a file read or write, Windows passed the request to MS-DOS via interrupt INT 21h. MS-DOS then processed the FAT file structure and called the system BIOS using INT 13h. Finally, the BIOS handled the hardware-level communication with the hard disk controller.

This process forced the processor to switch between 16-bit real mode and 32-bit protected mode repeatedly, generating significant CPU overhead, stalling multitasking, and limiting throughput to the speed of standard BIOS routines.

32-Bit Disk Access and FastDisk (WDCTRL)

Windows 3.1 initially addressed the lower half of this problem by introducing 32-Bit Disk Access (32BDA), often referred to as FastDisk. FastDisk bypassed the system BIOS (INT 13h) through a protected-mode Virtual Device Driver (VxD).

For IDE hard disk drives, Windows relied on an internal driver named *wdctrl. Because early IDE drives adhered strictly to the Western Digital WD1003 controller interface standard, *wdctrl could communicate directly with the drive controller's registers using standard I/O ports (typically ports 1F0h through 1F7h). When an INT 13h call occurred, the driver intercepted it in protected mode and manipulated the IDE drive hardware directly, avoiding any drop to real-mode BIOS code.

32-Bit File Access in Windows 3.11

Windows for Workgroups 3.11 completed the transition by bypassing MS-DOS itself (INT 21h) through the introduction of 32-Bit File Access (32BFA). This subsystem consisted of three key components:

  1. IFSHLP.SYS: A real-mode stub driver loaded in CONFIG.SYS that hooked DOS interrupts during early boot and directed file requests to Windows once protected mode was active.
  2. Installable File System (IFS) Manager: A protected-mode arbiter that received file I/O calls from applications and routed them to the appropriate file system driver.
  3. VFAT.386 and VCACHE.386: VFAT.386 was a full 32-bit protected-mode implementation of the FAT16 file system, allowing Windows to calculate cluster allocations, navigate directories, and track file tables without MS-DOS. It worked alongside VCACHE.386, a 32-bit dynamic disk cache that replaced the 16-bit real-mode SMARTDRV.EXE.

The Complete End-to-End 32-Bit Pipeline

When both 32-bit file access and 32-bit disk access were enabled on an IDE drive, the entire storage path remained in 32-bit protected mode:

  1. An application requested a standard file read or write.
  2. The IFS Manager intercepted the request and forwarded it directly to VFAT.386.
  3. VFAT.386 checked the protected-mode cache (VCACHE.386) for the requested sectors.
  4. If a physical read or write was required, VFAT.386 translated the request into logical sector addresses and passed them straight to the FastDisk driver (*wdctrl).
  5. *wdctrl issued commands directly to the IDE controller hardware via I/O ports.

By coupling VFAT.386 with *wdctrl, Windows 3.11 allowed IDE drives to transfer data without ever dropping back into real-mode DOS or invoking BIOS interrupts. This drastically cut CPU utilization, kept background tasks running smoothly during heavy disk operations, and formed the architectural foundation for the storage system later refined in Windows 95.