Usb设备模拟方法

文档序号:6499549阅读:251来源:国知局
Usb设备模拟方法
【专利摘要】提供了一种USB设备模拟方法,应用于电子设备,所述方法包括:在驱动层加载虚拟USB-HOST驱动;在应用层启动应用层模拟USB设备服务;以及通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作,以使得被模拟为所述USB设备的设备或服务根据所述应用层模拟USB设备服务与所述电子设备进行交互操作,其中,所述被模拟为所述USB设备的设备包括USB设备或非USB设备。根据该USB设备模拟方法,通过在应用层模拟USB设备服务与虚拟USB-HOST驱动之间的数据交互中模拟真实USB设备与真实USB-HOST驱动之间的数据交互,从而在应用层上看上去,所模拟的USB设备与真实USB设备是完全一样的。
【专利说明】USB设备模拟方法
【技术领域】
[0001]本发明涉及USB设备模拟,并且更具体地涉及一种USB设备模拟方法。
【背景技术】
[0002]尽管在终端装置上已经能够安装许多的硬件设备,但是有时所安装的硬件设备仍无法满足终端装置的需求,因此出现了一些在终端装置上模拟特定设备的方法,例如,利用虚拟键盘驱动来模拟键盘、利用虚拟光驱来模拟CDROM。
[0003]然而,这些模拟方法往往是针对某一种特定设备而开发的,例如虚拟光驱是针对CDROM开发的,而虚拟键盘驱动是针对键盘开发的,尚不存在一种能够覆盖尽可能多的特定设备的模拟方法。另一方面,类似于“DirectX Input”这样的技术直接访问真实的设备,而直接忽略虚拟设备,因此上述的虚拟键盘驱动在Direct Input下无法使用。
[0004]目前,USB外部设备(下文中,简称为USB设备)发展迅速并且几乎可以覆盖所有的外部设备,Windows系统对USB设备的支持能力也日趋成熟,几乎能够在无需额外安装驱动的情况下使用所有常见的USB设备。已经出现了基于USB设备的一种设备模拟方法,即,USB-UP方式的USB HOST模拟,其通过虚拟的USB-HOST驱动在应用层上将另一终端装置上的USB设备原封不动的映射到本地终端装置上从而模拟成本地的USB设备。然而,该USB-UP方式的USB HOST模拟仅仅能够实现真实USB设备的模拟,并且在同一时间只能使用被模拟的USB设备和真实USB设备之一。
[0005]由于应用需求,有时需要在终端装置上模拟本身并不存在的USB设备(例如,将手机上的摄像头或麦克风模拟成终端装置上的USB设备),或者将某种服务模拟成USB设备(例如,将手机上的触摸屏服务模拟成终端设备上的键盘或鼠标)。
[0006]因此,希望提供一种通用的USB设备模拟方法,其不仅能够模拟另一终端装置上的USB设备,而且也能够模拟本身并不存在的USB设备或者将某种服务模拟成USB设备。

【发明内容】

