QXL驱动分析(一)
来源:互联网 发布:网络剧 有毒 在线播 编辑:程序博客网 时间:2024/06/05 23:04
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等函数指针
- QXL驱动分析(一)
- QXL驱动分析(一)
- QXL驱动分析(一)
- QXL驱动分析(二)——FindAdapter
- QXL驱动分析(二)——FindAdapter
- QXL驱动分析(二)——FindAdapter
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- USB驱动分析(一)
- USB驱动分析(一)
- OTG驱动分析(一)
- USB驱动分析(一)
- rtl8812驱动分析(一)
- LCD驱动分析(一)
- NAND驱动分析--(一)
- alsa驱动源码分析(一)
- 开发者必备的6款源码搜索引擎
- ORA-00979 不是 GROUP BY 表达式”
- Jquery easyui tree 一些常见操作
- Hibernate 初步入门
- OnScrollListener回调分析
- QXL驱动分析(一)
- Java定时任务的实现
- 云存储加密数据检索面临挑战
- 分享android开发过程中用到的一些开源框架
- 如何通过gps得到当前位置
- (step3.2.1)hdu 1003(Max Sum——简单DP)
- nagios监控主机
- Vertical Text Centering in an Edit Control(CEdit 单行 垂直居中)
- sqlserver树形显示