首页> 中国专利> 用于图形遥控系统的同步图形和区域数据

用于图形遥控系统的同步图形和区域数据

摘要

用于遥控系统的区域数据和图形数据被同步地加以搜集并被发送到远程显示器,同时,保持该区域数据与该图形数据之间的同步性。在一项实现中,同步区域数据和同步图形数据被搜集到一显示驱动程序中。对于该远程显示程序,引入的区域数据在对应的同步图形数据前面,以便根据同步区域数据来显示该图形数据。

著录项

  • 公开/公告号CN1864154A

    专利类型发明专利

  • 公开/公告日2006-11-15

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200480001322.2

  • 发明设计人 I·莱希特森;

    申请日2004-07-22

  • 分类号G06F17/00(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人张政权

  • 地址 美国华盛顿州

  • 入库时间 2023-12-17 17:55:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-20

    专利权的转移 IPC(主分类):G06F17/00 变更前: 变更后: 登记生效日:20150429 申请日:20040722

    专利申请权、专利权的转移

  • 2009-05-27

    授权

    授权

  • 2007-01-10

    实质审查的生效

    实质审查的生效

  • 2006-11-15

    公开

    公开

说明书

技术领域

本发明通常涉及计算设备应用程序共享,更具体地说,涉及用于图形遥控系统的同步图形和区域数据。

发明背景

图形遥控系统允许计算设备网络客户机连接到服务器并接收正在该服务器处显示的或由该服务器输出的至少部分图形的可视表示。网络客户机经常可以显示与会话相关联的全部图形输出。同样,可以允许客户机与会话交互,从而将从设备(例如,被连接到客户机的鼠标或键盘)中生成的用户输入注入该服务器会话中。允许客户机在“登录会话”中连接的这种服务器有时被称作“远程服务器”或“遥控服务器”。执行远程登录会话和图形遥控的计算设备子系统有时被称作“终端服务子系统”。

图形遥控系统可以控制被发送到客户机的图形的数量,以便客户机无法看到遥控服务器上正在显示的(即,遥控服务器正在“输出”的)每件事物。三个种类便利地在服务器与客户机之间划分图形共享程度。在“桌面遥控”中,客户机实质上看到将会在被直接连接到服务器的监视器的画布上看到的每件事物。在“窗口遥控”中,客户机只看到来自服务器桌面中的窗口或窗格(或者一组窗口或窗格),每个窗口通常由服务器的操作系统来投影,用于对应于一个应用程序的图形输出和/或用户界面(UI)。因此,在服务器处,文字处理器应用程序可能拥有一个窗口,电子邮件应用程序可能拥有另一个窗口,但也许只有文字处理器窗口将会与客户机共享。在“区域遥控”中,只有服务器桌面的子集与客户机共享,但该共享区域不一定对应于窗口。实际上,该共享区域可能是任意的。

为了实现遥控服务器与登录客户机之间的该图形遥控“远距离动作”,需要某个数量的遥测术。从客户机的角度来看,服务器方的仪器记录“图形数据”——即,构成桌面的可见内容或桌面的区域的信息,并且将该图形数据发回到客户机。图形数据可以描述文本、图像内容和/或UI特征(例如,服务器正在生成的滚动条和可点击按钮)。对于上述桌面遥控而言,单单该图形数据就可以是足够的信息;但对于窗口和区域类型的遥控而言,却不够。在这些后面类型的遥控中,服务器方的第二仪器必须测量将要被共享的区域的几何形状(即形状),并将该几何信息传送回到该客户机。服务器方的第二仪器或另一个第三仪器也必须测量相对于服务器桌面将要被共享的区域的相对布置(在下文中被称作“位置”),并将这第三种类型的信息传送回到客户机。这样,为了在其自己的显示器上准确地显示来自服务器桌面的区域,客户机必须被通知到该区域的当前图形数据、形状和位置(后面两者是“区域数据”)。该区域数据(形状和位置信息)的客户机视图允许客户机将服务器桌面划分成可见区域和不可见区域(即,在其上显示相关联的图形数据的区域,和不在其上显示相关联的图形数据的区域)。然后,客户机用该图形数据来填充将要显示的区域,或者,至少利用将不显示的区域的边界来裁剪图形数据。

按照惯例,将要被共享的区域的上述图形数据由第一仪器来连续不断地加以感测、跟踪和/或搜集,并且独立于形状和位置信息而被发送到客户机。第一仪器通常包括或大大依赖于操作系统的核心图形处理子系统的各个发展良好的部分,因为大部分的图形跟踪将与如果服务器不是遥控服务器时所使用的相同。

按照惯例,区域数据由第二仪器按异步方式来加以搜集,该第二仪器在与连续不断地搜集图形数据的核心组件截然不同的调度程序上。例如,通过轮询机制,可以按用户模式来搜集区域数据。而且,该区域数据被发送到客户机,从而从图形数据中被去同步;或者,换言之,如果图形数据和区域数据通过遥控协议而被组合在单一数据流中,那么,该组合和对遥控协议规则的遵守不会去除区域数据相对于图形数据的异步性。(首先,区域数据的异步集合意味着:该区域数据集合独立于图形数据集合而进行操作,即,无关于使图形数据的片段与区域数据的片段相匹配。)

客户机将被接收的图形数据和区域数据合并在一起以创建最终的显示。在历史上,使用或多或少独立于彼此地进行运作的两个仪器来异步地收集得到发展的图形数据和区域数据,这也许是因为:当开始实践遥控时,用于收集图形数据的操作系统核心中的各个机制已得到良好的发展,并且,区域数据的集合被添加得太晚。由于它们太晚了,因此,用于异步地收集区域数据的方法通常可避免干扰该操作系统核心——这是该图形数据集合的领域。

一旦为区域遥控而异步地收集了图形数据和区域数据,通常就根据协议(例如,“MICROSOFT远程桌面协议(RDP)”或“CITRIX独立计算体系结构(ICA)协议”)来对它们进行分组,并且将它们发送到客户机。(微软公司,雷蒙德市,华盛顿州;Citrix公司,劳德代尔堡,佛罗里达州。)例如,RDP协议只是许多图形遥控协议之一,即,许多图形遥控协议可进行充分的扩展,以增加用于共享桌面的窗口或区域的区域遥控。如果RDP被用作该远程显示遥测术的数据传输部分,那么,应该注意:RDP基于该T.120协议家族标准,并且是该T.120协议家族标准的扩展。RDP是有多通道能力的协议,它允许单独的虚拟通道,用于传送来自该服务器的设备通信和演示数据、以及被加密的客户机鼠标和键盘数据。

按照惯例,图形数据和区域数据起初通过异步收集集合而被去同步,并且,根据当数据通过网络层以便被发送到客户机并由客户机接收时如何处理数据,图形数据和区域数据可能会变得甚至更加被去同步。RDP协议无法去除该去同步化。利用类推的方法,比如利用一对卓越的双筒望远镜来跟踪快速飞行的雉的鸟类观察者没有保持同步(尽管该双筒望远镜是卓越的),因此接收被去同步的图形和区域数据(尽管该遥控协议是卓越的)的遥控客户机不仅会错过在该服务器桌面上看到所需目标,而且可能会实际上在该服务器桌面上看到他没有料想会看到的事物。

图1示出了图形遥控系统100的各个部分——包括服务器显示器102和客户机显示器104。将要与客户机共享的窗口106在服务器显示器102上显示服务器桌面上的秘密和专用信息108的“被禁止的可见区域”。如果在任何时间点,描述窗口106的内容的图形数据和描述窗口106的形状和布置的区域数据不同步,那么,客户机显示器104将错误地示出预定窗口106′。例如,如果窗口106′跨越服务器显示器102的桌面而从左移到右,并且,图形数据和区域数据在被收集时和/或在被发送到客户机时不同步,那么,客户机显示器104可以继续显示该服务器桌面的区域——其中,该窗口原来被定位110,但它现在正显示秘密信息。

去同步化引起两个问题:不显示应该被呈现的内容,以及显示不应该被呈现的内容。首先,客户机显示器104没有示出图形遥控系统100意在向客户机示出的服务器显示器102的子集。即,如果意在被显示的窗口106包含作出业务决策所必要的数据,那么,这些决策被延迟直到显示正确的数据为止。其次,客户机显示器104可以示出(纵使是飞快地)非预期的秘密信息112——即图形遥控系统100不打算与客户机共享的服务器显示器102的子集。因此,如果在没有适当清除的条件下向客户机揭示“绝对机密”信息,则去同步化呈现安全危险。遗憾的是,图形数据与区域数据之间的同步问题存在于大多数已知的图形遥控系统中——其中,客户机经常看到服务器桌面的各个非预期部分。

发明概述

用于遥控系统的区域数据和图形数据被同步地加以搜集并被发送到远程显示器,同时,保持该区域数据与图形数据之间的同步性。在一项实现中,同步区域数据和同步图形数据被搜集到一个显示驱动程序中。对于远程显示器,引入的区域数据在对应的同步图形数据前面,以便根据同步区域数据来显示图形数据。

附图简述

图1是发生于常规图形遥控系统的常规问题的图示。

图2是其中使区域数据和图形数据同步的示例性图形遥控系统的框图。

图3是示例性遥控同步引擎(RSE)的框图。

图4是用于建立示例性同步遥控的共享区域的另一示例性技术的图示。

图5是示例性数据流结构的图示。

图6是示例性远程应用程序共享系统的框图——其中,客户机拥有登录会话,并且在低带宽条件期间维持安全。

图7是示例性协作遥控系统的框图——其中,在低带宽条件期间维持安全。

图8是示例性多媒体遥控系统的框图——其中,在低带宽条件期间维持安全。

图9是在图形遥控系统中使区域数据和图形数据同步的示例性方法的流程图。

图10是在示例性图形遥控系统(其中,使区域数据和图形数据同步)中的低带宽条件期间维持安全的示例性方法的流程图。

图11是适用于实现本发明的一些方面的示例性计算设备的框图。

较佳实施例的详细说明

纵览

本发明描述:通过同步地搜集区域数据和图形数据,并通过图形遥控服务器来同步地引导这两种类型的数据,使安全、准确的图形遥控成为可能。示例性遥控同步引擎(RSE)包括显示驱动程序,该显示驱动程序可以同步地捕捉关于将要远程地与客户机共享的服务器桌面的窗口或区域的区域数据和图形数据。(这里将交换地使用“窗口”和“区域”,而不管“窗口遥控”与“区域遥控”之间的差别如何。)该RSE可避免将会对区域数据和图形数据进行去同步的延迟的插入,然后可以根据遥控协议来发送同步数据——其中,区域数据在关联的图形数据前面。从服务器的观点来看,没有向客户机发送图形数据,除非已首先发送与该图形数据关联的被正确更新的区域数据。从客户机的观点来看,可以依靠客户机所接收的图形数据,以对应于最近接收的区域数据。

示例件系统

图2示出了示例性遥控系统200——其中,遥控服务器(“服务器”)202通过网络206通信上与客户机204耦合。服务器显示器208示出将要与客户机204共享的并且在客户机显示器212上显示的窗口210。包括在服务器202中或者与其关联的遥控同步引擎(“RSE”)214同步地搜集描述窗口210的图形数据和区域数据,并将同步的图形数据和区域数据发送到客户机204。在一些实现中,客户机204包括同步数据接收器215,用于接收同步区域数据和关联的同步图形数据,并用于将该图形数据显示为由区域数据所描述的客户机显示器212的区域210’中的图形。在其它实现中,如果示例性RSE 214输出同步数据,由此,客户机204可以使用常规机制来正确地显示由同步区域数据所裁剪的图形数据,那么,离散同步数据接收器215可能不必要。以下根据图11来描述适合用作服务器202或客户机204的示例性计算设备。

将要被共享的窗口210拥有图形内容216——包括文本“Hello!”和太阳的图像。窗口210的图形内容216可以由一组图形数据来加以描述,该组图形数据将由RSE 214来同步地收集。窗口210也拥有桌面和/或服务器显示器208的显示画布上的形状几何结构218和布置位置220。布置位置220有时由一对有序的“x轴”和“y轴”坐标来表示,这对有序的“x轴”和“y轴”坐标描述了从坐标原点(0,0)开始在两个维度上的偏移量,原点通常被选作服务器显示器208的最高、最左边的像素。在这项实现中,窗口形状几何结构218和布置位置220由一组区域数据来共同描述,该组区域数据将由RSE 214来同步地收集。

由于图形数据和区域数据由示例性RSE 214同步,因此,当在客户机显示器212上被示出时,窗口210′准确地再现如被显示在服务器显示器208上和/或如被服务器202输出到客户机204的窗口210的图形内容216、形状几何结构218和布置位置220。如客户机显示器212上所示的窗口210′的绝对尺寸可以不同于如服务器显示器208上所示的尺寸,取决于客户机212与服务器显示器208的尺寸相比的相对尺寸。

如果示例性RSE 214使用已知遥控协议(例如,RDP)来发送区域数据和图形数据,那么,客户机204可能能够正确地显示与区域210′同步的图形,而无需同步数据接收器215。但是,示例性RSE 214的一些实现可能不使用已知的遥控协议。例如,可以在不使用已知协议的计算和/或多媒体环境中实践本发明。本发明不受限于被用来在服务器202与客户机204之间发送同步区域数据和图形数据的数据传输载体(data transport vehicle)。这样,在一些实现中,通常包括在客户机204中的同步数据接收器215包括区域子系统222和图形子系统224。区域子系统222接收与图形数据同步的引入的区域数据,并根据该区域数据来指定客户机显示器212的区域210′。可以在客户机204中或在同步数据接收器215中使用数据缓冲器,以便接收和存储引入的同步数据流。这样,区域数据和图形数据都可以被存储,同时,该数据流的更多内容被接收。图形子系统224接收与区域数据同步的图形数据,并根据图形数据而在区域210′中显示图形。

示例性引擎

图3更详细地示出了图2中的示例性RSE 214。示例性RSE 214同时将图形数据和关联的区域数据搜集到相同的地方。因此,图形数据搜集模块300、区域数据搜集模块302、数据搜集调度程序304、时钟306、显示驱动程序308和网络接口310如所展示地在通信上耦合。显示驱动程序308可以进一步包括遥控协议312、数据输出定序器314、带宽补偿器316和安全逻辑318。所示的示例性RSE 214只是可以为区域遥控而使图形数据和区域数据同步的RSE 214的一个例子。能够执行本发明的其它示例性引擎可以具有不同的配置。

图形数据搜集模块300同步地搜集图形数据,如上所述,该图形数据包括将要被共享的区域的可见图像内容(文本、图像、图标、边框、UI控件、菜单、滚动条等)。由于区域的内容通常随时间的推移而变化,因此,图形数据可以按离散的时间间隔来加以搜集、可以连续不断地加以扫描和/或流传送。在一项实现中,数据搜集调度程序304为图形数据搜集模块300设置时间间隔(例如,150毫秒),以执行与用于收集区域数据的类似计时周期相匹配的图形数据搜集周期。这种计时周期是用于使图形数据和区域数据同步的一个构造,因为许多操作系统在流中连续不断地收集图形数据。在一些模态中,只需要搜集对来自前一周期的图形数据的更改,而不需要从零开始搜集完整的图形数据集。

在一项实现中,图形数据搜集模块300是显示驱动程序308的固有或离散部分。即,显示驱动程序308(例如,“WINDOWS图形显示驱动程序”)通过收集向“WINDOWS图形设备接口(GDI)”子系统发出的图元绘图命令来搜集图形数据。这些绘图图元使用遥控协议312(例如,RDP)来加以编码,并且通过网络206被发送到一台或多台RDP客户机204。在这种实现中,图形数据搜集模块300可以包括或包含WIN32K.DLL以及与WINDOWSGDI子系统相关联的其它组件。在一些实现中,时钟306和/或数据搜集调度程序可能是系统时钟,或者,时钟功能可能是用于收集或流传送图形数据的操作系统的固有性质。

将要使用遥控协议312而被发送到客户机204的区域数据也经由区域数据搜集模块302在显示驱动程序308中搜集。由于窗口或区域形状几何结构和布置位置通常随时间的推移而变化,因此,该区域数据可以按离散的时间间隔来加以搜集,或者,更理想的是,可以连续不断地加以扫描和/或流传送,以更新该客户机204。在一项实现中,数据搜集调度程序304为区域数据搜集模块302设置时间间隔(例如,150毫秒),以执行与用于搜集对应的图形数据的类似计时周期相匹配的区域数据搜集周期。在一些实现中,只需要考虑对在前一周期中所搜集的前一个区域数据集的更改。

在一项实现中,区域数据搜集模块302通过包括和/或包含经由“WINDOWS服务器驱动程序开发包(DDK)”而创建的窗口对象“WNDOBJ”,来同步地搜集(和/或跟踪)有关的区域数据。WNDOBJ是驱动程序级的窗口对象,它可以被创建成包含关于可见区域的形状几何结构和布置位置(即区域数据)的信息。通过创建对应于将要被共享的应用程序区域的WNDOBJ,显示驱动程序308可以跟踪表示该可见区域的形状几何结构和布置位置的变化的区域数据。

以下在表格1中示出允许显示驱动程序308跟踪正在被共享的区域的区域数据变化的示例性WNDOBJ结构:

        表1

typedef struct_WNDOBJ{   CLIPOBJ  coClient;   PVOID    pvConsumer;   RECTL    reClient;   SURFOBJ  *psoOwner;}WNDOBJ,*PWNDOBJ;

表1中的示例性WNDOBJ结构的成员包括:

·coClient,它指定描述该窗口的客户机区域的CLIPOBJ结构。如果iDComplexity是DC_RECT,并且,rclBounds中的左边缘大于或等于右边缘,或者,顶部边缘大于或等于底部边缘,那么,该客户机区域是不可见的。

·pvConsumer,它指向标识这个特定WNDOBJ结构的驱动程序定义的值。可以通过调用该WNDOBJ_vSetConsumer功能,来设置这个值。

·relClient,它指定描述屏幕坐标中的窗口的客户机区域的RECTL结构。这个矩形具有右侧和底部排除性,这意味着:不包括这个区域的底部边缘和右边缘。

·psoOwner,它指向SURFOBJ,当创建这个WNDOBJ时,SURFOBJ结构被传递到EngCreateWnd。

可以通过调用WNDOBJ_cEnumStart和WNDOBJ_bEnum功能,来列举关于与客户机204共享的区域的区域数据。通过调用WNDOBJ_vSetConsumer功能,显示驱动程序308可以将其自己的数据与WNDOBJ相关联。

作为示例性RSE 214中的同步元件,显示驱动程序308可以访问WNDOBJ的公有成员。在EngCreateWnd功能或其中给出WNDOBJ的各项功能中,这些公用组成部分被保证只在为GDI子系统提供的驱动程序回叫例程的上下文中保持不变。

显示驱动程序308应该使用psoOwner所指向的SURFOBJ来检索与WNDOBJ有关的驱动程序专用状态(例如,显示驱动程序的PDEV句柄),而不是保持全局变量。

为了建立将与客户机204共享的区域,应用程序可以使用该WIN32应用程序接口(API)来访问显示驱动程序308所执行的WNDOBJ_SETUP功能。通过WIN32ExtEscape功能来获得访问。前述GDI子系统利用DrvEscape(由显示驱动程序308利用iEsc的值的WNDOBJ_SETUP来执行)将这个转义(escape)调用传递到显示驱动程序308。

将在服务器202与客户机204之间共享的应用程序调用ExtEscape(hdc,WNDOBJ_SETUP,...),并通过输入缓冲器来将应用程序创建的窗口(由CreateWindow或某个等效的WIN32功能来创建)的句柄传递到显示驱动程序308。如果显示驱动器308将要接收与该区域关联的被搜集的区域数据,那么,它在ExtEscape调用的上下文内调用EngCreateWnd,以便为给定窗口创建WNDOBJ结构。从那时起,关于如此配置的应用程序创建的窗口的形状几何结构变化和布置位置变化将向下传递到显示驱动程序308。

关于上述实现的合适的显示驱动程序308按与表格2中所示的方式相类似的方式来处理ExtEscape调用:

                       表2

  ULONG DrvEscape(  SURFOBJ*pso,    ULONG iEsc,    ULONG cjIn,    PVOID pvIn,    ULONG cjOut,    PVOID pvOut)  {      WNDOBJ*pwo;      WNDDATA*pwd;      if(iEsc==WNDOBJ_SETUP)      {         pwo+EngCreateWnd(pso,*((HWND*)pvIn),&DrvVideo,                        WO_RGN_CLIENT,0);      //分配用于高速缓存客户机矩形的空间。      //记住在pvConsumer字段中的指针。      pwd=EngAllocMem(0,sizeof(WNDDATA),DRIVER_TAG);      WNDOBJ_vSetConsumer(pwo,pwd);      //更新关于这个wndobj的矩形清单          vUpdateRects(pwo);          return(1);
     }  }

创建窗口对象涉及锁定特殊的窗口资源,所以,应该只在DrvEscape或DrvSetPixelFormat中的WNDOBJ_SETUP转义的上下文中调用EngCreateWnd。

EngCreateWnd函数甚至支持由多个显示驱动程序308中的每一个来搜集区域数据。通过EngCreateWnd,每个显示驱动程序308识别其自己的回叫例程,GDI子系统将要为对应的区域的变化而调用该回叫例程。例如,这个特征允许带电视频(live video)的显示驱动程序308搜集对应于带电视频窗口中的变化的区域数据,而OpenGL显示驱动程序308正在搜集对应于OpenGL窗口中的变化的区域数据。

如果在DrvSetPixelFormat或ExtEscape中创建新的WNDOBJ,那么,GDI子系统将回叫到具有最新近的区域数据的显示驱动程序308。当WNDOBJ所引用的区域被破坏时,GDI子系统也将回叫到显示驱动程序308。

搜集表示区域的形状和/或布置的变化的区域数据可以涉及:使用被提供用于支持WNDOBJ结构的三项回叫功能。通过调用WNDOBJ_cEnumStart和WNDOBJ_bEnum回叫功能,可以列举在客户机204上可见的区域。通过调用该WNDOBJ_vSetConsumer回叫功能,显示驱动程序308可以将其自己的数据与WNDOBJ相关联。

这样,在刚刚描述的实现中,WNDOBJ同步地向显示驱动程序308通知客户机204上可见的区域的变化。由于在这项实现中,显示驱动程序308也是经由GDIAPI来同步地收集的图形图元的地方,因此,同步的区域数据和图形数据可以彼此相关(或保持彼此相关),并且以安全同步方式被发送到客户机204(例如,首先是当前在给定时间间隔的末端处的被更新的区域数据,然后是对应于该区域数据的图形数据)。将图形数据和区域数据搜集到示例性RSE 214中的一个连接点,或者更具体地说,将图形数据和区域数据搜集到示例性显示驱动程序308中的一个连接点,是允许本发明所描述的同步的一个方面。从该连接点开始,图形数据和区域数据保持同步——一直到并包括对客户机204的传递。

将与客户机204共享的服务器桌面的区域不必要是应用程序窗口。有许多方法来描述具有可以与图形数据同步的区域数据的显示器画布的区域。如图4(它描绘了手动地创建视见区区域402的示例性方法400)所示,服务器方或客户机方的用户可以手动地在有关的显示屏幕(例如,208、212)上绘制矩形或其它形状,以创建(例如)手动“鼠标拖曳”视见区区域402。视见区区域402可视地装入将与客户机204共享的每件事物。换言之,显示驱动程序308可以将视见区区域402存储为具有形状几何结构和布置位置(即区域数据)的显示屏幕区域,并且在发送关于视见区区域402的图形数据之前发出该区域数据。结果,被显示的图形将由所描述的视见区区域402来加以准确的裁剪。与以上根据示例性RSE 214的区域数据搜集模块302而提出的数据搜集机制相比,这提出了一种用于产生同步区域数据的替换机制。

返回到图3,数据输出定序器314可以指导和监督遥控协议312的运用,以确保区域数据(例如,与给定的时间间隔、周期或“时间片”相关联)保持与其对应的图形数据相关联。用于保持对应的同步区域数据与同步图形数据之间的关联的一种方法是:按表示该关联的某个顺序来发送这种类型的数据——将由理解该组合和表示该组合的连续顺序的客户机在客户机方加以处理。这样,在一项实现中,区域数据始终在其对应的图形数据前面。这意味着:同步区域数据总是在对应的同步图形数据前面被发送到客户机204;但更重要的是,它意味着:如果有关的区域数据被发送到客户机204,那么,客户机204在处理对应于该区域数据的图形数据之前,首先更新该区域数据。这样,在区域数据与图形数据之间形成安全联接——“同步性”。客户机204可以依赖于拥有关于被接收的任何图形数据的当前区域数据。换言之,客户机204知道被接收的任何图形数据对应于先前被接收的区域数据。利用最近的区域数据来示出(或“裁剪”)应用于客户机显示器212的图形数据,从而产生共享区域的正确的同步显示。因此,示例性RSE 214意在确保将与客户机204共享的预期可见区域内的图形数据没有不被显示,并且,关于客户机204的不可见区域内的图形数据没有因疏忽而被显示。

如图5所示,数据输出定序器314通常经由遥控协议312(例如,RDP)来创建示例性数据结构500。数据输出定序器314控制遥控协议312的运用,以便首先向客户机204发送区域数据502。只有在已发送区域数据502之后,数据输出定序器314才发送与前面的区域数据502同步并因此与其相关的图形数据504。客户机204可以存储区域数据502,同时,接收对应的图形数据504。这样,数据输出定序器314使用该遥控协议312来分组数据包(或协议数据单元(PDU))序列506中的区域数据502和图形数据504。序列506中的单独的数据包可以随机且无序地到达客户机204,但是,数据包通常在其各自的头部中带有序列号,用于重新装配正确的数据包序列506。因此,即使客户机204实际上没有首先接收区域数据502,当客户机204缓冲引入的数据包时,序列506也是可重建的,以便从客户机的角度来看,区域数据502在其对应的同步图形数据504的显示前面,并且修改其对应的同步图形数据504的显示。

关于各个版本的RDP,本发明创建RDP替换次要PDU,它在对图形数据504进行分组之前,为给定的区域数据更新、时间片和/或迭代的区域数据502进行分组。如果第一数据包508缺乏关于当前区域数据502的容量,那么,在下一个数据包510中发送剩余的区域数据502。同样,图形数据504跟随区域数据502,并且按需要来装满数据包(例如,512),以便发送与当前的区域数据集502相关联的正在进行中的同步图形数据504。

如果区域数据502没有改变,即,没有随多个接连的时间片而改变,那么,在区域数据502再次改变之前,不必将接连的区域数据502发送到客户机204,并且,被发送到客户机204的接连的图形数据504只是指最新近发送和接收的区域数据502。

如所述,区域数据502通常包括共享区域的形状几何结构以及共享区域的桌面布置位置的描述。形状几何结构的描述包括逼近该共享区域的形状的矩形的已编码集合。(像素显示通常将图像描绘为矩形的集合。)数据输出定序器314可以建立将被用来描述共享区域的形状的最大数量的矩形。尤其如果到客户机的传输带宽受到限制,那么,在最大数量之上,数据输出定序器314可以调用带宽补偿器316和安全逻辑318来减少区域数据502的数量,而不会危及安全。例如,共享的文字处理器应用程序窗口可由单一的简单矩形来加以描述。当在共享的文字处理器应用程序窗口的中间(或顶部)打开来自非共享的应用程序的菜单窗口时,将由区域数据502描述的文字处理器窗口形状变成复杂的环状物形状。现在需要多个矩形(而不是单一的简单矩形),以描述该文字处理器窗口,从而要求更多的区域数据502。共享窗口或区域会非常复杂,并且可能要求大量区域数据。例如,包括流行影片外壳(包括网状物和羽毛)的窗口需要近似10,000个矩形来描述。以下进一步根据图6-8来讨论关于因复杂的共享窗口形状而引起的带宽约束期间的持续遥控的安全解决方案。

区域数据的桌面布置位置部分通常所要求的带宽小于共享区域的形状几何结构所要求的带宽。来自显示屏幕的原点(0,0)的共享区域的左上角部分的偏移坐标(例如,(0,0)作为该左上角像素)可以有效地描述共享区域的位置。另外,如果共享区域是简单矩形,那么,描述共享窗口的左上角和共享窗口的右下角的两个偏移坐标集可以有效地描述矩形的布置位置和形状几何结构两者。

由数据输出定序器314指定的数据序列(例如,506)(包括实现使同步区域数据502在图像数据504前面的示例性技术的序列506)通常不采用比由常规遥控PDU组成的常规数据序列大得多的带宽。实际上,RDP具有其自己的体积压缩引擎。区域数据502可以包括用于描述形状几何的每一矩形分配的64个比特、以及为正在描述的每个区域分配的32个额外的比特。这样,如果区域有一个矩形,则需要96个比特;如果区域有两个矩形,则需要160个比特;等等。可以按近似50%到近似90%的比率来高度压缩这种类型的矩形数据,这是因为:这些矩形往往是有规则的,并且,有可能适用于减少将同步区域数据502和同步图形数据504发送到客户机所需要的比特的数量的编码算法可用。

RDP具有许多预先存在的规则。这里所描述的本发明增加了一个规则:不在关联的同步区域数据502前面发送图形数据504;或者,在一项实现中,如果在关联的同步区域数据502前面发送图形数据504,那么,图形数据504被指定不在区域数据502前面加以处理。这个规则不排除在同步区域数据502与同步图形数据504之间来往的或用其点缀的其它类型的信息514,例如,鼠标指针位置数据(它可以被分组,以便甚至在区域数据502前面);会议控制数据;服务质量(QoS)数据;等等。可以在同步区域数据502和接连的关联的图形数据504前面、后面和/或之间散置这些其它类型的辅助数据。

为了重述要点,示例性RSE 214同步地将数据(区域数据502和图形数据504两者)一起搜集到一个连接点中,而不会丧失该数据的同步性。不管是使用WNDOBJ来搜集窗口区域数据,还是使用“WINDOWS图形显示驱动程序”来搜集图形数据,只要示例性RSE 214按同步方式来搜集区域数据502和图形数据504,就可以实践本发明。如上所述,RDP协议只是可充分扩展以便能够增加区域遥控并且因此可用于实践所描述的主题的许多图形遥控协议之一。

在一项实现中,带宽补偿器316可以对数据输出定序器314所执行的数据定序施加影响。在一些情况下,用于将数据包发送到客户机204的带宽可能暂时不足够。带宽补偿器316在一些实现中根据安全逻辑318来决定如何处理不足够的带宽。安全逻辑318包括用于各种情形的安全措施和不同的安全协议。

安全实现

可以在许多类型的应用程序和情形中使用示例性RSE 214。该类型的应用程序可以确定将被用于低带宽的情况中的这些特定安全措施。示例性RSE 214如何在低带宽的条件中保持图形数据和区域数据的同步性取决于该应用程序以及所需的和/或适于该应用程序的安全等级。当区域数据和/或图形数据变得大于现状可用带宽时,可能会出现低带宽条件。例如,与保持该静止的矩形窗口所需要的区域数据相比,远程共享的文字处理器窗口通常由于正在进行中的打字而具有更多正在进行中的图形数据。其动画不断变化的远程共享因特网浏览器窗口具有图形数据,该图形数据通常缩短描述该远程共享窗口所需要的区域数据。具有复杂图形和复杂形状的应用程序可能会超过保持同步图形数据和区域数据遥控所需要的带宽。以下描述了关于示例性RSE 214的三种不同类型的应用程序环境600、700、800,以展示示例性RSE 214可以响应于低带宽条件的各种方法。

图6示出了远程应用程序共享环境600——其中,客户机602使用登录凭证604而通过网络608访问遥控服务器606。在这个环境600中,可能会出现低带宽情况——其中,没有足够的网络容量来发送窗口遥控或区域遥控所需的所有同步区域数据和图形数据,或者,已超过其它内部容限,从而引起带宽约束。可能会发生低带宽,这是因为:正在共享的窗口的形状已变得太复杂(例如,太多矩形),而无法使用可用带宽在区域数据中加以描述。

当数据输出定序器314由于带宽约束而不再能继续发送所有的同步区域数据和随后的关联的图形数据时,与远程应用程序共享环境600关联的安全逻辑318可以通知带宽补偿器316改变发送数据的方式,或改变数据本身。

在一个情形中,数据输出定序器314发送区域数据和图形数据,好象没有带宽约束,只是速度更慢。安全逻辑318中所包括的这种类型的解决方案可以导致共享窗口的客户机的显示被至少临时地中止或冻结,直到带宽增加,或者直到“以前”复杂的区域数据被接收到并且其后保持相对不变(该形状复杂的窗口没有在屏幕上移动)。

关于示例远程应用程序共享环境600的替换解决方案需要放弃区域遥控并且至少暂时切换到桌面遥控。桌面遥控向客户机602示出比远程应用程序共享环境600中所预期的更多的信息,但由于客户机602因登录凭证604而“拥有”全部会话610,并且,区域遥控的进行只是为了改进工作流程,因此,在向客户机602示出该客户机有权观看的有限范围的信息的较大子集方面,没有安全泄露。这样,当面临不足够的带宽来执行远程应用程序共享环境600中的区域遥控时,带宽补偿器316可以切换到桌面遥控,从而暂时放弃区域数据和对同步的需求。

图7示出了多方协商或“协作”环境700——其中,多台客户机(例如,第一客户机702、第二客户机704、…和第“n”客户机706)通过网络708在通信上与包括示例性RSE 214的遥控服务器710耦合。例如,当选择“只示出会议记录”选项时,区域遥控在每台客户机处同时显示服务器桌面的子集。每台客户机可以发送输入,以影响正被共享的窗口714或区域。例如,如果第一客户机702使用鼠标而跨越其显示画布来拖曳正被共享的窗口714,那么,也跨越所有其它客户机的显示屏幕来拖曳窗口714。同样,如果第“n”个客户机706点击正被共享的窗口714或区域中的按钮,那么,正被点击的按钮在该服务器处所采取的那个动作达到所有这些客户机702、704、…、706。

在这个协作环境700中,没有一台客户机拥有该会话。所以,向任何客户机不止示出正在共享的窗口714或区域有安全危险(如图1中所示的)。在常规系统中,当这些客户机之一因疏忽而跨越服务器桌面上不被共享的另一个应用程序窗口来移动正被共享的窗口714时,在这些客户机的显示屏幕中的每一个上,经常可在短时间内瞥见不被共享的窗口,这是因为缺乏区域数据与图形数据之间的同步。

在相对低的带宽条件中,例如,当区域数据由于正被共享的窗口714或区域的不平常的形状而变得太复杂时,或者当该网络的服务质量动摇时,带宽补偿器316可以决定:数据输出定序器314应该如何继续在协作环境700中发送区域数据和图形数据。由于客户机可能无权观看整个服务器桌面,因此,切换到桌面遥控以减少区域数据不作为选项而被包括在关于协作环境700的安全逻辑318中。如果示例性RSE 214可以示出将在这些带宽约束内大大减少区域数据的共享区域的子集,那么,可以从安全逻辑318中选择这个解决方案作为选项。然后,在太复杂的共享区域714内,RSE 214的显示驱动程序308用简单的形状(例如,单一矩形)记下较小的区域716。如果要求较少的矩形来描述这个新的被记下的形状,那么,这可能会大大减少区域数据的数量,但也可能会剪去部分的共享区域。例如,当显示较小的区域716时,可以剪去部分的文本和图像、以及可点击的图标和按钮、下拉菜单、滚动条,使其看不见。这会导致不合需要的操作不便——可用性问题(有希望是暂时的),但仍然保持安全,因为示例性RSE 214可靠地保证:没有向客户机702、704、…、706显示服务器桌面的不允许的部分。

图8示出了多媒体环境800——其中,被包括在遥控服务器中或与多媒体网络集线器802关联的示例性RSE 214被用来将媒体流(例如,从多媒体存储806)发送到客户机808上的显示器。在此情况下,客户机808可以是计算设备或驱动客户机显示器810的电视机顶盒。在一个情形中,可以在遥控协议312(例如,RDP)以外,以及终端服务协议以外等的带外通道上发送媒体流804本身。

在这种类型的应用程序中,示例性RSE 214提供一种供客户机808为媒体流804解码,并且在使用中的遥控协议312和/或终端服务协议“之上”播放它的方法,即,在正使用遥控协议312和/或终端服务协议的客户机808上播放媒体流804,但遥控协议312和/或终端服务协议不发送媒体流804本身。示例性RSE 214管理关于用于播放媒体流804的窗口812或区域的形状和客户机桌面布置位置的区域数据,从而通知客户机808:在哪里绘制来自(例如)带外通道的媒体流804。

响应于(例如)由增加该区域数据的窗口812的复杂形状引起的多媒体环境800中的低带宽情形,安全逻辑318可以包括带宽补偿器316用于选择关于媒体流显示窗口812的较简单的形状的措施。该较简单的形状减少区域数据的数量。在此情况下,假设安全不是多媒体环境800中的很大危险(例如,如果多媒体环境800只是家庭多媒体网络),那么,示例性RSE 214可以利用大于原始窗口812的新的较简单的窗口814来限定需要太多区域数据来描述的原始复杂窗口812。这个新的较大的窗口814不是可能包含秘密信息的服务器桌面的较大部分,而只是放大的视见区,通过该视见区,将示出媒体流804的放大版本——即,媒体流804的可见“足迹”被调整大小,以适合该较大的窗口。这个较大的窗口814防止媒体内容的截断(例如,丢失影片的一部分);如果选择比原始复杂窗口812小的窗口来解决复杂窗口形状问题,则将会发生该截断。但是,较大的窗口814可以截断或完全掩蔽用于控制该媒体804的用户界面816的部分屏幕上控件。尽管由于客户机的显示画布的各个部分已被较大的媒体流窗口覆盖而导致不合需要的操作不便,但低带宽情况的这个解决方法只导致可能的可用性问题(有希望是暂时的)。关于低带宽的被应用的安全措施还没有危及多媒体环境800内的安全。

示例性方法

图9示出了为图形遥控系统而使区域数据和图形数据同步的示例性方法900。示例性方法900可以由设备(例如,图2和图3中所示的示例性RSE 214)来执行。在该流程图中,这些操作在单独的方框中加以概括。这些操作可以用硬件执行,和/或可以作为可由处理器执行的机器可读指令(软件或固件)来执行。

在方框902处,同步地搜集用于在客户机显示器上远程地显示服务器桌面的区域的区域数据。该区域数据可以描述区域几何结构(例如,该服务器桌面上的区域的形状和位置和/或该区域将在客户机的桌面上所占据的位置)。

在方框904处,同步地搜集关于该区域的图形数据。该图形数据描述可见内容,当在客户机上执行该区域时,将在该区域中显示该可见内容。或者,从另一个观点来看,该区域数据将图形数据裁减成由该区域数据指定的几何结构(形状和位置)。

在方框906处,区域数据和图形数据被发送到客户机,同时,保持区域数据与图形数据之间的同步性。保持同步性可以包括:避免在处理表示区域数据和图形数据的每一个的不同数据流的过程中的延迟增加;适当地使用遥控协议来发送同步数据;将给定量的区域数据与关联的图形数据定序,以便客户机可以将图形数据和关联的区域数据联系起来,等等。

图10示出了在低带宽条件(例如,服务器202与客户机204之间的临时低传输带宽)期间维持用于图形遥控系统的区域数据和图形数据的同步中的私人信息的安全性的示例性方法1000。示例性方法1000可以由设备(例如,图2和图3中所示的示例性RSE 214)来执行。在该流程图中,这些操作在单独的方框中加以概括。这些操作可以用硬件执行,和/或可以作为可由处理器执行的机器可读指令(软件或固件)来执行。

在方框1002处,同步地搜集区域数据和图形数据。

在方框1004处,示例性方法1000询问:例如,在遥控协议312所指定的时间约束内,是否有用于发送同步的区域数据和图形数据的足够带宽。如果没有足够的带宽,那么,示例性方法1000分支到方框1006。如果有足够的带宽,那么,示例性方法1000分支到方框1008。

在方框1006处,同步区域数据和同步图形数据被发送到客户机。

在方框1008处,示例性方法1000询问:客户机是否拥有全部会话。如果客户机拥有全部会话,那么,示例性方法分支到方框1010。如果客户机不拥有全部会话,那么,示例性方法分支到方框1012。

在方框1010处,关于整个服务器桌面的图形数据被发送到客户机,但没有发送区域数据。

在方框1012处,示例性方法1000询问:是否可以截断共享区域的可见内容。如果可以截断共享区域的可见内容,那么,示例性方法1000分支到方框1014和1016。如果无法截断共享区域的可见内容,那么,示例性方法1000分支到方框1018、1020和1022。

在方框1014处,选择被记在原始共享区域内的较简单、较小的新的共享区域。

在方框1016处,关于该新区域的同步区域数据和同步图形数据被发送到客户机。

另一方面,在方框1018处,选择限定原始共享区域的较简单、较大的新的共享区域。

在方框1020处,关于该新区域的同步区域数据和同步图形数据被发送到客户机。

在方框1022处,关于原始共享区域的可见内容可以被调整大小,以适合这个新的、较大的共享区域。但是,服务器桌面图形没有被用来填充在原始共享区域以外的这个新的较大的窗口的这些部分,因为这可能使示例性方法1000的安全特征实效。当图形数据来自服务器外部的来源时(例如,来自数字存储的多媒体流),方框1018、1020和1022所提供的选项有用。

示例性计算设备

图11示出了示例性计算设备1100,它适合作为用于实践本发明的各个方面的环境,例如,作为用于主存示例性RSE 214的遥控服务器202,或者作为客户机204)。计算设备1100的这些组件可以包括(但不局限于)处理单元1120、系统存储器1130和系统总线1121,系统总线1121将包括系统存储器1130的各种系统组件耦合到处理单元1120。系统总线1121可以是几种类型的总线结构(包括存储总线或存储控制器、外围总线和使用各种总线构造中的任何总线构造的局部总线)中的任何总线结构。举例来讲(不作限制),这类体系结构包括“工业标准结构”(ISA)总线、“微通道结构”(MCA)总线、“增强型ISA”(EISAA)总线、“视频电子技术标准协会”(VESA)局域总线和“外围部件互连”(PCI)总线(也被称作“Mezzanine总线”)。