[0007]考虑到上述问题而提出了本发明。本发明提供了一种USB设备模拟方法,其通过在驱动层的虚拟USB-HOST驱动和在应用层的应用层模拟USB设备服务的交互来将本机上的服务模拟为虚拟USB设备,或者将另一装置上的USB设备、非USB设备或服务模拟为虚拟USB设备,从而使得如在本机上插入了与所述虚拟USB设备具有相同功能的真实USB设备那样进行操作。
[0008]根据本发明一方面,提供了一种USB设备模拟方法,应用于电子设备,所述方法包括:在驱动层加载虚拟USB-HOST驱动;在应用层启动应用层模拟USB设备服务;以及通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作,以使得被模拟为所述USB设备的设备或服务根据所述USB设备服务与所述电子设备进行交互操作,其中,所述被模拟为所述USB设备的设备包括USB设备或非USB设备。
[0009]优选地,在所述USB设备模拟方法中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作包括:所述虚拟USB-HOST驱动通过输入输出接口控制函数(IOCTRL)调用来模拟USB设备的插入过程;以及在所述电子设备的设备管理器中加载所模拟的USB设备的标识。
[0010]优选地,在所述USB设备模拟方法中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作还包括:所述虚拟USB-HOST驱动通过输入输出接口控制函数(IOCTRL)调用来模拟USB设备的拔出过程;所述电子设备的系统内核卸载与所模拟的USB设备对应的驱动;以及在所述电子设备的设备管理器中删除所模拟的USB设备的标识。
[0011 ] 优选地,在所述USB设备模拟方法中,在所述应用层模拟USB设备服务中存储了要模拟的数据与真实USB设备的数据之间的对应关系。
[0012]优选地,在所述USB设备模拟方法中,在所述电子设备中安装了所模拟的USB设备的专用驱动程序或通用驱动程序。
[0013]优选地,在所述USB设备模拟方法中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作包括:来自所模拟的USB设备的第一数据通过所述应用层模拟USB设备服务转变为第二数据并到达所述虚拟USB-HOST驱动,并且所述虚拟USB-HOST驱动将所接收的第二数据传递给在所述电子设备中安装的所模拟的USB设备的专用或通用驱动程序,使得所述电子设备执行根据所述第二数据进行的操作。
[0014]优选地,在所述USB设备模拟方法中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作还包括:从所述电子设备中发出的第三数据通过在所述电子设备中安装的所模拟的USB设备的专用或通用驱动程序传递给所述虚拟USB-HOST驱动,所述虚拟USB-HOST驱动将所接收的第三数据传递给所述应用层模拟USB设备服务,所述应用层模拟USB设备服务将所述第三数据转变为第四数据并将其发送到所模拟的USB设备。
[0015]优选地,在所述USB设备模拟方法中,所述被模拟为所述USB设备的设备包括另一电子设备上的USB设备或者非USB设备,以及所述被模拟为所述USB设备的服务包括所述电子设备上的服务、或者所述另一电子设备上的服务。
[0016]优选地,在所述USB设备模拟方法中,所述电子设备通过XMPP服务器获取其可用的共享资源,所述共享资源是USB设备、非USB设备、服务中的至少一个,所述电子设备将所述共享资源模拟为所述电子设备上的USB设备。
[0017]优选地,在所述USB设备模拟方法中,通过XMPP服务器对所述电子设备与所述另一电子设备进行鉴权,在所述电子设备和所述另一电子设备之间建立P2P数据传送通道。
[0018]优选地,在所述USB设备模拟方法中,所述共享资源可以被所述电子设备使用,并且还可以被其它电子设备使用。
[0019]根据本发明实施例的USB设备模拟方法,通过在应用层模拟USB设备服务与虚拟USB-HOST驱动之间的数据交互中模拟真实USB设备与真实USB-HOST驱动之间的数据交互,从而在应用层上看上去,所模拟的USB设备与真实USB设备是完全一样的。
【专利附图】

