用于将设备驱动程序导入到客户计算环境中的方法和系统的制作方法

文档序号:6349644阅读:89来源:国知局

专利名称::用于将设备驱动程序导入到客户计算环境中的方法和系统的制作方法
技术领域
:本公开内容涉及用于导入设备驱动程序的方法和系统。本公开尤其涉及用于将设备驱动程序导入到主机上的客户计算环境中方法和系统,该客户计算环境是由外部介质设备提供的,其不包括设备驱动程序。
背景技术
:在一些环境中,外部介质设备-例如,USB记忆棒、外部盘驱动、DVD盘、网络可访问的计算设备或者网络可访问的存储设备-存储用户可以从计算设备上访问的计算环境。这样的计算环境可包括操作系统映像以及应用、文件和数据,包括用户数据。在通常的环境中,主机计算设备从外部介质设备检索数据(例如操作系统映像)并且执行从外部介质设备检索的操作系统而不是执行由主机计算设备提供的操作系统。这样的环境通常允许用户从不同物理位置-例如从工作地点、家、公共位置(例如从位于客户端站点或网吧的机器)_访问计算环境而不会在不同的主机上留下潜在的敏感数据。访问在外部介质设备上存储的计算环境的一个缺点是该操作系统映像通常需要包含操作系统能在任何给定主机上执行所依赖的所有信息。然而,不同主机通常具有由不同厂商制造的不同硬件设备集;为了正常工作,不同的设备经常要求不同的设备驱动程序。因为操作系统映像通常是在不了解主机的硬件配置的情况下生成的,所以一个操作系统映像必须与不同种类的硬件设备一起工作。如果操作系统映像不包含用于主机上的设备的设备驱动程序,那么通常要求用户来提供设备驱动程序。然而,识别和检索所需要的驱动程序可能是耗时的或挑战性的项目,其可能导致次优的用户体验。一个解决方案是试图在操作系统映像中存储所有设备的驱动程序。然而,由于种类繁多的可用的设备和厂商,在操作系统映像中预安装或打包所有设备的驱动程序通常是不可行的。此外,在外部介质设备上存储大操作系统映像可能是昂贵的或不切实际的,例如,要求存储区域网络上的额外空间的大操作系统映像可能要求获得额外的存储设备,或者在DVD或记忆棒的情形下可能产生映像太大不能存储在单个外部介质设备上的情况。
发明内容一方面,系统提供用于在主机的非执行的操作系统映像中定位所要求的驱动程序以及在不需要用户输入的情况下将所要求的驱动程序动态地安装到正在执行的客户操作系统中的功能。在又一个方面,用于将设备驱动程序导入到主机上的客户计算环境中的方法,所述客户计算环境是由不包括该设备驱动程序的外部介质设备提供的,该方法包括将对第一计算环境可用的设备的驱动程序安装到计算设备上的第一计算环境中。该方法包括从外部介质设备检索与第二计算环境关联的数据。该方法包括基于所检索的数据,由计算设备上的虚拟机执行第二计算环境。该方法包括由设备发现代理识别对第二计算环境可用的设备。该方法包括由设备驱动程序发现代理确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联。该方法包括由设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中。又一方面,提供了用于将设备驱动程序导入到主机上的客户计算环境中的系统,所述客户计算环境是由不包括该设备驱动程序的外部介质设备提供的。总的来说,该系统包括设备驱动程序、第一计算环境、第二计算环境、设备发现代理、设备驱动程序发现代理和设备驱动程序安装代理。设备驱动程序被安装到计算设备上的第一计算环境中。设备驱动程序与对第一计算环境可用的设备相关联。第二计算环境是由计算设备上的虚拟机基于从外部介质设备检索的数据而执行的。设备发现代理从外部介质设备执行并识别对第二计算环境可用的设备。设备驱动程序发现代理从外部介质设备执行并确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联。设备驱动程序安装代理从外部介质设备执行并在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中。本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中图IA是描述包括与远程机器通信的客户机的网络环境的实施例的框图;图1B-1E是描述有益于此处所描述的方法和系统的计算机的实施例的框图;图IF是描述虚拟化环境的一个实施例的框图;图2是描述用于将设备驱动程序导入到主机上的客户计算环境中的系统的一个实施例的框图,所述客户计算环境是由外部介质设备提供的,其不包括该设备驱动程序;图3是描述用于将设备驱动程序导入到主机上的客户计算环境中的方法的一个实施例的流程图,所述客户计算环境是由外部介质设备提供的,其不包括该设备驱动程序。具体实施例方式现参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或者多个网络104与一个或者多个远程机器106a-106n(总的还称为服务器106或者远程机器106)通信的一个或者多个客户机102a-102n(总的还称为本地机器102、客户机102、客户节点102、客户机器102、客户计算机102、客户设备102、端点102或端点节点102)。在一些实施例中,客户机102既有作为客户节点寻求访问服务器所提供资源的能力,也有作为服务器向其他客户机102a-102n提供对其寄载的资源的访问的能力。虽然图IA示出了在客户机102和远程机器106之间的网络104,客户机102和远程机器106可以位于相同的网络104上。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如因特网或万维网)。在一些实施例中,在客户机102和远程机器106之间可以有多个网络104。在这些实施例的一个中,网络104’(未示出)可为专用网并且网络104可为公网。在这些实施例的另一个中,网络104’可为专用网并且网络104’可为公网。在又一个实施例中,网络104和104’可都为专用网。网络104可以是任何类型和/或形式的网络,并且可包括任意下述网络点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104可以具有对于本领域普通技术人员所熟知的、可以支持此处描述的操作的任何这样的网络拓扑。网络可包括利用用于移动设备间通信的任一或一些协议的移动电话网络,这些协议包括AMPS、TDMA,CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。在一些实施例中,系统可包括多个逻辑分组的远程机器106。在这些实施例的一个中,服务器的逻辑分组可以被称为服务器群38。在其中一些实施例中,远程机器106可为地理上分散的。在其他实施例中,群38可以作为单个实体被管理。仍在其他实施例中,服务器群38包括多个服务器群38。每个服务器群38内的远程机器106可能是异构的一一个或多个远程机器106可根据一种类型的操作系统平台(例如,由华盛顿州Redmond的Microsoft公司制造的WINDOWSNT)操作,而一个或多个其它远程机器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个服务器群38的远程机器106不必与同一服务器群38中的另一个远程机器106在物理上接近。因此,逻辑上分组为服务器群38的远程机器106组可以是使用广域网(WAN)或城域网(MAN)连接来互联的。例如,群38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的远程机器106。如果远程机器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加群38中的远程机器106间的数据传送速度。远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSLVPN服务器,或防火墙。在一些实施例中,远程机器106提供远程认证拨入用户服务,并且可被称为RADIUS服务器。在其他实施例中,远程机器106可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,远程机器106是刀片服务器。仍在其他实施例中,远程机器106执行向用户或客户计算机102提供对计算环境访问的虚拟机。在一个实施例中,远程机器106可包括活动目录。远程机器106可以是应用加速设备。对于其中远程机器106是应用加速设备的实施例,远程机器106可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,远程机器106包括诸如由位于美国加州SanJose的Citrix应用网络组、位于美国加州MountainView,的SilverPeakSystems公司、位于美国加州SanFrancisco的RiverbedTechnology公司、位于美国华盛顿州Seattle的F5Networks公司或位于美国加州Sunnyvale的JuniperNetworks公司制造的设备线中的一个的设备。在一些实施例中,远程机器106代表客户机102的用户执行应用。在其他实施例中,远程机器106执行虚拟机,该虚拟机提供执行会话,在该执行会话中应用代表用户或客户机102来执行。在这些实施例的一个中,该执行会话是所寄载的桌面会话。在这些实施例的另一个中,该执行会话提供对计算环境的访问,该计算环境包括如下的一个或多个应用、多个应用、桌面应用、和在其中执行一个或多个应用的桌面会话。在一些实施例中,客户机102与远程机器106通信。在一个实施例中,客户机102可与群38中的远程机器106之一直接通信。在又一个实施例中,客户机102执行程序邻近应用(aprogramneighborhoodapplication)以与群38内的远程机器106通信。在又一个实施例中,远程机器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群38中的远程机器106通信。例如通过网络104,客户机102可以请求执行群38中的远程机器106a-106n所寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供这样的功能,即识别和提供与远程机器106b相关的地址信息所需的功能,所述远程机器106b寄载所请求的应用。在一个实施例中,远程机器106提供web服务器的功能。在又一个实施例中,远程机器106a接收来自客户机102的请求,将该请求转发到第二远程机器106b,并用远程机器106b对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,远程机器106获得对客户机102可用的应用的列举,和与远程机器106’相关联的地址信息,的所述远程机器106’寄载该应用的列举所识别的应用。在又一个实施例中,远程机器106使用web接口提供对客户机102的请求的响应。在一个实施例中,客户机102直接与远程机器106通信以访问所识别的应用。在又一个实施例中,客户机102接收诸如显示数据的输出数据,该输出数据由远程机器106上所识别的应用的执行而产生。在一些实施例中,远程机器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算的应用或远程显示表示应用。在一个实施例中,远程机器106或服务器群38作为应用来执行CitrixSystems有限公司的CITRIXACCESSSMTE的任一部分(例如METAFRAM或CITRIXPRESENTATIONSERVER),由CitrixSystems有限公司开发的任何下列产品CITRIXXENAPP,CITRIXXENDESKTOP、CITRIXACCESSGATEWAY,和/或微软公司开发的MICROSOFTWINDOWS终端服务中的任意一个。在又一个实施例中,该应用是由位于美国佛罗里达州FortLauderdale的CitrixSystems有限公司开发的ICA客户机。仍在又一个实施例中,远程机器106可以运行应用,例如,该应用可以是提供诸如由位于美国华盛顿州Redmond的微软公司制造的MICROSOFTEXCHANGE的电子邮件服务的应用服务器、web或Internet服务器,或桌面共享服务器,或协同服务器。仍在又一个实施例中,任何应用可以包括任何类型的所寄载的服务或产品,例如位于美国加利福尼亚州SantaBarbara的CitrixOnlineDivision公司提供的G0T0MEETING,位于美国加利福尼亚州SantaClara的WebEx公司提供的WEBEX,或者位于美国华盛顿州Redmond的微软公司提供的MicrosoftOfficeLIVEMEETING。客户机102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在远程机器106上执行的基于服务器或者基于远程的应用。在一个实施例中,远程机器106可以使用任意瘦-客户端或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems公司出品的独立计算架构(ICA)协议;由位于美国华盛顿州Redmond的微软公司出品的远程桌面协议(RDP);X11协议;由AT&T贝尔实验室出品的虚拟网络计算(VNC)协议;由位于美国加里福尼亚州Sunnyvale和位于以色列Raanana的Qumranet有限公司出品的SPICE协议;由加里福尼亚州Milpitas的VESA公司出品的Net2Display协议;由位于B.C.的Burnaby的Teradici公司出品的PC-over-IP协议;由加里福尼亚州SanJose的WyseTechnology有限公司出品的TCX协议;由纽约州纽约市的哥伦比亚大学开发的THINC协议;或由马萨诸塞州Chelmsford的Desktone有限公司开发的Virtual-D协议。应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。客户机102和远程机器106可以被部署为任意类型和形式的计算设备和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络设备或设备。图IB和IC描述了用于实施客户机102或远程机器106的实施例的计算设备100的框图。如图IB和IC所示,每个计算设备100包括中央处理单元121和主存储器单元122。如图IB所示,计算设备100可包括存储设备128、安装设备116、网络接口118、I/0控制器123、显示设备124a-124n、键盘126和诸如鼠标的定点设备127。存储设备128可包括但不限于操作系统、软件和客户机代理120。如图IC所示,每个计算设备100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出设备130a-130n(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如由位于美国加利福尼亚州MountainView的Intel公司制造的微处理器单元;由位于美国伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州SantaClara的Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州WhitePlains的InternationalBusinessMachines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的AdvancedMicroDevices公司制造的微处理器单元。计算设备100可以基于这些处理器中的任意一种,或者能够按照这里所说明的那样操作的任意其它处理器。主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPMDRAM)、增强DRAM(EDRAM)、扩展数据输出DRAM(EDODRAM)、突发扩展数据输出DRAM(BED0DRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双倍数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接RambusDRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够像这里所说明的那样运行的任意其它可用存储器芯片。在图IB所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图IC描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算设备100的实施例。例如,在图IC中主存储器122可以是DRDRAM。图IC描述在其中主处理器121通过有时被称为背侧总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IB所示的实施例中,处理器121通过本地系统总线150与各种I/O设备130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/O设备130,包括VESAVL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O设备是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示设备124通信。图IC描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDI0、或INFINIBAND通信技术直接与I/O设备130b通信的计算机100的实施例。图IC也描述了在其中本地总线和直接通信相混合的实施例处理器121使用本地互连总线与I/O设备130a通信同时直接与I/O设备130b通信。计算设备100中可以有多种I/O设备130a_130n。输入设备包括键盘、鼠标、触控板、轨迹球、话筒、拨号盘和绘图板。输出设备包括视频显不器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图IB所示,I/O设备可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O设备,例如键盘126和定点设备127(如鼠标或光笔)。此外,I/O设备还可以为计算设备100提供存储和/或安装介质116。在其它实施例中,计算设备100可以提供USB连接(未示出)以接收手持USB存储设备,例如由位于美国加利福尼亚州LosAlamitos的TwintechIndustry公司生产的设备的USB闪存驱动线。再次参考图1B,计算设备100可以支持任意适当的安装设备116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、⑶-ROM驱动器、⑶-R/RW驱动器、DVD-ROM驱动器、闪存驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装软件和程序的任意其它设备。计算设备100还可以包括存储设备,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装设备116的任意一种作为存储设备。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导CD,诸如KN0PPIX,其为一种用于GNU/Linux的可引导CD,可自knoppix.net作为GNU/Linux分发获得。此外,计算设备100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11、Tl、T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET,SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.lib、IEEE802.Hg、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算设备100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS)协议,或由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems公司制造的Citrix网关协议的隧道协议来与其他计算设备100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它设备。在一些实施例中,计算设备100可以包括多个显示设备124a_124n或与其相连,这些显示设备各自可以是相同或不同的类型和/或形式。因而,任意一种I/O设备130a-130n和/或I/O控制器123可以包括任何类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算设备100连接和使用多个显示设备124a-124n。例如,计算设备100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备124a-124n对接、通信、连接或以其他方式使用显示设备124a_124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示设备124a-124n对接。在其它实施例中,计算设备100可以包括多个视频适配器,每个视频适配器与显示设备124a-124n中的一个或多个连接。在一些实施例中,计算设备100的操作系统的任一部分都可以被配置用于使用多个显不器124a_124n。在其它实施例中,显不设备124a_124n中的一个或多个可以由一个或多个其它计算设备提供,诸如(例如通过网络)与计算设备100连接的计算设备IOOa和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示设备作为计算设备100的第二显示设备124a的任何类型的软件。本领域的普通技术人员会认识和意识到可以将计算设备100配置成拥有多个显示设备124a-124n的各种方式和实施例。在进一步的实施例中,I/O设备130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、Fireffire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线或HDMI总线。图IB和IC中所描述类型的计算设备100通常地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算设备100可运行任何操作系统,诸如任意版本的MICROSOFTWINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MACOS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算设备的操作系统,或者能够在计算设备上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于WINDOWS3.x,WINDOWS95,WINDOWS98,WINDOWS2000,WINDOWSNT3.51,WINDOWSNT4.0,WINDOWSCE,WINDOWSMOBILE、WINDOWSXP和WINDOWSVISTA,所有这些均由位于美国华盛顿州Redmond的微软公司出品;由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的MacOS;由位于美国纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于美国犹他州SaltLakeCity的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。计算机系统100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、月艮务器、掌上电脑、移动电话或其他便携电信设备、媒体播放设备、游戏系统、移动计算设备,或能够通信的任意其它类型和/或形式的计算、电信或者媒体设备。计算机系统100有足够的处理器能力和存储容量以执行此处所述的操作。例如,计算机系统100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列设备、由位于日本Tokyo的索尼公司出品的PLAYSTATI0N2、PLAYSTATI0N3或PERSONALPLAYSTATIONPORTABLE(PSP)设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDODS、NINTENDOGAMEB0Y、NINTENDOGAMEB0YADVANCED或NINTENDOREVOLUTION设备,或者由位于美国华盛顿州Redmond的微软公司出品的XBOX或XBOX360设备。在一些实施例中,计算设备100可以有不同的处理器、操作系统以及与该设备一致的输入设备。例如,在一个实施例中,计算设备100是由Palm有限公司出品的TRE0180、270、600、650、680、700p、700w/wx、750、750p、800w、Centro或Pro智能电话。在这些实施例的一些中,TERO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。在其他实施例中,计算设备200是移动设备,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr、i58sr、i85s、i88s、i90c、i95cl、i335、i365、i570、1576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或imllOO,以上这些均由位于美国伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本Kyoto的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算设备100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的SonyEricssonMobileCommunicationsAB公司制造的移动设备。在其他实施例中,计算设备100是黑莓(Blackberry)手持或智能电话,诸如由ResearchInMotion有限公司制造的设备,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520、黑莓PERAL8100,8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve8900、黑莓PearlFlip。在其他实施例中,计算设备100是智能电话、PocketPC、PocketPC电话,或支持MicrosftWindowsMobileSoftware的其它手持移动设备。此外,计算设备100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述操作的其它形式的计算或者电信设备。在一些实施例中,计算设备100是数字音频播放器。在这些实施例的一个中,计算设备100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的AppleIPOD、IPODTouch、IPODNANO和IPODSHUFFLE系列设备的数字音频播放器。在这些实施例的另一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储设备来工作。在其他实施例中,计算设备100是诸如由位于美国新泽西州RidgefieldPark的SamsungElectronicsAmerica公司制造的DigitalAudioPlayerSelectMP3播放器,或由位于美国伊利诺伊州Schaumburg的Motorola公司制造的Motorolam500或m25的数字音频播放器。在其他实施例中,计算设备100是便携媒体播放器,诸如由CreativeTechnologies有限公司制造的ZenVisionW、ZenVision系列、ZenPortableMediaCenter设备或MP3播放器的DigitalMP3系列。仍在其他实施例中,计算设备100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括,但不限于MP3、WAV、M4A/AAC、WMAProtectedAAC>AIFF、Audible音频书、AppleLossless音频文件格式和.mov、.m4v以及.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。在一些实施例中,计算设备100包括设备的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算设备100是组合数字音频播放器和移动电话的MotorolaRAZR或MotorolaROKR系列。在这些实施例的又一个中,计算设备100是由位于加利福尼亚州Cupertino的苹果公司制造的iPhone系列智能电话中的设备。在一个实施例中,计算设备102a可从远程机器106请求资源,同时向客户机102b提供远程机器106的功能。在这样的实施例中,就从远程机器106(其可以被称为服务器)接收数据而言,计算设备102a可以被称为客户机,而就第二客户机102b而言,计算设备102a可以被称为服务器。在又一个实施例中,客户机102代表客户机102上的用户从远程机器106请求资源。如图ID所示,计算装置100可以包括多个处理器,可以提供用于对不只一个数据片同时执行多个指令或者同时执行一个指令的功能。在一些实施例中,计算装置100可包括具有一个或多个核的并行处理器。在这些实施例的一个中,计算装置100是共享内存并行设备,具有多个处理器和/或多个处理器核,将所有可用内存作为一个全局地址空间进行访问。在这些实施例的又一个中,计算装置100是分布式存储器并行设备,具有多个处理器,每个处理器访问本地存储器。在这些实施例的又一个中,计算装置100既有共享的存储器又有仅由特定处理器或处理器子集访问的存储器。在这些实施例的又一个中,如多核微处理器的计算装置100将两个或多个独立处理器组合在一个封装中,通常在一个集成电路(IC)中。在这些实施例的又一个中,计算装置100包括具有单元宽带引擎(CELLBROADBANDENGINE)架构的芯片,并包括高能处理器单元以及多个协同处理单元,高能处理器单元和多个协同处理单元通过内部高速总线连接在一起,可以将内部高速总线称为单元互连总线。在一些实施例中,处理器提供用于对多个数据片同时执行单个指令(SMD)的功能。其他实施例中,处理器提供用于对多个数据片同时执行多个指令(MMD)的功能。又一个实施例中,处理器可以在单个装置中使用SMD和MMD核的任意组合。在一些实施例中,计算装置100可包括图像处理单元。图IE所示的在这些实施例的一个中,计算装置100包括至少一个中央处理单元101和至少一个图像处理单元。在这些实施例的又一个中,计算装置100包括至少一个并行处理单元和至少一个图像处理单元。在这些实施例的又一个中,计算装置100包括任意类型的多个处理单元,多个处理单元中的一个包括图像处理单元。现参考图1F,框图描述了虚拟化环境的一个实施例。简而言之,计算设备100包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序161(也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问(例如处理器221和盘228)。虚拟化层包括至少一个操作系统171和分配给至少一个操作系统171的多个虚拟资源,虚拟资源可包括而不限于多个虚拟处理器132a、132b、132c(总称为132)和虚拟盘142a、142b、142c(总称为142)、以及例如虚拟存储器和虚拟网络接口的虚拟资源。可将多个虚拟资源和操作系统171称为虚拟机166。虚拟机166可包括控制操作系统165,该控制操作系统165与管理程序161通信,并用于执行应用以管理并配置计算设备100上的其他虚拟机。现参考图1F,具体而言,管理程序161可以以模拟访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理程序161可以向任一数量的客户操作系统171a、171b(总称为171)提供虚拟资源。一些实施例中,计算设备100执行一种或多种管理程序。这些实施例中,管理程序可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可包括由位于美国加利福尼亚州的PaloAlto的VMWare公司制造的那些程序、XEN管理程序(一种开源产品,其开发由开源Xen.org协会监管)、由Microsoft公司提供的HyperV、VirtualServer或虚拟PC管理程序或其他。一些实施例中,计算设备100执行创建客户操作系统可在其上执行的虚拟机平台的管理程序,该计算设备100被称为宿主服务器。在这些实施例的一个中,例如,计算设备100是由位于美国佛罗里达州FortLauderdale的CitrixSystems公司提供的XENSERVER。一些实施例中,管理程序161在计算设备上执行的操作系统之内执行。在这些实施例的一个中,执行操作系统和管理程序161的计算设备可被视为具有宿主操作系统(在计算设备上执行的操作系统)和客户操作系统(在由管理程序161提供的计算资源分区内执行的操作系统)。其他实施例中,管理程序161和计算设备上的硬件直接交互而不是在宿主操作系统上执行。在这些实施例的一个中,管理程序161可被视为是在“裸金属(baremetal)”上执行,所述“裸金属”指包括计算设备的硬件。一些实施例中,管理程序161可以创建操作系统171在其中执行的虚拟机166a-c(总称为166)。在这些实施例的一个中,管理程序161加载虚拟机映像以创建虚拟机166。在这些实施例的又一个中,管理程序161在虚拟机166内执行操作系统171。在这些实施例的又一个中,虚拟机166执行操作系统171。一些实施例中,管理程序161控制对在计算设备100上执行的虚拟机166的处理器调度和内存划分。在这些实施例的一个中,管理程序161控制至少一个虚拟机166的执行。在这些实施例的又一个中,管理程序161向至少一个虚拟机166呈现对由计算设备100提供的至少一个硬件资源的抽象。其他实施例中,管理程序161控制是否以及如何把物理处理器能力提供给虚拟机166。控制操作系统165可以执行用于管理和配置客户操作系统的至少一个应用。一个实施例中,控制操作系统165可以执行管理应用,如包括如下用户接口的应用,该用户接口为管理员提供对用于管理虚拟机执行的功能的访问,这些功能包括用于执行虚拟机、终止虚拟机执行或者识别要分配给虚拟机的物理资源类型的功能。又一个实施例中,管理程序161在由管理程序161创建的虚拟机166内执行控制操作系统165。在又一个实施例中,控制操作系统165在被授权直接访问计算设备100上的物理资源的虚拟机166上执行。一些实施例中,计算设备IOOa上的控制操作系统165a可经由管理程序161a和管理程序161b之间的通信与计算设备IOOb上的控制操作系统165b交换数据。这样,一个或多个计算设备100可以与一个或多个其他计算设备100交换关于资源池中可用的处理器和其他物理资源的数据。在这些实施例的一个中,该功能允许管理程序管理分布在多个物理计算设备上的资源池。在这些实施例的又一个中,多个管理程序管理在其中一个计算设备100上执行的一个或多个客户操作系统。一个实施例中,控制操作系统165在被授权与至少一个客户操作系统171交互的虚拟机166上执行。又一个实施例中,客户操作系统171通过管理程序161与控制操作系统165通信,以请求访问盘或网络。在又一个实施例中,客户操作系统171和控制操作系统165可通过由管理程序161建立的通信信道通信,例如,通过由管理程序161提供的多个共享存储器页面通信。一些实施例中,控制操作系统165包括用于直接与由计算设备100提供的网络硬件通信的网络后端驱动器。在这些实施例的一个中,网络后端驱动器处理来自至少一个客户操作系统171的至少一个虚拟机请求。其他实施例中,控制操作系统165包括用于与计算设备100上的存储单元通信的块后端驱动器。在这些实施例的一个中,块后端驱动器根据从客户操作系统171接收的至少一个请求从存储单元读写数据。一个实施例,控制操作系统165包括工具堆栈164。其他实施例中,工具堆栈164提供如下功能和管理程序161交互、和其他控制操作系统165(例如位于第二计算设备IOOb上)通信,或者管理计算设备100上的虚拟机166b、166c。又一个实施例中,工具堆栈164包括自定义应用,其用于向虚拟机群的管理员提供改进的管理功能。一些实施例中,工具堆栈164和控制操作系统165中的至少一个包括管理API,其提供用于远程配置并控制计算设备100上运行的虚拟机166的接口。其他实施例中,控制操作系统165通过工具堆栈164与管理程序161通信。一个实施例中,管理程序161在由管理程序161创建的虚拟机166内执行客户操作系统171。又一个实施例中,客户操作系统171为计算设备100的用户提供对计算环境中的资源的访问。又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对计算设备100的用户可用的其他资源。又一个实施例中,可通过多个访问方法将资源传送给计算设备100,这些方法包括但不限于常规的直接安装在计算设备100上、通过应用流的方法传送给计算设备100、将由在第二计算设备100’上执行资源产生的并通过表示层协议传送给计算设备100的输出数据传送给计算设备100、将由在第二计算设备100’上执行的虚拟机执行资源所产生的输出数据传送给计算设备100、或者从连接到计算设备100的移动存储设备(例如USB设备)执行,或者通过在计算设备100上执行的虚拟机执行并且产生输出数据。一些实施例中,计算设备100把执行资源所产生的输出数据传输给另一个计算设备100’。一个实施例中,客户操作系统171和该客户操作系统171在其上执行的虚拟机结合形成完全虚拟化虚拟机,该完全虚拟化虚拟机并不知道自己是虚拟机,这样的机器可称为“DomainUHVM(硬件虚拟机)虚拟机”。又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。在又一个实施例中,完全虚拟化机可包括驱动器,其通过和管理程序161通信提供功能。这样的实施例中,驱动器通常意识到自己在虚拟化环境中执行。又一个实施例中,客户操作系统171和该客户操作系统171在其上执行的虚拟机结合形成超虚拟化虚拟机(paravirtualized),该超虚拟化虚拟机意识到自己是虚拟机,这样的机器可称为“DomainUPV虚拟机”。又一个实施例中,超虚拟化机包括完全虚拟化机不包括的额外驱动器。又一个实施例中,超虚拟化机包括如上所述的被包含在控制操作系统165中的网络后端驱动器和块后端驱动器。现参考图2,框图描述了用于将设备驱动程序导入到主机上的客户计算环境中的系统的一个实施例,所述客户计算环境是由外部介质设备提供的,其不包括该设备驱动程序。总的来说,该系统包括第一计算环境202、第二计算环境204、虚拟机206、设备发现代理210、设备驱动程序发现代理212、设备驱动程序安装代理214、设备驱动程序216、设备220、与第二计算环境关联的数据222、外部介质设备208、介质设备224和计算设备100。设备驱动程序216被安装到计算设备100上的第一计算环境202中。设备驱动程序216与对第一计算环境202可用的设备220相关联。虚拟机206基于从外部介质设备208检索的数据222在计算设备100上执行第二计算环境204。设备发现代理210从外部介质设备208执行并且识别对第二计算环境204可用的设备220。设备驱动程序发现代理212从外部介质设备208执行并确定在第一计算环境202中安装的设备驱动程序216与对第二计算环境可用的设备220相关联。设备驱动程序安装代理214从外部介质设备208执行并且在没有用户输入的情况下将所安装的设备驱动程序216导入到第二计算环境204。现参考图2,更具体地,设备驱动程序216被安装到计算设备100上的第一计算环境202中。在一个实施例中,第一计算环境202是由计算设备100执行的操作系统。在又一个实施例中,第一计算环境202是由在计算设备100上执行的虚拟机执行的操作系统。在又一个实施例中,设备是外围设备(包括但不限于,打印机、扫描仪、网络连接设备(例如,调制解调器、网络接口卡或者用于连接到物理或无线网络的其他设备)、例如磁盘驱动或磁带驱动的介质设备、和诸如麦克风、扬声器、键盘、定点设备、照相机、显示器或其他设备的输入/输出设备),所述外围设备物理地连接到计算设备100(包括连接到计算设备100的外部设备和嵌入到计算设备100中的内部设备)或无线地连接到计算设备100。在一些实施例中,计算设备100也被称为主机100或主计算设备。在其他实施例中,计算设备100是如上文结合图1A-1E所述的计算设备100。在一个实施例中,介质设备224存储由计算设备100用来执行第一计算环境202的数据。在又一个实施例中,介质设备224是计算设备100上的组件;例如,介质设备224可以是如上文结合图1B-1C所讨论的存储器122。在又一个实施例中,介质设备224是计算设备100外部的组件,例如网络可访问的驱动器或第二外部介质设备208。在一个实施例中,计算设备100从驻留在对计算设备100可访问的网络上的外部介质设备208检索数据222。在又一个实施例中,例如,外部介质设备208可以是存储区域网络中的存储设备。在又一个实施例中,外部介质设备208是驻留在对计算设备100可访问的网络上的第二计算设备100,例如计算设备106。在又一个实施例中,例如,外部介质设备208是闪存数据存储设备。在又一个实施例中,例如,外部介质设备208是DVD盘。虚拟机206基于从外部介质设备208检索的数据222在计算设备100上执行第二计算环境204。在一个实施例中,该系统包括从外部介质设备208检索的与第二计算环境204相关联的虚拟机映像。在又一个实施例中,数据222包括用于执行虚拟机206的虚拟机映像。在又一个实施例中,数据222包括操作系统映像并且第二计算环境204是由虚拟机206执行的操作系统。在一些实施例中,外部介质设备208包括代理,该代理在外部介质设备208和主计算设备100之间建立连接后执行。在这些实施例的一个中,该代理从驻留在对主计算设备100可用的网络上的外部介质设备208检索与第二计算环境204相关联的数据。在这些实施例的又一个中,该代理从驻留在对主计算设备100可用的网络上的第二计算设备IOOb检索与第二计算环境204相关联的数据。在这些实施例的又一个中,该代理从外部介质设备208检索与第二计算环境204相关联的虚拟机映像。在这些实施例的又一个中,该代理基于所检索的数据222指示主计算设备100执行第二计算环境204。在其他实施例中,外部介质设备208包括在外部介质设备208和主计算设备100之间建立连接后自动执行的文件;这样的文件可以被称为自动运行文件。设备发现代理210在外部介质设备208上执行并且识别对第二计算环境204可用的设备220。在一个实施例中,所识别的设备220是也对第一计算环境202可用的设备220。在一些实施例中,设备发现代理210包括用于查询设备220以接收设备220的标识的通信组件。设备驱动程序发现代理212从外部介质设备208执行并确定在第一计算环境202中安装的设备驱动程序216与对第二计算环境可用的设备220相关联。在一个实施例中,例如,计算设备100访问在外部介质设备208上存储的数据以执行设备驱动程序发现代理212。在又一个实施例中,设备驱动程序发现代理212包括用于访问存储驱动程序相关信息的目录并提取设备驱动程序的标识的组件。设备驱动程序安装代理214从外部介质设备208执行并且在没有用户输入的情况下将所安装的设备驱动程序216导入到第二计算环境204。在一个实施例中,例如,计算设备100访问在外部介质设备208上存储的数据以执行设备驱动程序安装代理214。在又一个实施例中,设备驱动程序安装代理214与设备驱动程序发现代理212通信。在又一个实施例中,设备驱动程序安装代理214与设备发现代理210通信。现参考图3,流程图描述了用于将设备驱动程序导入到主机上的客户计算环境中的方法的一个实施例,所述客户计算环境是由外部介质设备提供的,其不包括该设备驱动程序。总的来说,方法300包括将对第一计算环境可用的设备的设备驱动程序安装到计算设备上的第一计算环境中(302)。该方法包括从外部介质设备检索与第二计算环境关联的数据(304)。该方法包括基于所检索的数据,由计算设备上的虚拟机执行第二计算环境(306)。该方法包括由设备发现代理识别对第二计算环境可用的设备(308)。该方法包括由设备驱动程序发现代理确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联(310)。该方法包括由设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中(312)。将对计算设备上的第一计算环境可用的设备的设备驱动程序安装到第一计算环境中(302)。在一个实施例中,用户通过执行安装程序并完成安装过程来安装设备驱动程序216以访问设备220。在又一个实施例中,设备驱动程序216是被预先安装在第一计算环境上的。从外部介质设备检索与第二计算环境关联的数据(304)。在一个实施例中,从驻留在对主计算设备100可用的网络上的外部介质设备检索数据222。在又一个实施例中,从驻留在对主计算设备100可用的网络上的第二计算设备检索数据222。在又一个实施例中,从外部介质设备208检索与第二计算环境204关联的虚拟机映像。在又一个实施例中,从外部介质设备208检索与第二计算环境204关联的操作系统映像。基于所检索的数据,由计算设备上的虚拟机执行第二计算环境(306)。在一个实施例中,基于所检索的数据222,主计算设备100执行第二计算环境204而不使用虚拟机。在又一个实施例中,基于所检索的数据222,主计算设备100在隔离环境中执行第二计算环境204。在又一个实施例中,由主计算设备100提供的管理程序执行虚拟机,在该虚拟机中执行第二计算环境204。在一些实施例中,在开始执行第二计算环境204之前终止第一计算环境202的执行。在其他实施例中,虚拟机206执行提供对第二计算环境204的访问的客户操作系统。在这些实施例的一个中,客户操作系统是第二计算环境204。在这些实施例的又一个中,虚拟机206给客户操作系统分配对主计算设备100的内部硬盘驱动的访问。设备发现代理识别对第二计算环境可用的设备(308)。在一个实施例中,设备发现代理210将对第一计算环境可用的设备识别为对第二计算环境可用。在一些实施例中,在初始化过程(其也可以被称为启动过程)中,设备发现代理210扫描计算设备100的硬件以识别设备220。在一些实施例中,设备发现代理210识别第二计算环境204可访问的,但是其设备驱动程序没有被包含在第二计算环境204中,或者没有被包含在由外部介质设备208存储的与第二计算环境204关联的数据222中的设备220。在这些实施例的一个中,设备发现代理210访问由计算设备100提供的设备的列举以识别设备220。在这些实施例的又一个中,设备发现代理210对于在该设备的列举中识别的每个设备确定该列举的设备是否是对第二计算环境204可用的。在这些实施例的又一个中,例如,设备发现代理210应用策略来确定所列举的设备是否对第二计算环境204可用。在这些实施例的又一个中,作为又一个示例,设备发现代理210访问设备类型和权限的映射来确定所列举的设备对第二计算环境204可用。在这些实施例的又一个中,设备发现代理210与由第二计算环境204提供的设备管理组件通信以确定计算设备100是否提供对第二计算环境204不包括其驱动程序的任何设备的访问。在其他实施例中,设备发现代理210向设备驱动程序发现代理212传输对驱动程序的请求。设备驱动程序发现代理确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联(310)。在一个实施例中,设备驱动程序发现代理212接收可用驱动程序的标识;例如,设备发现代理210可以向设备驱动程序发现代理212传输该标识,例如设备标识符或厂商名。在又一个实施例中,设备驱动程序发现代理212从计算设备100上的硬盘驱动检索与对第二计算环境202可用的设备220相关联的驱动程序相关信息。在又一个实施例中,设备驱动程序发现代理212访问存储包括为所识别的设备220导入驱动程序所需的数据的标识的驱动程序相关信息的目录;例如,该目录可存储文件,所述文件列举至少一个文件、注册表项、设置或其他数据或对将驱动程序安装到第二计算环境204中所需的数据的修改,以及对于所列举的数据在计算环境中的位置的标识。在一些实施例中,例如,操作系统可在文件中存储驱动程序相关信息。在这些实施例的一个中,例如,文件可以是在由WINDOWSXP操作系统生成和维护的目录中,并且文件的位置可以是由路径名提供的,所述路径名包括,例如但不限于,“\WIND0WS\inf\*.inf”、“\Windows\System32\*.INF”和“\Windows\inf\*.inf”。在这些实施例的又一个中,例如,文件可以是在由WINDOWS2003操作系统生成和维护的目录中,并且文件的位置可以是由路径名提供的,所述路径名包括,例如但不限于,“\Windows\inf\*.inf”。在这些实施例的又一个中,例如,文件可以是在由WINDOWSNT操作系统生成和维护的目录中,并且文件的位置可以是由路径名提供的,所述路径名包括,例如但不限于,“\WINNT\inf\*.inf”。在这些实施例的又一个中,例如,文件可以是在由WINDOWSVISTA操作系统生成和维护的目录中,并且文件的位置可以是由路径名提供的,所述路径名包括,例如但不限于,“\WindowS\inf\*.PNF”和“\Windows\inf\*.inf”。在一个实施例中,设备驱动程序发现代理212确定在第二计算设备上的第三计算环境中安装的设备驱动程序与对第二计算环境204可用的设备相关联。在又一个实施例中,设备驱动程序发现代理212访问在第二计算设备IOOb上的存储驱动程序相关信息的目录并且检索导入所识别的设备220的驱动程序所需的至少一个文件;例如,设备驱动程序发现代理212可访问通过网络104可访问的目录。在一些实施例中,设备驱动程序发现代理212向设备驱动程序安装代理214发送导入所检索的文件的指令。设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中(312)。在一个实施例中,设备驱动程序安装代理214从设备驱动程序发现代理212接收设备220的标识和包含所安装的设备驱动程序216的至少一个文件。在又一个实施例中,设备驱动程序安装代理214将设备驱动程序216导入到第二计算环境204中。在又一个实施例中,设备驱动程序安装代理214将设备驱动程序216导入到在外部介质设备208上存储的与第二计算环境204关联的操作系统映像或其他数据222中。在一些实施例中,设备驱动程序安装代理214从设备驱动程序发现代理212接收存储驱动程序相关信息的目录的标识。在这些实施例的一个中,设备驱动程序安装代理214访问所识别的目录以检索驱动程序相关信息。在这些实施例的又一个中,设备驱动程序安装代理214从存储驱动程序相关信息的目录检索计算环境中的要导入的至少一个文件的位置标识以安装驱动程序。在这些实施例的又一个中,设备驱动程序安装代理214从存储驱动程序相关信息的目录检索计算环境中的要修改的至少一个设置的位置标识以安装驱动程序。在这些实施例的又一个中,设备驱动程序安装代理214从存储驱动程序相关信息的目录检索要对计算环境中的注册表做出的至少一个修改的标识以安装驱动程序。在这些实施例的又一个中,设备驱动程序安装代理214从存储驱动程序相关信息的目录检索要在计算环境生成的至少一个文件的标识以安装驱动程序。在这些实施例的又一个中,设备驱动程序安装代理214从存储驱动程序相关信息的目录检索要在计算环境生成的至少一个注册表项的标识以安装驱动程序。在一个实施例中,设备驱动程序安装代理214将文件从由所检索的驱动程序相关信息所识别的位置复制到第二计算环境中的对应位置。在又一个实施例中,设备驱动程序安装代理214将注册表项从由所检索的驱动程序相关信息所识别的位置复制到第二计算环境中的对应位置。在又一个实施例中,设备驱动程序安装代理214基于由所检索的驱动程序相关信息所识别的修改来修改第二计算环境中的注册表中的设置。在又一个实施例中,设备驱动程序安装代理214基于由所检索的驱动程序相关信息所识别的修改来修改第二计算环境中的文件。在一些实施例中,此处所描述的方法和系统提供将设备的设备驱动程序从主计算设备导入到基于在外部介质设备上存储的映像执行的计算环境中的功能。在这些实施例的一个中,先前安装在主计算设备上的所要求的设备驱动程序可以被导入到计算环境中而不要求存储在外部介质设备上的映像包含该设备驱动程序的副本。在这些实施例的又一个中,这允许计算环境的用户经由其预计的设备驱动程序来访问可用的设备而不必完成要求用户输入的通常的驱动程序安装过程。下面的示意性的示例示出了可以如何使用上述所讨论的方法和系统来将设备驱动程序导入到主机上的客户计算环境中,所述客户计算环境是由不包括该设备驱动程序的外部介质设备提供的。这些示例旨在说明但不限制本发明。示例I在一个实施例中,第一计算环境202是在主计算设备100上执行的本地操作系统。在又一个实施例中,第一计算环境202是由在主计算设备100上执行的虚拟机执行的客户操作系统。在又一个实施例中,主计算设备100的用户识别可用的设备-例如打印机、调制解调器、显示器、网络可访问的存储元件或其他外围设备-并且将设备驱动程序216安装在主计算设备100上以用于访问该可用设备和与其交互。在又一个实施例中,主计算设备100可被用于个人的目的,例如在用户家庭环境中的计算机。在一个实施中,第二计算环境是提供对应用、文件或其他资源的访问的桌面环境。在又一个实施例中,外部介质设备208存储用于执行第二计算环境204的映像(例如桌面映像、操作系统映像、或驱动映像)。在又一个实施例中,在主计算设备100上执行的虚拟机206访问该映像以执行第二计算环境204并给用户提供对桌面环境的访问。在又一个实施例中,第二计算环境204是,例如但不限于,由用户的雇主、客户、合伙人或其他公司实体生成和维护的、给用户提供对公司应用、文件或其他资源(其可包含潜在的敏感数据)远程访问的公司桌面环境。在一些实施例中,通过允许用户从主计算设备100访问第二计算环境204,用户获得对他或她不能以其他方式访问(例如,由于主计算设备100通常用于个人的目的并且获取公司资源的费用是不合理的)的公司资源的访问,同时利用现有的设备并将该资源保持在隔离的、安全的环境中。在这些实施例的一个中,通过将现有的设备驱动程序从主计算设备100导入到第二计算环境204中,第二计算环境的用户可以访问可用的设备而没有在外部介质设备上存储大的操作系统映像的代价或实际挑战。在这些实施例的又一个中,通过导入现有的设备驱动程序而不要求用户输入,导入设备驱动程序的过程可以无缝地发生而不要求用户向通常的安装过程提供关于驱动程序相关信息位置的额外信息。应该理解,上文描述的系统可提供这些组件的任意多个或每一个并且这些组件可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。可以使用编程和/或工程技术将上文所描述的系统和方法实现为方法、设备或产品以提供软件、固件、硬件或上述的任何组合。此外,上述系统和方法可作为一件或多件产品上或在其中所包含的一个或多个计算机可读程序而被提供。此处使用的术语“产品”旨在包括从一个或多个计算机可读的设备、固件、可编程逻辑、存储器设备(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子设备、计算机可读的非易失存储单元(例如,CD-ROM、软盘、硬盘等)可访问的或嵌入其中的代码或逻辑。所述产品可以是从提供经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等对计算机可读程序的访问的文件服务器可访问的。所述产品可以是闪存卡或磁带。所述产品包括硬件逻辑以及嵌入在计算机可读介质中由处理器执行的软件或可编程代码。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。已经描述了用于将设备驱动程序导入到主机上的客户计算环境中的方法和系统的某些实施例,所述客户计算环境是由不包含该设备驱动程序的外部介质设备提供的,对本领域技术人员而言,显而易见可以使用包含所述实施例的概念的其他实施例。本发明应该不限于某些实施例,而是应由下列权利要求的精神和范围进行限制。权利要求1.一种用于将设备驱动程序导入到主机上的客户计算环境中的方法,所述客户计算环境是由不包含该设备驱动程序的外部介质设备提供的,所述方法包括将对第一计算环境可用的设备的设备驱动程序安装到计算设备上的第一计算环境中;从外部介质设备检索与第二计算环境关联的数据;基于所检索的数据,由该计算设备上的虚拟机执行第二计算环境;由设备发现代理识别对第二计算环境可用的设备;由设备驱动程序发现代理确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联;以及设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中。2.根据权利要求I所述的方法,其中执行包括由所述计算设备基于所检索的数据执行第二计算环境。3.根据权利要求I所述的方法,其中执行包括由所述计算设备上的隔离环境基于所检索的数据执行第二计算环境。4.根据权利要求I所述的方法,还包括从外部介质设备检索与第二计算环境相关联的虚拟机映像。5.根据权利要求I所述的方法,还包括从驻留在对所述计算设备可用的网络上的外部介质设备检索与第二计算环境相关联的数据。6.根据权利要求I所述的方法,还包括从驻留在对所述计算设备可用的网络上的第二计算设备检索与第二计算环境相关联的数据。7.根据权利要求I所述的方法,还包括由设备发现代理将对第一计算环境可用的设备识别为对第二计算环境可用。8.根据权利要求I所述的方法,还包括确定在第二计算设备上的第三计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联。9.一种用于将设备驱动程序导入到主机上的客户计算环境中的系统,所述客户计算环境是由不包含该设备驱动程序的外部介质设备提供的,所述系统包括安装到计算设备上的第一计算环境中的设备驱动程序,所述设备驱动程序与对第一计算环境可用的设备相关联;第二计算环境,其是由该计算设备上的虚拟机基于从外部介质设备检索的数据执行的;设备发现代理,其从外部介质设备执行并识别对第二计算环境可用的设备;设备驱动程序发现代理,其从外部介质设备执行并确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联;以及设备驱动程序安装代理,其从外部介质设备执行并在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中。10.根据权利要求9所述的系统,还包括从外部介质设备检索的与第二计算环境关联的虚拟机映像。11.根据权利要求9所述的系统,其中第二计算环境还包括由所述计算设备上的虚拟机基于从驻留在所述计算设备可访问的网络上的外部介质设备检索的数据而执行的第二计算环境。12.根据权利要求9所述的系统,其中第二计算环境还包括由所述计算设备上的虚拟机基于从驻留在所述计算设备可访问的网络上的第二计算设备检索的数据而执行的第二计算环境。13.根据权利要求9所述的系统,其中第二计算环境还包括由所述计算设备上的虚拟机基于从闪存数据存储设备检索的数据而执行的第二计算环境。14.一种用于将设备驱动程序导入到主机上的客户计算环境中的系统,所述客户计算环境是由不包含该设备驱动程序的外部介质设备提供的,所述系统包括用于将对第一计算环境可用的设备的设备驱动程序安装到计算设备上的第一计算环境中的装置;用于从外部介质设备检索与第二计算环境关联的数据的装置;用于由该计算设备上的虚拟机基于所检索的数据执行第二计算环境的装置;用于由设备发现代理识别对第二计算环境可用的设备的装置;用于由设备驱动程序发现代理确定在第一计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联的装置;以及用于由设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中的装置。15.根据权利要求14所述的系统,还包括用于从外部介质设备检索与第二计算环境相关联的虚拟机映像的装置。16.根据权利要求14所述的系统,还包括用于从驻留在对计算设备可用的网络上的外部介质设备检索与第二计算环境相关联的数据的装置。17.根据权利要求14所述的系统,还包括用于从驻留在对计算设备可用的网络上的第二计算设备检索与第二计算环境相关联的数据的装置。18.根据权利要求14所述的系统,还包括用于由设备发现代理将对第一计算环境可用的设备识别为对第二计算环境可用的装置。19.根据权利要求14所述的系统,还包括用于确定在第二计算设备上的第三计算环境中安装的设备驱动程序与对第二计算环境可用的设备相关联的装置。全文摘要用于将设备驱动程序从主机导入到由不包含该设备驱动程序的外部介质设备提供的客户计算环境中的系统,包括第一计算环境、第二计算环境、设备发现代理、设备驱动程序发现代理和设备驱动程序安装代理。将与对第一计算环境可用的设备关联的设备驱动程序安装在计算设备上。第二计算环境是由计算设备上的虚拟机基于从外部介质设备检索的数据而执行的。设备发现代理识别对第二计算环境可用的设备。设备驱动程序发现代理确定所安装的设备驱动程序与对第二计算环境可用的设备相关联。设备驱动程序安装代理在没有用户输入的情况下将所安装的设备驱动程序导入到第二计算环境中。文档编号G06F9/445GK102804140SQ201080026431公开日2012年11月28日申请日期2010年6月18日优先权日2009年6月18日发明者R·J·范德林登,D·J·奥特韦,Z·吴申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1