示例性计算设备1100通常包括各种计算设备可读介质。计算设备可读介质可以是可由计算设备1100存取的任何可用介质,它包括易失和非易失介质、可移动和不可移动的介质。举例来讲(不作限制),计算设备可读介质可以包括计算设备存储介质和通信介质。计算设备存储介质包括易失和非易失、可移动和不可移动的介质,该介质用关于信息(例如,计算设备可读指令、数据结构、程序模块或其它数据)存储的任何方法或技术来加以实现。计算设备存储介质包括(但不局限于)RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁性存储设备、或可以被用来存储所需信息并可以由计算设备1100来进行存取的其它任何介质。通信介质通常以已调制数据信号(例如,载波或其它传送机制)具体表现计算设备可读指令、数据结构、程序模块或其它数据,它包括任何信息传递介质。术语“已调制数据信号”意味着一种信号,其一个或多个特征按为该信号中的信息编码的这样一种方式来加以设置或更改。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络或直线连接)和无线介质(例如,声音、RF、红外线和其它无线介质)。以上任何内容的组合也应该被包括在计算设备可读介质的范围以内。

系统存储器1130包括采取易失和/或非易失存储器(例如,只读存储器(ROM)1131和随机存取存储器(RAM)1132)的形式的计算设备存储介质。基本输入/输出系统1133(BIOS)通常被存储在ROM 1131中,该基本输入/输出系统包含有助于在计算设备1100内的各个元件之间传送信息(例如,在启动期间)的基本例程。RAM 1132通常包含可立即由处理单元1120存取和/或目前正由处理单元1120进行操作的数据和/或程序模块。举例来讲(不作限制),图11示出了操作系统1134、应用程序1135、其它程序模块1136和程序数据1137。虽然示例性RSE 214被描绘为随机存取存储器1132中的软件,但是,示例性RSE 214的其它实现可以是硬件、或软件和硬件的组合。

