Windows 3.11 Virtual Machine Drivers: SYSTEM.INI

In Microsoft Windows 3.11, the primary configuration file responsible for specifying driver loadings for virtual machines is SYSTEM.INI. Specifically, the [386Enh] section of this initialization file dictates how Windows in 386 Enhanced Mode virtualizes hardware components and loads the necessary 32-bit Virtual Device Drivers (VxDs). This article details the role of SYSTEM.INI, how the [386Enh] section operates, and how virtual machine drivers were defined in the Windows 3.11 environment.

The Role of SYSTEM.INI

In early versions of Windows, hardware initialization and core system settings were managed using plain-text .INI files rather than a unified registry. While WIN.INI handled user-level application preferences and desktop environments, SYSTEM.INI was directly tied to the operating system's interaction with the underlying hardware, memory management, and system-level drivers.

The [386Enh] Section

Windows 3.11 ran exclusively in 386 Enhanced Mode, abandoning the Standard Mode supported in earlier releases. In this mode, the operating system used the protected-mode capabilities of the Intel 80386 processor (and newer) to create and supervise virtual machines.

To enable multiple MS-DOS environments and Windows itself to share hardware safely, SYSTEM.INI utilized the [386Enh] section. This section explicitly declared the Virtual Device Drivers (VxDs) required to manage access to physical devices like display adapters, serial ports, network interfaces, and disk controllers.

Driver Loading Syntax

Drivers designated for virtual machine management were loaded using the device= directive within the [386Enh] block. Windows supported two methods for declaring these drivers:

  1. Internal Drivers: Many essential VxDs were packaged directly inside the monolithic WIN386.EXE file. These drivers were referenced using an asterisk followed by the driver name.
    [386Enh]
    device=*vpicd
    device=*vdmad
    device=*vshare
  2. External Drivers: Third-party hardware or updated subsystems loaded separate files, typically with a .386 extension, stored in the SYSTEM directory.
    [386Enh]
    device=vnetbios.386
    device=vip.386

Function of Virtual Device Drivers (VxDs)

When an MS-DOS prompt or application was launched in Windows 3.11, the system spawned a new Virtual 8086 Mode machine. The drivers declared under [386Enh] intercepted hardware calls from these virtual machines. Instead of allowing a DOS application to manipulate hardware ports directly—which would crash concurrent tasks—the VxD simulated the expected hardware response, ensuring stable multitasking across all running virtual machines.