Usb映射方法

文档序号:7644375阅读:6470来源:国知局
专利名称:Usb映射方法
技术领域
本发明涉及连接在终端的真实的USB设备被映射为服务器端的一个虚拟的USB设备的方法。
背景技术
网络计算机(终端)是客户机/服务器体系中的客户机设备,是无硬盘、光驱、软驱等设备的简化计算机,可以利用服务器软、硬件资源进行计算等。多台客户端可以同时登录到服务器上,它们之间工作是互相隔离的。网络计算机具有易管理,安全性高等特点,在企业,政府机构等应用较广泛。
目前应用较多的网络计算机主要是通过WBT登录Windows服务器来使用。在WBT下,用户看到和使用的都是服务器的资源,在特定的用户会话中,利用服务器资源完成应用,并将最终结果显示在客户机端。
Citrix的ICA(Independent Computing Architecture,独立计算结构)和Microsoft的RDP(Remote Desktop Protocol,远程桌面协议)是终端得以广泛应用的重要因素。这两种技术都提供了部分的设备重定向服务。就是说,把连接在终端的设备映射到服务器上,使用服务器的驱动程序驱动设备。目前已经实现的映射有串口,并口,声音,打印机设备,但是没有为USB设备提供通用的映射服务。
随着USB技术的发展,终端也大量的使用了USB设备。然而,在终端上运行的操作系统大多为嵌入式操作系统,如Linux,WinCE等,这些嵌入式操作系统对USB的支持不是很好。大量的USB设备因为缺乏运行在这些操作系统下的驱动程序和应用程序,而不能在终端上使用。
目前要实现终端上USB设备映射的功能,只有某些特定种类的设备可以实现。如某些U盘可以通过RDP映射,某些扫描仪开发了终端驱动程序后也可以实现映射,打印机可以通过打印机映射,但是缺乏一个通用的映射方法。
这种现状就产生如下需求在服务器端使用Windows系统,在终端使用嵌入式操作系统如WinCE,Linux,开发一套USB映射系统,使用Windows的驱动程序来驱动位于终端的USB设备。

发明内容
本发明的目的在于提供一种USB映射方法,它只需在服务器端安装USB设备的驱动程序,即可使用,而无须在每个客户端安装驱动程序,大大方便了开发和使用。
本发明USB映射方法包括服务器端和客户端,服务器和客户端用网络相连接,其特征在于连接在客户端的真实的USB设备被映射为服务器端的一个虚拟的USB设备的方法包括如下步骤1)客户端插上USB设备,USB映射服务程序客户机端侦测到设备到来,发出一个设备插入的命令,将命令封装起来发送给服务器;2)服务器收到封装的数据包,解析是一个插入设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装起来;3)客户机将相关的设备信息封装起来,传回到服务器端;4)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,虚拟一个USB设备;5)虚拟总线虚拟出USB设备,通知PnP管理器,加载相应的USB设备驱动程序;6)USB设备驱动程序发出URB请求包,对设备进行初始化;
7)虚拟总线截获到这些URB请求包,分析这些URB,然后重新封装,通知服务程序有命令需要处理;8)USB映射服务程序服务器端取出含有URB的封装好的数据包,发送到客户机端;9)USB映射服务程序客户机端收到含有URB的封装好的数据包,解包分析,发现是URB命令,调用通用驱动接口将命令传给客户驱动;10)客户驱动将命令转换成可处理的Transfer,调用底层驱动接口处理,底层驱动和设备直接打交道,命令设备动作,并从设备取得处理结果,传给通用驱动;11)USB映射服务程序客户机端收到通用驱动返回的处理结果,将结果封装起来,发送到服务器端;12)USB映射服务程序服务器端收到含有URB结果的封装好的数据包,通知虚拟总线有处理结果返回;13)虚拟总线解包,分析,将结果数据回填到URB,通知应用程序命令完成;14)USB设备驱动程序不停的发出URB命令,重复步骤6-13,直至驱动初始化完成;15)用户通过RDP登录到Windows服务器,看见USB设备已经映射成功,服务器上多出一个USB设备;16)用户使用应用软件,使用设备;17)应用程序发出请求,经过USB设备驱动转换成URB命令包;18)重复步骤7-13,直至应用处理完毕;19)客户端拔出USB设备,USB映射服务程序客户机端侦测到设备消失,发出一个设备拔出的命令,将命令封装起来发送给服务器;20)服务器收到数据包,解析是一个拔出设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装;21)客户机将相关的设备信息封装,传回到服务器端;22)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,拔出一个USB设备;23)虚拟总线通知PnP管理器,卸载相应的USB设备驱动程序,释放相应的资源。
本发明的技术方案不仅大大减轻了研发人员在终端上的USB设备驱动的开发工作;而且也极大地方便了客户,客户只需要在服务器端安装设备供应商提供的驱动程序,就可以使用终端接入的USB设备,而无须在每台终端上安装USB驱动程序的麻烦,方便了使用。


