windows的图形引擎也是在windows子系统中提供的,有以下两个方面特点:一是它提供了一套与设备无关的编程接口-GDI,使得应用程序可以适应各种底层显示设备的差异;二是应用程序与图形驱动程序之间的通信足够高效,从而即使在频繁输出和刷新图形元素的情况下,windows也能够为用户提供良好的视觉效果。
在技术上,windows子系统定义了一个稳定的图形体系结构,以便于第三方图形设备硬件厂商可以方便地将他们的视频显示器和打印设备集成到windows中,win32k.sys 通过DDI(显示设备驱动程序接口)与显示器驱动程序打交道,而显示驱动程序通过ENG(图形引擎接口)调用win32k.sys中图形引擎的功能。
win32k.sys的图形引擎实现了基于标准格式位图的图形绘制功能,显示驱动程序在初始化时向图形引擎报告它所支持的物理设备的特征描述。显示驱动程序既可以自己管理图形表面(surface),也可以直接使用图形引擎管理的图形表面。另外,显示驱动程序可以选择地截取GDI的图形绘制操作,也可以将图形绘制操作权交给图形引擎,因此,显示驱动程序在实现功能方面有很大的灵活性。
显示驱动程序可以帮助图形引擎实现针对特定视频适配器的图形功能,视频小端口驱动程序更是针对视频适配器的硬件特性,两者的分工原则是:显示驱动程序执行譬如可以直接访问适配器的视频存储区或者寄存器的针对用户可见并且性能紧急的图形操作;而视频小端口驱动程序执行的一些不常见的图形操作或者一些不能被中断打断或者其他进程抢占的关键的图形操作。
视频端口驱动程序由windows操作系统提供,它实际上是一个动态链接库,用于帮助视频小端口驱动程序实现一些公共的、与图形处理有关的功能,以及小端口驱动程序提供一个系统内核和执行体打交道的环境。视频小端口驱动程序则负责直接的硬件资源的管理和控制。
windows子系统的图形系统,除了支持GDI,还提供了对DirectX的显示支持,包括DirectDraw和Direct3D,因而允许像游戏、多媒体播放器等应用软件绕过GDI图形引擎,直接操纵显示器硬件,从而获得更快的显示速度,并且避免屏幕抖动。