显示驱动教程(3)

Video Miniport Driver

 

 

显示驱动程序被分成Display驱动和Video Miniport驱动(下面将它们简称为displayminiport),它们之间的关序如上图所示。每个video miniportdisplay提供硬件级支持,display可以通过Graphics engine提供的EngDeviceIoControl函数向下面的miniport发出请求。

 

Displayminiport都可以直接操作显卡硬件,它们之间只是分工不同。通常处理那些实时性要求较高的操作,比如应用程序发出的画线、位图拷贝等图形操作。Miniport则处理那些不经常发生的或者完全实时的操作。完全实时表示这些操作不会被中断或其他进程抢先。另外display不能处理设备中断,并且它还需要miniport将显卡上的寄存器(显存和控制寄存器)映射到display的虚拟地址空间中。

除了DriverEntry之外miniport还应该实现其他的接口函数。这些函数被分成:必须实现、在某种前提条件必须实现、以及选择实现,下面是这些函数的简单描述。

 

必须实现的函数:

l         DriverEntry:初始化video miniport driver

l         HwVidFindAdapter:获取设备访问的地址范围。如果有需要可以检测设备类型。

l         HwVidGetPowerState:查询设备是否支持所请求的电源状态。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

l         HwVidGetVideoChildDescriptor:枚举挂接在该显卡上的子设备,比如电视接收器等等。

l         HwVidInitialize:初始化设备。

l         HwVidSetPowerState:为指定的设备设置电源状态。

l         HwVidStartIO:处理特定的VRP

 

在某种前提条件必须实现的函数(是否实现这些函数依赖于显卡的特性以及驱动程序的设计):

l         HwVidInterrupt:如果显卡会产生中断,你应该实现这个函数来处理中断。

l         HwVidResetHw:将显卡重新设置成字符模式。

l         HwVidSynchronizeExecutionCallback:用来同步访问共享数据,类似Win32下的临界区,避免被中断处理程序抢先。如果miniport中的其他函数需要和HwVidInterrupt函数共享设备状态时就需要实现这个函数。

 

选择实现的函数:

l         HwVidLegacyResources:返回一份资源清单,这些资源没有在设备的PCI配置空间给出。

l         HwVidQueryDeviceCallbackHwVidQueryNamedValueCallback:处理存储在注册表中的配置信息。

l         HwVidQueryInterface:返回miniport实现的函数,以便其他驱动程序访问显卡上的子设备。

l         HwVidTimer:当计时器被启动后,每一秒钟系统每秒钟会调用这个函数一次。

l         SvgaHwIoPortXxx:在x86机器上,DOS全屏幕程序可以通过它们访问I/O port

 
阅读更多
个人分类: Display Driver
想对作者说点什么? 我来说一句

STM32 TFT3.2彩屏R61509V测试程序

2013年08月31日 994KB 下载

基于basys3的VGA驱动设计(VHDL)

2016年04月21日 597KB 下载

3个IO口驱动6个LED

2009年04月04日 649KB 下载

SSD1306的驱动程序

2014年03月16日 252KB 下载

TM1628 驱动LED软件详细解析

2013年11月06日 1.04MB 下载

360随身wifi3代网卡独立驱动

2017年04月18日 2.65MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