文章摘录自《Windows内核原理与实现》一书。
图形用户界面是 Windows 操作系统的重要特色,这也是在 Windows 子系统中提供的。概括而言,Windows 的图形系统有两方面特点:首先,它提供了一套与设备无关的编程接口,即 GDI,这使得应用程序可以适应各种底层显示设备的差异;其次,应用程序与图形设备驱动程序之间的通信足够高效,从而使在频繁输出和刷新图形元素的情况下,Windows也能够为用户提供良好的视觉效果。
Windows子系统定义了一个稳定的图形体系结构,以便第三方的图形设备硬件厂商可以方便地将他们的视频显示器和打印设备集成到Windows 中。图 9.12 显示了 Windows 子系统的图形部分的体系结构(适用于Windows2000 以后的系统)。
在 Windows NT 4以前,图形显示是在子系统的用户模式进程(即 csrss.exe)中被处理的,从而 Windows NT 4开始,这部分功能转移到了内核中,允许应用程序的图形请求被直接通过显示驱动程序转发到视频适配器。在图 9.12中,子系统 DLL被动态链接到应用程序进程中,它们接收应用程序的图形请求,并将其转发到内核模式下的图形引擎中。
内核模式的图形引擎(即Windows 子系统的 GDI)位于 win32k.sys 中,其职责是接受来自用户模式的图形请求,并且完成通用的、不涉及硬件的图形绘制功能,而把涉及硬件的或者需要特殊支持的图形功能交给显示驱动程序或者转发给视频端口驱动程序来完成。图形引擎在一个标准格式的位图(单个平面的plane),像素可以是1,2,4,8,16或32位,每行上的像素连续存放,并且每行数据以 4 字节为对齐边界上执行各种绘制操作。
如有必要,则通过 DDI (Device Driver In