一种虚拟桌面外部设备支持系统的制作方法

文档序号:7729162阅读:176来源:国知局
专利名称:一种虚拟桌面外部设备支持系统的制作方法
技术领域
本发明涉及虚拟桌面外部设备支持的技术领域,更具体地说,就是在虚拟桌面平台下提供一种访问桌面客户端外部设备的系统。
背景技术
当前虚拟桌面平台受到人们的追捧,相应的虚拟桌面解决方案也应运而生,例如虚拟桌面技术解决了应用程序远程虚拟显示,用户本地环境能快速构建,用户环境的迁移等等问题的。而计算机的外部设备具有高速,携带方便,简单易用并支持即插即用等特性, 因此在计算机界内得到了广泛的应用。比如目前市场上出现的USB充电器、USB移动光驱、 USB网卡、USB音响等产品都受到广大计算机用户的欢迎。然而,目前这些USB设备仅仅只能在单机的个人计算机上得到应用,并没有在桌面虚拟化系统得到广泛的应用,也就是说将一个USB设备,例如USB摄像头接入本地主机,该设备只能提供本地主机上应用程序使用,虚拟桌面系统无法共享该USB上摄像头。而现有的操作系统的文件共享机制并不能完全满足这个需求。在这一背景下,虚拟桌面中外部设备支持机制的研究课题备受关注。当前,常规设备共享模型对新出现的外围设备支持不是非常好。第一,只有应用层面的操作是共享的,所以更细粒度和特定设备操作不被支持的,这就使得它不能像使用直接连接的设备一样去使用共享的远程设备。第二,在原有功能上,远程设备和本地连接的设备是相同的,然而,用于控制这两种装置接口往往不同。对于本地连接的设备大多数控制命令是在设备驱动程序中实现的。而共享机制访问远程设备通常在操作系统的上层实施,如用户态,应用程序或库。这两个接口之间的差距一般通过修改现有的应用程序来支持。例如,VNC提供的共享机制是通过发送连续的屏幕图像数据来实现和远程计算机之间的帧缓存共享。但是一个VNC客户端运行的是一个用户态的应用程序,作为本地物理帧缓冲,它不提供相同的访问接口。第三,由于共享设备操作系统之间的复杂性,有时实现高度的互操作性对一个设备共享系统来说是比较困难的。有些共享设备应用程序(例如仅仅通过延长现有的抽象层转发设备请求)通常只支持相同的操作系统,不能与没有这样一个抽象层的操作系统互操作。此外,互操作性问题往往会与上述第一个问题产生冲突,为弥合不同的操作系统抽象层之间的冲突,通常需要禁用共享设备的一些特定的功能。而本发明中描述的虚拟桌面环境中提供外部设备支持的方法解决了上述所有的问题。

发明内容
本发明的目的在于提供的一种虚拟桌面外部设备支持系统,该系统具有网络透明性和可扩展性。本发明提供的一种虚拟桌面外部设备支持系统,其特征在于,该系统包括位于桌面客户端的过滤驱动模块和客户端设备管理模块,以及位于虚拟服务端的服务端设备管理模块和虚拟总线接口驱动模块;客户端设备管理模块和服务端设备管理模块用于实现虚拟USB设备与外部USB设备的对应关系;客户端设备管理模块用于将桌面客户端的USB设备共享出来提供给虚拟服务端使用,将USB设备从操作系统的驱动模块中卸载,然后绑定到系统的过滤驱动模块,完成对USB设备的绑定并进行实时监控USB设备的状态转化,同时负责与服务端设备管理模块进行异步通信,交换外部USB设备的状态数据包,以建立真实设备与虚拟设备的连接关系;服务端设备管理模块负责从虚拟总线接口驱动模块中获取虚拟USB设备的状态,实时监控虚拟服务端中的USB设备的状态转化,负责收发虚拟USB设备的状态数据包,与桌面客户端中的客户端设备管理模块进行通信,保持虚拟设备与桌面客户端的真实USB状态的一致性,建立真实设备与虚拟设备的连接关系;过滤驱动模块充当USB设备的客户端驱动程序,负责监控客户端外部USB设备的操作动作,封装请求命令发送给服务端的虚拟总线接口驱动模块,接收并解析从服务端虚拟总线接口驱动模块发送的系统请求包、再重装成为外设请求命令发送给外部USB设备; 实现将本地的USB设备无缝的映射到服务端;虚拟总线接口驱动模块负责建立对应外部USB设备的虚拟USB设备;把服务端操作系统应用层对虚拟USB设备的I/O请求封装成系统请求,通过网络发送给过滤驱动模块; 解析接收到处理数据,经过拆包、解析、提取后将真实的数据传递到操作系统应用层。本发明的外部设备支持系统提供了先进的设备共享架构,支持复杂的桌面电脑客户端外设接口。该设备共享架构符合一系列的功能要求,包括网络透明性,互操作性和通用性。它利用低级别的外围设备控制协议接口,允许虚拟环境下两种平台应用程序模板中应用程序不做任何修就可以使用远程桌面客户端设备。本发明在驱动层实现了一个具有网络透明性、完整功能和可互操作的虚拟桌面外设支持之间。


