计算设备的外围设备的控制的分配的制作方法

文档序号:6354626阅读:257来源:国知局
专利名称:计算设备的外围设备的控制的分配的制作方法
技术领域
本发明涉及计算设备的外围设备,尤其涉及对外围设备的控制分配。
背景技术
计算设备,包括个人计算机,通常适用于一次由一个用户来操作。这一计算设备被配置成允许用户与连接到该计算机设备的所有外围设备,包括像显示器、键盘和鼠标这样的用户接口外围设备进行交互。当计算设备首次启动并检测到连接的外围设备时,或者当一外围设备新附连到计算设备时,该计算设备被配置成以相同的方式来管理这些外围设备中的每一个。计算设备可向该计算设备的所有用户或向当前正在操作该计算设备的用户提供对每一外围设备的访问。在某些情况下,计算设备一次可由一个以上用户来操作。在某些这样的情况下,将个别外围设备的所有权或对个别外围设备的访问分配给特定用户可能是合乎需要的。可以这样做来使得用户不会同时尝试访问一外围设备,以便保护由每一用户存储在外围设备上的数据的私密性并确保每一用户能够用一组完整的用户接口外围设备来与该计算设备交互(例如,使得每一用户具有显示器、键盘和鼠标)。因为计算设备没有不同地管理外围设备并向不同用户分配外围设备的功能,因此在这些情况下,用户或管理员将手动配置计算设备来向每一用户分配外围设备。为了分配外围设备,用户或管理员将检查该组可用外围设备并选择要分配给每一用户的外围设备,然后重新配置该计算设备来标识所选外围设备能仅被所标识的用户来访问和使用。

发明内容
用于将连接到计算设备的外围设备分配给不同用户的常规技术限于根据来自用户或管理员的直接输入来手动地执行这种分配。这一过程可能是耗时且困难的。另外,这一过程需要外围设备是如何由计算设备组织并管理的知识,以使得关于外围设备的信息可在设备上定位且外围设备可被分配。此处描述的是用于实现计算设备对外围设备的控制的软件辅助分配(例如,分配外围设备的所有权或分配对外围设备的访问)。根据此处所描述的技术,对外围设备的控制的分配通过来自软件工具的输入来辅助,该软件工具向外围设备管理工具指示关于外围设备的分配。软件工具可用不同方式来指示外围设备管理工具。在某些情况下,软件工具可指示外围设备管理工具如何以一种特定方式分配对外围设备的控制,而在其他情况下,软件工具可指示外围设备管理工具如何分配对一组外围设备的控制。在其他情况下,软件工
4具可以不向外围设备管理工具指示分配外围设备的控制的确切方式,而是可标识对其的控制应作为一组来分配的一组或多组外围设备。在其他情况下,软件工具可指示外围设备管理工具以不同方式,如向不同用户会话分配对外围设备的各部分(例如,基于时间的部分或物理部分)的控制。在一个示例性实现中,包括多个不同外围设备的复合外围设备的制造商或厂商可提供包括外围设备分配功能的驱动程序。当该复合外围设备被连接到计算设备时,该计算设备的外围设备管理工具可查询可用驱动程序来获知应如何分配对这些外围设备的控制。 当外围设备管理工具查询匹配该复合外围设备的驱动程序时,该驱动程序可指示外围设备管理工具,对该复合外围设备的每一外围设备的控制应作为一组来一起分配。该驱动程序可另外指示该外围设备管理工具将该组外围设备的所有权或对该组外围设备的访问分配给特定用户或用户会话。以上概述是对由所附权利要求定义的本发明的非限定性的概述。


