QXL驱动分析(一)

QXL安照windows2000显示架构编写,见下图:

 

QXL实现的功能主要包含两块:Display Driver 和 Video Miniport。

1.  Display Driver

Display Driver以动态链接库qxldd.dll的形式提供,处于内核态,主要是提供绘图API给GDI,这样当最上层的应用需要绘图的时候,通过调用GDI API(gdi32.dll),GDI 调用QXL的绘图API(qxldd.dll)达到绘图目的。

GDI与QXL建立这种关系是在GDI初始化的时候,示例如下:

 

1)QXL Display Driver实现了DrvEnableDriver,DrvEnableDriver是任何显卡驱动的入口点,在GDI初始化的时候会调用该API:

BOOL DrvEnableDriver(ULONG engine_version, ULONG enable_data_size, PDRVENABLEDATA enable_data)

 2)Display Driver在enable_data 里返回了drv_calls[],drv_calls[]包含了一系列的绘图API的函数指针,这样在GDI需要绘制各类图形和文字的时候就可以调用相应的API了:DrvCopyBits,DrvTextOut,DrvStrokePath,DrvFillPath 。。。 

2.  Video Miniport

处于内核模式(miniport->qxl.sys)通常处理必须和内核组件交互的操作。它的责任包括资源管理,例如硬件配置、物理设备内存映射。Miniportdriver必须针对video硬件。它要管理和displaydriver共享的资源(内存资源)

它还要处理:显卡的模式设置交换,多种硬件类型,减少displaydriver的硬件依赖,把video寄存器映射到displaydirver的地址空间。I/O端口可以直接访问

 

1)QXL miniport driver的入口跟所有其他驱动一样,都是 DriverEntry; 它是在装载时被I/O Manager(设备管理器)调用的;

2)DriverEntry主要做的是调用VideoPortInitialize完成初始化,而VideoPortInitialize最主要的是设置了HwFindAdapter,HwInitialize,HwStartIO等函数指针

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值