Windows 95 Display Changes Without System Reboots
Windows 95 introduced the ability to change screen resolutions and refresh display configurations dynamically, eliminating the constant system reboots that plagued earlier versions like Windows 3.1. This article explains the technical mechanisms behind this feature, focusing on the decoupling of display hardware drivers, the new display mini-driver architecture, the implementation of dynamic Win32 APIs, and the system-wide messaging system that allowed running applications to adapt to new display boundaries on the fly.
In Windows 3.1, the display driver was loaded as a monolithic, static
component during the boot process. Changing screen resolution or color
depth required modifying the SYSTEM.INI file and restarting
the entire graphical environment, which effectively meant rebooting the
system. The Graphics Device Interface (GDI) and the core window manager
(USER) were hardcoded to the initial screen metrics provided at
startup.
Windows 95 resolved this by replacing the monolithic driver model with a modular display mini-driver architecture coupled with a universal Device-Independent Bitmap (DIB) engine. The hardware-specific mini-driver handled direct interaction with the video card, while the universal DIB engine managed common drawing operations. This separation allowed Windows 95 to unload, reconfigure, or reinitialize the hardware-facing portion of the driver without crashing the underlying graphics subsystems.
To control this process programmatically, Windows 95 introduced the
ChangeDisplaySettings Win32 API. When a user selected a new
resolution in the Display Properties control panel or used the Windows
95 PowerToys "QuickRes" utility, this API evaluated whether the active
video driver supported dynamic mode switching. If the driver reported
the capability, the operating system bypassed the reboot prompt and
instructed the driver to reallocate its frame buffer and reprogram the
video card's digital-to-analog converter (RAMDAC) and timing
registers.
Once the hardware mode switched, Windows needed to accommodate
running applications without forcing them to close. The operating system
updated its internal coordinate system for the desktop and broadcasted
the WM_DISPLAYCHANGE message to all top-level windows. This
message carried the new horizontal resolution, vertical resolution, and
color bit-depth in its parameters. Applications built for Windows 95
intercepted this message to repaint their windows, clamp off-screen
interface elements back onto the visible desktop, and recalculate
coordinate-dependent assets.
Because a bad display mode could leave a user with an unreadable or
completely black screen, Windows 95 accompanied dynamic changes with a
safety timer. If the user did not click an acknowledgment prompt within
15 seconds, the OS called ChangeDisplaySettings again to
restore the previous resolution and refresh rate automatically.
While entirely replacing a video driver with one from a different vendor or altering deep hardware states still necessitated a full restart, compliant display mini-drivers successfully handled resolution, color depth, and refresh changes entirely in memory, establishing the foundation for modern dynamic display management.