图1为虚拟桌面外部设备支持系统的一种具体实现方式的结构示意图;图2为详细模块设计图;图3为USB设备数据的流程图;图4为桌面客户端工作机制流程图;图5为虚拟服务端工作机制流程图。
具体实施例方式下面结合附图并以USB外部设备为例对本发明方法作进一步详细的说明。如图1所示,本发明系统包括位于桌面客户端的过滤驱动模块2和客户端设备管理模块1,以及位于虚拟服务端的服务端设备管理模块3和虚拟总线接口驱动模块4。客户端设备管理模块1用于将桌面客户端的USB设备共享出来提供给虚拟服务端使用,将USB设备从操作系统的驱动模块中卸载,即把USB设备接口编号写入原驱动下的解绑定文件,然后绑定到系统的过滤驱动模块2,完成对USB设备的绑定并进行实时监控USB 设备的状态转化,同时负责与服务端设备管理模块3进行异步通信,交换外部USB设备5的状态数据包,以建立真实设备与虚拟设备的连接关系。服务端设备管理模块3负责从虚拟总线接口驱动模块4中的服务端USB状态监控模块41中获取虚拟USB设备6的状态,实时监控虚拟服务端中的USB设备的状态转化,负责收发虚拟USB设备6的状态数据包,与桌面客户端中的客户端设备管理模块1进行通信, 保持虚拟设备与桌面客户端的真实USB状态的一致性,建立真实设备与虚拟设备的连接关系。客户端设备管理模块1和服务端设备管理模块3这两个模块的重要作用是实现虚拟USB设备6与外部USB设备5的对应关系。建立设备对应关系的流程如下客户端设备管理模块1首先把设备的状态设置为可供使用,服务端设备管理模块3通过向客户端设备管理模块1发送设备查询数据包,客户端设备管理模块1向服务端设备管理模块3返回数据包,服务端设备管理模块3获知可以使用的外设。若虚拟服务端向操作系统发出插入该可使用的外设的命令,服务端设备管理模块3将向客户端设备管理模块1发送请求相关USB 设备的基本信息,客户端设备管理模块1将按照系统请求的要求格式返回建立虚拟设备所需的信息,服务端设备管理模块3收到返回信息后,解析数据包,转发虚拟总线接口驱动模块4中的客户端USB状态监控模块21,提示虚拟USB已经被绑定,可以使用。过滤驱动模块2充当USB设备的客户端驱动程序,负责监控客户端外部USB设备5 的操作动作,封装请求命令发送给服务端的虚拟总线接口驱动模块4,接收并解析从服务端虚拟总线接口驱动模块4发送的系统请求包、再重装成为外设请求命令发送给外部USB设备5。实现了把本地的USB设备无缝的映射到服务端。虚拟总线接口驱动模块4负责建立对应外部USB设备5的虚拟USB设备6 ;把服务端操作系统应用层对虚拟USB设备6的I/O请求封装成系统请求,通过网络发送给过滤驱动模块2 ;解析接收到处理数据,经过拆包、解析、提取后将真实的数据传递到操作系统
应用层。下面举例说明过滤驱动模块2和虚拟总线接口驱动模块4的具体实现方式。从图1可以看出,过滤驱动模块2包括客户端USB状态监控模块21、客户端数据包处理模块22、客户端接收模块23、客户端发送模块M和客户端读写线程管理模块25。客户端USB状态监控模块21用于实时监控外部USB设备5的状态,实现对设备热插拔的需求;绑定客户端USB设备,即往绑定文件中写入该USB设备的接口编号;与客户端设备管理模块1进行通信,接收从客户端管理模块发送的查询指令,解析命令,并按查询要求返回结果。客户端接收模块23用于接收从虚拟总线接口驱动模块4中的服务端发送模块42发送的数据包,并将接收的数据包传递给客户端数据包处理模块22 ;数据包中包含的是对USB设备访问的控制信息和数据信息。客户端发送模块M用于发送从客户端数据包处理模块22传递来的数据包,并将其发送给虚拟总线接口驱动模块4;数据包中包含的是对USB设备访问的控制信息和数据 fn息ο客户端数据包处理模块22用于接收来自于客户端接收模块23的USB请求数据包 (IPURB),经过拆包、解析、提取真实请求命令包结构体传送给客户端读写线程管理模块25 ; 接收从客户端读写线程管理模块25返回的数据包,经过封装成USB数据包(IPURB),传递给客户端发送模块M。客户端读写线程管理模块25用于接收从客户端数据包处理模块22传递的对外部 USB设备5进行访问的请求,根据请求量动态的创建或杀死读写线程,实现对真实的USB设备进行读写控制;向客户端数据包处理模块22传递读写外部USB设备5所得到的数据。
从图1可以看出,虚拟总线接口驱动模块4包括服务端USB状态监控模块41、服务端接收模块43、服务端发送模块42、服务端数据包处理模块44、服务端读写线程管理模块 46和串行化模块45。服务端USB状态监控模块41负责实时监控虚拟USB设备6的状态,在虚拟服务端实现对设备的插拔;与服务端设备管理模块3进行通信,接收从操作系统应用层发送的查询命令,并传递给服务端管理模块。接收从服务端设备管理模块3返回的查询结果,并返回给操作系统应用层。服务端接收模块43用于接收从桌面客户端过滤驱动模块2中的客户端发送模块 24发送的数据包,并将接收的数据包传递给服务端数据包处理模块44 ;数据包中包含的是对USB设备访问的控制信息和数据信息。服务端发送模块42负责发送从服务端数据包处理模块44传递来的数据包,并将其发送给客户端接收模块23 ;数据包中包含的是对USB设备访问的控制信息和数据信息。服务端数据包处理模块44用于接收来自服务端接收模块43的数据包,经过拆包、 解析、提取数据包传递给服务端读写线程管理模块46 ;接收从服务端读写线程管理模块46 返回的数据包,经过封装成USB请求数据包(IPURB),传递给服务端发送模块42。服务端读写线程管理模块46用于接收从服务端数据包处理模块44传递的对USB 设备进行访问的数据包,根据请求量动态的创建或杀死线程,向操作系统应用层传递被请求的数据。串行化模块45用于接收来自操作系统应用层对虚拟USB设备6的读写请求包,并将请求包进行串行化,以对读写请求进行排序,对数据包进行合并操作以加快读写速度,保证各种传输速度方式下的串行化传输。虚拟总线接口驱动模块4的作用是建立对应的虚拟USB设备6,并进行相关数据的处理。虚拟总线接口驱动模块4中的服务端USB状态监控模块41接收到从服务端设备管理模块3中传递来的真实USB相关信息后,告知操作系统即插即用管理器虚拟设备插入事件,操作系统中的即插即用管理器根据虚拟设备的相关信息为虚拟设备建立功能设备对象,然后即插即用管理器与功能设备对象相互配合完成加载虚拟设备的相关设备驱动。在加载设备驱动过程的同时,操作系统中的即插即用管理器给服务端USB状态监控模块41发送各种查询命令,来完成虚拟设备的建立。当虚拟设备的驱动对象栈建立成功后,虚拟设备就会在虚拟服务端中显示。虚拟服务端虚拟总线接口驱动模块4完成系统数据的收发,是虚拟设备和外设通信通道。它收发信息的流程图如图2所示解析命令,判断是接收数据还是发送数据,如果是接收数据就要判断是否异步,相关判断后启动相关线程进程处理。虚拟设备建立后,当虚拟桌面用户对虚拟USB设备6有I/O请求时,程序会对设备发出I/O请求包,虚拟总线接口驱动模块4收到应用层的请求包后对并发的I/O请求包进行串行化;串行化完成后,加入待处理的设备请求队列中,进行排队,串行化后的I/O请求包转化为系统请求包后传递给服务端数据包处理模块44,经过对请求包的封装后,传递给服务端发送模块42,并发送给客户端接收模块23,等待桌面客户端完成用户对外部USB设备5的I/O请求的操作。桌面客户端的过滤驱动模块2中客户端接收模块23接收到请求数据包后,传递给客户端数据包处理模块22,对该请求进行处理,经过拆包、解析、提取对设备的命令请求数据并传递给客户端读写线程管理模块25。客户端读写线程管理模块25启动读写线程,向操作系统请求I/O操作。USB设备完成I/O操作后,操作系统向过滤驱动模块2中的客户端读写线程管理模块25返回数据结果,传递给客户端数据包处理模块22并封装成网络数据包返回用户空间的客户端发送模块M,最后发送到虚拟服务端的虚拟总线接口驱动中的服务端接收模块43。服务端接受模块传递数据包至服务端数据包处理模块 44,经过拆包、解析、提取数据,传递给服务端读写线程管理模块46,启动读写线程会根据实例编号找到相应的物理设备对象,并把相关的数据发送到操作系统层等待完成I/O请求。整个系统工作流程如图3、4所示1、桌面客户端加载过滤驱动,并建立网络连接套接字;虚拟服务端加载虚拟外设驱动,并等待用户的操作命令。2、在桌面客户端用户进行设备查询操作,在界面的工作区将列举出出客户端的所有USB设备。3、根据设备列表,按需选择特定设备进行绑定操作,这时,虚拟桌面系统清楚地看到绑定后真实设备,并进一步等待接收虚拟服务端的命令。4、虚拟服务端用户输入操作命令,查询可共享的设备列表,这时虚拟服务端给桌面客户端发送一个网络连接请求,经过桌面客户端认证后,两端建立网络套接字连接。5、建立好连接后,虚拟服务端给桌面客户端发送查询设备列表请求。在桌面客户端对接受到的命令进行解析,并做相应的处理后,给虚拟服务端返回设备列表结果。6、在虚拟服务端把返回设备列表结果进行可视化显示到界面,当用户输入操作命令要求进行共享,则给桌面客户端发送共享设备的命令。而桌面客户端接受到命令后,将往虚拟服务端返回共享设备的信息,如设备的总线编号,配置值和接口值。7、虚拟服务端根据返回设备信息,由管理设备程序给本端的虚拟外设总线接口驱动发送相关信息,再由虚拟外设总线接口驱动配合操作系统的USB内核层来完成虚拟设备的创立。本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
1.一种虚拟桌面外部设备支持系统,其特征在于,该系统包括位于桌面客户端的过滤驱动模块( 和客户端设备管理模块(1),以及位于虚拟服务端的服务端设备管理模块(3) 和虚拟总线接口驱动模块;客户端设备管理模块(1)和服务端设备管理模块C3)用于实现虚拟USB设备与外部 USB设备的对应关系;客户端设备管理模块(1)用于将桌面客户端的USB设备共享出来提供给虚拟服务端使用,将USB设备从操作系统的驱动模块中卸载,然后绑定到系统的过滤驱动模块( ,完成对USB设备的绑定并进行实时监控USB设备的状态转化,同时负责与服务端设备管理模块C3)进行异步通信,交换外部USB设备的状态数据包,以建立真实设备与虚拟设备的连接关系;服务端设备管理模块C3)负责从虚拟总线接口驱动模块中获取虚拟USB设备的状态,实时监控虚拟服务端中的USB设备的状态转化,负责收发虚拟USB设备的状态数据包,与桌面客户端中的客户端设备管理模块(1)进行通信,保持虚拟设备与桌面客户端的真实USB状态的一致性,建立真实设备与虚拟设备的连接关系;过滤驱动模块( 充当USB设备的客户端驱动程序,负责监控客户端外部USB设备的操作动作,封装请求命令发送给服务端的虚拟总线接口驱动模块,接收并解析从服务端虚拟总线接口驱动模块(4)发送的系统请求包、再重装成为外设请求命令发送给外部USB 设备;实现将本地的USB设备无缝的映射到服务端;虚拟总线接口驱动模块(4)负责建立对应外部USB设备的虚拟USB设备;把服务端操作系统应用层对虚拟USB设备的I/O请求封装成系统请求,通过网络发送给过滤驱动模块 (2);解析接收到处理数据,经过拆包、解析、提取后将真实的数据传递到操作系统应用层。
2.根据权利要求1所述的虚拟桌面外部设备支持系统,其特征在于,过滤驱动模块( 包括客户端USB状态监控模块(21)、客户端数据包处理模块(22)、 客户端接收模块(23)、客户端发送模块04)和客户端读写线程管理模块05);客户端USB状态监控模块用于实时监控外部USB设备的状态,实现对设备热插拔的需求;与客户端设备管理模块(1)进行通信,接收从客户端管理模块发送的查询指令,解析命令,并按查询要求返回结果;客户端接收模块03)用于接收从虚拟总线接口驱动模块(4)发送的数据包,并将接收的数据包传递给客户端数据包处理模块02);客户端发送模块04)用于发送从客户端数据包处理模块0 传递来的数据包,并将其发送给虚拟总线接口驱动模块(4);客户端数据包处理模块0 用于接收来自于客户端接收模块的USB请求数据包,经过拆包、解析、提取真实请求命令包结构体传送给客户端读写线程管理模块05);接收从客户端读写线程管理模块0 返回的数据包,经过封装成USB数据包,传递给客户端发送模块(24);客户端读写线程管理模块0 用于接收从客户端数据包处理模块0 传递的对外部 USB设备进行访问的请求,根据请求量动态的创建或杀死读写线程,实现对真实的USB设备进行读写控制;向客户端数据包处理模块0 传递读写外部USB设备所得到的数据。
3.根据权利要求1或2所述的虚拟桌面外部设备支持系统,其特征在于,虚拟总线接口驱动模块(4)包括服务端USB状态监控模块(41)、服务端接收模块 (43)、服务端发送模块(42)、服务端数据包处理模块(44)、服务端读写线程管理模块06)和串行化模块(45);服务端USB状态监控模块负责实时监控虚拟USB设备的状态,在虚拟服务端实现对设备的插拔;与服务端设备管理模块C3)进行通信,接收从操作系统应用层发送的查询命令,并传递给服务端管理模块;接收从服务端设备管理模块C3)返回的查询结果,并返回给操作系统应用层;服务端接收模块^幻用于接收从桌面客户端过滤驱动模块O)中的客户端发送模块 (24)发送的数据包,并将接收的数据包传递给服务端数据包处理模块G4);服务端发送模块0 负责发送从服务端数据包处理模块G4)传递来的数据包,并将其发送给客户端接收模块03);服务端数据包处理模块G4)用于接收来自服务端接收模块的数据包,经过拆包、 解析、提取数据包传递给服务端读写线程管理模块G6);接收从服务端读写线程管理模块 (46)返回的数据包,经过封装成USB请求数据包,传递给服务端发送模块02);服务端读写线程管理模块(46)用于接收从服务端数据包处理模块G4)传递的对USB 设备进行访问的数据包,根据请求量动态的创建或杀死线程,向操作系统应用层传递被请求的数据;串行化模块G5)用于接收来自操作系统应用层对虚拟USB设备的读写请求包,并将请求包进行串行化,以对读写请求进行排序,对数据包进行合并操作以加快读写速度,保证各种传输速度方式下的串行化传输。
全文摘要
本发明公开了一种虚拟桌面外部设备支持系统,包括过滤驱动模块、客户端设备管理模块、服务端设备管理模块和虚拟总线接口驱动模块;虚拟外设总线接口驱动负责根据共享的真实设备在虚拟环境下建立虚拟设备,并把对虚拟设备操作的命令封装成网络请求包,通过传输接口转发给桌面客户端。过滤驱动模块的功能是获取虚拟外设总线接口驱动模块转发的数据,并进行命令解析,根据命令控制本机物理设备。客户端设备管理模块和服务端设备管理模块负责建立桌面客户端与虚拟服务端的连接,协调虚拟设备与真实设备的数据收发,并提供通道进行用户态与内核的数据通信。本发明将虚拟桌面的虚拟设备和本地物理设备接口之间的差异完全隐藏在主机控制驱动层。
文档编号H04L29/06GK102270186SQ20111020486
公开日2011年12月7日 申请日期2011年7月21日 优先权日2011年7月21日
发明者周晔, 廖小飞, 谢晓, 金海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1