应用程序服务器环境中的usb设备的制作方法

文档序号:7629223阅读:142来源:国知局
专利名称:应用程序服务器环境中的usb设备的制作方法
技术领域
本发明涉及将对通用串行总线(USB)设备的访问和控制定向至诸如服务器计算机等计算机。
背景技术
远程客户机访问平台和系统,诸如由微软公司提供的Terminal ServiceTM,允许计算机远程地访问主宿于并驻留在应用程序服务器中的应用程序。在远程客户机访问系统中,客户计算机一般依赖于服务器计算机通过驻留在服务器计算机上的应用程序来提供计算功能。应用程序的示例包括文字处理、多媒体和数据管理程序。
应用程序服务器计算机可以被称为主机计算机或终端服务器。客户计算机可以被称为远程终端、远程客户机或瘦客户机。客户计算机要被用于用户界面与用户和设备I/O交互。客户计算机上的软件一般是通用的,即不是应用程序专用的,它一般包括操作系统和通用软件——包括支持远程客户机访问环境的软件。服务器计算机上的软件一般包括提供特定功能的专用应用程序软件,诸如数据库访问、文字处理、制图以及多种其它类型的应用程序。在客户计算机和应用程序服务器之间传递的数据通常包括关于用户界面的命令和数据,诸如图形数据、击键、鼠标移动等,以及关于位于客户计算机上的硬件设备的命令和数据。
应用程序服务器和客户机一般使用诸如由微软公司定义的远程桌面协议(RDP)等预定义的通信协议彼此通信或传递信息。也涉及诸如TCP/IP等较低层网络协议。
远程客户机访问系统的好处是,客户计算机可以是相对较低能力的,因为大多数功能和计算是发生在服务器计算机上的。尽管应用程序服务器通常比典型的台式计算机更昂贵,但是一台应用程序服务器计算机可以服务众多较不昂贵的客户机。
某些系统中的另一优点是,数据可以驻留在服务器计算机的物理位置上,且可以在该位置上由应用程序来处理,而不必通过相对缓慢的通信链路传送给客户计算机——仅用户界面是在客户计算机的物理位置上实现的。
客户计算机通常具有连接外围设备的USB(通用串行总线)端口。这样的设备通常涉及用户界面,正如USB键盘的情形中。在众多情形中,在服务器计算机上执行的应用程序需要访问这样的USB设备并与之交互。USB设备的其它示例包括,数码照相机、文档扫描仪、外置磁盘驱动器以及介质读出器。由应用程序服务器主存的各种应用程序可能需要与这些硬件设备交互。
在典型的基于Windows的桌面环境中,本地应用程序通过被称为驱动器栈的一连串驱动器与USB设备通信。为组织和可重用性起见,在该栈的组件之间划分不同的责任。例如,某些驱动器对于所有或某些通用种类USB设备是通用的,且可以被使用或重复使用来与众多不同的设备通信。其它的驱动器实现对某些设备专用的功能,且通常被设计来专门伴随某些硬件。
图1示出了在作为独立计算机而不是作为应用程序服务器的客户机的计算机内实现的典型USB体系结构。图1显示了硬件和软件组件之间的逻辑通信。
图1的系统包括计算机100和USB设备105。USB设备105通过物理USB端口(未示出)被连接至计算机100。应用程序110在计算机上执行,且通过驱动器栈115与USB设备105交互。驱动器栈115在该示例中拥有三个USB驱动器。
在驱动器栈115的最低层中,USB主机控制器驱动器120直接与计算机中的USB硬件(未示出)通信,且通过该硬件与USB设备105通信。在其上方,低层USB总线驱动器125(也被称为集线器或集线器驱动器)与USB主机控制器120通信,并管理USB设备的电源、枚举以及各种USB事务。这些设备都是Windows操作系统的一部分,且对所有USB设备通用;这些驱动器不必根据连接至计算机100的USB设备的类型来替换或修改。
驱动器栈115也包括USB功能驱动器130。USB功能驱动器130为特定的一个或一类设备所定制。结果,取决于实际使用的USB设备,装载不同的功能驱动器。USB功能驱动器也被称为USB设备功能驱动器、类驱动器或自定义驱动器。
尽管图1仅示出单个应用程序110,但计算机110一般含有多个应用程序,其中的任何一个或多个可以被配置成通过所示的单个驱动器栈115与USB设备105交互。应用程序110可以是文字处理程序、游戏程序、或是各种其它类型的程序中的任何一种。
图2示出了类似的示例,其中计算机200含有多个应用程序205和210,以及多个USB设备215、220和225。在该示例中,应用程序205与USB设备215交互,而应用程序210与USB设备220和225交互。
如前述示例中,通信是由USB驱动器栈230实现的。USB驱动器栈230包括与USB设备215、220和225中的每一个通信的USB主机控制器235和USB总线驱动器240。USB驱动器栈230还包括对应于USB设备215、220、225中的每一个的多个USB功能驱动器245、250和255。如已述,取决于USB设备的特定类型或种类,选取并装载这些USB功能驱动器245、250和255中的每一个。
如示,应用程序可以与多于单个的USB设备交互。如果安装了多个USB设备,那么它们一般使用同一主机控制器驱动器和总线驱动器,尽管单个计算机含有一个以上USB驱动器栈是可能的。如果使用不同种类的USB端口,那么可以装载不同的端口和“小型端口”驱动器;然而,一般而言,总的USB驱动器栈保持不变。
图3示出了在现有技术的远程客户机/服务器体系结构中的USB设备的使用。在该示例中,客户计算机300具有连接至其USB端口的一个或多个USB设备305(1)-305(N)。它也含有操作系统和对这样的USB设备的其它底层支持。具体地,远程客户计算机300包括与USB设备305连接的USB主机控制器310。
客户计算机300响应于其自身与服务器计算机315之间传送的命令和数据来执行用户交互。一个或多个应用程序320驻留在服务器315上,并在其上执行。为了支持位于远处的USB设备305,服务器计算机315的操作系统或其它支持软件包括USB支持。具体地,服务器计算机315包括USB功能设备驱动器325(1)-325(N)、USB总线驱动器330以及USB主机控制器335。
USB功能设备驱动器325执行与上述USB功能设备驱动程序130类似的功能。USB功能设备驱动器325与USB总线驱动器330通信。同样,USB总线驱动器330执行与上述的USB总线驱动器125类似的功能。服务器计算机315还包括连接至客户计算机300的USB主机控制器310或与之通信的USB主机控制器335。USB主机控制器310与USB主机控制器335之间的通信可以通过直接物理连接,或包括连接双方的中间网络。USB主机控制器335通过与USB主机控制器310的通信,与USB设备305通信并对其访问。在该示例中,客户计算机300完全依赖于服务器计算机315通过应用程序320来为USB设备305提供所有所需的功能。
对比图1中所示的独立计算机的操作,在图2的客户机服务器方案中,应用程序320形式的所有功能在服务器315处提供。换言之,客户计算机300依赖于服务器计算机315来提供USB设备305的所有功能。在该方案中,客户计算机300不提供或不被允许来向USB设备305中的任何一个提供任何功能。