附图不旨在按比例绘制。在附图中,各个附图中示出的每一完全相同或近乎完全相同的组件由同样的标号来表示。出于简明的目的,不是每一个组件在每张附图中均被标号。在附图中图1是可在某些实施例中执行来基于从软件工具接收到的指令来分配对外围设备的控制的一个过程的流程图;图2是可在某些实施例中执行来向软件工具查询关于分配对外围设备的控制的一个过程的流程图;图3是可在某些实施例中执行来提供关于分配对外围设备的控制的指令的一个过程的流程图;图4A、4B和4C是可在某些实施例中执行的用于分配控制的示例性技术的流程图;图5是可在某些实施例中执行的用于重新分配对外围设备的控制的一个过程的流程图;图6是某些实施例可在其中操作的示例性计算机系统的框图;图7是示出用于将外围设备连接到计算设备的可能方式的示例性计算机系统的框图;图8是某些实施例中可由计算设备创建并管理的外围设备的示例性分层结构的图示;图9是可在某些实施例中执行的用于分配对复合外围设备的控制的一个示例性技术的流程图;图10是分配对显示外围设备的访问的示例性方式的框图;图IlA是用于至少部分地基于用户输入来分配对输出外围设备的控制的一个示例性过程的流程图;图IlB是可被提供给用户以便至少部分地基于用户输入来分配对输出外围设备的控制的示例性提示的图示;以及
图12是某些实施例可与其一起操作的一个示例性计算设备的框图。
具体实施例方式当外围设备连接到计算设备时,使用常规的技术,可以使该外围设备对该计算设备的所有用户可用,而该外围设备的所有权或对该外围设备的访问不被分配到任何特定用户或用户会话。这一惯例会在计算设备中引入问题。例如,会引发安全问题,如当外围设备是存储敏感信息的存储设备的时候,其中该敏感信息应只由拥有该存储设备的用户来访问。当外围设备不被分配给特定用户时,其他用户可能访问该外围设备,这可损害该敏感信息。作为另一示例,可引发访问问题,如(再次使用上述示例,当外围设备是存储设备的时候)用户假定用户对该存储设备具有独占访问且基于该假设来执行某种工作,而稍后发现另一用户以使该用户的工作变复杂的方式访问并操纵了存储设备上的数据。将对外围设备的控制分配给特定用户或用户会话可补救这些问题中的某一些。然而,使用常规技术,为将外围设备分配给用户或用户会话,用户或管理员将必须通过提供显式输入在操作系统中手动作出低级改变。这一过程不仅需要特定操作系统如何以及在何处存储关于外围设备的信息的知识,而且还需要关于用户会话以及如何将对外围设备的控制分配给用户会话的知识。即使是在用户具有所需知识的情况下,这一手动过程也是强度很大的。此外,复合外围设备使得选择并分配对外围设备的控制的过程变得复杂。复合外围设备包括可一起使用的多个外围设备,包括物理上封装在一起的设备。计算设备常规上单独管理复合外围设备的每一外围设备,而不标识这些外围设备是相关的。试图手动分配对外围设备的控制的用户或管理员因此在寻找并标识要分配给特定用户的所有外围设备, 包括复合外围设备的所有外围设备时有困难。此处描述的是用于使得外围设备能被分配给用户或用户会话而不依赖于显式用户输入的技术。根据这些技术中的某一些,对外围设备的分配通过来自软件工具的输入来辅助,该软件工具向外围设备管理工具指示关于外围设备的控制的分配。软件工具可用不同方式来指示外围设备管理工具。在某些情况下,软件工具可指示外围设备管理工具如何以一种特定方式分配对外围设备的控制,而在其他情况下,软件工具可指示外围设备管理工具如何分配对一组外围设备的控制。在其他情况下,软件工具可以不向外围设备管理工具指示关于要向其分配对外围设备的控制的一方,而是可标识对其的控制可作为一组来一起分配的一组或多组外围设备。软件工具可用任何合适的方式来指示外围设备管理工具以便以任何合适的方式来分配外围设备,各实施例不限于与任何特定类型的指令或与任何特定类型的外围设备管理一起操作。如此处所使用的,外围设备是可经由任何合适的有线和/或无线通信总线附连到计算设备的电子设备。外围设备可以在物理上与计算设备分开,并且装入与计算设备分开的外壳中,或者可以在物理上附连到计算设备并装入相同的外壳中。在各实施例可与其一起操作的某些有线和/或无线通信总线中,外围设备可以按分层结构来耦合到计算设备。 该分层结构可允许经由集线器来连接外围设备,该集线器允许多个外围设备经由单个点连接到计算设备。多个集线器可被联接在一起来形成分层结构。在某些情况下,集线器可被合并到外围设备中而非与外围设备分离。例如,键盘可被连接到计算设备,并且可在键盘的外壳中包括允许另一设备连接到该键盘的端口。可在各实施例中使用的总线的示例包括USB 1. 1/2. 0/3. 0、PS/2、蓝牙、红外线以及火线,但其他示例是可能的。复合外围设备是以某种方式联接的一组两个或更多外围设备。这些外围设备可在物理上联接,如在外围设备被装入同一外壳中的情况下。这些外围设备也可以在功能上联接,如在外围设备不在物理上联接但适用于一起使用的情况下。复合外围设备可以由期望外围设备被联接的制造商或厂商来标识,或者可由任何其他合适的一方(例如,用户、管理员、第三方软件厂商等)来标识。如以下所讨论的,在各实施例中,软件工具向外围设备管理工具指示关于将对外围设备的控制分配给用户或用户会话。各实施例不限于与任何特定类型的软件工具一起操作。在某些实施例中,软件工具可以是由外围设备的制造商或厂商创建的软件,如由制造商或厂商提供的驱动程序或安装程序。在其他实施例中,软件工具可以由外围设备要连接到其上的计算设备(或安装在该计算设备上的软件)的制造商或厂商来提供。在某些这样的实施例中,软件工具可以是计算设备的系统软件,包括作为计算设备的操作系统的一部分。 在还有一些其他实施例中,软件工具可以是由与外围设备或计算设备无关的第三方提供的软件。在某些这样的实施例中,软件工具可以是安装在计算设备上的应用软件。计算设备的用户可以是在计算设备上创建的且个人用来访问并操作计算设备的账户或简档。当用户登录到计算设备或正在操作计算设备时,可为该用户创建在该用户登录或操作该计算设备时持续的用户会话。用户会话可为用户提供操作系统环境的唯一实例,包括各种系统资源的唯一实例。用户在用户会话内执行的处理可从其他用户和其他用户会话中划分,但用户能够在会话之间通信。在各实施例中,对外围设备的控制可被分配给一个或多个用户和/或一个或多个用户会话。为便于描述,在以下描述的各示例性实施例中,外围设备可被描述为被分配给一个用户。然而,各实施例不限于将外围设备分配给单个用户或多个用户。对外围设备的控制可用任何合适的方式来分配。分配方式可以在各实施例中基于计算设备如何管理外围设备和访问权限来变化。对外围设备的控制的分配可以包括分配外围设备的所有权。在某些实施例中,分配外围设备的所有权可以包括将所有访问权和/或管理权限分配给用户(或用户会话)。对外围设备的控制的分配可另选地包括分配所有或部分访问权限。访问权限可包括以指定方式使用外围设备的权限,如读访问或写访问,而管理权限可包括更改外围设备的权限,如更改外围设备的软件或设置或断开外围设备。各实施例不限于进行任何特定类型的控制分配。另外,分配对外围设备的控制可包括分配对外围设备的各部分的控制,如对外围设备的一个基于时间的或物理部分的控制以一种方式分配,而对外围设备的另一基于时间的或物理部分的控制以另一种方式分配。例如,显示屏幕的不同部分可被分配来供不同用户会话使用。在某些实施例中,外围设备可另外使用规则来分配。当外围设备被连接时,可评估规则来确定如何管理该外围设备。在使用此类规则的某些实施例中,仅在软件工具指示了如何分配外围设备的一部分或全部之后才可应用规则来确定如何管理外围设备。应用规则的某些实施例可使用如2010年2月12日提交的题为“Managing USB devices based on logical groups (基于逻辑组来管理USB设备),,的美国临时专利申请第61/304,077 号(“077申请”)以及_提交的且要求,077申请的优先权的题为“Rule-basedassignment of peripherals of a computing device (计算设备的夕卜围设备的基于规贝Ij的
分配)”的非临时美国专利申请第_号(代理案卷号M1103. 70848US01) (“_
申请”)中描述的规则,这些申请通过整体引用且至少关于其对外围设备的控制的基于规则
的分配的讨论而结合于此。_申请至少在其内容在’ 077申请中描述的意义上结合于此。以下描述的是使软件工具能向外围设备管理工具指示关于对外围设备的控制的分配的系统的各示例性实施例。以下描述的各实施例仅是某些实施例可用以操作的方式的说明。各实施例不限于根据以下描述的示例性技术来操作。此外,在以下描述的某些实施例中,示例性外围设备被描述为复合外围设备,该复合外围设备是包括用户可将键盘和鼠标附连到其上来形成终端组的集线器的显示设备。然而,各实施例不限于与任何特定类型的外围设备一起操作或与复合外围设备一起操作。各实施例可以与任何适当类型的外围设备一起操作。图1示出了可在某些实施例中用于将外围设备分配给计算设备的用户会话的一个示例性过程。过程100可以在任何适当的时间进行。作为一个示例,过程100可以在计算设备启动且确定哪些外围设备连接到计算设备且要被管理时进行。另外地或另选地,过程100可以在外围设备被首次连接到计算设备时进行。过程100在框102开始,在那里外围设备管理工具标识对其的控制未被分配的外围设备。外围设备管理工具可用任何合适的方式来标识外围设备,包括通过主动或被动地标识外围设备。在某些实施例中,外围设备可以在外围设备管理工具从计算设备的另一组件接收到信号时被动地标识。例如,操作系统可进行用于外围设备的初始化过程,在这期间可加载外围设备的驱动程序,可分配资源,并且可采取任何其他合适的初始化步骤。在执行这一初始化过程的某些实施例中,在初始化过程期间,操作系统的一个组件可向外围设备管理工具提供正对外围设备进行该初始化过程的指示。外围设备管理工具然后可基于该指示来标识对外围设备的控制尚未被分配。外围设备管理工具可以仅基于该指示或基于该指示和/或任何其他信息(例如,指示其控制已被分配的外围设备的外围设备管理工具的记录)来标识控制尚未被分配。在框102中标识了外围设备之后,外围设备管理工具在框104接收关于对外围设备的控制的分配的指令。该指令可经由任何合适的消息传送协议或信息共享技术来接收, 信息共享技术可以在计算设备上用于在该计算设备上执行的进程之间共享信息。例如,指令可经由基于操作系统的协议,如微软 的Windows 操作系统的消息传送协议来接收,或可经由共享存储器位置中的存储来接收。分配对外围设备的控制的指令可以从计算设备上的外围设备所连接到的任何合适的软件工具接收,包括从与外围设备相关的驱动程序或从在计算设备上执行的软件应用程序接收。该指令可包括对外围设备管理工具关于如何分配对外围设备的控制的任何合适的指示,其某些示例在以下结合图4A-4C来更详细描述。在某些情况下,在框104所接收的指令可包括诸如通过将外围设备的所有权分配给一个特定用户会话和/或将对外围设备的访问权限分配给同一和/或另一特定用户会话,来将对外围设备的特定类型的控制分配给一个或多个特定用户会话的指示。在某些情况下,在框104所接收的指令可包括分配特定类型的控制而不标识要向其分配控制的特定用户会话的指示。这可以是例如指令标识对外围设备的控制(例如,外围设备的所有权)应被分配给唯一用户会话,使得同一类型的外围设备被分配给不同用户会话(例如,每一键盘被分配给唯一的用户会话)的情况。在这一情况下所接收的指令可标识外围设备应被分配给唯一用户会话而不指示该控制要被分配到哪一用户会话。在其他情况下,在框104所接收的指令可包括将对两个或更多外围设备的控制作为一组来分配的指示,如在框102中所标识的外围设备是复合外围设备的成员且该指令指示对该复合外围设备的所有外围设备的控制应被一起分配。在某些情况下,该指令可同时包括分配特定类型的控制的指示以及将对外围设备的控制作为一组来分配的指示两者。各实施例不限于在指令中接收任何特定类型的指示。指令可在框104以任何合适的方式来接收。在某些实施例中,该指令可在框104 响应于外围设备管理工具发送给提供该指令的软件工具的查询来接收。在其他实施例中, 指令可在框104中在没有外围设备管理请求信息的情况下接收。可接收指令的方式的示例在以下更详细讨论。在框106,在外围设备管理工具处接收到指令之后,外围设备管理工具根据该指令来分配对外围设备的控制。在框106分配控制的方式可取决于计算设备如何管理外围设备并取决于指令如何指示控制的分配来变化。在框106分配控制可包括更新操作系统所维护的关于用户、用户会话和/或外围设备的记录,如在记录中标识对一个或多个外围设备的控制已被分配以及控制以什么方式分配(例如,控制分配到哪一用户会话)。一旦在框106分配了控制,过程100结束。然后可根据控制的分配来使用外围设备。例如,操作系统可允许第一用户操作用户会话,其中对外围设备的至少某种控制被分配给该用户会话以便操作该外围设备或与该外围设备交互,并且操作系统可阻止第二用户操作不同的用户会话,其中对该外围设备的控制未被分配给该不同的用户会话,从而无法以任何方式来与该外围设备交互。作为另一示例,操作系统可允许第一用户以已作为控制分配的一部分被给予第一用户的对外围设备的访问权限所允许的方式来与外围设备交互,并且可阻止第一用户以该访问权限所不允许的第二方式来与外围设备交互。过程100在上文中被描述为对一个外围设备进行。过程100可以对连接到计算设备的多个外围设备重复。在某些情况下,过程100可对连接到计算设备的每一外围设备进行,使得对所有外围设备的控制根据从用于外围设备的软件工具接收到的指令来分配。然而,在其他情况下,对至少某些外围设备的控制可使用不同的过程来分配,包括根据预先建立的关于对外围设备的控制的分配的规则和策略来分配。在某些这样的情况下,对其没有接收到指令的外围设备的控制的分配可以使用这些规则和策略来进行。对外围设备的控制的基于规则的分配可用任何合适的方式来进行,包括根据在以上引用的’077申请以及以上引用的_申请(该申请具有代理案卷号M1103. 70848US01)中描述的技术来进行。规则和策略也可用于基于从软件工具接收到的指令来分配对外围设备的控制。在图1的过程100中,控制根据所接收的指令来分配。然而,在其他过程中,可首先评估指令来确定以指令所指示的方式来分配控制是否是规则或策略所准许的。例如,如果指令指示以将导致特定用户会话被分配到对两个键盘(或策略可标识应对每一用户会话是唯一的任何其他类型的外围设备)的控制的方式来分配对外围设备的控制,则对外围设备的控制不可按该方式分配,或者可提示用户/管理员确认所指示的分配是正确的。如上所讨论的,关于外围设备的分配的指令可以用任何合适的方式来接收,包括
9作为对关于指令是否可用的查询的响应来接收。图2和3示出了可在某些实施例中用于查询软件工具来确定指令是否可用于分配对外围设备的控制的示例性过程。各实施例不限于执行查询来确定指令是否可用,且执行查询的实施例不限于实现图2和3的示例性过程。其他过程是可能的。过程200在框202开始,在那里将至少一个软件工具作为关于外围设备的分配的指令的潜在源来向外围设备管理工具注册。框202的注册可用任何合适的方式来进行。例如,关于软件工具的信息可被存储在外围设备管理工具可访问的记录中。该信息可标识软件工具和/或外围设备管理工具与软件工具就控制的分配进行通信的方式。在某些实施例中,该信息还可标识软件工具能够为其提供指令的特定外围设备或外围设备类型。框202的注册可用任何合适的方式来进行。在某些实施例中,当能够提供指令的软件工具被安装在计算设备上时(例如,当用于外围设备的驱动程序被安装在计算设备上时),操作系统的组件可以在外围设备管理工具可访问的记录中存储在注册期间存储的关于软件工具的信息。在这一注册过程中,软件工具可能无法在该注册期间与外围设备管理工具通信。在其他实施例中,软件工具可以在任何时间与外围设备管理工具显式地通信来提供在注册期间存储的关于软件工具的信息。无论注册信息是如何接收和存储的,在框202的注册之后,将至少一个软件工具作为关于对外围设备的控制的分配的指令的潜在源来注册。在框204,标识要分配其控制的外围设备。外围设备可以用任何合适的方式来标识,其示例在上文中结合图1的框102来讨论。当标识了外围设备时,可获得该外围设备的标识符,这可以是特定外围设备或外围设备类型的任何合适的标识符。例如,可获得当外围设备被连接时由计算设备分配的该外围设备的标识符(例如,由计算设备分配给键盘和鼠标的序列标识符),或可获得作为外围设备的厂商或制造商提供的序列号的该外围设备的标识符。可以使用任何合适的标识符。在某些情况下,标识符可以是全局唯一的(例如,没有一个附加到计算设备、网络或任何计算设备的外围设备的其他实例使用相同的标识符), 和/或可以是持久的(例如,每次外围设备附连到计算设备时外围设备都使用相同的标识符)。在框206,启动一循环,其中查询在框202注册的指令的潜在源来确定这些潜在源中的任一个是否具有关于对框204所标识的外围设备的控制的分配的指令。在框206查询的软件工具可以是框202注册的全部软件工具,或可以是被标识为能够提供用于框204 中的该外围设备或外围设备类型标识符的指令的软件工具,或可以是任何合适的软件工具集。各工具可以用任何合适的次序来选择,包括根据注册工具的次序,根据建立分层结构的次序(例如根据策略或管理员),或以任何其他合适的次序来选择。在框208,对于要查询的软件工具,经由任何合适的用于在计算设备内交换信息的消息传送协议来发送查询。该查询可标识其控制要被分配的外围设备,如通过包括在框204 获得的外围设备的标识符。在框210,作出关于所查询的软件工具是否提供了如何分配对外围设备的控制的指令的判定。如果没有接收到指令,则过程200继续到框212,以便确定该集合中是否还剩下任何其它的软件工具要被查询。如果是,则过程200返回到框206来选择另一软件工具并发出对于指令的另一查询。然而,如果在框212确定没有剩下其它的软件工具,则过程200
10结束。在过程200之后,在某些实施例中,可根据规则和策略来分配框204中标识的外围设备,或者可以用任何其他合适的方式来分配。然而,如果在框210确定接收到指令,则过程200继续到框214,在那里根据所接收的指令来分配对外围设备的控制。控制分配可以用任何合适的方式来进行,包括根据以上结合图1的框106描述的技术。一旦在框214分配了控制,则过程200结束。示例性过程200在上文中被示出并描述为包括一循环,该循环一次一个地查询软件工具集中的每一软件工具,并且在首次接收到指令时停止查询软件工具。查询软件工具的实施例不限于以此方式查询各工具。在其他实施例中,查询可被发送到每一软件工具以便进行并行查询,并且可接收并评估包括指令的任何响应。如果仅接收到一个指令,则可使用该指令来分配对外围设备的控制。然而,如果作为响应接收到多个指令,则可在指令之间作出决定来确定要遵循哪一指令。在某些情况下,可遵循接收的第一个或最后一个指令。在其他情况下,可使用外部信息来确定要遵循哪一指令,该外部信息包括来自用户/管理员的输入或指示如何确定要遵循哪一指令的预先建立的策略信息。在分配对外围设备的控制时可使用任何合适的过程来查询软件工具并确定要遵循哪一指令。图2示出了可在某些实施例中由外围设备管理工具执行来查询软件工具以便接收指令的过程。图3示出了可在某些实施例中进行以使软件工具向外围设备管理工具提供关于如何分配对外围设备的控制的指令的另一示例性过程。各实施例不限于进行图3所示的示例性过程。过程300可以由外围设备的厂商或制造商创建并安装在计算设备上的、用于外围设备的驱动程序来进行。当计算设备检测到外围设备连接到计算设备时(例如,当外围设备被首次连接时或在计算设备的启动过程期间),可对该外围设备进行初始化过程,该初始化过程包括实例化(例如,从盘加载到存储器中并执行)用于该外围设备的驱动程序。该初始化过程以及驱动程序的实例化可以由计算设备的操作系统的组件来进行。当为外围设备实例化驱动程序时,过程300在框302开始,且驱动程序可以进行任何合适的启动处理, 包括与计算设备上的其他各件软件,如操作系统上的其他组件进行通信。该启动处理可以包括作为用于该驱动程序所支持的特定类型的外围设备或该驱动程序所支持的特定外围设备的指令的潜在源来向外围设备管理工具注册,并存储该驱动程序所支持的外围设备类型和/或外围设备的某一标识符。在某些情况下,当与驱动程序有关的类型的多个外围设备连接到计算设备时,可在框302存储多个标识符。根据此处描述的技术,驱动程序可向外围设备管理工具提供关于如何分配控制的指令。因此,在框304,驱动程序可标识对驱动程序所相关的外围设备的控制尚未被分配。 框304的标识可用任何合适的方式来进行。在某些实施例中,在启动处理期间,指示驱动程序尚未向外围设备管理工具提供关于应如何分配对外围设备的控制的指令的数据可由驱动程序存储、可被驱动程序访问。在框306,驱动程序从外围设备管理工具接收询问驱动程序是否将向外围设备管理工具提供关于对特定外围设备的控制的分配的指令的查询。该查询可包括其控制要被分配的特定外围设备或外围设备类型的标识符。在框308,作出关于框306的查询中接收的标识符是否匹配框302中存储的标识符(或标识符之一)的判定。如果是,则该查询被确定为对于关于驱动程序所相关的外围设备的指令的查询,且驱动程序将响应于该查询来提供指令。如果否,则过程300返回到框306来等待接收另一查询。通过检查查询中接收到的标识符,驱动程序将不响应关于该驱动程序不相关的外围设备的查询,从而帮助确保接收且由外围设备管理工具使用正确的指令。在框310,当在框308确定将提供指令时,响应于查询向外围设备管理工具提供关于对外围设备的控制的分配的指令。所提供的指令可以是关于对外围设备的控制的分配的任何合适的指令。在某些实施例中,框310中由驱动程序提供的指令可以是驱动程序中预配置的指令,使得驱动程序将始终响应于查询提供这些指令。例如,驱动程序可被配置成提供标识一个或多个其他外围设备与对其发出查询的外围设备一起形成了复合外围设备,且对该复合外围设备的各外围设备的控制应被一起分配的指令。作为另一示例,驱动程序可被配置成提供标识对外围设备的控制应被分配给一特定用户会话,或对外围设备的特定类型的控制(例如,其所有权,或对其的特定访问权限)应被分配给一用户会话的指令。在其他实施例中,该驱动程序可能不是用指令来预配置的,而是改为基于任何合适的信息来创建指令。例如,驱动程序可检查连接到计算设备的其他外围设备、计算设备上的活动用户会话、或任何其他信息,并创建关于应如何在该计算设备上分配对外围设备的控制的指令。关于驱动程序如何创建指令,在框310,作为对查询的响应,经由计算设备的任何合适的消息传送协议将指令提供给外围设备管理工具。一旦提供了指令,在框312,驱动程序诸如通过盖写框304中存储的指示尚未提供指令的数据来标识已经为该外围设备提供了指令。可以这样做来使得如果驱动程序接收到请求用于分配对外围设备的控制的指令的其他查询,则驱动程序可以确定该驱动程序已经提供了指令并且可以不再次提供指令。一旦驱动程序在框312标识了已经提供了指令,则过程300结束。在上述示例性过程300中,驱动程序在框304标识该驱动程序相关的外围设备,并且随后在框306接收关于用于该驱动程序的指令的查询。各实施例不限于以此方式来执行这些操作。在替换实施例中,例如,驱动程序可从外围设备管理工具接收关于用于分配对外围设备的控制的指令的查询,并且响应于接收到该查询,确定该驱动程序所相关的任何外围设备是否连接到计算设备(例如,在框304之前执行框306,或作为框306的一部分来执行框304)。各实施例可以用任何合适的方式来实现以便向外围设备管理工具提供指令,各实施例不限于任何特定的提供指令的方式。如上所讨论的,提供关于如何分配对外围设备的控制的指令的软件工具可以提供指示外围设备管理组件分配任何合适类型的控制的任何合适的指令。图4A到4C示出了可对于对其接收到指令的示例性类型的控制执行的示例性过程。各实施例不限于实现图4A 到4C所示的示例性过程,各实施例也不限于与用于结合这些过程所讨论的特定控制类型的示例性指令一起操作。图4A示出了用于通过将外围设备的所有权分配给计算设备的用户会话来分配对外围设备的控制的过程400。过程400在框402开始,在那里在外围设备管理工具处接收指令,该指令指示外围设备的所有权被分配给该指令所指定的用户会话。外围设备的所有权向该用户会话授予用于使用外围设备的所有访问权限以及用于管理外围设备的权限。访问外围设备可包括从外围设备读取数据、向外围设备写入数据、操作外围设备来执行某一任务、或任何其他的与外围设备交互的方式。管理外围设备可包括断开外围设备、改变用于外围设备的驱动程序、将对外围设备的访问授予其他方、以及其他配置外围设备的方式和外围设备与计算设备交互的方式。在框404,通过更新与外围设备相关联的计算设备的记录来标识该外围设备的所有权已被分配给指令所指定的用户会话,来将外围设备的所有权分配给用户会话。一旦在框404中更新了记录,则过程400结束,且操作指定用户会话的用户将能够访问和/或管理该外围设备。图4B示出了用于通过将对外围设备的访问权限分配给计算设备的用户会话来分配对外围设备的控制的过程420。所分配的访问权限可包括从外围设备读取数据的权限、向外围设备写入数据的权限、和/或使用外围设备来执行指定任务的权限。在框422,在外围设备管理工具处接收指令,该指令指示特定访问权限被分配给该指令所指定的用户会话。 在框404,通过更新与外围设备相关联的计算设备的记录来分配对外围设备的访问权限。一旦在框似4中更新了记录,则过程420结束,且操作指定用户会话的用户将能够以指定方式访问该外围设备。尽管图4A和4B被单独示出并描述为替换过程,但在某些实施例中,这些过程可一起使用。例如,可接收指示外围设备的所有权被分配给特定用户会话且对外围设备的访问权限被提供给所有或指定的其他用户会话的指令。另外,尽管在图4A和4B中,指令被描述为指定了要向其分配控制的用户会话,但在某些实施例中,指令可能不精确指定用户会话,而是可概括地指定控制应被分配给一个用户会话。外围设备管理工具在接收到指令后,可以随后确定要向其分配控制的特定用户会话。例如,用于监视器的驱动程序可指定监视器的所有权应被分配给一特定用户会话,使得一次仅一个用户会话正在向监视器输入内容,但不精确地标识该用户会话。相反,外围设备管理工具将接收指令并标识要向其分配监视器的用户会话。各实施例可实现任何合适的用于将对外围设备的控制分配给用户会话的过程,各实施例在这一点上不受限制。图4C示出了用于分配对外围设备的控制的另一示例性过程440,其中接收关于复合外围设备的指令。如上所讨论的,复合外围设备是被设计成一起使用的两个或更多外围设备,如物理上容纳在一起或互操作的两个或更多设备。在各实施例中,计算设备可将每一外围设备标识为个别的、不相关的外围设备,并且软件工具可指示对复合设备的控制被一起分配。过程440在框442开始,在那里接收标识作为复合外围设备且其控制应被一起分配的两个或更多外围设备的指令。框442所接收的指令可以标识或可以不标识要分配的特定类型的控制(例如,两个或更多外围设备的所有权或对两个或更多外围设备的访问),而是可改为标识复合外围设备,使得可使用其他过程来一起分配对各外围设备的控制。例如, 在也使用规则和策略来分配对外围设备的控制的实施例中,规则和策略可用于一起分配对两个或更多外围设备的控制。在框444,对两个或更多外围设备的控制可根据框442中接收到的指令来分配。在所接收的指令指定要分配的一类控制的情况下,框444的分配可包括通过更新与两个或更多外围设备中的每一个相关联的记录来反映该访问,来根据该指令中指定的控制类型进行分配。在控制仅标识外围设备的情况下,框444的分配可包括标识两个或更多外围设备要一起分配,使得用于分配控制的另一过程可一起分配对外围设备的控制。一旦根据指令分配了控制,过程400结束。尽管过程440描述了对复合外围设备的各外围设备的控制被类似地分配,但各实施例不限于以相同的方式分配对复合外围设备的各外围设备的控制。在某些实施例中,软件工具可指示对复合外围设备的某些外围设备的控制与其他外围设备不同地分配,软件工具不限于指示分配任何特定类型的控制。例如,一个复合外围设备可包括一起在一个物理外壳中的打印机、扫描仪和存储卡读卡器。软件工具可指示打印机对计算设备的所有用户会话可用,使得所有用户都能够打印,但是可指示扫描仪和存储卡读卡器仅对一个用户会话可用,使得存储在存储卡中或经由扫描仪接收的数据仅对一个用户会话可用并维持机密。在上述示例中,对外围设备的控制根据在首次检测到或首次连接外围设备时接收到的指令来分配。各实施例不限于仅一次分配对外围设备的控制,而是可在任何时刻分配和重新分配对外围设备的控制。可在任何合适的时间以任何合适的方式接收关于对连接到计算设备的外围设备的分配的任何合适的指令。图5示出了可在某些实施例中用于根据从软件工具接收的指令来重新分配对外围设备的控制的一个示例性过程500。允许重新分配对外围设备的控制的实施例不限于实现图5的过程。过程500在框502开始,在那里根据从软件工具接收的指令来分配对外围设备的控制。框502的分配可以在首次检测到或首次连接外围设备时进行,并且可包括将任何合适类型的控制分配给一个或多个用户会话。在框504,接收关于对其控制在框502中被分配的外围设备的控制的分配的第二指令。框504接收的第二指令可以来自与框502的第一指令相同的软件工具,或者可以来自不同的软件工具。例如,第一指令可以在框502中从来自软件工具的驱动程序接收,而第二指令可以在框504中从在计算设备上执行的应用程序接收。第二指令还可指示接收该第二指令的外围设备管理工具以任何合适的方式分配对外围设备的控制,该控制可与第一指令所指示的控制完全相同、相似、或完全不同。在框506,可作出关于是否遵循第二指令并改变分配对外围设备的控制的方式的判定。框506的判定可以根据任何合适的规则或策略来作出。例如,可基于将遵循所有指令的简单策略来作出遵循第二指令的判定,并且最后接收到的指令是将支配如何分配控制的指令。作为另一示例,可作出关于指令的源的判定,并且可考虑源的分层结构来确定第二指令是否是从该分层结构中比第一指令更高的源接收的。如果第二指令是从分层结构中更高的源接收的,则可遵循该指令,但是在其他情况下将忽略该指令。该分层结构可以是任何合适的分层结构,包括用户或用户会话的分层结构,或源类型的分层结构。例如,管理员的排名可以比用户高,或者驱动程序的排名可以被软件应用高。作为另一示例,可提示用户或管理员提供关于是否遵循第二指令的输入。可使用任何合适的信息来确定是否遵循第二指令。如果确定不遵循第二指令,则过程500结束。然而,如果确定要遵循第二指令,则在框508根据第二指令来分配控制。在框508分配了控制之后,过程500结束。在上述每一示例性实施例中,根据从软件工具接收的指令来分配外围设备是在外围设备被检测到或首次连接到计算设备时进行的。然而,各实施例不限于在每次外围设备被检测到或首次连接时分配对外围设备的控制。相反,在某些实施例中,对外围设备的控制可以根据指令来分配,并且可将关于该控制或关于该指令的某些信息存储在计算设备的持久存储中(例如,在外围设备管理工具和/或计算设备的操作系统的持久存储中)。在存储信息之后,当随后外围设备被检测到(例如,在启动时)或连接时,可从该持久存储检索关于控制或关于指令的信息并且该信息可用于以相同的方式来分配对外围设备的控制。以此方式,在这些实施例中,基于指令来分配对外围设备的控制可以在接收了关于控制的分配的一个指令之后被执行多次。然而,某些实施例可能不存储关于控制或指令的任何信息,某些实施例可能仅将此类信息存储在临时存储而非持久存储中。如上所讨论的,各实施例不限于与特定计算设备、外围设备、软件工具或控制类型一起工作。以下描述的是某些实施例可在其中操作的一个示例性环境。然而,各实施例不限于实现结合本示例性实施例描述的技术中的任一种,以也不限于与结合本实施例描述的示例性类型的设备和外围设备的任一种一起操作。图6示出了包括计算设备602的一个示例性计算机系统600。计算设备602可适用于由多个用户同时操作并同时与多个用户中的每一个交互。为使每一用户能够与计算设备602交互,与用户相关联的每一用户会话可以与一终端组604相关联。每一终端组604 包括作为用户可用于与计算设备602交互的接口设备的外围设备,包括向计算设备602提供数据的输入设备604A和/或从计算设备602读取数据的输出设备604B。每一终端组的外围设备可包括任何合适数量和类型的外围设备,包括显示器、键盘和鼠标,以及任何其他类型的外围设备(例如,存储设备)。图6示出了七个终端组,但应当理解,各实施例可以与任何合适数量的用户和任何合适数量的终端组一起操作。在每一终端组内,外围设备可按任何合适的方式连接到计算设备602。在某些情况下,各个外围设备可直接连接到计算设备602的端口。在其他情况下,多个外围设备可经由集线器连接到计算设备的一个端口,该集线器具有连接到每一外围设备的多个输入端口和连接到计算设备602的一个输出端口。在某些情况下,终端组的某些外围设备可以直接连接到计算设备602,其他则经由集线器来连接。图7示出了终端组的外围设备到计算设备602的示例性连接。在终端组710中, 显示器713诸如经由计算设备602的视频输出端口直接连接到计算设备602。键盘715和鼠标717经由集线器711间接连接到计算设备602。键盘715和鼠标717可以是被设计成经由通用串行总线(USB)连接到计算设备602的外围设备,且集线器711可以是具有连接到键盘715和鼠标717的两个或更多输入端口且具有连接到计算设备602上的USB端口的一个输出端口的USB集线器。集线器用于在计算设备602和外围设备715、717以及连接到集线器711的任何其他外围设备之间来回传递数据。终端组720示出了略微不同的安排,其中终端组720的显示器723(以及键盘725 和鼠标727)经由集线器721连接到计算设备602。终端组730示出了类似于终端组710的配置,其中显示器733直接连接到计算设备602,而键盘735和鼠标737经由集线器731连接。终端组740示出了类似于终端组720的安排,其中显示器743、键盘745和鼠标 747经由集线器741连接到计算设备。终端组740也经由计算机通信网络702连接到计算设备。终端组740可以连接到第二计算设备(未示出),该第二计算设备可能正在使用通信协议来将经由键盘745和鼠标747输入的数据经由网络702传递到计算设备602并将计算设备602生成的图形数据传递到显示器743。可使用任何合适的通信协议,包括终端服务协议或微软 远程桌面协议(RDP),来沿着任何合适的有线和/或无线通信网络,包括局域网 (LAN)和/或因特网传递数据。
15
计算设备602可被配置成检测经由计算设备602的端口和通信总线连接到计算设备602的外围设备,并确定计算设备的物理连接。图8示出了连接到计算设备602的外围设备的一个示例性分层结构800。计算设备602包括处理通过计算设备602的USB总线发送或接收的所有数据的USB根集线器802、以及处理由计算设备602生成来显示给用户的所有图形数据的图形卡818,以及其他硬件。如图8的示例中所示,计算设备602检测到USB 集线器814和USB集线器814连接到USB根集线器802。连接到集线器804的是包括显示器806、复合设备808和接口设备810和812在内的外围设备。连接到集线器814的是显示设备816和USB复合设备。计算设备还检测到连接到图形卡818的是显示器820、822、拟4 和 826。当外围设备被附连到计算设备602时,作出关于要向哪一终端组(以及向哪一用户会话)分配对外围设备的控制的判定。这一过程可用于创建终端组或向现有终端组添加外围设备。在某些实施例中,可进行对被检测到连接到计算设备602的外围设备的基于规则的分析来确定要将设备相关到的终端组。在这一基于规则的过程中,以相似方式连接的设备可一起被标识为一终端组,且以不同的相似方式连接的设备可被标识为第二终端组。例如,连接到一个集线器的所有设备可被标识为一个终端组,且连接到另一集线器的所有设备可被标识为另一终端组。用于进行基于规则的分析的技术在'077申请和具有代理案卷号Ml 103. 70848US01的_申请中有更详细讨论。然而,这一基于规则的分析可能不是在所有情况下都是成功的,或者可能不在所有情况下都适当地分配设备。例如,经由图形卡818连接到计算设备602的显示设备在与经由USB根集线器802连接到计算设备602的外围设备不同的分层结构中示出。对USB分层结构的基于规则的分析可能不处理显示设备,反之亦然。另外,因为在分层结构之间没有相关,因此可能没有供基于规则的分析将显示设备匹配到USB设备的办法。作为另一示例, 如上所讨论的,复合外围设备可被计算设备602作为完全不同的外围设备来对待,并且可用不同的方式来检测并被放置在分层结构中的不同点上。因而,对USB分层结构的检查可导致USB复合外围设备的某些外围设备被分配到不同的终端组。此外,在某些情况下,复合外围设备包括在同一物理外壳内的显示器和USB集线器。USB集线器包括打算将键盘和鼠标以及用户可能希望连接到计算机的任何其他外围设备连接到其上的至少两个USB端口。显示器、USB集线器、键盘和鼠标旨在形成一复合外围设备,且旨在形成一终端组,因为用户将预期经由USB集线器连接的键盘和鼠标将被分配给与显示器相同的终端组,使得用户可将所有三个设备一起使用。然而,显示设备可经由图形端口直接连接到计算设备602,并且USB外围设备可经由USB集线器连接到计算设备。如上所讨论的,使用基于规则的分析,可能没有办法来确保显示器将被分配到与USB集线器相同的终端组。因而可要求用户执行一手动过程来配置终端组,这如上所讨论的会是困难且不合需要的。根据此处所描述的技术,可从软件工具接收指令,该指令可用于确定如何将对外围设备的控制分配给终端组或分配给用户会话。图9示出了可在本实施例中进行来将对外围设备的控制分配给用户会话并从这些外围设备形成终端组的一个过程。在图9的示例中,连接到计算设备的外围设备包括上述复合外围设备,包括显示器和对其附连了键盘、鼠标和/或任何其他外围设备的USB集线器。然而,各实施例不限于与这些类型的外围设备或任何其他类型的外围设备一起操作,各实施例不限于实现图9所示的示例性过程。过程900在框902开始,在那里检测并初始化连接到计算设备602的每一外围设备。作为外围设备的初始化的一部分,可为每一设备实例化驱动程序。在框902,将复合外围设备的显示器和USB集线器检测为连接到计算设备602,并且为每一设备实例化驱动程序。用于显示设备(和/或用于USB集线器)的驱动程序可以用该显示器是包括USB集线器的复合外围设备的一部分的知识来预配置。如上所讨论的,驱动程序也可作为关于外围设备的分配的指令的潜在源向外围设备管理设备注册。在框904,在检测和初始化设备之后,外围设备管理设备可检查被检测为连接到计算设备的外围设备的集合来确定如何分配对外围设备的控制。在该检查期间,外围设备管理工具可查询关于对该外围设备管理工具检测为尚未分配控制的外围设备的控制的分配的指令的潜在源。作为该查询的一部分,外围设备管理工具可查询为显示器实例化的驱动程序。在框906,用于显示器的驱动程序可响应标识该显示器与USB集线器形成复合外围设备的查询,并且可使用USB集线器的标识符来标识USB集线器。驱动程序可指示外围设备管理工具,显示器和USB集线器以及经由USB集线器连接的任何外围设备应作为一个组来一起管理并作为一个组来一起分配给用户会话。驱动程序可以不指示控制被分配给特定用户会话,而是可以指示对每一设备的控制被分配给一个用户会话。在框908,基于该指令,外围设备管理工具可创建一终端组,并将对显示器、USB集线器以及经由USB集线器连接到设备的控制关联给该终端组。当经由终端组创建用户会话时(例如,用户使用键盘和显示器登录并创建用户会话),可将该终端组与该用户会话相关联,使得对外围设备的控制被分配给该用户会话。一旦在框908分配了控制,过程900结束。如上所讨论的,在某些实施例中,根据来自软件工具的指令来分配对外围设备的控制可包括分配对外围设备的访问权限。对外围设备的访问权限可包括以特定方式使用外围设备的一部分,或使用外围设备的一部分来执行特定任务的权限。在显示器的情况下,使用该外围设备的一特定部分或使用该外围设备的一部分来执行特定任务可包括使用显示器的特定区域。例如,如图10所示,显示器1000可被划分成各个区域A、B、C和D。分配对显示器的访问权限可包括分配对显示器的一特定部分的访问权限。提供关于对显示器的控制的分配的指令的软件工具可指示外围设备管理工具,显示器可被划分成四个区域,并指示外围设备管理工具将对四个区域中的每一个的控制分配给一不同的用户会话,使得在本来仅一个用户能够使用显示器1000的情况下四个用户能够使用该显示器。在上述每一示例中,对外围设备的控制是根据来自软件工具的指令来分配的,并
且在未接收到指令的情况下,控制是根据如在'077申请和_申请(该申请具有代
理案卷号M1103.70847US01)中所描述的基于规则的分析来分配的。然而,在某些实施例中,对设备的控制可根据来自软件工具的指令、基于规则的分析和/或用户输入的组合来分配。例如,如上所讨论的,在基于规则的分析的某些实现中,对像显示器这样的输出外围设备的控制可能无法容易地根据规则来分配。由此,在接收到指令且应用了规则之后,在某些情况下,对某些输出外围设备的控制仍然可能未被分配。然而,用户可能期望使用该输出设备,且因此控制应被分配。图IlA示出了用于至少部分地基于用户输入来分配对输出外围设备的控制的一个技术的示例。各实施例不限于基于用户输入来分配对输出外围设备的控制,且基于用户输入来分配控制的实施例不限于实现图IlA中所示的示例性过程。在开始过程1100之前,对外围设备的控制可能已经根据从软件工具接收的指令和/或基于规则的分析的规则来分配。过程1100在况1102开始,在那里作出关于是否还剩下其控制未被分配的任何输出外围设备的判定。如果否,则过程1100结束。然而,如果在框1102确定对至少一个输出外围设备的控制尚未被分配,则在框 1104,外围设备管理工具向每一这样的输出外围设备输出一独特提示。该独特提示可以是指示用户采取某种动作的任何提示。该提示可以用任何合适的方式来输出,这些方式可以基于其上输出提示的输出外围设备的类型而变化。图IlB示出了一个这样的输出的示例, 其中显示外围设备在显示屏幕的不同区域中输出指示用户提供特定输入的不同提示(即, “按下键盘上的‘A’”)。在框1106,从至少一个输入外围设备接收输入。框1106中接收到的输入在某些情况下可包括对应于框1104中输出的独特提示的内容。当输入的内容对应于该独特提示时,可作出期望使用其控制尚未被分配的特定输出外围设备的用户也正在使用从中接收到输入的输入外围设备的判定。因此,以与输入外围设备相同的方式来分配未分配的输出外围设备可导致用户被授予对该用户期望使用的所有外围设备的访问。因此,在框1108,对每一组匹配的输入和提示(框1104中输出的提示和框1106中接收的输入)开始一循环。在框1110,对于所选的一对从输出外围设备输出的提示和从输入外围设备接收的输入,以与输入外围设备相同的方式来分配对输出外围设备的控制。在框1112,如果存在更多匹配,则该循环在框1108中对另一对输出和输入外围设备继续。如果在框1112确定不存在更多匹配,则过程1100结束。根据本文描述的原理操作的技术可以按任何合适的方式来实现。以上的讨论中所包括的是示出基于来自软件工具的指令来分配对外围设备的控制的各种过程的步骤和动作的一系列流程图。以上的流程图的处理和判定框表示可被包括在实现这各种过程的算法中的步骤和动作。从这些过程导出的算法可以被实现为与一个或多个多用途处理器集成被指导其操作的软件、可以被实现为诸如数字信号处理(DSP)电路或专用集成电路(ASIC)等功能上等效的电路、或可以用任何其他合适的方式来实现。应当理解,此处包括的流程图未描绘任何特定电路的句法或操作,也未描绘任何特定的编程语言或编程语言类型的句法或操作。相反,各流程图示出了本领域普通技术人员可用于制造电路或实现计算机软件算法来执行实现此处描述的各类型的技术的特定装置的处理的功能信息。还应当理解,除非另外指明,否则每一流程图中描述的步骤和动作的特定序列仅是可被实现的算法的说明,并且可以在此处描述的原理的各实现和实施例中变化。因此,在某些实施例中,此处描述的技术可以用被实现为软件的计算机可执行指令来具体化,软件包括应用软件、系统软件、固件、中间件、或任何其他合适类型的软件。这样的计算机可执行指令可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。当此处描述的技术被具体化为计算机可执行指令时,这些计算机可执行指令可以用任何合适的方式来实现,包括被实现为多个功能工具,每一功能工具提供完成根据这些技术来操作的算法的执行所需的一个或多个操作。不论是如何实例化的,“功能工具”都是计算机系统的一个结构组件,其在与一个或多个计算机集成并由其执行时使得该一个或多个计算机执行具体操作任务。功能工具可以是软件元素的一部分或是整个软件元素。例如, 功能工具可被实现为进程的函数、或被实现为离散进程、或被实现为任何其他合适的处理单元。如果此处描述的技术被实现为多个功能工具,则每一功能工具可以按其自己的方式来实现;不必将所有功能工具以相同的方式来实现。另外,这些功能工具可在适当时并行或串行执行,并且可使用在其上执行这些模块的计算机上的共享存储器、使用消息传递协议、 或以任何其他合适的方式,来在彼此之间传递信息。一般而言,功能工具包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,功能工具的功能可以如它们在其中操作的系统所需来组合或分布。在某些实现中,实现此处的技术的一个或多个功能工具可一起形成完成的软件包,如作为诸如Microsoft Windows Multi-Point Server 2010(多点服务器)等软件程序应用。在替换实施例中,这些功能工具可适用于与其他不相关的功能工具和/或进程交互,来实现软件程序应用。在其他实现中,功能工具可适用于以形成操作系统的方式来与其他功能工具交互,操作系统包括可从华盛顿州雷蒙德市的微软 公司获得的Windows 操作系统。换言之,在某些实现中,功能工具可以替换地被实现为操作系统的一部分或在操作系统外部实现。用于执行一个或多个任务的某些示例性功能工具已在此处描述。但应当理解,所描述的功能工具和任务划分仅是可实现此处描述的示例性技术的功能工具的类型的说明, 且各实施例不限于以任何特定数量、划分、或功能工具类型来实现。在某些实现中,所有功能可在单个功能工具中实现。应当理解,在某些实现中,此处描述的功能工具中的某一些可以与其他功能工具一起实现或分开实现(即,作为单个单元或分开的单元),或者这些功能工具中的某一些可能不被实现。在某些实施例中,实现此处描述的技术的计算机可执行指令(但被实现为一个或多个功能工具或以任何其他方式实现时)可以被编码在一个或多个计算机可读介质上来向该介质提供功能。计算机可读介质包括诸如硬盘驱动器等磁介质、诸如压缩盘(CD)或数字多功能盘(DVD)等光介质、持久或非持久固态存储器(例如,闪存、磁RAM等)、或任何其他合适的存储介质。这一计算机可读介质可以用任何合适的方式来实现,包括作为以下图 12的计算机可读存储介质1206(即,作为计算设备1200的一部分)或作为独立的、单独的存储介质。如此处所使用的,“计算机可读介质”(也称为“计算机可读存储介质”)指的是有形存储介质。有形存储介质是非瞬态的,且具有至少一个物理的结构组件。如此处所使用的,在“计算机可读介质”中,至少一个物理的结构组件具有至少一个物理性质,该物理性质可在用嵌入的信息创建该介质的过程、在其上记录信息的过程、或用信息来编码介质的任何其他过程期间以某种方式更改。例如,计算机可读介质的物理结构的一部分的磁化状态可在记录过程中更改。在其中各技术可被具体化为计算机可执行指令的某些但非全部实现中,这些指令
19可以在任何合适的计算机系统中操作的一个或多个合适的计算设备上执行。包括这些计算机可执行指令的功能工具可以与单个多用途可编程数字计算机装置、共享处理能力且联合执行此处所描述的技术的两个或更多多用途计算机装置的协作系统、专用于执行此处所描述的技术的单个计算机装置或计算机装置的协作系统(位于同处或在地理上分布)、用于实现此处所描述的技术的一个或多个现场可编程门阵列(FPGA)、或任何其他合适的系统集成,或指导这些系统的操作。图12示出了计算设备1200形式的可在实现本文描述的技术的系统中使用的计算设备的一个示例性实现,然而其他实现也是可能的。应理解,图12既不旨在是对用于依照本发明描述的原理操作的计算设备的必要组件的描绘,也不旨在是全面描绘。计算设备1200可包括至少一个处理器1202、网络适配器1204、以及计算机可读存储介质1206。计算设备1200可以是例如台式或膝上型个人计算机,大型机,服务器,诸如智能移动电话、个人数字助理或便携式游戏控制台等便携式数字设备,或任何其他合适的计算设备。网络适配器1204可以是使得计算设备1200能够通过任何合适的计算网络来与任何其他合适的计算设备进行有线和/或无线通信的任何合适的硬件和/或软件。计算网络可包括无线接入点、交换机、路由器、网关、和/或其他联网设备,以及用于在两个或更多计算机之间交换数据的任何合适的有线和/或无线通信介质,包括因特网。计算机可读介质 1206适用于存储要由处理器1202处理的数据和/或要由处理器1202执行的指令。处理器1202能够处理数据和执行指令。这些数据和指令可被存储在计算机可读存储介质1206 上,并且例如可以启用计算设备1200的各组件之间的通信。存储在计算机可读存储介质1206上的数据和指令可包括实现根据本文描述的原理操作的技术的计算机可执行指令。在图12的示例中,如上所述,计算机可读存储介质 1206存储实现各种工具并存储各种信息的计算机可执行指令。计算机可读存储介质1206 可存储分配对连接到计算设备1200的外围设备的控制的外围设备管理工具1208。计算机可读存储介质1206还可存储向外围设备管理工具提供关于对外围设备的控制的分配的指令的一个或多个软件工具1210。计算机可读存储介质1208还可存储关于可用于向软件工具查询关于对外围设备的控制的分配的指令的潜在源(例如,向外围设备管理工具1208注册的驱动程序和其他软件工具)的信息的数据存储1212、关于计算设备1200上活动的用户会话的信息的数据存储1214、以及关于对连接到计算设备1200的外围设备分配的控制的信息(例如,对外围设备分配的所有权或访问权限、以及该所有权或访问权限分配给哪一用户会话)的数据存储1216。尽管未在图12中示出,但计算设备可另外具有一个或多个组件和外围设备,包括输入和输出设备。这些设备特别地可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算设备可以通过语音识别或以其他可听格式来接收输入信息。已经描述了其中各技术以电路和/或计算机可执行指令来实现的各实施例。应当理解,某些实施例可采用方法的形式,已经提供了其至少一个示例。作为该方法的一部分所执行的动作可以按任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。以上描述的各实施例的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、 或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对 “包括”、“包含”、“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。至此描述了至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。这样的更改、修改和改进旨在是本发明的一部分,且旨在处于此处描述的原理的精神和范围内。因此,上述描述和附图仅用作示例。
权利要求
1.一种分配对连接到计算设备的外围设备的控制的方法,所述方法包括 标识(10 连接到所述计算设备的外围设备;接收(104)关于分配对所述外围设备的控制的指令;以及至少部分地基于所述指令来分配(106)对所述外围设备的控制。
2.如权利要求1所述的方法,其特征在于,接收所述指令包括从用于所述外围设备的驱动程序接收所述指令。
3.如权利要求3所述的方法,其特征在于,还包括将至少一个软件工具作为关于分配对外围设备的控制的指令的潜在源来注册(202), 所述至少一个软件包括所述驱动程序;以及在所述标识之后且在所述接收之前,向指令的至少一个潜在源查询(208)关于所述外围设备的分配。
4.如权利要求1所述的方法,其特征在于,接收所述关于分配对所述外围设备的控制的指令包括接收(44 关于分配对连接到所述计算设备的一个或多个外围设备的控制的指令,所述两个或更多外围设备形成复合外围设备。
5.如权利要求1所述的方法,其特征在于,至少部分地基于所述指令来分配对所述外围设备的控制包括将对所述外围设备的控制分配给由所述指令指定的用户。
6.如权利要求1所述的方法,其特征在于,分配对所述外围设备的控制包括将对所述外围设备的控制分配给由所述指令指定的用户会话。
7.如权利要求1所述的方法,其特征在于,至少部分地基于所述指令来分配对所述外围设备的控制包括将对两个或更多外围设备的控制一起进行分配,所述两个或更多外围设备由所述指令标识。
8.如权利要求1所述的方法,其特征在于,分配对所述外围设备的控制包括分配(404) 所述外围设备的所有权。
9.如权利要求1所述的方法,其特征在于,分配对所述外围设备的控制包括分配(424) 对所述外围设备的访问权限。
10.至少一个用计算机可执行指令编码的计算机可读存储介质(1206),所述计算机可执行指令在由计算设备(1200)执行时使得所述计算设备执行一种用于分配对连接到计算设备的外围设备的控制的方法,所述方法包括标识(10 连接到所述计算设备的外围设备;从用于所述外围设备的驱动程序接收(104)关于分配对所述外围设备的控制的指令;以及至少部分地基于所述指令来将对所述外围设备的控制分配(106)给用户会话。
11.如权利要求10所述的至少一个计算机可读存储介质,其特征在于,所述接收关于分配对所述外围设备的控制的指令包括接收(44 关于分配对连接到所述计算设备的两个或更多外围设备的控制的指令,所述两个或更多外围设备形成复合外围设备。
12.如权利要求10所述的至少一个计算机可读存储介质,其特征在于,所述方法还包括将至少一个软件工具作为关于分配对外围设备的控制的指令的潜在源来注册(202), 所述至少一个软件包括所述驱动程序;以及在所述标识之后且在所述接收之前,向指令的至少一个潜在源查询(208)关于所述外围设备的分配。
13.如权利要求10所述的至少一个计算机可读存储介质,其特征在于,至少部分地基于所述指令将对所述外围设备的控制分配给用户会话包括将对两个或更多外围设备的控制一起进行分配G44),所述两个或更多外围设备由所述指令来标识。
14.如权利要求10所述的至少一个计算机可读存储介质,其特征在于,所述方法还包括,在所述分配之后接收关于分配对所述外围设备的控制的第二指令,所述第二指令从不同于所述驱动程序的源接收;以及至少部分地基于所述第二指令来将对所述外围设备的控制分配给不同的用户会话。
15.如权利要求10所述的至少一个计算机可读存储介质,其特征在于,分配对所述外围设备的控制包括分配(404)所述外围设备的所有权。
16.一种装置(1200),包括至少一个处理器(1202),其被编程为标识(10 连接到所述计算设备的外围设备;接收(104)关于分配对所述外围设备的控制的指令;以及至少部分地基于所述指令来分配(106)对所述外围设备的控制。
17.如权利要求16所述的装置,其特征在于,所述至少一个处理器被编程为从用于所述外围设备的驱动程序接收所述指令。
18.如权利要求16所述的装置,其特征在于,所述至少一个处理器被编程为从在所述装置上执行的软件应用接收所述指令。
19.如权利要求16所述的装置,其特征在于,所述至少一个处理器被编程为通过将对两个或更多外围设备的控制一起进行分配(444)来至少部分地基于所述指令来分配对所述外围设备的控制,所述两个或更多外围设备由所述指令标识。
20.如权利要求16所述的装置,其特征在于,所述至少一个处理器被编程为通过分配 (404)所述外围设备的所有权来至少部分地基于所述指令来分配对所述外围设备的控制。
全文摘要
本发明公开了计算设备的外围设备的控制分配方法和系统。公开了用于实现计算设备对外围设备的控制的软件辅助分配(例如,分配外围设备的所有权或分配对外围设备的访问)的技术。根据此处所描述的技术,对外围设备的控制的分配通过来自软件工具的输入来辅助,该软件工具向外围设备管理工具指示关于外围设备的分配。软件工具可用不同方式来指示外围设备管理工具。在某些情况下,软件工具可指示外围设备管理工具如何以一种特定方式分配对外围设备的控制,而在其他情况下,软件工具可指示外围设备管理工具如何分配对一组外围设备的控制。在其他情况下,软件工具可以不向外围设备管理工具指示如何分配对外围设备的控制,而是可标识对其的控制应作为一组来分配的一组或多组外围设备。
文档编号G06F9/44GK102163147SQ201110040368
公开日2011年8月24日 申请日期2011年2月12日 优先权日2010年2月12日
发明者I·斯奈德, J·克里西, J·斯里尼瓦桑, K·米特拉, M·F·柯尼格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1