示例性计算设备1100也可以包括其它可移动/不可移动、易失/非易失计算设备存储介质。只举例来讲,图11示出了从不可移动的非易失磁性介质读取或对其写入的硬盘驱动器1141、从可移动的非易失磁盘1152读取或对其写入的磁盘驱动器1151、以及从可移动的非易失光盘1156(例如,CD ROM或其它光学介质)读取或对其写入的光盘驱动器1155。可以被用于该示例性操作环境中的其它可移动/不可移动的易失/非易失计算设备存储介质包括(但不局限于)盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器1141通常通过不可移动的存储器接口(例如,接口1140)而被连接到系统总线1121,磁盘驱动器1151和光盘驱动器1155通常由可移动的存储器接口(例如,接口1150)连接到系统总线1121。

以上所讨论的和图11中所示的这些驱动器及其关联的计算设备存储介质为计算设备1100提供计算设备可读指令、数据结构、程序模块和其它数据的存储。在图11中,例如,硬盘驱动器1141被示为存储操作系统1144、应用程序1145、其它程序模块1146和程序数据1147。注意,这些组件可以等同于或不同于操作系统1134、应用程序1135、其它程序模块1136和程序数据1137。这里为操作系统1144、应用程序1145、其它程序模块1146和程序数据1147提供不同的标号以示出它们至少是不同的副本。用户可以通过输入设备(例如,键盘1148和通常被称作“鼠标”、“跟踪球”或“触垫”的定点设备1161),来将命令和信息输入示例性计算设备1100。其它输入设备(未示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其它的输入设备经常通过被耦合到系统总线的用户输入接口1160而被连接到处理单元1120,但也可以由其它接口和总线结构(例如,并行端口、游戏端口或通用串行总线(USB))来加以连接。监视器1162或其它类型的显示设备也经由接口(例如,视频接口1190)而被连接到系统总线1121。除监视器1162以外,计算设备也可以包括其它外围输出设备(例如,扬声器1197和打印机1196),这些外围输出设备可以通过输出外围接口1195来加以连接。

示例性计算设备1100可以使用与一个或多个远程计算设备(例如,远程计算设备1180)的逻辑连接而在联网环境中进行操作。远程计算设备1180可以是个人计算设备、服务器、路由器、网络PC、对等设备或其它公用的网络节点,它通常包括以上相对于计算设备1100而描述的许多或所有这些元件,尽管图11中只展示了存储器存储设备1181。图11中所描绘的这些逻辑连接包括局域网(LAN)1171和广域网(WAN)1173,但也可以包括其它网络。这类联网环境在办公室、企业范围的计算设备网络、内联网和因特网中很普遍。

当被用于LAN联网环境中时,示范计算设备1100通过网络接口或适配器1170而被连接到LAN 1171。当被用于WAN联网环境中时,示范计算设备1100通常包括调制解调器1172或用于通过WAN 1173(例如,因特网)建立通信的其它装置。调制解调器1172(可能是内置的,也可能是外置的)可以经由用户输入接口1160或其它合适的机制而被连接到系统总线1121。在联网环境中,相对于示例性计算设备1100或其各个部分而描绘的程序模块可以被存储在远程存储器存储设备中。举例来讲(不作限制),图11将远程应用程序1185示为驻留在存储器设备1181上。将会理解:所示的这些网络连接起示范的作用,可以使用在这些计算设备之间建立通信链路的其它装置。

结论

应该注意:以上所描述的本发明可以用硬件、软件、或用硬件和软件两者来实现。在某些实现中,可以在诸如正由电视机顶盒和/或由计算设备来执行的计算设备可执行指令(例如,程序模块)等一般上下文中描述该示例性系统、引擎和有关的方法。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在分布式通信环境中加以实践;在这些分布式通信环境中,由通过通信网络而被连接的远程处理设备经过无线通信来执行任务。在无线网络中,程序模块可以位于包括存储器存储设备的本地和远程通信设备存储介质中。

前述讨论描述了为图形遥控系统而使区域数据和图形数据同步的示例性系统和方法。虽然本发明已用针对结构特征和/或方法动作的语言来加以描述,但是,将会理解:所附权利要求书中所定义的本发明不一定局限于所描述的这些具体特征点或动作。相反,这些具体特征和动作被揭示为执行权利要求的示例性形式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号