Role of VMM32.VxD in Windows 95 Boot Process

During the startup sequence of Windows 95, the VMM32.VxD file served as the cornerstone of the transition from real-mode MS-DOS to a 32-bit preemptive multitasking environment. It functioned as both an executable loader and an archive file, bundling core Virtual Machine Manager components and essential virtual device drivers (VxDs) tailored to the host computer's specific hardware configuration. This article examines the critical responsibilities of VMM32.VxD during boot, including CPU mode switching, virtual device driver management, hardware virtualization, and the handoff to the graphical user interface.

The Transition to 32-Bit Protected Mode

The boot sequence of Windows 95 began in standard 16-bit real mode via IO.SYS and MS-DOS 7.0. Once basic configuration files (CONFIG.SYS and AUTOEXEC.BAT) were processed, WIN.COM was executed to initiate the Windows subsystem.

WIN.COM located and loaded VMM32.VxD into memory. Once executed, VMM32.VxD switched the x86 processor from 16-bit real mode into 32-bit flat protected mode. This operation initialized the processor's Global Descriptor Table (GDT), Interrupt Descriptor Table (IDT), and enabled memory paging, thereby laying the technical foundation for the Windows 95 operating environment.

Archival Structure and Driver Initialization

Unlike conventional monolithic files, VMM32.VxD was a customized archive generated during the Windows 95 installation process. To reduce disk read operations and accelerate boot times, Setup compiled the core Virtual Machine Manager (VMM.VXD) along with standard hardware drivers directly into the single VMM32.VxD file.

During initialization, VMM32.VxD unpacked and loaded these critical embedded drivers in a predefined order:

  • CONFIGMG (Configuration Manager): Handled Plug and Play enumeration, device conflict resolution, and initial hardware discovery.
  • VPICD (Virtual Programmable Interrupt Controller Device): Managed physical and virtual hardware interrupts.
  • VDD (Virtual Display Device): Managed the transition of the video hardware into protected mode.
  • VWIN32: Provided basic system services, including thread management, interrupt reflection, and synchronization primitives.
  • VCOMM: Managed serial and communications hardware.

Driver Overriding Mechanism

VMM32.VxD checked the SYSTEM.INI file and the \WINDOWS\SYSTEM\VMM32\ directory before initializing its embedded components. If an updated or third-party replacement for an internal driver existed as an individual file on disk (for example, a newer VPICD.VXD), VMM32.VxD loaded the external file instead of the embedded copy. This mechanism allowed hardware vendors to patch system drivers without requiring Windows to rebuild the entire VMM32.VxD archive.

Virtual Machine Creation and OS Handoff

Once all core services and device drivers were operational, VMM32.VxD created the "System Virtual Machine." This virtual machine housed the 32-bit Win32 subsystem, the 16-bit Win16 compatibility layer, and shared system services. It also configured the infrastructure required to spawn separate Virtual 8086 Mode machines for legacy DOS applications.

With memory paging active, hardware abstracted, and the core device drivers operational, VMM32.VxD loaded KERNEL32.DLL, GDI32.DLL, and USER32.DLL, which then initialized the graphical user interface and executed EXPLORER.EXE, completing the boot process.