通过计算机之间的网络提供用户接口装置处的变化的指示的制作方法

文档序号:7738546阅读:229来源:国知局
专利名称:通过计算机之间的网络提供用户接口装置处的变化的指示的制作方法
通过计算机之间的网络提供用户接口装置处的变化的指示
背景技术
许多企业正在转换到网络布置,其中中央服务器的计算资源被提供给用户所处的本地计算机。集中于一个或多个中央服务器的计算资源(例如,软件应用、处理资源、存储资源等)可以选择性地分配给本地计算机处的用户所建立的会话。提供了协议以使得本地计算机处的用户能够通过计算机网络访问和共享远程计算机(例如,中央服务器)的桌面。一种这样的协议是如微软公司所提供的远程桌面协议 (Remote Desktop Protocol, RDP),其用来通过网络连接提供远程显示和输入能力。另一种能够使用的协议是来自惠普公司的远程图形软件(Remote Graphics Software, RGS)协议。RGS被设计为完全利用远程计算机的计算机和图形资源来在本地计算机处递送交互式远程访问。远程计算机的桌面视频数据通过网络传送到本地计算机,所述本地计算机在本地计算机的窗口中本地显示该桌面视频数据。RGS被设计为通过网络提供桌面视频数据的快速捕捉、压缩和传输。RGS还允许将音频数据从远程计算机发送到本地计算机以在本地计算机的音频装置上输出。RGS还捕捉在本地计算机的用户键盘和鼠标输入,并且将所述键盘和鼠标输入发送到远程计算机以由远程计算机的操作系统以及由远程计算机上运行的应用进行处理。附连到本地计算机的键盘和鼠标(和/或其它外围装置)可以为根据如2001年6 月 27 日的通用串行总线(Universal Serial Bus, USB)、人机接口装置(Human Interface Device, HID)的装置类定义、固件规范1. 11版中所描述的人机接口装置(HID)标准进行操作的HID。HID装置是在连续的基础上生成数据以进行传输的中断型装置。即使没有数据要传输也发生数据的传输,其中HID装置在该HID装置处没有发生变化的情况下发送空或零HID数据。在其中HID装置附连到通过网络访问远程计算机的资源的本地计算机的布置背景下,远程计算机具有装置驱动器,所述装置驱动器典型地对HID装置从本地计算机通过网络向远程计算机传输HID数据所在期间的间隔进行调度。所述远程计算机的装置驱动器在每个间隔中向本地计算机发送针对HID装置的HID数据的请求。响应于这样的装置驱动器请求,即使在HID装置处没有发生变化,本地计算机也将通过网络把HID数据发送回到远程计算机。如果在远程计算机请求数据时在HID装置处没有发生变化,则本地计算机将通过网络向远程计算机发送零HID数据。零HID数据的发送以及远程计算机向本地计算机所发送的定期请求消耗了宝贵的网络资源。在可能具有许多本地计算机和许多远程计算机的系统中,以上所描述的业务量可能促使网络拥塞。


