Why does a Windows driver need to run in kernel mode?
I think you could find some interesting information in this article: “Moving the Window Manager and GDI functionality to kernel mode has removed a large amount of complexity from the code. Applications can now access the GUI implementation subsystems in exactly the same way that they currently implement the “base” (non-GUI) parts of the Win32 API, such as file I/O and memory management, by making a kernel mode trap call at which time the calling thread is switched to a kernel-mode stack and all call parameters are validated before being used by the privileged subsystem. Thus, many thread and process transitions are eliminated.