【附图说明】[0020]通过结合附图对本发明的实施例进行详细描述,本发明的上述和其它目的、特征、优点将会变得更加清楚,其中:
[0021]图1是根据本发明实施例的USB设备模拟方法的示意性流程图;
[0022]图2A和图2B是图1所示的USB设备模拟方法的步骤S130的部分操作的流程图;
[0023]图3A和图3B是图1所示的USB设备模拟方法的步骤S130的部分操作的流程图;
[0024]图4是示出根据本发明实施例的USB设备模拟方法与现有技术的真实USB设备使用方法的比较图;以及
[0025]图5是示出根据本发明实施例的利用XMPP服务器在共享子设备/服务提供端与共享子设备/服务使用端之间的处理的示意图。
【具体实施方式】
[0026]接下来,将参考附图来示意性地描述根据本发明实施例的USB设备模拟方法。
[0027]在图1中示出了根据本发明实施例的USB设备模拟方法100的示意性流程图,根据本发明实施例的USB设备模拟方法100应用于电子设备中,该电子设备可以是个人计算机、平板计算机、智能手机、个人数字助理、智能电视等等。
[0028]如图1所示,根据本发明实施例的USB设备模拟方法100在步骤SlOl开始。
[0029]在步骤SI 10,在驱动层加载虚拟USB-HOST驱动。
[0030]在步骤S120,在应用层启动应用层模拟USB设备服务。
[0031 ] 在步骤S130,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作,以使得被模拟为所述USB设备的设备或服务根据所述应用层模拟USB设备服务与所述电子设备进行交互操作。所述被模拟为所述USB设备的设备包括USB设备或非USB设备。
[0032]具体地,所述被模拟为所述USB设备的设备可以包括另一电子设备上的USB设备或者非USB设备。例如,可以将所述另一电子设备上的USB打印机、USB键盘、USB鼠标、USB摄像头、USB存储器等等模拟为本机上的USB设备。再例如,可以将所述另一电子设备上的摄像头、麦克风、键盘、扫描仪、打印机等等模拟为本机上的USB设备。
[0033]另一方面,所述被模拟为所述USB设备的服务包括所述电子设备上的服务、或者所述另一电子设备上的服务。例如,所述电子设备为智能电视,所述另一电子设备可以为手机,可以将手机屏幕模拟成本机上的键盘或鼠标以便进行输入。再例如,所述电子设备可以为智能手机、平板计算机等,可以将本机上的屏幕模拟成本机上的键盘或鼠标以便进行输入。
[0034]在图4中示出了根据本发明实施例的USB设备模拟方法与现有技术的真实USB设备使用方法的比较图。
[0035]如图4所示,左侧的“应用层模拟USB设备”充当了右侧的物理层“USB设备”的角色,而左侧的“虚拟USB-HOST驱动”充当了右侧的“USB-H0ST驱动”的角色。
[0036]如已知的,通过USB总线通信方式在“USB设备”和“USB-H0ST驱动”之间进行通信。与此不同,在根据本发明实施例的USB设备模拟方法中,通过操作系统调用输入输出接口控制函数(IOCTRL)来在左侧的“应用层模拟USB设备”和“虚拟USB-HOST驱动”之间进行通信。[0037]另外,左侧的“USB设备(模拟)”与右侧的“USB设备驱动”完全一致,可以使用操作系统自带的USB设备驱动(例如,USB键盘、USB鼠标、USB存储器等等),也可以使用USB设备厂商开发的驱动(例如,打印机驱动等等)。实际上,左侧的“USB设备(模拟)”与右侧的“USB设备驱动”的不同命名也仅仅是为了区分USB物理设备与USB模拟设备对应的驱动。
[0038]在左侧,尽管USB设备是模拟出来的USB设备,但是其所使用的驱动是真实USB设备的驱动。
[0039]接下来,参考图2和3来描述根据本发明实施例的USB设备模拟方法的具体操作。
[0040]图2A中示出了根据本发明实施例的USB设备模拟方法中模拟USB设备的插入过程的流程图。根据本发明实施例的USB设备模拟方法通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的插入过程。
[0041]在步骤S210,所述虚拟USB-HOST驱动通过输入输出接口控制函数(IOCTRL)调用来模拟USB设备的插入过程。
[0042]在步骤S220,在所述电子设备的设备管理器中加载所模拟的USB设备的标识。
[0043]图3A中示出了根据本发明实施例的USB设备模拟方法中模拟USB设备的数据输入操作的流程图。根据本发明实施例的USB设备模拟方法通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的数据输入。
[0044]在步骤S310,来自被模拟为USB设备的设备的第一数据通过所述应用层模拟USB设备服务转变为第二数据,并到达所述虚拟USB-HOST驱动。
[0045]在所述应用层模拟USB设备服务中存储了要模拟的数据与真实USB设备的数据之间的对应关系。例如,所述电子设备为智能电视,所述另一电子设备为智能手机,在将所述智能手机的屏幕模拟为所述智能电视的虚拟USB键盘的情况下,在所述应用层模拟USB设备服务中需要存储例如通过无线方式从所述智能手机接收来的屏幕触摸数据与真实键盘按键的按键数据之间的对应关系。
[0046]在步骤S320,所述虚拟USB-HOST驱动将所接收的第二数据传递给在所述电子设备中安装的被模拟为USB设备的设备的专用或通用驱动程序,即,图4中左侧的USB设备(模拟)。
[0047]在步骤S330,所述电子设备执行根据所述第二数据进行的操作。具体地,所述电子设备中安装的所模拟的USB设备的专用或通用驱动程序根据所述第二数据进行操作。
[0048]图3B中示出了根据本发明实施例的USB设备模拟方法中模拟USB设备的数据输出操作的流程图。根据本发明实施例的USB设备模拟方法通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的数据输出。
[0049]在步骤S360,从所述电子设备中发出的第三数据通过在所述电子设备中安装的所模拟的USB设备的专用或通用驱动程序传递给所述虚拟USB-HOST驱动。
[0050]在步骤S360,所述虚拟USB-HOST驱动将所接收的第三数据传递给所述应用层模拟USB设备服务。
[0051]在步骤S370,所述应用层模拟USB设备服务将所述第三数据转变为第四数据,并将其发送到被模拟为USB设备的设备。
[0052]在图2B中示出了根据本发明实施例的USB设备模拟方法中模拟USB设备的拔出操作的流程图。根据本发明实施例的USB设备模拟方法通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的拔出操作。
[0053]在步骤S260,所述虚拟USB-HOST驱动通过输入输出接口控制函数(IOCTRL)调用来模拟USB设备的拔出过程。
[0054]在步骤S270,所述电子设备的系统内核卸载与所模拟的USB设备对应的驱动。
[0055]在步骤S280,在所述电子设备的设备管理器中删除所模拟的USB设备的标识。
[0056]如上所述,按照根据本发明实施例的USB设备模拟方法所模拟的USB设备与“真实USB设备”在“USB-H0ST驱动”之上(包含应用层)是看不到任何区别的。例如,“所模拟的USB键盘”在设备管理器中看到的是“USB键盘”而不是“虚拟键盘驱动”,由此使得使用“DirectX Input”这样的应用(大多数游戏使用的技术)都能够正确地使用“所模拟的USB键盘”,而不像“虚拟键盘驱动”那样在“DirectX Input”的游戏中那样被直接跳过而不能正常工作。
[0057]此外,如上所述,由于在“USB设备(模拟)”实际上与“USB设备驱动”完全相同,因此也无需额外开发所模拟出来的USB设备的驱动程序。实际上,根据本发明实施例的USB设备模拟方法的设备模拟过程在应用层完成,即,在应用层模拟USB设备服务中存储了要模拟的数据与真实USB设备的数据之间的对应关系。
[0058]如果需要在电子设备中产生新的模拟(虚拟)USB设备,则只需在应用层模拟USB设备服务中添加新的插件并且在该电子设备中安装被模拟为USB设备的设备的专用驱动程序或通用驱动程序,该新的插件存储了要模拟的数据与真实USB设备的数据之间的对应关系。
[0059]第一实施例
[0060]在该第一实施例中,所述电子设备可以为智能电视,所述另一电子设备可以为智能手机,所述智能电视和所述智能手机通过无线方式进行通信,在所述智能电视上将所述智能手机上的触摸屏幕模拟为所述智能电视上的USB键盘。
[0061]首先,在所述智能电视上加载虚拟USB-HOST驱动,并且启动应用层模拟USB设备服务。
[0062]接下来,通过“应用层模拟USB设备服务”和“虚拟USB-HOST驱动”的交互来模拟“USB键盘”的插入。“虚拟USB-HOST驱动”调用输入输出接口控制函数(IOCTRL),在启动“应用层模拟USB设备服务”之后,“应用层模拟USB设备服务”产生“USB键盘”的插入指示,并响应于IOCTRL将该插入指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB键盘”插入。
[0063]在所述智能电视的操作系统中安装了 “USB键盘”的对应驱动时,所述智能电视的操作系统则根据“USB键盘”插入指示中所包含的设备类型等信息加载对应的驱动,如果没有找到设备驱动则会提示用户安装设备驱动。一旦所述智能电视大操作系统加载了对应的设备驱动之后,该“USB键盘”就会在所述智能电视的“设备管理器”中出现为真实的USB键盘,而不是虚拟键盘驱动。
[0064]然后,当在所述智能手机的触摸屏幕上进行键盘显示的触摸操作时,所述智能手机将操作数据通过无线方式传送给所述智能电视的“应用层模拟USB设备服务”,所述智能电视的“应用层模拟USB设备服务”将所接收的操作数据转换为所述“USB键盘”的键值数据并且然后将其提供给“虚拟USB-HOST驱动”。[0065]然后,“虚拟USB-HOST驱动”再将所述“USB键盘”的键值数据传送给“USB键盘”的驱动程序,即,“USB设备(模拟)”,由此实现对“USB键盘”操作的模拟。
[0066]在需要卸载该“USB键盘”时,可以相应地关闭或卸载所述“应用层模拟USB设备服务”,使得所述“应用层模拟USB设备服务”产生“USB键盘”的拔出指示,并将该拔出指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB键盘”拔出,并且相应地卸载该“USB键盘”的对应设备驱动,并从“设备管理器”中删除该“USB键盘”。
[0067]第二实施例
[0068]在该第二实施例中,所述电子设备可以为平板计算机,所述另一电子设备可以为台式计算机,所述平板计算机和所述台式计算机通过无线方式进行通信,在所述平板计算机上将所述台式计算机所连接的打印机(例如,USB打印机或非USB打印机)模拟为所述平板计算机的“USB打印机”。
[0069]首先,在所述平板计算机上加载虚拟USB-HOST驱动,并且启动应用层模拟USB设备服务。
[0070]接下来,通过“应用层模拟USB设备服务”和“虚拟USB-HOST驱动”的交互来模拟“USB打印机”的插入。“虚拟USB-HOST驱动”调用输入输出接口控制函数(10CTRL),在启动“应用层模拟USB设备服务”之后,“应用层模拟USB设备服务”产生“USB打印机”的插入指示,并响应于IOCTRL将该插入指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB打印机”插入。
[0071]在所述平板计算机的操作系统加载了“USB打印机”的对应驱动之后,该“USB打印机”就会在所述智能电视的“设备管理器”中出现为真实的USB打印机。
[0072]然后,当所述平板计算机执行打印操作时,从所述平板计算机发出的打印数据通过所加载的“USB打印机”的对应驱动转换为要发送到“USB打印机”的打印机数据,并被传送给所述“虚拟USB-HOST驱动”,并继而被传送给“应用层模拟USB设备服务”,根据需要,所述“应用层模拟USB设备服务”可以转换所述打印机数据的格式并通过无线方式发送所述打印机数据。由此,实现对“USB打印机”的打印操作的模拟。
[0073]在需要卸载该“USB打印机”时,可以相应地关闭或卸载所述“应用层模拟USB设备服务”,使得所述“应用层模拟USB设备服务”产生“USB打印机”的拔出指示,并将该拔出指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB打印机”拔出,并且相应地卸载该“USB打印机”的对应设备驱动,并从“设备管理器”中删除该“USB打印机”。
[0074]第三实施例
[0075]根据本发明实施例的USB设备模拟方法除了可以在局域网内进行设备共享之外,还可以方便地扩展到广域网进行设备共享。
[0076]如图5所示,示出了通过XMPP协议在广域网上实现设备共享的示意图,“共享子设备或服务的提供端”和“共享子设备或服务的使用端”利用XMPP协议中的公布(publish)和订阅(subscribe),来实现设备的即插即用。
[0077]图5中的“连接管理”是图4中的“应用层模拟USB设备服务”的展开形式,其可以通过XMPP客户端实现“共享子设备或服务的提供端”和“共享子设备或服务的使用端”双方的鉴权,可以通过XMPP客户端实现P2P数据传输(含NAT穿越)通道的建立,可以通过XMPP客户端实现“共享子设备或服务的提供端”和“共享子设备或服务的使用端”中共享子设备或服务的状态同步。
[0078]此外,如图5所示,“共享子设备或服务的提供端”不仅可以共享真实的USB设备,而且还可以共享非USB设备和服务。图5中的“真实设备或服务”可以包括三种情况:真实USB设备(例如USB键盘、USB鼠标、USB打印机等)、能够模拟成USB设备的其它子设备(例如摄像头、麦克风、非USB打印机等等)、以及能够模拟成USB设备的服务。图5中的“模拟服务”将“服务”(即不存在的USB设备)模拟为USB设备,例如将触摸屏模拟成USB键盘,“模拟USB设备”将“共享子设备或服务的提供端”中的非USB设备模拟成USB设备,所述非USB设备例如为摄像头、麦克风等等。
[0079]“共享子设备或服务的提供端”启动后向XMPP服务器公布(publish)其共享子设备或服务,而向XMPP服务器索取订阅的“共享子设备或服务的使用端”此时会发现该共享子设备或服务。
[0080]在希望使用该共享子设备或服务时,“共享子设备或服务的使用端”通过XMPP服务器向“共享子设备或服务的提供端”发出连接请求,该连接请求可以包括“共享子设备或服务的使用端”的标识,以便“共享子设备或服务的提供端”识别出发出连接请求的“共享子设备或服务的使用端”。
[0081]在“共享子设备或服务的提供端”接收到该连接请求之后,如果“共享子设备或服务的提供端”被配置为黑名单拒绝,
[0082]I)如果“共享子设备或服务的使用端”在“共享子设备或服务的提供端”的黑名单中,“共享子设备或服务的提供端”返回拒绝共享;
[0083]2)如果不在黑名单中并且如果“共享子设备或服务的提供端”被配置为自动同意共享,则“共享子设备或服务的提供端”返回同意共享;
[0084]3)如果不在黑名单中并且如果“共享子设备或服务的提供端”被配置为需要提醒,
[0085]a)如果操作者拒绝,则“共享子设备或服务的提供端”返回拒绝共享,
[0086]b)如果操作者同意,则“共享子设备或服务的提供端”返回同意共享。
[0087]替代地,在“共享子设备或服务的提供端”接收到该连接请求之后,如果“共享子设备或服务的提供端”被配置为白名单启动,
[0088]I)若“共享子设备或服务的使用端”在白名单中,则“共享子设备或服务的提供端”返回同意共享;
[0089]2)如果不在白名单中并且如果“共享子设备或服务的提供端”被配置为其它自动拒绝共享,则“共享子设备或服务的提供端”返回同意共享;
[0090]3)如果不在白名单中并且如果“共享子设备或服务的提供端”被配置为其它需要提醒,
[0091]a)如果操作者拒绝,则“共享子设备或服务的提供端”返回拒绝共享,
[0092]b)如果操作者同意,则“共享子设备或服务的提供端”返回同意共享。
[0093]下面以“共享子设备或服务”为打印机为例来进行描述。
[0094]在“共享子设备或服务的使用端”接收到同意共享的信息之后,在“共享子设备或服务的提供端”和“共享子设备或服务的使用端”之间建立P2P数据传输通道。在“共享子设备或服务的使用端”上加载“虚拟USB-HOST驱动”,启动“应用层模拟USB设备服务”,并且通过“应用层模拟USB设备服务”和“虚拟USB-HOST驱动”的交互来模拟“USB打印机”的插入。例如,“虚拟USB-HOST驱动”调用输入输出接口控制函数(10CTRL),在启动“应用层模拟USB设备服务”之后,“应用层模拟USB设备服务”产生“USB打印机”的插入指示,并响应于IOCTRL将该插入指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB打印机”插入。
[0095]在“共享子设备或服务的使用端”的操作系统加载了 “USB打印机”的对应驱动之后,该“USB打印机”就会在“共享子设备或服务的使用端”的“设备管理器”中出现为真实的USB打印机。
[0096]然后,当“共享子设备或服务的使用端”执行打印操作时,从“共享子设备或服务的使用端”发出的打印数据通过所加载的“USB打印机”的对应驱动转换为要发送到“USB打印机”的打印机数据,并被传送给所述“虚拟USB-HOST驱动”,并继而被传送给“应用层模拟USB设备服务”,根据需要,所述“应用层模拟USB设备服务”可以转换所述打印机数据的格式并通过P2P连接方式向“共享子设备或服务的提供端”发送所述打印机数据。由此,实现对“USB打印机”的打印操作的模拟。
[0097]在需要卸载该“USB打印机”时,“共享子设备或服务的使用端”可以相应地关闭或卸载所述“应用层模拟USB设备服务”,使得所述“应用层模拟USB设备服务”产生“USB打印机”的拔出指示,并将该拔出指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB打印机”拔出,并且相应地卸载该“USB打印机”的对应设备驱动,并从“设备管理器”中删除该“USB打印机”。
[0098]另一方面,在“共享子设备或服务的提供端”不想共享子设备或服务、或者关机时,贝U “共享子设备或服务的提供端”通过XMPP服务器发出断开通知。相应地,“应用层模拟USB设备服务”产生“USB打印机”的拔出指示,并将该拔出指示提供给“虚拟USB-HOST驱动”。然后,“虚拟USB-HOST驱动”识别到“USB打印机”拔出,并且相应地卸载该“USB打印机”的对应设备驱动,并从“设备管理器”中删除该“USB打印机”。
[0099]此外,在数据传输过程中,还可以通过使用类似0PENSSL的机制对通信双方数据的安全、可靠、完整性提供保障。
[0100]根据本发明第三实施例,可以在广域网上实现USB设备、非USB设备或服务的共享,而且所共享的设备或服务不仅可以被“共享子设备或服务的提供端”使用,并且还可以被多个“共享子设备或服务的使用端”使用。
[0101]根据本发明实施例的USB设备模拟方法,通过利用XMPP协议获得共享列表并实现共享双方鉴权,可以在广域网上实现子设备或服务的共享,通过建立P2P传输可以在“共享子设备或服务的提供端”和“共享子设备或服务的使用端”之间进行数据传输,并且通过在“共享子设备或服务的使用端”中在应用层模拟USB设备服务与虚拟USB-HOST驱动之间的数据交互中模拟真实USB设备与真实USB-HOST驱动之间的数据交互,从而在“共享子设备或服务的提供端”的应用层上看上去,所模拟的USB设备与真实USB设备是完全一样的。
[0102]尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
【权利要求】
1.一种USB设备模拟方法,应用于电子设备,所述方法包括: 在驱动层加载虚拟USB-HOST驱动; 在应用层启动应用层模拟USB设备服务;以及 通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作,以使得被模拟为所述USB设备的设备或服务根据所述应用层模拟USB设备服务与所述电子设备进行交互操作,其中,所述被模拟为所述USB设备的设备包括USB设备或非USB设备。
2.如权利要求1所述的USB设备模拟方法,其中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作包括: 所述虚拟USB-HOST驱动通过输入输出接口控制函数(IOCTRL)调用来模拟USB设备的插入过程;以及 在所述电子设备的设备管理器中加载所模拟的USB设备的标识。
3.如权利要求2所述的USB设备模拟方法,其中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作还包括: 所述虚拟USB-HOST驱动通过输入输出接口控制函数(10CTRL)调用来模拟USB设备的拔出过程; 所述电子设备的系统内核卸载与所模拟的USB设备对应的驱动;以及 在所述电子设备的设备管理器中删除所模拟的USB设备的标识。
4.如权利要求2所述的USB设备模拟方法,其中,在所述应用层模拟USB设备服务中存储了要模拟的数据与真实USB设备的数据之间的对应关系。
5.如权利要求1所述的USB设备模拟方法,其中,在所述电子设备中安装了被模拟为USB设备的设备的专用驱动程序或通用驱动程序; 通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作包括: 来自被模拟为USB设备的设备的第一数据通过所述应用层模拟USB设备服务转变为第二数据并到达所述虚拟USB-HOST驱动,并且所述虚拟USB-HOST驱动将所接收的第二数据传递给在所述电子设备中安装的被模拟为USB设备的设备的专用或通用驱动程序,使得所述电子设备执行根据所述第二数据进行的操作。
6.如权利要求5所述的USB设备模拟方法,其中,通过在所述虚拟USB-HOST驱动和所述应用层模拟USB设备服务之间的交互来模拟USB设备的操作还包括: 从所述电子设备中发出的第三数据通过在所述电子设备中安装的被模拟为USB设备的设备的专用或通用驱动程序传递给所述虚拟USB-HOST驱动,所述虚拟USB-HOST驱动将所接收的第三数据传递给所述应用层模拟USB设备服务,所述应用层模拟USB设备服务将所述第三数据转变为第四数据并将其发送到被模拟为USB设备的设备。
7.如权利要求 1所述的USB设备模拟方法,其中,所述被模拟为所述USB设备的设备包括另一电子设备上的USB设备或者非USB设备,以及 所述被模拟为所述USB设备的服务包括所述电子设备上的服务、或者所述另一电子设备上的服务。
8.如权利要求1所述的USB设备模拟方法,其中,所述电子设备通过XMPP服务器获取其可用的共享资源,所述共享资源是USB设备、非USB设备、服务中的至少一个,所述电子设备将所述共享资源模拟为所述电子设备上的USB设备。
9.如权利要求8所述的USB设备模拟方法,其中, 通过XMPP服务 器对所述电子设备与所述另一电子设备进行鉴权,在所述电子设备和所述另一电子设备之间建立P2P数据传送通道。
10.如权利要求9所述的USB设备模拟方法,其中,所述共享资源可以被所述电子设备使用,并且还可以被其它电子设备使用。
【文档编号】G06F9/455GK103970582SQ201310033144
【公开日】2014年8月6日 申请日期:2013年1月28日 优先权日:2013年1月28日
【发明者】王灿, 戴辉 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1