为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

远程屏幕差异截屏的研究与实现

2011-10-31 2页 pdf 247KB 25阅读

用户头像

is_261876

暂无简介

举报
远程屏幕差异截屏的研究与实现 福 建 电 脑福 建 电 脑 2010年第 11期福 建 电 脑 远程屏幕差异截屏的研究与实现 张洁琼, 章义来 ( 江西省景德镇陶瓷学院信息工程学院 江西 景德镇 333403 ) 【摘 要】: 本文针对远程屏幕传输中的抓屏环节,提出一种用 mirror driver(镜像驱动)开发的新的差异 截屏方式,达到了很好的实时屏幕捕获效果,在只耗用 CPU5%-10%的资源情况下,每秒截取 15到 25 帧屏 幕图像。 【关键词】: 远程屏幕,差异截屏,mirror driver 0、引言 近年来, 远程屏幕共享与控制...
远程屏幕差异截屏的研究与实现
福 建 电 脑福 建 电 脑 2010年第 11期福 建 电 脑 远程屏幕差异截屏的研究与实现 张洁琼, 章义来 ( 江西省景德镇陶瓷学院信息工程学院 江西 景德镇 333403 ) 【摘 要】: 本文针对远程屏幕传输中的抓屏环节,提出一种用 mirror driver(镜像驱动)开发的新的差异 截屏方式,达到了很好的实时屏幕捕获效果,在只耗用 CPU5%-10%的资源情况下,每秒截取 15到 25 帧屏 幕图像。 【关键词】: 远程屏幕,差异截屏,mirror driver 0、引言 近年来, 远程屏幕共享与控制的实时性已成一个 研究热点。远程屏幕的传输速度主要由三方面决定:抓 屏,压缩和网络传输。 本文研究的内容是抓屏,并提出 了一种高效抓屏的实现方法。 由于整幅屏幕图像的数 据量大,如果每次整屏传输,则必与有限的宽带产生矛 盾,出现网络瓶颈,现在的解决办法是将屏幕划分为 N * N 小块,每次只传输变化的区域,即差异截屏。 下面 是对传统差异截屏的介绍及新方法的提出。 1、传统差异截屏 传统差异截屏有三种方式。 一是 GDI 方式。 用 BitBlt函数将屏幕图像数据从 DC拷贝到屏幕 DC相兼 容的内存 DC 中,再用 XOR 运算计算相邻两幅图像的 差异部分。 二是 DirectDraw方式。 用 BItFast函数将主 表面复制到系统内存中的后台表面, 再从后台表面获 得屏幕图像数据。这两种方式都需要捕获整幅图像,速 度非常慢,捕获一副屏幕图像约用 350ms.第三种方式 是采用 hook 截获所有相关的 windows 消息,然后判断 各个消息对哪些屏幕矩形区域有影响, 再把这些矩形 合成一个区域压缩传输, 这种方式速度稍快, 但 CPU 占用高达 90%,别的程序几乎无法同时运行。 2、mirror driver差异截屏 图 1.mirror driver截屏系统结构图 本文采用 mirror driver(镜像驱动)的方式直接截获 底层显卡上的绘图操作,非常快速且 CPU 仅占用 5%- 10%。Mirror driver是由微软研发的 windows NT下的一 种虚拟显示驱动, 因系统发往物理显卡的所有命令都 同样发送给 mirror driver 而得名, 下面是利用 mirror driver截屏的系统结构图,如图 1所示。 该系统包括用户模式 (User Mode) 和内核模式 (Kernel Mode)。 用户应用程序属于用户模式,windows 显示图形的过程是应用程序调用系统 Win32 GDI 函 数发出图形输出请求, 这些请求最终会被传送到内核 模式的图形引擎(Graphics Engine),图形引擎生成绘 图操作并发送给显示驱动。 Mirror driver 由 windows DDK 开发,位于内核模式中显示驱动上一层,包括迷 你小端口驱动和显示驱动两部分, 迷你小端口驱动加 载到系统空间,负责枚举设备和管理设备资源;显示驱 动加载到会话空间,负责实际的 GDI 图形调用,它完 全控制着怎么绘图或者怎么实现透明效果。 安装 mir- ror driver后, 图形引擎生成的绘图操作在发送给显示 驱动的同时也会发送给 mirror driver 的显示驱动,mir- ror driver启动后, 其显示驱动先根据当前屏幕初始化 显示模式,再在系统内存中分配一块内存,名叫绘图表 面(Image Surface),在此存储由收到的绘图操作得到 的屏幕图像。由于此绘图表面位于系统内存,数据读取 速度很快,而且在差异截屏中,并不需要作差异比较运 算,因为 mirror driver中收到的绘图操作本来就是屏幕 变化的部分, 所以 CPU 占用率也很低。 我们仅需将 mirror driver 显示驱动中的绘图操作映射到用户模式 的共享内存文件中,将其压缩发送给远程电脑,再由远 程电脑直接调用绘图操作显示差异截屏的部分, 即可 达到良好的实时控屏效果。 3、具体实现方案 3.1建立开发环境 第一步,下载安装 windows 2000 DDK(安装 MSDN 时会自动安装 DDK).设备驱动工具箱(Driver Develop- ment Kit,DDK).DDK 提供了创建环境、工具、驱动例子 和文档来支持 windows操作系统开发驱动程序。 178 福 建 电 脑2010年第 11期 福 建 电 脑 (上接第 184页) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTex- tWriter(tw); gvDown.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); 4、结语 在 Asp.Net&SQL Server 项目中,使用 Excel 文档作 为中转大大简化了数据的导入与导出。 数据导入前将 数据源转换成 Excel 文档上传至服务器, 再通过事务 控制数据的读出与写入;数据导出则将 SQL 数据源写 出为 Excel文档供客户端下载。 参考文献: [1] 刘智勇. SQL Server 2005 宝典. 北京:电子工业出版社,2007. [2] Andrew J.Brust、Stephen Forte. 精通 SQL Server 2005 程序设 计. 北京:清华大学出版社,2007. 第二步, 建立自定义应用程序向导。 由于 Visual C++并没有提供创建驱动程序的应用程序向导, 需要 手动修改编译和链接选项,这里采用自定义向导,在网 上下载 Driver Wizard 模块,复制生成的 Driver Wizard. awx 到 Visual Studio 的安装目录" … \Microsoft Visual Studio\Common\MsDev98\Template"文件夹即可。当我们 单击菜单命令"File/New…", 会发现弹出的 New 对话 框的 Projects 选项卡中多了一个名称为"Driver Wiz- ard"的工程类型。 3.2安装 mirror driver Windows 2000 DDK 和 windows XP DDK 中都包含 了一个 mirror driver 程序的例子,表 1中三个目录包含 了组件源文件: 表 1:组件源文件目录 安装 mirror driver 镜像驱动步骤如下: 1.在"控制面板"中选"添加硬件",再选"是,我已经 连接了此硬件",再点"下一步",下拉至底部,选择"添 加新的硬件设备"。 2.选择"安装我手动从列表选择的硬件(高级)",再 选择"显示卡"。 3.选择"从磁盘安装",找到"mirror.inf"文件,开始安 装,安装成功后,在设备管理器中"显示卡"选项中多了 一项"Microsoft mirror driver"。 3.3实现流程 首先编写迷你小端口驱动, 迷你小端口驱动的主 要用途是枚举硬件设备或资源并管理它们, 这里由于 没有任何硬件设备,只需简单实现即可。 主函数为 ULONG DriverEntry (PVOID pContext1,PVOID pContext2), 其 中 先 填 充 VIDEO_HW_INITIALIZA- TION_DATA 结构, 再将 VideoPortInitialization 的返回 值作为 DriverEntry 的返回值,返回调用者。 显示驱动连接在 WIN32K.SYS, 仅仅允许调用 Eng* APIs, 这些 API 实际上可以在内核模式和用户模 式下找到。 图 2列出了显示驱动截屏流程图: 图 2 显示驱动截屏流程图 4、测试 下图 3为连续区域截屏测试效果图 图 3 测试图 经多次测试,得到结论利用镜像驱动开发程序,每 秒平均截获 25帧屏幕图像,能取得很好的实时屏幕截 取效果。 参考文献: 1.吴洪才,殷人昆,贺思德.屏幕捕获技术在多媒体教学中的实现 探讨[J].计算机工程,2003,29(13):195_197 2.鲁萍.远程教学系统中的屏幕实时传输技术[J].计算机工程与设 计,2005,26(12):3270_3273 3.祁佳,罗琦,于勇.windows 平台 DDK 开发 WDM 设备驱动研 究及应用[J].微电子学与计算机 2008,25(12):154_156 4.http://msdn.microsoft.com/zh_cn/default.aspx 5.http://msdn.microsoft.com/en_us/library/dd163215.aspx 6.http://www.uvnc.com/feaures/driver.html 179
/
本文档为【远程屏幕差异截屏的研究与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索