显示驱动教程(3)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Video Miniport Driver

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

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

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

必须实现的函数:

l DriverEntry:初始化video miniport driver。

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

l HwVidGetPowerState:查询设备是否支持所请求的电源状态。

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

l HwVidInitialize:初始化设备。

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

l HwVidStartIO:处理特定的VRP。

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

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

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

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

选择实现的函数:

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

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

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

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航