图1是USB映射系统整体框架图;图2是USB映射系统软件模块构成图;图3是主要数据结构示意图;图4是USB映射服务程序发送线程与客户机端处理发送URB数据流程图;图5是USB映射服务程序服务器端接收线程接收从设备返回的URB的处理流程图;图6是虚拟总线模块图;图7是虚拟总线设备PNP状态转换图;图8是虚拟总线插入设备接口处理模块图;图9是虚拟总线设备删除接口处理模块图;图10是虚拟总线URB处理流程图;图11是URB发送线程处理流程图;图12是URB处理结果回送给Windows设备驱动流程图。
具体实施例方式本发明USB映射方法包括服务器端和客户端,服务器和客户端用网络相连接,其特征在于连接在客户端的真实的USB设备被映射为服务器端的一个虚拟的USB设备的方法包括如下步骤1)客户端插上USB设备,USB映射服务程序客户机端侦测到设备到来,发出一个设备插入的命令,将命令封装起来发送给服务器;2)服务器收到封装的数据包,解析是一个插入设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装起来;3)客户机将相关的设备信息封装起来,传回到服务器端;4)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,虚拟一个USB设备;5)虚拟总线虚拟出USB设备,通知PnP管理器,加载相应的USB设备驱动程序;6)USB设备驱动程序发出URB请求包,对设备进行初始化;7)虚拟总线截获到这些URB请求包,分析这些URB,然后重新封装,通知服务程序有命令需要处理;8)USB映射服务程序服务器端取出含有URB的封装好的数据包,发送到客户机端;9)USB映射服务程序客户机端收到含有URB的封装好的数据包,解包分析,发现是URB命令,调用通用驱动接口将命令传给客户驱动;10)客户驱动将命令转换成可处理的Transfer,调用底层驱动接口处理,底层驱动和设备直接打交道,命令设备动作,并从设备取得处理结果,传给通用驱动;11)USB映射服务程序客户机端收到通用驱动返回的处理结果,将结果封装起来,发送到服务器端;12)USB映射服务程序服务器端收到含有URB结果的封装好的数据包,通知虚拟总线有处理结果返回;13)虚拟总线解包,分析,将结果数据回填到URB,通知应用程序命令完成;14)USB设备驱动程序不停的发出URB命令,重复步骤6-13,直至驱动初始化完成;15)用户通过RDP登录到Windows服务器,看见USB设备已经映射成功,服务器上多出一个USB设备;16)用户使用应用软件,使用设备;17)应用程序发出请求,经过USB设备驱动转换成URB命令包;18)重复步骤7-13,直至应用处理完毕;19)客户端拔出USB设备,USB映射服务程序客户机端侦测到设备消失,发出一个设备拔出的命令,将命令封装起来发送给服务器;20)服务器收到数据包,解析是一个拔出设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装;21)客户机将相关的设备信息封装,传回到服务器端;22)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,拔出一个USB设备;23)虚拟总线通知PnP管理器,卸载相应的USB设备驱动程序,释放相应的资源。
上述的封装包的处理包括服务器端发送步骤、服务器端接收步骤和客户端步骤1)服务器端发送步骤(1)SOCKET建立流式套接字,返回套接字号,(2)将套接字与远程主机连接,(3)判断是否连接成功,(4)若不成功,则关闭套接字,若成功,则继续下一步骤,(5)不断地将IRP封装起来,发送到客户端,
(6)收到删除设备的消息就关闭套接字;2)服务器端接收步骤(1)收到客户端的设备插入请求,终端认证,(2)获取客户端信息,(3)创建URB发送线程,(4)虚拟USB设备,(5)解析接收的数据包,判断是否URB,(6)若收到的是设备拔出请求,则退出,若有收到,则接收数据通知总线驱动,(7)转到步骤(5);3)客户端步骤(1)SOCKET建立流式套接字,返回套接字号,(2)套接字与本地地址绑定,(3)检测到设备插入,通知TCP服务器准备连接,(4)等待服务器端连接,(5)建立连接,返回新套接字,(6)建立URB监听线程和URB回送线程(7)监听线程接收封装包,判断是否URB,从线程池申请一个线程用于处理URB,处理完的URB挂到队列上;(8)回送线程从队列上取出URB处理结果,送回服务器;(9)转到步骤(7)。
各模块功能说明1、USB映射管理器服务器端提供服务器端用户界面,配置管理。
2、USB映射服务程序服务器端为系统提供经过加密的网络通信通道,并负责与处于内核模式的虚拟总线交互数据。处于服务器端。
3、升腾虚拟总线核心模块。负责在服务器上虚拟出USB设备,发送命令时负责截获USB设备驱动程序的URB数据包,分析URB数据包,将其重新封装到CentermPDU(升腾协议数据单元),并通知服务程序将CentermPDU发送到客户端。
接受处理结果时负责从服务程序接收CentermPDU,分析CentermPDU,将设备处理后的结果回填到URB,通知应用程序命令处理完毕。
4、USB映射管理器客户机端提供服务器端用户界面,配置管理。
5、USB映射服务程序客户机端为系统提供经过加密的网络通信通道,并负责与服务器端交互数据。处于客户机端,将CentermPDU分解为客户端通用驱动可以处理的Transfer,调用客户端通用驱动处理该请求。当完成处理时,将处理结果封装成CentermPDU,传回服务器6、升腾USB通用驱动升腾终端上的USB通用驱动,从USB映射服务程序客户机端接收URB请求并处理
URB是USB协议中定义的数据包,与传统PC设备的驱动程序相比,USB设备驱动程序不直接与硬件对话。相反,它仅靠创建URB(USB Request Block,USB请求块)并把URB提交到总线就可完成硬件操作。总线驱动程序要对URB做出相应的处理,并将处理结果返回给USB设备驱动程序。
网络中传输的数据包单元叫CentermPDU(升腾协议数据单元),封装了数据USB设备的URB和自定义的命令集合(Our own CMDs)。CentermPDU进一步被封装在TCP/IP包中,通过网络服务传送出去。
CentermPDU处理模块该模块负责解析封装于TCP/IP的CentermPDU,识别出是自定义命令包还是URB(USB Request Block),该模块主要由2个处理线程组成发送线程主要负责接收来自虚拟总线驱动的URB请求信息,封装成CentermPDU并发送到客户机端,该线程由接收线程创建。
接收线程接收CentermPDU,解析出客户机端回送的URB请求处理结果后,传递给虚拟总线驱动,该线程由远程设备拔插监听模块检测到设备插入时创建。
(1)发送线程连接到客户机端,发送URB数据(如图4所示)(2)接收线程接收从设备返回的URB的处理结果接收线程的主要工作是获取URB处理结果,并通知虚拟总线驱动,与虚拟总线驱动建立通信通道。流程图如图5所示。
虚拟总线本身是一个虚拟的设备,同时它又负责虚拟出各个USB子设备,以及具体处理各种URB(如图6所示)。
1、虚总线设备PNP模块虚拟总线设备PNP模块主要处理虚总线设备的PNP状态转换如图7所示。
2、设备插拔处理接口模块如图8、9所示。
3、虚USB子设备URB处理,子设备URB处理是虚拟总线驱动中重要的处理部分,负责处理各个虚子设备的命令包和数据包。图10、11、12是URB处理模块流程图使用过程如下所述1、安装服务器端程序;2、在网络计算机(终端)上升级安装客户机端程序,配置要映射的设备等参数;3、在网络计算机上插入USB设备,等网络计算机上的“USB映射管理程序”的“设备列表”框中列出该设备时,选中该设备,点击“映射”按钮;4、在弹出的配置对话框中填入要映射的服务器的IP地址及端口。点击“确定”按钮;5、服务器端的“USB映射管理程序”的“设备列表”框中显示出来自某个网络计算机的USB设备映射完成,显示出相应的设备图标;6、用户通过RDP从网络计算机登录到服务器,可以使用该USB设备。如果是存储设备,可以拷贝删除;如果是打印机,可以执行打印服务;如果是扫描仪,可以点击应用程序,从扫描仪获取图像,等等;7、在服务器端的“USB映射管理程序”的“设备列表”框中可以选中某个设备进行设备访问权限的设置。
虽然本发明创造已以较佳实施例揭示如上,但并非用以限定本创作,本发明方法也可以用于例如设备共享器、PC等方面,在不脱离本创作之精神和范围内所作之各种更动与润饰,亦属本创作之范围。
权利要求
1.一种USB映射方法,包括服务器端和客户端,服务器和客户端用网络相连接,其特征在于连接在客户端的真实的USB设备被映射为服务器端的一个虚拟的USB设备的方法包括如下步骤1)客户端插上USB设备,USB映射服务程序客户机端侦测到设备到来,发出一个设备插入的命令,将命令封装起来发送给服务器;2)服务器收到封装的数据包,解析是一个插入设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装起来;3)客户机将相关的设备信息封装起来,传回到服务器端;4)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,虚拟一个USB设备;5)虚拟总线虚拟出USB设备,通知PnP管理器,加载相应的USB设备驱动程序;6)USB设备驱动程序发出URB请求包,对设备进行初始化;7)虚拟总线截获到这些URB请求包,分析这些URB,然后重新封装,通知服务程序有命令需要处理;8)USB映射服务程序服务器端取出含有URB的封装好的数据包,发送到客户机端;9)USB映射服务程序客户机端收到含有URB的封装好的数据包,解包分析,发现是URB命令,调用通用驱动接口将命令传给客户驱动;10)客户驱动将命令转换成可处理的Transfer,调用底层驱动接口处理,底层驱动和设备直接打交道,命令设备动作,并从设备取得处理结果,传给通用驱动;11)USB映射服务程序客户机端收到通用驱动返回的处理结果,将结果封装起来,发送到服务器端;12)USB映射服务程序服务器端收到含有URB结果的封装好的数据包,通知虚拟总线有处理结果返回;13)虚拟总线解包,分析,将结果数据回填到URB,通知应用程序命令完成;14)USB设备驱动程序不停的发出URB命令,重复步骤6-13,直至驱动初始化完成;15)用户通过RDP登录到Windows服务器,看见USB设备已经映射成功,服务器上多出一个USB设备;16)用户使用应用软件,使用设备;17)应用程序发出请求,经过USB设备驱动转换成URB命令包;18)重复步骤7-13,直至应用处理完毕;19)客户端拔出USB设备,USB映射服务程序客户机端侦测到设备消失,发出一个设备拔出的命令,将命令封装起来发送给服务器;20)服务器收到数据包,解析是一个拔出设备的请求,向客户端发出取设备信息的命令,该命令仍然被封装;21)客户机将相关的设备信息封装,传回到服务器端;22)USB映射服务程序服务器端得知客户机的设备的相关信息,向虚拟总线发出请求,拔出一个USB设备;23)虚拟总线通知PnP管理器,卸载相应的USB设备驱动程序,释放相应的资源。
2.根据权利要求1所述的USB映射方法,其特征在于所述的封装包的处理包括服务器端发送步骤、服务器端接收步骤和客户端步骤1)服务器端发送步骤(1)SOCKET建立流式套接字,返回套接字号,(2)将套接字与远程主机连接,(3)判断是否连接成功,(4)若不成功,则关闭套接字,若成功,则继续下一步骤,(5)不断地将IRP封装起来,发送到客户端,(6)收到删除设备的消息就关闭套接字;2)服务器端接收步骤(1)收到客户端的设备插入请求,终端认证,(2)获取客户端信息,(3)创建URB发送线程,(4)虚拟USB设备,(5)解析接收的数据包,判断是否URB,(6)若收到的是设备拔出请求,则退出,若有收到,则接收数据通知总线驱动,(7)转到步骤(5);3)客户端步骤(1)SOCKET建立流式套接字,返回套接字号,(2)套接字与本地地址绑定,(3)检测到设备插入,通知TCP服务器准备连接,(4)等待服务器端连接,(5)建立连接,返回新套接字,(6)建立URB监听线程和URB回送线程(7)监听线程接收封装包,判断是否URB,从线程池申请一个线程用于处理URB,处理完的URB挂到队列上;(8)回送线程从队列上取出URB处理结果,送回服务器;(9)转到步骤(7)。
全文摘要
本发明提供一种USB映射方法,包括服务器端和客户端,服务器和客户端用网络相连接,连接在客户端的真实的USB设备被映射为服务器端的一个虚拟的USB设备的方法,这种方法大大减轻了研发人员在终端上的USB设备驱动的开发工作,同时也极大的方便了客户,客户只需要在服务器端安装设备供应商提供的驱动程序,就可以使用终端接入的USB设备了。
文档编号H04L29/02GK101035039SQ200710008858
公开日2007年9月12日 申请日期2007年4月20日 优先权日2007年4月20日
发明者张辉, 王贤俊, 汪汇 申请人:福建升腾资讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1