相对于附图通过示例的方式对本发明的一些实施例进行描述
图1是本发明的实施例可以结合于其中的包括本地计算机和远程计算机的示例性布置的框图;图2是依据实施例的在本地计算机(接收系统)处实行的过程的流程图,所述过程向远程计算机传送(附连到所述本地计算机的)用户接口装置处的变化的指示;
图3是依据实施例的在远程计算机(发送系统)处实行的过程的流程图,所述过程对来自所述远程计算机处的装置驱动器的针对与附连到所述本地计算机的用户接口装置相关的数据的请求进行响应。
具体实施例方式图1图示了(用户所处的)本地计算机100通过数据网络104连接到远程计算机 102的布置。虽然在图1中只描绘了一个本地计算机100和一个远程计算机102,但是注意的是,可以存在多个本地计算机100和/或多个远程计算机102。本地计算机100在本地计算机100和远程计算机102之间所建立的会话中使用远程计算机102的资源。例如,本地计算机100可以使用远程计算机102的图形资源,其中远程计算机102将远程计算机的桌面视频数据通过网络104递送到本地计算机100以在本地计算机100的显示装置106中显示。而且,一个或多个用户接口装置108附连到本地计算机100。用户接口装置108的状态变化通过数据网络104从本地计算机100传送到远程计算机102。在一些实施例中,用户接口装置108是根据如2001年6月27日的通用串行总线(USB)、人机接口装置(HID)的装置类定义、固件规范1. 11版中所描述的人机接口装置(HID)标准的HID。在其它实施例中,用户接口装置108可以根据其它标准进行操作。在随后的讨论中,参考附连到本地计算机100的“HID装置”。然而,注意到根据一些实施例的技术可以应用于其它类型的用户接口装置。提供了根据一些实施例的机制以允许向远程计算机102高效传送与HID装置108 相关的数据。此机制避免了传输零或空HID数据(其中零或空HID数据指的是指示HID装置108尚未变化的数据,换句话说,用户尚未移动或激励HID装置108)。而且,依据一些实施例,远程计算机102并不通过数据网络104向本地计算机100发送请求以请求HID装置 108的更新。相反,为了提高效率,本地计算机100只是在HID装置108处已经发生了变化(例如,用户移动了鼠标、激励了键盘、移动了滚球类型的输入装置、在平板上移动了输入装置等)时才通过数据网络104向远程计算机102发送HID数据。以此方式,实现了数据网络 104更高效的使用以用于关于HID装置108的数据的传送,原因在于不必在网络104上传输对与HID装置108相关的数据的请求以及零HID数据。数据网络104可以根据互联网协议(IP)传送数据。HID装置108可以通过至本地计算机100的通用串行总线(USB)链路110 (有线或无线USB链路)附连到本地计算机100。 更具体地,HID装置108通过USB链路110连接到HID控制器112。在以上所描述的实现方式中,任何与HID装置108相关的数据都以USB数据的形式,所述USB数据在通过数据网络104传输的IP分组中被传送到远程计算机102。虽然在所描述的实施例中参考了“USB” 和“IP”,但是注意根据一些实施例的技术可以是可应用于根据其它类型的协议的数据分组的。本地计算机100被称作“接收系统”,而远程计算机102则被称作“发送系统”。这样,本地计算机100包括接收方软件114,而远程计算机102包括发送方软件116。发送方软件116用于通过数据网络104向本地计算机100 (接收系统)中的接收方软件114发送远程计算机102 (发送系统)的桌面视频数据,其中所述桌面视频数据被显示在显示装置106 处。注意,发送方软件116所发送的桌面视频数据和音频数据是能够由相应显示装置和音频输出装置所呈现的实际呈现视频数据和呈现音频数据。所述呈现视频数据和呈现音频数据与源视频文件(例如,MPEG文件)或源音频文件中所包含的数据不同,其必须被转换为相应输出装置所能够呈现的格式。远程计算机102中的发送方软件116从远程计算机102中的视频子系统136接收视频数据。视频子系统136的视频数据可由附连到远程计算机102的显示装置显示。发送方软件116接着对发送到接收方软件114的视频数据实施压缩,所述接收方软件114接着可以在显示装置106处显示所述视频数据之前对该视频数据实行解压缩。注意,在一些实现方式中,实际的显示装置不必连接到远程计算机102的视频子系统136 ;然而,在其它实现方式中,显示装置可以连接到远程计算机102。在一些实施例中,发送方软件116和接收方软件114是根据来自惠普公司的远程图形软件(RGS)协议的。RGS被设计为完全利用远程计算机的计算机和图形资源来从本地计算机递送交互式远程访问。在不同实施例中,发送方软件116和接收方软件114可以根据来自微软公司的远程桌面协议(RDP)进行操作以通过网络连接提供远程显示和输入能力。 在其它实施例中,发送方软件116和接收方软件114可以是根据其它技术的。本地计算机110中的装置驱动器118连续监视HID控制器112以接收与HID装置 108相关的信息。依据一些实施例,如果HID装置108还没有发生变化,则装置驱动器118就不通过数据网络104发送任何数据(换句话说,装置驱动器118没有促使通过数据网络104 发送零HID数据)。然而,如果装置驱动器118检测到HID装置108处的诸如由于对HID装置108的用户操纵而引起的变化,则装置驱动器118向接收方软件114发送经更新的HID 数据,所述接收方软件114进而(以USB数据的形式)将HID数据发送到计算机100中的网络接口 120。网络接口 120包括物理网络接口控制器以及包括IP协议栈在内的协议栈。网络接口 120通过数据网络104在一个或多个IP分组中将USB HID数据发送到远程计算机102。 所述IP分组被远程计算机102中的网络接口 122接收,其从所述IP分组中提取USB HID数据并且将所述USB HID数据转发至发送方软件116。发送方软件116进而将所述USB HID 数据发送到作为远程计算机102中的存储器132的一部分的HID数据缓冲器130。依据一些实施例,如果HID数据缓冲器130包含HID数据,则这是已经在HID装置 108处发生了变化的指示。另一方面,如果HID数据缓冲器130为空,则这是在HID装置108 处尚未发生变化的指示。远程计算机102还包括用于HID装置108的装置驱动器126,其(例如,以间歇的间隔)发出针对关于HID装置108的更新数据的请求(诸如以检测鼠标或其它外围装置是否已经移动)。远程计算机102还包括虚拟内插器(interpOSer)124,其拦截来自远程计算机102中的装置驱动器126的呼叫,其企图针对附连到本地计算机100而不是远程计算机 102的HID装置108。虚拟内插器124防止针对HID装置108的呼叫到达远程计算机102 中的操作系统的较低级(内核)装置驱动器。虽然未示出,但是远程计算机102中的其它装置驱动器可以产生音频数据和视频数据,所述音频数据和视频数据分别被提供给音频子系统(未示出)和视频子系统136以由相应输出装置(诸如连接到远程计算机100和远程计算机102的相应输出装置)呈现。依据一些实施例,响应于来自装置驱动器1 对关于HID装置108的信息的呼叫, 虚拟内插器124中的HID控制模块1 检查存储器132中的HID缓冲器130以确定是否存在任何与HID装置108相关的数据。如果HID缓冲器130中没有数据,则HID控制模块1 向装置驱动器126返回响应并且包含零HID数据。另一方面,如果缓冲器130中存在HID 数据,则HID控制模块128向装置驱动器1 发送实际的HID数据。注意,根据一些实施例,虚拟内插器IM并不会促使来自装置驱动器1 的呼叫通过数据网络104被发送到本地计算机100。相反,虚拟内插器124(且更具体地,HID控制模块128)在本地处理对来自装置驱动器126的呼叫的响应。远程计算机102还包括软件应用134。软件应用134可能已经促使装置驱动器1 进行呼叫以从HID装置108请求更新信息。例如,软件应用134可能已经呈递了用于向用户显示的图形用户界面(GUI),其中所述GUI能够接受控制菜单、图标等中的用户输入。与所述GUI相关的视频数据存储在远程计算机102的视频子系统136中。视频子系统136中的视频数据被发送方软件116压缩以通过数据网络104进行传输,并且经压缩的视频数据被本地计算机100中的接收方软件114接收,其对所接收的视频数据进行解压缩并且促使所述视频数据在本地计算机100的显示装置106处显示。进而,观看显示装置106中的⑶I 的用户可能希望使用HID装置108来激活一定命令或者向⑶I输入信息。HID装置108的操纵由装置驱动器118来检测,其促使经更新的HID数据(IP分组中的USB数据)由接收方软件114通过数据网络104发送到远程计算机102的发送方软件116。经更新的HID数据被发送方软件116存储在存储器132中的HID缓冲器130中。本地计算机100包括连接到存储器139的一个或多个中央处理器(CPU) 138。本地计算机100的诸如接收方软件114和装置驱动器118之类的软件模块可在(一个或多个) CPU 138上执行。远程计算机102类似地包括一个或多个CPU 140。远程计算机102的诸如软件应用134、装置驱动器126、虚拟内插器IM和发送方软件116之类的软件模块可在(一个或多个)CPU 140上执行。注意,可以有附连到本地计算机100的多个HID装置(或者其它类型的用户接口装置)。在此情况下,可以存在被布置为实行与以上所描述类似的任务的本地计算机100中的多个对应装置驱动器118以及远程计算机102中的多个装置驱动器1 和相应HID数据缓冲器130。图2示出了根据在接收系统(本地计算机100)处实行的实施例的过程。(在202) 本地计算机100中的装置驱动器118针对HID装置108中的变化对HID装置108进行监视。 (在204)如果没有检测到变化,则装置驱动器118返回到任务202以继续监视HID装置108 中的变化。如果HID装置中没有变化,则装置驱动器118不促使零HID数据通过数据网络 104被发送。然而,如果在HID装置108处检测到变化,则(在206)装置驱动器118向接收方软件114发送经更新的HID数据,所述接收方软件114进而将所述经更新的HID数据发送到网络接口 120以在IP分组中通过数据网络104传输到远程计算机102。图3示出了在发送系统(远程计算机102)中实行的过程,并且更为具体地,是由虚拟内插器124中的HID控制模块1 所实行的过程。(在302) HID控制模块1 从装置驱动器接收对在HID装置108上的更新的呼叫。在响应中,(在304)HID控制模块1 进行检查以确定HID缓冲器130中是否存在HID数据。如果没有,则HID控制模块128向装置驱动器126发送零HID数据。然而,如果在HID缓冲器130中存在HID数据,则(在308) HID 控制模块1 将从HID缓冲器130检索到的HID数据发送到装置126。使用根据一些实施例的技术和机制,实现了网络带宽更高效的利用以通过数据网络传输HID数据。以上所描述的软件(包括图1的装置驱动器118,126、虚拟内插器1M、HID控制模块128、接收方软件114和发送方软件116)的指令被加载以在处理器(诸如图1中的一个或多个CPU 138、140)上执行。所述处理器包括微处理器、微控制器、处理器模块或子系统(包括一个或多个微处理器或微控制器)、或其它控制或计算装置。“处理器”可以指单个组件或复数个组件(例如,一个CPU或多个CPU)。(软件的)指令和数据被存储在相应存储装置中,所述存储装置被实现为一个或多个计算机可读或计算机可使用的存储介质。所述存储介质包括不同形式的存储器,其包括诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除和可编程只读存储器(EPR0M)、电可擦除和可编程只读存储器(EEPROM)和闪速存储器之类的半导体存储器装置;诸如固定盘、软盘和可移动盘之类的磁盘;包括磁带在内的其它磁介质;以及诸如紧致盘(CD)或数字视频盘(DVD)之类的光学介质。注意,以上所讨论的软件的指令可以提供在一个计算机可读或计算机可使用的存储媒体上,或者可替换地,可以提供在可能具有复数个节点的大型系统中分布的多个计算机可读或计算机可使用的存储介质上。一个或多个这样的计算机可读或计算机可使用的存储介质或媒体被认为是物品(或制造品)的一部分。物品或制造品可以指所制造的任何单个组件或多个组件。在以上描述中,阐述了众多细节以提供对本发明的理解。然而,本领域技术人员将理解的是,本发明可以在没有这些细节的情况下予以实践。虽然已经相对于有限数目的实施例公开了本发明,但是本领域技术人员将会从其意识到众多修改和变型。意图是所附权利要求覆盖如落入本发明的真正精神和范围之内的这样的修改和变型。
权利要求
1.一种方法,包括第一计算机通过网络从第二计算机接收用户接口装置的数据,其中所述用户接口装置的数据响应于在所述用户接口装置处发生的变化而被接收;和响应于来自所述第一计算机中的请求实体的请求由所述第一计算机中的模块确定所述第一计算机是否已经接收到所述用户接口装置的数据;响应于确定已经接收到所述用户接口装置的数据,所述模块响应于所述请求而将所接收的数据提供给所述请求实体;和响应于确定尚未接收到所述用户接口装置的数据,所述模块向所述请求实体提供所述用户接口装置处没有发生变化的指示。
2.如权利要求1所述的方法,还包括所述请求实体在复数个间歇间隔提交针对所述用户接口装置的状态的请求;和所述模块通过下列步骤对所述请求中的每一个进行响应 确定所述第一计算机是否接收到所述用户接口装置的更新数据; 如果接收到所述更新数据则向所述请求实体提供所述更新数据;以及如果尚未接收到所述更新数据则提供所述用户接口装置处没有变化的指示。
3.如权利要求1所述的方法,其中接收所述用户接口装置的数据在所述第一计算机不向所述第二计算机发送针对所述数据的任何请求的情况下发生。
4.如权利要求1所述的方法,其中提供所述用户接口装置处没有变化的指示包括提供零人机接口装置(HID)数据。
5.如权利要求1所述的方法,还包括将所接收的数据存储在所述第一计算机的缓冲器中,其中确定是否已经接收到所述用户接口装置的数据包括访问所述缓冲器以检查所述缓冲器是否包含所接收的数据。
6.如权利要求1所述的方法,其中所述请求是从所述第一计算机中的装置驱动器接收的。
7.如权利要求1所述的方法,其中接收所述用户接口装置的数据包括接收通用串行总线(USB)数据。
8.如权利要求7所述的方法,其中接收所述用户接口装置的数据包括接收USB人机接口装置(HID)数据。
9.如权利要求7所述的方法,其中接收USB数据包括通过互联网协议(IP)网络接收所述USB数据。
10.如权利要求7所述的方法,还包括所述第一计算机通过网络向所述第二计算机发送所述第一计算机的视频子系统中的视频数据以在所述第二计算机的显示装置处显示。
11.一种第一计算机,包括 视频子系统;处理器,用于通过网络向第二计算机发送所述视频子系统的视频数据以在所述第二计算机的显示装置处显示;通过所述网络接收附连到所述第二计算机的用户接口装置的数据; 响应于来自所述第一计算机中的请求实体的请求 确定所述第一计算机是否已经接收到所述用户接口装置的数据; 响应于确定已经接收到所述用户接口装置的数据,响应于所述请求而将所接收的数据提供给所述请求实体;和响应于确定尚未接收到所述用户接口装置的数据,向所述请求实体提供在所述用户接口装置处没有发生变化的指示。
12.如权利要求11所述的第一计算机,所述确定任务和提供任务由可在所述处理器上执行的虚拟内插器实行。
13.如权利要求11所述的第一计算机,其中所述用户接口装置的数据包括人机接口装置(HID)的数据。
14.一种包括至少一个计算机可读媒体的物品,所述计算机可读媒体包含指令,所述指令在被执行时促使第一计算机通过网络接收附连到第二计算机的用户接口装置的数据; 响应于来自所述第一计算机中的请求实体的请求 确定所述第一计算机是否已经接收到所述用户接口装置的数据; 响应于确定已经接收到所述用户接口装置的数据,响应于所述请求而将所接收的数据提供给所述请求实体;和响应于确定尚未接收到所述用户接口装置的数据,向所述请求实体提供所述用户接口装置处没有发生变化的指示。
15.如权利要求14所述的物品,其中所述指令在被执行时促使所述第一计算机进一步通过所述网络向第二计算机发送所述第一计算机中的视频子系统的视频数据以在所述第二计算机的显示装置处显示。
全文摘要
第一计算机通过网络从第二计算机接收用户接口装置的数据,其中所述用户接口装置的数据是响应于所述用户接口装置处发生的变化而被接收的。响应于来自第一计算机中的请求实体的请求,第一计算机中的模块确定第一计算机是否已经接收到所述用户接口装置的数据。响应于确定已经接收到所述用户接口装置的数据,所述模块响应于所述请求而将所接收的数据提供给请求实体,以及响应于确定尚未接收到所述用户接口装置的数据,所述模块向所述请求实体提供在所述用户接口装置处没有发生变化的指示。
文档编号H04L29/10GK102301359SQ200980155749
公开日2011年12月28日 申请日期2009年1月29日 优先权日2009年1月29日
发明者M. 金 J. 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1