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.