Windows 3.11 Driver File Extensions Explained

Microsoft Windows 3.11 relied on specific file extensions to identify and execute device drivers that controlled hardware components and managed system resources. The primary file extensions assigned to device drivers in Windows 3.11 were .DRV for standard 16-bit drivers and .386 for 32-bit virtual device drivers (VxDs). This article breaks down both file types, their roles in Windows 3.11, and how the system loaded them.

Standard Drivers: The .DRV Extension

The most common file extension for standard device drivers in Windows 3.11 was .DRV. These were 16-bit Dynamic Link Libraries (DLLs) that translated standard Windows API calls from system modules like USER and GDI into commands that hardware devices could execute.

Common examples of .DRV files included:

  • VGA.DRV (display driver)
  • MOUSE.DRV (pointing device driver)
  • KEYBOARD.DRV (keyboard driver)
  • COMM.DRV (serial communication driver)
  • SYSTEM.DRV (system timer and core hardware control)

These drivers operated in protected mode and were loaded during system startup via the [boot] section of the SYSTEM.INI configuration file.

Virtual Device Drivers: The .386 Extension

Windows 3.11 operated in 386 Enhanced Mode, taking advantage of the Intel 80386 processor's protected mode capabilities. For low-level hardware virtualization and multitasking between DOS applications and Windows, the operating system used Virtual Device Drivers (VxDs), which carried the .386 file extension.

Virtual device drivers with the .386 extension ran at Ring 0, the highest privilege level of the processor. This allowed them to:

  • Directly manage hardware interrupts and I/O ports.
  • Virtualize physical hardware so multiple DOS virtual machines could share the same device without conflicts.
  • Improve network and 32-bit file access performance, notably through components like VCACHE.386 and IFSMGR.386 in Windows for Workgroups 3.11.

These .386 files were specified and loaded in the [386Enh] section of SYSTEM.INI. While Microsoft transitioned to the .VXD extension for virtual device drivers in Windows 95, Windows 3.11 primarily used .386 for this purpose.