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.