发明内容
在客户计算机处连接一个或多个通用串行总线(USB)设备。向服务器计算机提供对特定USB设备的访问和控制,且在客户计算机处提供从该特定USB设备至该服务器计算机的专用通信路径。接收来自服务器计算机的命令,并从该特定USB设备向该服务器计算机发送数据。
服务器计算机识别连接至客户计算机的特定USB设备,且在服务器计算机处提供对该特定USB设备的专用通信路径,服务器计算机向USB设备发送命令,并通过服务器计算机处的通信路径从USB设备接收数据。


参考附图描述了详细描述。附图中,参考标号的最左端的数字标识其中该参考标号首次出现的附图。不同附图中的同一参考标号的使用指示类似或完全相同的项。
图1是在计算机上实现的现有技术USB体系结构的框图。
图2是使用多个应用程序和多个USB设备的计算机上实现的现有技术USB体系结构的框图。
图3是对一个或多个USB设备的远程访问的现有技术体系结构的框图。
图4是其中一个或多个USB设备或者由客户计算机或者由应用程序服务器计算机控制的远程客户机访问系统的图示。
图5是其中USB设备的功能在应用程序服务器计算机处提供的客户计算机和应用程序服务器计算机的框图。
图6是访问和控制USB设备的客户机计算机和应用程序服务器计算机的框图。
图7是示出将客户计算机USB设备的控制定向或重定向至客户计算机或应用程序服务器计算机的流程图。
图8是客户计算机或应用程序服务器计算机的实现的框图。
具体实施例方式
以下揭示描述了将对特定USB设备的访问和控制定向或重定向至应用程序服务器计算机。USB设备被连接至与该应用程序服务器计算机通信的客户计算机处。
客户机-服务器计算机系统图4示出了远程客户机访问系统400。系统400包括应用程序服务器计算机405和一台或多台客户计算机。对在客户计算机处连接的通用串行总线(USB)的访问和控制可以被定向或重定向至应用程序服务器计算机405。具体地,由应用程序服务器计算机405选择性地访问和控制客户计算机处的USB设备。系统400可以是如微软公司提供或定义的Terminal ServiceTM系统,其中多台客户计算机依赖于应用程序服务器计算机405的提供功能,尤其是对一个或多个USB设备的访问和控制的全部或某些应用程序。在该示例中,示出客户计算机410,它是其它客户计算机的示例。
网络415连接应用程序服务器计算机405和客户计算机410。网络415可以用多种方式来实现,以支持这样的连网环境,包括基于有线的技术或无线技术。本发明的各方面不限于一种特定的网络体系结构或网络技术。系统400是不同体系结构的代表,这些体系结构包括通过调制解调器的直接拨号、企业LAN(局域网)、WAN(广域网)以及因特网。网络415将服务器计算机405连接至一台或多台客户计算机(例如,客户计算机410)。而且,在服务器405与客户计算机之间的网络415的连接可以实现诸如通过互联网协议的传输控制协议(TCP/IP)的传输协议。
服务器计算机405使用诸如由微软公司提供的Windows服务器2003操作系统的操作系统来实现。服务器计算机405和客户计算机410可以实现诸如由微软公司定义的远程数据协议(RDP)等通信协议,来彼此传递数据或信息(即,通信)。这样的通信协议,尤其是RDP的使用,可以在诸如Terminal ServiceTM系统等的远程客户机访问系统的环境中实现。
客户计算机410可以是通用PC(个人计算机)、膝上型PC、图形输入板PC等,且实现诸如来自微软公司的Windows操作系统等操作系统。客户计算机410是主要连接至服务器计算机305来访问不是本地存储在客户计算机410处的文件或其它信息(例如,驻留在应用程序服务器计算机405处的应用程序)的独立计算机。
客户计算机410配备支持现有传统以及未来的USB标准,诸如USB 1.0、1.1和2.0的一个或多个USB端口。USB标准允许端口(计算机接口)分裂以及USB设备成为“菊花链”。换言之,客户计算机410上的端口可以被“分裂”成多个端口,从而允许多个设备使用同一端口。USB端口可以被连接至客户计算机410中的特定USB集线器(即,USB 1.1设备被连接至USB 1.1集线器;USB 2.0设备被连接至USB 2.0集线器)。
USB集线器被连接至诸如USB 1.1主机控制器或USB 2.0主机控制器等的主机控制器。在某些情形中,主机控制器可以支持多个USB标准(例如,支持USB1.1和2.0的USB主机控制器)。主机控制器被连接至诸如客户计算机410的PCI(外围设备互连)总线等总线。PCI总线由客户计算机410的中央处理单元(CPU)或处理器访问。客户计算机410的硬件体系结构将在下文中参考图8进一步描述。
客户计算机410被连接至一个或多个USB设备420(1)、420(2)和420(N)。USB设备420包括,但不限于,数码照相机、摄影机、硬盘存储设备、数字媒体记录器、打印机和扫描仪。诸如USB设备420等USB设备由特定的设备类定义。换言之,存在用于数码照相机、摄影机、硬盘存储设备、数字媒体记录器、打印机、扫描仪等的特定设备类。客户计算机410和USB设备420特别地由USB连接425(1)、425(2)和425(N)分别连接。USB连接425被连接至上述客户计算机410处的一个或多个USB端口。
客户机和服务器计算机体系结构图5示出了应用程序服务器计算机405和客户计算机410处的顶层体系结构,其中USB设备420的功能是在应用程序服务器计算机405处提供的。
客户计算机410和应用程序服务器计算机405通过它们各自的客户机传输驱动器500和服务器传输驱动器505彼此通信。如以上在图1中描述的,诸如网络415等网络可以连接服务器计算机405和客户机计算机410。而且,客户计算机410、服务器计算机405以及网络(例如,网络415)可以是诸如系统400等更大的远程客户机访问系统的一部分。
在该示例中,客户计算机410依赖于应用程序服务器计算机405来为USB设备420提供功能。驻留在应用程序服务器405处的应用程序510特别为USB设备420中的一个或多个提供功能。这样的USB设备中的一个或多个的功能可以由支持各种远程客户机访问系统情形的应用程序服务器计算机405提供。
一个示例性的情形是当客户计算机410不具有支持USB设备的功能的时候(即,没有应用程序来支持)。这是当客户计算机410是瘦客户机且依赖于由服务器计算机405提供所有功能时的典型情形。
另一情形是当客户计算机410含有有限的功能或选择数量的应用程序来支持USB设备的时候。然而,驻留在客户计算机410上的有限数量的应用程序不包括特别地支持一个或多个USB设备420的应用程序。服务器计算机405包括提供一个或多个USB设备420所需的功能的特定应用程序510。对一个或多个USB设备420的控制可以通过客户计算机410体系结构的即插即用(PNP)特征来确定。特别地,USB总线驱动器515识别一个或多个USB设备420,并将一个或多个USB设备420的存在传递至其它组件(例如,客户计算机的CPU)、驱动器或软件模块。USB主机控制器520与USB总线驱动器通过接口连接,并提供至USB设备420的物理或逻辑连接。如果由其它组件、驱动器或软件模块确定支持一个或多个USB设备420的可接受应用程序不驻留在客户计算机410上,那么对该一个或多个USB设备420的控制被定向至应用程序服务器计算机405。
在其它示例情形中,客户计算机410可以包括支持一个或多个USB设备420的常驻应用程序;然而为众多原因中的一个起见,客户计算机410处的用户可以决定将对该一个或多个USB设备420的支持和功能定向至应用程序服务器计算机405。该用户启动的操作向应用程序服务器计算机405提供对该一个或多个USB设备420的访问和控制。
应用程序510与USB功能设备驱动器525通信。USB功能设备驱动器525是特定USB设备的设备类专用的。USB功能设备驱动器525创建表示USB设备类的特定功能设备对象(FDO)。该特定FDO是表示USB设备类的数据对象,并向应用程序510展示或提供接口。作为常驻于USB功能设备驱动器525上的数据对象,FDO或由FDO展示的接口是由应用程序510特别地识别的。
USB功能设备驱动器525与代理USB总线驱动器530通信。代理USB总线驱动器530是设备无关的,并支持多个包括本地USB设备以及诸如USB设备420等远程USB设备的USB设备。USB功能设备驱动器525创建物理设备对象(PDO),它是表示USB设备420中的一个并供其专用的数据对象。PDO数据对象表示USB设备420中的一个,并供该特定USB设备专用。唯一或专用的PDO允许服务器计算机405通过使用代理USB总线驱动器530来区分特定的USB设备。而且,通过各自的中间接口500和505,代理USB总线驱动器530与远程客户机访问驱动器535通信。远程客户机访问驱动器535执行传递源自服务器计算机405的命令(即,来自应用程序510的命令)的特定功能。代理USB总线驱动器530逻辑上与USB总线驱动器515通信。
与应用程序510往来的通信可以包括I/O请求包(IRP),尤其是被称为I/O控制(IOCTL)码的一组专用的IRP。IRP是源自应用程序510的通信数据,包括对USB设备420中的一个或多个执行动作的请求,诸如将数据传送(发送)至应用程序510的请求。IOCTL码可以由应用程序510使用来与USB功能设备驱动器525通信。IOCTL码是由应用程序510传递至USB设备420中的一个或多个来执行特定动作的专用命令或指令。USB功能设备驱动器525从应用程序510接收IOCTL码,并将该IOCTL码转换为传递给USB设备420中的一个或多个的IRP。同样,从USB设备420中的一个或多个发送的IRP被转换为可以由应用程序510读取或使用的IOCTL。IOCTL特别地用于来自应用程序510的命令和/或动作(即,请求)与诸如USB功能设备驱动器525等设备或类专用驱动器的通信。USB功能设备驱动器525确认定义命令或动作的IOCTL,尤其是IOCTL参数。
图6示出了应用程序服务器计算机405和客户计算机410处的示例顶层体系结构,其中功能是由应用程序服务器405或者客户计算机410中的任一个提供的。USB设备420中的一个或多个可以由客户计算机410或应用程序服务器计算机405中的任一个来访问和控制。特别地,位于应用程序服务器计算机405或客户计算机410中的任一个的应用程序向特定USB设备420提供功能。
在远程客户机访问系统实现中,客户计算机410被用来主要提供输入和输出(I/O),诸如由用户通过如键盘或鼠标等输入设备输入的数据。在该示例中,I/O数据是由USB设备420提供的。常驻于客户计算机410处的应用程序605可以用于为USB设备420中的一个或多个提供功能,且特别地允许接收I/O数据,并将其发送至USB设备420中的一个或多个。具体地,由USB设备420中的一个或多个提供的数据或信息可由客户计算机410使用应用程序604来访问。应用程序605也可以向特定USB设备420提供数据或信息(即,控制)。在某些情形中,可能需要将对USB设备420中的一个或多个的访问和控制定向或重定向至驻留在服务器计算机405处的应用程序,而无论是否有诸如应用程序605的应用程序驻留在客户计算机410中。应用程序605的示例包括文字处理程序、多媒体程序以及数据管理程序。
应用程序605与USB功能设备驱动器610通信。USB功能设备驱动器610是对其中组合USB设备420中的一个的设备类专用的。如上所述,特定USB功能设备驱动器支持特定的USB设备。例如,USB功能设备驱动器是数码照相机、打印机、磁盘存储单元、扫描仪等专用的。USB功能设备驱动器610创建表示USB设备420中的一个或多个的FDO,被组合在同一类中的USB设备由同一FDO表示。该特定的FDO是表示其中组合了一个或多个USB设备420的设备类的数据对象,并向应用程序605展示或提供接口。如果USB设备420是数码照相机,那么创建的FDO(数据对象)表示一般的数码照相机而不是一个特定的数码照相机。作为驻留在USB功能设备驱动器610上的数据对象,FDO以及由FDO展示的接口由与该USB功能设备驱动器610通信的应用程序605、USB总线驱动器515以及其它驱动器、模块或组件识别。
USB功能设备驱动器610与USB总线驱动器515通信,USB总线驱动器515也被称为“集线器驱动器”。USB总线驱动器515是设备无关的,并支持多个诸如USB设备420等USB设备。USB总线驱动器515创建PDO,PDO是表示USB设备420中的一个特定USB设备的数据对象。PDO数据对象表示是USB设备420中的一个特定USB设备专用的。例如,如果USB设备420是连接的若干数码照相机中的一个,那么由USB集线器驱动器515创建标识特定USB设备的专用PDO。该PDO被特别地传递至USB主机控制器520。而且,由USB总线驱动器515创建的PDO也可以被用来标识供与USB集线器驱动器515通信的其它驱动器、模块或组件专用的USB设备。
USB主机控制器520可以是对一个或多个USB设备420的物理接口,且它与USB总线驱动器515通信。USB主机控制器520可以被连接至USB端口,该端口连接至USB设备420。只要一个或多个USB设备420被连接至USB主机控制器520,USB主机控制器520就向USB总线驱动器515传递驻留在已连接的一个或多个USB设备420中的标识符或标识数据。USB总线驱动器515创建标识USB设备420的PDO,且向其它驱动器、模块或组件呈现该PDO。通过标识USB设备420中的特定USB设备,客户计算机410安装(即,客户计算机410的CPU或处理器安装)访问和使用该特定USB设备所需的软件。这支持免去用户安装合适的软件来支持该特定USB设备的需求的PNP特征。
与应用程序605往来的通信可以包括IRP和IOCTL码。IRP是源自应用程序605的通信数据,包括对USB设备420中的一个或多个执行动作的请求,诸如将数据传送(发送)至应用程序605的请求。IOCTL码可以由应用程序605用来与USB功能设备驱动器610通信。IOCTL码是由应用程序605传递至一个或多个USB设备420来执行特定动作的专用命令或指令。USB功能设备驱动器610从应用程序605接收IOCTL码,并将该IOCTL码转换为传递给USB设备420中的一个或多个的IRP。同样,从USB设备420中的一个或多个发送的IRP被转换为可以由应用程序605读取或使用的IOCTL。IOCTL特别用于将来自应用程序605的命令和/或动作(即,请求)与诸如USB功能设备驱动器610的设备或类专用驱动器的通信。USB功能设备驱动器610确认定义命令或动作的IOCTL,尤其是IOCTL参数。
在客户计算机410处提供客户机传输驱动器500,允许远程客户机访问与应用程序服务器计算机405通信。通信可以实现诸如RDP通信协议等通信协议,尤其实现编码发送的数据以及解码由客户机传输驱动器500接收的命令的通信协议。而且,客户机传输驱动器500可以在跨诸如因特网等网络的数据通信中实现诸如TCP/IP等传输协议。
在某些情况下,支持该一个或多个USB设备420的功能是由服务器计算机405提供的。当这样的功能由应用程序服务器计算机405提供时,装载远程客户机访问驱动器535。远程客户机访问驱动器535执行由USB功能设备驱动器610提供的功能,包括传递源自应用程序服务器计算机405的命令。通过远程客户机访问驱动器535,至USB设备420的通信从应用程序605和USB功能设备驱动610重定向。命令可以是IRP的形式,且被传递给USB总线驱动器515。而且,远程客户机访问驱动器535识别由USB总线驱动器515创建的特定PDO。远程客户机访问驱动器535特别地识别表示该一个或多个USB设备420的特定PDO以及由该特定PDO展示的接口。
应用程序服务器计算机405提供向诸如客户计算机410等一个或多个客户计算机提供特定功能的专用应用程序软件。在该示例中,应用程序服务器计算机405包括支持一个或多个USB设备420或向其提供功能的应用程序510。应用程序510的示例包括文字处理程序、多媒体程序以及数据管理程序。
应用程序510与USB功能设备驱动器525通信。USB功能设备驱动器525是供其中组合特定USB设备420的设备类专用的。USB功能设备驱动器525创建表示USB设备的特定类的特定PDO。如上所述,该特定PDO是表示设备类的数据对象,并且向应用程序510展示或提供接口。作为由USB功能设备驱动器525提供的数据对象,FDO或由该FDO展示的接口特别地由应用程序510识别。
USB功能设备驱动器525与代理USB总线驱动器530通信。代理USB总线驱动器530是设备无关的,并支持多个本地和诸如USB设备420等远程USB设备。代理USB总线驱动器530创建PDO,PDO是表示特定USB设备420并供该设备专用的数据对象。唯一的或专用的PDO允许服务器计算机405通过使用代理USB总线驱动器530来区分特定的USB设备。
与应用程序510往来的通信可以包括IRP和IOCTL码。IOCTL码可以特别地由应用程序510用来与USB功能设备驱动器525通信。IOCTL码是由应用程序510传递的专用命令或指令。USB功能设备驱动器525从应用程序510接收IOCTL码,并将该IOCTL码转换为传递给代理USB总线驱动器530的IRP。由代理USB总线驱动器530接收的IRP由服务器传输驱动器505接收。服务器传输驱动器505也可以将IRP传递给代理USB总线驱动器530,其中这样的IRP表示来自诸如USB设备420等远程USB设备的数据和请求。
图7示出了将对USB设备的访问和控制定向或重定向至诸如应用程序服务器计算机405等远程计算机的进程700。进程700被示为逻辑流程图中的框的集合,这些框表示可以用硬件、软件、固件或其组合实现的操作的序列。在软件的语境中,框表示计算机指令,当由一个或多个处理器执行这些指令时,执行所述的操作。进程700参考图4、5和6中描述的应用程序服务器计算机405和客户计算机410来描述,其中应用程序服务器计算机405和客户计算机410提供执行特定进程的装置。尽管被描述为流程图,但构想到该进程可以并发地发生。
在框705处,USB设备被连接至客户计算机。该设备可以被物理地连接至客户计算机上的USB端口。该USB端口物理地与USB控制器连接。USB总线驱动器与该USB控制器连接。该USB总线驱动器识别并标识该特定的USB设备,还标识组合该USB设备的类。通过识别进程,提供了USB设备的即插即用(PNP),在该示例中识别进程是特别地由USB总线驱动器执行的。换言之,识别USB设备,如果适用,那么无需用户干涉就安装合适的软件。由该USB总线驱动器特别地提供被称为物理设备对象(PDO)的数据对象以及供该USB设备专用的接口。该PDO以及接口被传递至连接至该USB总线驱动器的组件、模块和驱动器。
在某些情况下,期望客户计算机向已连接的USB设备提供功能,或对其访问和控制(即,沿着框710的“否”分支)。在框715处,当客户计算机处的应用程序为USB设备提供功能,安装或装载专用的USB功能设备驱动器。USB功能设备驱动器对该USB设备的设备类专用。USB功能设备驱动器特别地提供供该已连接的USB设备专用的功能设备对象(FDO)和接口。该FDO和接口被传递至连接至USB功能驱动器的组件、模块以及驱动器。提供从应用程序到USB设备的通信路径。
在框720处,执行USB设备与应用程序之间的通信。应用程序可以发送描述对数据的请求的I/O控制(IOCTL)码。应用程序也可以接收IOCTL码。IOCTL码在从应用程序发送之后,可以被转换为I/O请求包(IRP)。而且,由应用程序接收的IOCTL码可以作为IRP源自USB设备。
在某些其它情况下,期望应用程序服务器计算机向已连接的USB设备提供功能,或对该设备访问和控制(即,沿着框710的“是”分支)。示例性的情况包括当客户计算机含有有限的应用程序或不含有应用程序来向USB设备提供足够的功能的时候。在其它情况下,尽管应用程序可以驻留在客户计算机处来为USB设备提供功能,但是客户计算机处的用户可能期望使得应用程序服务器计算机为USB设备提供功能。
在框725处,在客户计算机处安装或装载远程客户机访问驱动器。来自应用程序服务器计算机,尤其是服务器计算机处的应用程序的通信通过该远程客户机访问驱动器来定向,这实质上提供了从应用程序服务器计算机(即,应用程序服务器计算机处的应用程序)至USB设备的通信路径。可以在客户计算机处提供允许与应用程序服务器计算机通信的客户机传输驱动器。应用程序服务器计算机可以包括从客户计算机的客户机传输驱动器中接收通信并向其发送通信的服务器传输驱动器。
在框730处,在应用程序服务器计算机处识别USB设备。具体地,在应用程序服务器计算机处实现的代理USB总线驱动器识别USB设备以及该USB设备的特定类。
在框735处,远程客户机访问总线驱动器装载或安装对该USB设备类专用的USB功能设备驱动器。USB功能设备驱动器是供该USB设备所属的设备类或组专用的。
在框740处,执行USB设备和驻留在应用程序服务器计算机处的应用程序之间的通信。应用程序可以发送描述对转化为由USB设备接收的IRP的数据的请求的IOCTL。USB功能设备驱动器可以创建并提供FDO(设备专用数据对象)。FDO向应用程序表示USB设备。
示例性计算机图8示出了适合作为用于实现本发明的各个方面的环境的示例性计算设备或计算机800,例如作为客户计算机410或应用程序服务器计算机405。计算机800的组件可以包括,但不限于,处理单元820、系统存储器830和将包括系统存储器830在内的各种系统组件耦合至处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
示例性计算机800通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机800访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机800访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器830包括易失性或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)831和随机存取存储器(RAM)832。基本输入/输出系统833(BIOS)包含有助于诸如启动时在计算机800中元件之间传递信息的基本例程,它通常存储在ROM 831中。RAM 832通常包含处理单元820可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图8示出了操作系统834、应用程序835、其它程序模块836和程序数据837。
示例性计算机800也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图8示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器841,从可移动、非易失性磁盘852中读取或向其写入的磁盘驱动器851,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘856中读取或向其写入的光盘驱动器855。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器841通常由不可移动存储器接口,诸如接口840连接至系统总线821,磁盘驱动器851和光盘驱动器855通常由可移动存储器接口,诸如接口850连接至系统总线821。
以上描述和在图8中示出的驱动器及其相关联的计算机存储介质为计算机800提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图8中,硬盘驱动器841被示为存储操作系统844、应用程序845、其它程序模块846和程序数据847。注意,这些组件可以与操作系统834、应用程序835、其它程序模块836和程序数据837相同或不同。操作系统844、应用程序845、其它程序模块846和程序数据847在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘848和定点设备861(通常指鼠标、跟踪球或触摸垫)向示例性计算机800输入命令和信息。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的用户输入接口860连接至处理单元820,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器862或其它类型的显示设备也经由接口,诸如视频接口890连接至系统总线821。除监视器862以外,计算设备也可以包括其它外围输出设备,诸如扬声器897和打印机896,它们可以通过输出外围接口895连接。
示例性计算机800可使用至一个或多个远程计算机,诸如远程计算设备880的逻辑连接在网络化环境中操作。远程计算设备880可以是个人计算设备、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机800描述的许多或所有元件,尽管在图8中只示出存储器存储设备881。图8中所示逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,示例性计算机800通过网络接口或适配器884连接至LAN 871。当在WAN网络环境中使用时,示例性计算机800通常包括调制解调器872或用于通过诸如因特网等WAN 873建立通信的其它装置。调制解调器872可以是内置或外置的,它可以通过用户输入接口860或其它合适的机制连接至系统总线821。在网络化环境中,相对于示例性计算机800所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图8示出了远程应用程序885驻留在存储器设备881上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
结论上文描述了将对连接至客户计算机的USB设备的访问和控制选择性地定向或重定向至服务器计算机。尽管本发明是以对结构特征和/或方法性动作专用的语言来描述的,但是可以理解,定义在所附权利要求书中的本发明不必限于所述的具体特征或动作。相反,将该具体特征和动作揭示为实现所要求保护的本发明的示例性形式。
权利要求
1.一种为远程客户机执行应用程序的应用程序服务器,所述应用程序与客户机USB设备交互,所述应用程序服务器含有服务器驱动器栈,所述栈包括USB功能驱动器,它具有供所述应用程序用来与所述客户机USB设备交互的接口;代理USB总线驱动器,它被配置成与所述远程客户机通信;其中,所述USB功能驱动器被配置成与所述代理USB总线驱动器连接,以与所述客户机USB设备交互。
2.如权利要求1所述的应用程序服务器,其特征在于,所述代理USB功能驱动器被配置成与所述远程客户机处的实际USB总线驱动器通信,以与所述客户机USB设备交互。
3.如权利要求1所述的应用程序服务器,其特征在于,所述服务器驱动栈还包括被配置成提供所述代理USB总线驱动器和所述远程客户机之间的通信的服务器传输驱动器。
4.一种客户机服务系统,包括如权利要求1所述的应用程序服务器;远程客户机,其中,所述远程客户机含有被配置成与所述客户机USB设备交互的客户机USB总线驱动器;其中,所述代理USB总线驱动器与所述客户机USB总线驱动器通信,以与所述USB设备交互。
5.一种客户机服务系统,包括如权利要求1所述的应用程序服务器,所述服务器驱动器栈还包括被配置成提供所述代理USB总线驱动器与所述远程客户机之间的通信的服务器传输驱动器;远程客户机,其中,所述远程客户机含有客户机驱动器栈,所述客户机驱动器栈包括客户机USB总线驱动器,它被配置成与所述USB设备交互;以及客户机传输驱动器,它被配置成提供所述客户机USB总线驱动器与所述应用程序服务器之间的通信。
6.一种客户机服务系统,包括如权利要求1所述的应用程序服务器,所述服务器驱动器栈还包括被配置成提供所述代理USB总线驱动器与所述远程客户机之间的通信的服务器传输驱动器;远程客户机,其中,所述远程客户机含有被配置成与所述客户机USB设备交互的客户机USB总线驱动器。
7.一种客户机/服务器远程服务系统,包括如权利要求1所述的应用程序服务器;远程客户机,其中,所述远程客户机含有客户机驱动器栈,所述栈包括客户机USB总线驱动器,它被配置成与所述客户机USB设备交互;以及USB主机控制器驱动器,通过所述USB主机控制器驱动器,所述客户机USB总线驱动器与所述客户机USB设备交互。
8.一种为由应用程序服务器执行的第一应用程序提供用户界面的客户机,包括第一USB设备;USB驱动器栈,包括USB主机控制器驱动器,它与所述第一USB设备通信;USB总线驱动器,它通过所述USB主机控制器与所述USB设备交互,所述USB总线驱动器含有被设计成与USB功能驱动器通信的接口;以及客户机传输驱动器,它使用所述USB总线驱动器的接口,通过所述客户机驱动器栈来提供由所述应用程序服务器执行的第一应用程序与所述第一USB设备之间的通信。
9.如权利要求8所述的客户机,其特征在于,所述客户机传输驱动器与由所述应用程序服务器实现的服务器USB功能驱动器通信。
10.如权利要求8所述的客户机,其特征在于,还包括第二USB设备;其中,所述USB主机控制器驱动器与所述第二USB设备通信;由所述客户机执行的第二应用程序;客户机USB功能驱动器,它使用所述USB总线驱动器的接口,通过所述客户机驱动器栈来提供所述第二应用程序与所述第二USB设备之间的通信。
11.如权利要求8所述的客户机,其特征在于,所述客户机传输驱动器与由所述应用程序服务器实现的代理USB总线驱动器通信。
12.如权利要求8所述的客户机,其特征在于,还包括第二USB设备;其中,所述USB主机控制器驱动器与所述第二USB设备通信;由所述客户机执行的第二应用程序;客户机USB功能驱动器,它使用所述USB总线驱动器的接口,通过所述客户机驱动器栈来提供所述第二应用程序与所述第二USB设备之间的通信;其中,所述客户机传输驱动器与由所述应用程序服务器实现的服务器USB功能驱动器通信。
13.一种与位于客户计算机处的第一和第二USB设备交互的方法,包括为由应用程序服务器执行的主宿的应用程序,在所述客户计算机处提供用户界面;由所述客户计算机执行本地应用程序;在所述客户计算机处提供USB驱动器栈;通过所述USB驱动器栈,在所述主宿的应用程序与所述第一USB设备之间通信;使用所述USB驱动器栈,在所述本地应用程序与所述第二USB设备之间通信。
14.一种含有用于执行如权利要求13所述的步骤的计算机可执行指令的计算机可读介质。
15.如权利要求13所述的方法,其特征在于,所述USB驱动器栈至少包括USB功能驱动器和USB总线驱动器。
16.一种含有用于执行如权利要求15所述的步骤的计算机可执行指令的计算机可读介质。
17.如权利要求13所述的方法,其特征在于,所述USB驱动器栈还至少包括USB功能驱动器、USB总线驱动器和USB主机控制器驱动器。
18.一种含有用于执行如权利要求17所述的步骤的计算机可执行指令的计算机可读介质。
19.如权利要求13所述的方法,其特征在于,还包括在所述USB驱动器栈与由所述应用程序服务器实现的USB功能驱动器之间通信。
20.一种含有用于执行如权利要求19所述的步骤的计算机可执行指令的计算机可读介质。
全文摘要
在客户计算机处连接一个或多个通用串行总线(USB)设备。由客户计算机识别USB设备,并作出关于应用程序服务器计算机是否为该USB设备中的一个或多个提供功能的判断。如果功能是由应用程序服务器提供的,那么提供自该USB设备至该服务器计算机的专用通信路径。
文档编号H04L29/06GK1804820SQ20051013167
公开日2006年7月19日 申请日期2005年12月14日 优先权日2005年1月14日
发明者C·钟, J·C·邓恩, J·奇克, M·V·帕特瓦德翰, V·M·玛姆塔尼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1