CN101105746B - 采用过滤驱动获取图形设备接口调用的方法 - Google Patents

采用过滤驱动获取图形设备接口调用的方法 Download PDF

Info

Publication number
CN101105746B
CN101105746B CN200610103237A CN200610103237A CN101105746B CN 101105746 B CN101105746 B CN 101105746B CN 200610103237 A CN200610103237 A CN 200610103237A CN 200610103237 A CN200610103237 A CN 200610103237A CN 101105746 B CN101105746 B CN 101105746B
Authority
CN
China
Prior art keywords
function
interface
display driver
pointer
true
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200610103237A
Other languages
English (en)
Other versions
CN101105746A (zh
Inventor
李洪伟
孙成昆
颜毅强
彭绍平
刘渤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN200610103237A priority Critical patent/CN101105746B/zh
Priority to DE102007031509A priority patent/DE102007031509A1/de
Priority to US11/776,780 priority patent/US8395628B2/en
Priority to JP2007184289A priority patent/JP4856019B2/ja
Publication of CN101105746A publication Critical patent/CN101105746A/zh
Application granted granted Critical
Publication of CN101105746B publication Critical patent/CN101105746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1415Digital output to display device ; Cooperation and interconnection of the display device with other functional units with means for detecting differences between the image stored in the host and the images displayed on the displays
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

公开了一种采用过滤驱动截取图形设备接口调用的方法,所述过滤驱动对图形设备接口引擎和真实显示驱动是透明的,所述方法包括步骤:复制从真实显示驱动返回的DDI函数表;修改需要截取屏幕更新的真实显示驱动的DDI函数;创建辅助缓冲区,作为截获的屏幕更新的更新缓冲区;以及对更新缓冲区进行后继处理。利用本发明的方法,可以通过软件来实现对本地计算机的视频和3D加速支持,为用户提供了高质量的画面和显示效果。与现有技术的Mirror体系相比,由于本发明未采用Mirror体系,系统的图形设备接口引擎并不知道存在过滤驱动,显卡的视频和3D加速功能仍然存在,这些功能在系统中仍然可以获得支持,采用视频和3D加速的应用程序可以正常运行。

Description

采用过滤驱动获取图形设备接口调用的方法
技术领域
本发明涉及计算机图形及图像处理领域,具体涉及一种通过过滤驱动获取计算机显示设备图形数据的方法。
背景技术
PC计算能力的增强和配套的图形处理器使得PC上的图形图像处理能力逐步增强,从早期的2D位图、向量应用走向支持3D和视频。丰富内容带给用户更好的体验的同时也给需要同步获得显示内容的应用,比如远程控制、远程投影、多用户共享和屏幕静态截图等带来很大挑战,特别是需要实时获取屏幕内容的应用。
关于实时获取屏幕内容的技术有软件实现方式和硬件实现方式。通过硬件来实时获取屏幕内容的技术是直接截取显示适配器的视频输出信号,并将其作为输入源,输入到视频压缩卡中,通过压缩卡压缩后以流的形式记录下来。这种硬件实现方案比较简单,由于使用硬件压缩卡处理视频信号,对计算机的处理能力没有额外要求。但是这种方案的缺点是需增加额外的视频压缩卡硬件,设备配置复杂,导致用户使用不便。此外,在硬件实现方案中,信号经过两次数模转换,损失了一定精度,存在较大失真,不能为用户提供高质量的画面。
下面简单介绍通过软件来实时获得屏幕内容的技术。在Windows操作系统下,应用程序通过GDI(图形设备接口)完成屏幕的绘制,GDI支持图元操作和点阵接口。图元级接口相对高级,需要的描述数据少,但无法直接显示,需要Windows显示体系和显卡硬件配合才能转换成点阵输出。点阵级接口相对低级,数据量大,但截获的数据可以直接显示。因此,在软件实现方案中,截获GDI数据既可以在点阵层次进行,也可以在图元调用层次进行,或者二者结合进行。
第一种软件实现方案是采用一个用户态应用程序定时获取FrameBuffer(帧缓冲),然后将获取的帧图像进行后继处理。第二种软件实现方案是采用微软公司定义的显示Mirror体系,加载映象显示驱动程序(mirror),实时复制当前显示屏的各个更新,然后将映象后的数据进行压缩以并流的形式记录下来。
在第一种软件实现方案中,每次获取的是整个屏幕,不管区域有没有更新。而且该方案只能采用点阵接口,所以数据量大、处理慢、带宽要求高,适用于静态单个屏幕截获处理的应用。在第二种软件实现方案中,只获取屏幕变化的部分,因而获取图像数据的速度更快,在图像显示的同时即可被复制(实时性更高),被广泛采用。但是,由于视频和3D处理源数据量大,而且需要复杂的本地计算,通常由显卡硬件的GPU(图形处理单元)进行加速处理,所以微软定义Mirror体系时自动禁止了本地计算机的视频和3D加速支持,使得依赖于3D和视频加速的应用程序无法运行,采用Mirror的应用程序的运行效果受到很大限制。
因此,需要寻找一种类似Mirror的快速截获GDI调用的方法,同时支持视频和3D加速。
发明内容
鉴于上述问题,完成了本发明。本发明的目的是提供一种采用图形过滤驱动获取图形设备接口调用的方法,以支持本地计算机的视频和3D加速。
在本发明的一个方面,提出了一种采用过滤驱动截取图形设备接口调用的方法,所述过滤驱动对图形设备接口引擎和真实显示驱动是透明的,所述方法包括步骤:复制从真实显示驱动返回的DDI函数表;修改需要截取屏幕更新的真实显示驱动的DDI函数;创建辅助缓冲区,作为截获的屏幕更新的更新缓冲区;以及对更新缓冲区进行进一步处理。
利用本发明的方法,可以通过软件来实现对本地计算机的视频和3D加速支持,为用户提供了高质量的画面和显示效果。与现有技术的Mirror体系相比,由于本发明未采用Mirror体系,系统的图形设备接口引擎并不知道存在过滤驱动,显卡的视频和3D加速功能仍然存在,这些功能在系统中仍然可以获得支持,采用视频和3D加速的应用程序可以正常运行。
附图说明
图1示出了根据本发明实施例的方法中所使用的图形过滤驱动与GDI引擎和真实显示驱动之间的逻辑关系。
图2是用来说明根据本发明实施例的方法的流程图。
图3是示出了在加载图形过滤驱动的过程中需要复制和处理的接口的名称的DDI列表。
图4以记录更新点阵的TextOut为例示出了上述方法的步骤中的处理流程。
具体实施方式
以下对照附图详细说明本发明的具体实施方式。在下面的说明中省略了本领域公知的一些技术的细节,因为对这些公知技术的详细描述将会导致本发明的一些特点和优点变得不清楚。
在Windows操作系统中,显示驱动被要求支持一系列图形设备驱动接口DDI,这些接口大致可以分为管理驱动的设备对象、Surface、鼠标、设备位图、DirectX和绘制DDI。一个程序只要实现了DDI接口就可以作为显示驱动被系统加载。
图1示出了根据本发明实施例的方法中所使用的图形过滤驱动150与GDI引擎100和真实显示驱动200之间的逻辑关系。
如图1所示,本发明在GDI引擎100与真实显示驱动200之间加入了一个过滤层,称为图形过滤驱动150。通过安装该图形过滤驱动150并对系统进行初始化,该过滤层对Windows GDI引擎100表现为真实显示驱动200,而对真实显示驱动200则表现为Windows GDI引擎100。也就是说,这里的图形过滤驱动150对GDI引擎100和真实显示驱动200是透明的。
对于每个显示更新对应的绘制DDI,图形过滤驱动150的DDI首先获得调用,执行时先调用真实显示驱动的对应DDI完成本地显示更新,然后将该调用参数保存到调用更新表300中,或者调用GDI引擎100转化为点阵,同时记录下显示的画面中变化的区域。
图2是用来说明根据本发明实施例的方法的流程图.如图2所示,在步骤S210,将上述的图形过滤驱动150安装为当前显卡的虚拟驱动.
在安装过程中,安装程序获取当前系统的主显示设备的PNDDeviceID(即插即用设备标识),枚举并匹配显卡注册项{4d36e968-e325-11ce-bfc1-08002be10318}下每个注册项的DeviceID。对于匹配的注册项,修改其Settings(设置)键下的InstalledDisplayDrivers注册项,将该Key的值修改为本发明的图形过滤驱动150的名字。
在步骤S220,操作系统通过图形过滤驱动的名字获得显示驱动的模块名称并加载到系统中,从而将图形过滤驱动150加载到系统中。
在系统加载图形过滤驱动期间,在驱动入口函数DrvEnableDriver中,图形过滤驱动150加载真实显示驱动200,并将真实显示驱动200返回的DDI函数表复制一份,对需要截取屏幕更新的DDI函数,将其在函数表中的值修改成指向过滤驱动对应函数的指针,同时保存原始函数指针,对不需要处理的函数,比如视频和3D加速接口,仍然保留为真实显示驱动的函数指针,复制的函数表返回给GDI。这样,图形过滤驱动150实现了对真实显示驱动200调用的过滤功能。
图3是示出了在加载图形过滤驱动的过程中需要复制和处理的接口的名称的DDI列表。
在这些接口DDI中,图形过滤驱动150需要实现所有的驱动管理DDI,以实现将GDI要求的驱动加载、驱动禁止等功能截获下来,创建内部的管理数据,并将调用转发给真实驱动的相应函数。
此外,绘制DDI是截获内容的重点,所有的屏幕更新都是通过绘制DDI完成的,在这些函数中,图形过滤驱动150记录下更新DDI的参数和更新的源数据,保存到更新调用表300中,并调用真实显示驱动200的相应DDI完成本地绘制。如果需要,图形过滤驱动150也可以将更新DDI的调用转换成点阵,保存到更新帧缓冲中。
此外,鼠标控制DDI实现鼠标位置和形状更新,图形过滤驱动150将这些信息记录下来供后继处理400。
在步骤S230,图形过滤驱动200的DrvEnableSurface DDI获得调用,该DDI负责创建一个主Surface,后继的所有绘制DDI的输出结果都保存到该主Surface中,如果过滤驱动要保存更新缓冲,图形过滤过滤驱动150创建一个辅助Surface,作为截获的屏幕更新的更新缓冲,当后继的绘制DDI被调用时,将绘制点阵保存在这个辅助Surface中。
在步骤S240,需要截取屏幕更新的绘制DDI得到调用,图形过滤驱动150将调用参数和更新数据源保存到更新调用表300中,先通过保存的原始函数指针调用真实驱动的DDI,完成真实显卡的显示更新,如果要保存帧缓冲,图形过滤驱动150自己或者借助GDI引擎100在辅助Surface上完成绘制。这样,在辅助缓冲区中的内容就与显示屏幕得到了同步更新。
图4以记录更新点阵的TextOut为例示出了上述方法的步骤S240中的处理流程。
如图4所示,在步骤S410,系统首先判断真实显示驱动200是否支持该DDI,如果支持,则在步骤S420,调用真实显示驱动200的函数更新本地显示,否则跳过本地更新。
然后,在步骤S430,系统判断图形过滤驱动150是否在工作状态,如果不工作,则结束.如果图形过滤驱动在处于截屏状态,则在步骤S440,查找在DrvEnablePDEV阶段创建的过滤驱动的结构.在步骤S450,判断是否找到.如果找到,说明该结构的确是过滤驱动创建,在步骤S460,锁定辅助Surface,在步骤S470,将点阵绘制到该辅助Surface中并在步骤S480解锁该辅助Surface.在步骤S490,对获得的点阵进行后继处理.
本发明的采用过滤驱动截获GDI数据的方法可以应用于支持视频和3D应用的无线投影方案中,在该方案中对截获的绘制DDI通过调用GDI Engine的对应函数完成绘制处理,然后将保存在更新缓冲区中的点阵通过其它模块进行了压缩编码并通过网络发送到投影机远端;也可以将截获的绘制元语进行区分,对涉及点阵操作的DDI的点阵数据进行压缩处理,而对非点阵数据则直接处理更新缓冲中的绘制元语,两种数据一起发送到投影机端进行解压缩和元语绘制,以复制主机端的画面。
以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变换或替换,都应涵盖在本发明的包含范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (5)

1.一种采用过滤驱动截取图形设备接口调用的方法,所述过滤驱动对图形设备接口引擎和真实显示驱动是透明的,所述方法包括步骤:
复制从真实显示驱动返回的设备驱动接口函数表;
将需要截取屏幕更新的设备驱动接口函数在复制的函数表中的值修改成指向过滤驱动对应函数的指针;
将复制的设备驱动接口函数表返回给图形设备接口;
创建辅助缓冲区,作为截获的屏幕更新的更新缓冲区;以及
对更新缓冲区进行后继处理。
2.根据权利要求1所述的方法,其特征在于,所述将需要截取屏幕更新的设备驱动接口函数在复制的函数表中的值修改成指向过滤驱动对应函数的指针包括:
在将所述值修改成指向过滤驱动对应函数的指针的同时保存原始函数指针。
3.根据权利要求2所述的方法,其特征在于,在将所述值修改成指向过滤驱动对应函数的指针的同时保存原始函数指针的步骤后,还包括:
调用真实显示驱动的相应绘制设备驱动接口,以完成本地的显示更新。
4.根据权利要求3所述的方法,其特征在于,所述调用真实显示驱动的相应绘制设备驱动接口,以完成本地的显示更新的步骤包括:
通过保存的原始函数指针调用真实显示驱动的绘制设备驱动接口,完成真实显卡的显示更新。
5.根据权利要求1所述的方法,其特征在于,所述对更新缓冲区进行后继处理的步骤包括:
对涉及点阵操作的设备驱动接口的点阵数据进行压缩处理,而对非点阵数据则直接处理更新缓冲区中的绘制元语。
CN200610103237A 2006-07-14 2006-07-14 采用过滤驱动获取图形设备接口调用的方法 Active CN101105746B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN200610103237A CN101105746B (zh) 2006-07-14 2006-07-14 采用过滤驱动获取图形设备接口调用的方法
DE102007031509A DE102007031509A1 (de) 2006-07-14 2007-07-06 Verfahren zum Erfassen eines Graphikvorrichtungsschnittstellenaufrufs unter Verwendung eines Filtertreibers
US11/776,780 US8395628B2 (en) 2006-07-14 2007-07-12 Method for acquiring graphics device interface invocation by using filter driver
JP2007184289A JP4856019B2 (ja) 2006-07-14 2007-07-13 グラフィックフィルタドライバを用いてグラフィックデバイスインターフェイスコールを取得する方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200610103237A CN101105746B (zh) 2006-07-14 2006-07-14 采用过滤驱动获取图形设备接口调用的方法

Publications (2)

Publication Number Publication Date
CN101105746A CN101105746A (zh) 2008-01-16
CN101105746B true CN101105746B (zh) 2010-05-12

Family

ID=38825477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610103237A Active CN101105746B (zh) 2006-07-14 2006-07-14 采用过滤驱动获取图形设备接口调用的方法

Country Status (4)

Country Link
US (1) US8395628B2 (zh)
JP (1) JP4856019B2 (zh)
CN (1) CN101105746B (zh)
DE (1) DE102007031509A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100583022C (zh) * 2006-09-27 2010-01-20 联想(北京)有限公司 获取计算机屏幕图像的方法
CN101464785B (zh) * 2007-12-17 2010-12-08 联想(北京)有限公司 基于wddm的屏幕获取方法及带多显示器的计算机系统
US20110063306A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
CN103024318A (zh) * 2012-12-25 2013-04-03 青岛海信信芯科技有限公司 电视图形加速处理方法及装置
CN103092623B (zh) * 2013-01-18 2016-05-18 福建升腾资讯有限公司 一种基于多表面显示截获的变化数据的方法
CN103617191B (zh) * 2013-11-07 2017-06-16 北京奇虎科技有限公司 使用硬件加速实现浏览器渲染的方法和浏览器
US10102664B1 (en) * 2014-12-03 2018-10-16 Charles Schwab & Co., Inc. System and method for causing graphical information to be rendered

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496183B1 (en) * 1998-06-30 2002-12-17 Koninklijke Philips Electronics N.V. Filter for transforming 3D data in a hardware accelerated rendering architecture
WO1999035854A2 (en) * 1997-12-31 1999-07-15 Koninklijke Philips Electronics N.V. Apparatus and method for dynamically controlling brightness of objects on a display monitor
US7043697B1 (en) * 2000-05-15 2006-05-09 Intel Corporation Virtual display driver
US7221381B2 (en) * 2001-05-09 2007-05-22 Clairvoyante, Inc Methods and systems for sub-pixel rendering with gamma adjustment
CN100337190C (zh) 2005-09-22 2007-09-12 北京网梯科技发展有限公司 在远端计算机上将本地计算机显示内容显示回放的方法
US7619622B2 (en) * 2006-03-31 2009-11-17 Microsoft Corporation Selective rendering for driver classes

Also Published As

Publication number Publication date
JP4856019B2 (ja) 2012-01-18
US20080012792A1 (en) 2008-01-17
CN101105746A (zh) 2008-01-16
US8395628B2 (en) 2013-03-12
JP2008046616A (ja) 2008-02-28
DE102007031509A1 (de) 2008-01-17

Similar Documents

Publication Publication Date Title
CN101105746B (zh) 采用过滤驱动获取图形设备接口调用的方法
US20060079214A1 (en) Method and apparatus for showing wireless mobile device data content on an external viewer
US8199136B2 (en) Image data transmission apparatus and method for image display system
US8878833B2 (en) Systems, methods, and apparatus for recording of graphical display
US5432900A (en) Integrated graphics and video computer display system
CN101465115B (zh) 一种大屏幕显示系统的网络显示方法
CN101211258B (zh) 完整获取GDI和DirectX数据的方法
US20060053233A1 (en) Method and system for implementing a remote overlay cursor
JP2002278532A (ja) Osdにおけるトランスペアレント具現装置及び方法
CN100356778C (zh) 在电视机嵌入式Linux上进行人机交互界面快速开发的方法
CN114968152B (zh) 减少virtio-gpu额外性能损耗的方法
CN101464785B (zh) 基于wddm的屏幕获取方法及带多显示器的计算机系统
CN110187858B (zh) 图像显示方法及系统
US20010043226A1 (en) Filter between graphics engine and driver for extracting information
CN115052043B (zh) 一种云桌面的视频传输方法、电子设备、装置及介质
US20160063667A1 (en) Graphic Remoting System With Masked DMA And Graphic Processing Method
CN110753194B (zh) 双屏异显方法、存储介质及电子设备
CN114089896A (zh) 一种渲染图像截取方法及装置
TWI405120B (zh) Use the filter driver to get the graphical device interface call method
US9892707B2 (en) Decompressing stored display data every frame refresh
CN113504870A (zh) Hypervisor智能驾驶舱输入法共享系统及方法
KR20090041166A (ko) 이종의 그래픽 시스템 기반 어플리케이션들의 화면 공유방법 및 그 장치
US20060274034A1 (en) Apparatus and method accommodating to operating system for processing screen data
JP2006285901A (ja) 透明ウィンドウを利用した画像の転送
JPH11212690A (ja) 画像表示装置及びその方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant