Windows 95's USER and GDI implementation was essentially an enhanced version of Win 3.1's. user32.dll and gdi32.dll were just thunking layers. The 16-bit components were guarded by a mutex named "Win16Mutex" to ensure serialized access to them from the 32-bit side.

Reminds me of how even well into the PowerPC era, much of Mac OS was still written in 68000 assembler, including QuickDraw (the equivalent of GDI).

This mutex also protected a lot of other stuff. For example, if you wanted to access a DirectDraw surface, you needed to lock it in RAM, and this acquired the Win16 mutex. So if you then called a GDI function to draw something, it deadlocked the machine.