直接计算体验
背景
在某些情形中存在一种使得个人计算机,特别是笔记本计算机起到更如媒体回放消费电子设备的作用的产业推动力。例如,消费者希望快速(例如不超过10秒)的引导时间、类似消费电子产品的用户界面和简单且集中于任务的用户界面。
同时,笔记本计算机的部分价值在于其提供了媒体回放形式的娱乐功能。例如,笔记本计算机能在旅行期间用作DVD播放器。然而,笔记本的功能远大于常规的DVD播放器,并且一般包括全功能的操作系统、应用程序和重要数据。在某种程度上,这与在个人计算机系统上提供类似消费电子产品的用户体验有冲突。
概述
提供本概述以便用简化的形式介绍将在下面的详细描述中进一步描述的一些代表性概念。本概述不是要标识要求保护的主题的关键特征或必要特征,也并不是限制要求保护的主题的范围。
简言之,在此描述的主题的各方面涉及在检测到耦合到计算设备的特殊致动机制时起动该计算设备进入一特殊的计算体验(称为直接体验)。例如,专用按钮、遥控设备等可诸如通过起动特定的应用程序而触发不同的操作模式。该特殊致动机制可代之以(或另外)使设备在受约束或沙箱模式中进行操作,其中仅可采取有限的动作,如由制造商或最终用户所定义的动作。
可提供多个特殊致动机制,并且每一致动机制可对应于一不同的直接体验。例如,致动器可起动媒体播放器程序、个人信息管理器程序、电子邮件程序、日历程序、媒体中心相关程序或浏览程序之一。部分或全部程序可在受约束或沙箱化模式中运行。
在收到致动了耦合到计算设备的特殊致动机制的通知时,计算机系统由此可在一种类似于专用设备的直接体验中进行操作。这类设备的示例包括媒体播放器设备、个人信息管理器设备、显示时间信息的设备、计算器、媒体中心设备、个人摄像机以及音频播放器。可退出直接体验并进入另一种体验,包括将计算机系统作为通用计算机系统进行操作。
其它优点通过下面的详细描述并结合附图会变得显而易见。
附图简述
本发明作为示例而非限制在附图中示出,在附图中相同的标号指示相似的要去,其中:
图1示出其中可结合本发明的各方面的通用计算环境的一个说明性示例。
图2是包含各组件的体系结构的表示,通过这些组件可基于对被致动的特殊致动机制的检测来起动目标应用程序以使计算机系统进入专门化的体验。
图3是在致动了多个特殊致动机制之一时选择一个相应的目标应用程序的表示。
图4是响应于特殊致动机制被致动操作的代理的表示。
图5是在由任务调度程序启动代理以使计算机系统进入专门化体验时的时序和操作的表示。
图6是在直接媒体体验中操作计算机系统的工作流示例的表示。
详细描述
示例性操作环境
图1示出其中可实现本发明的合适计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可与众多其它通用或专用计算系统环境或配置一起运行。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明可在由计算机执行的诸如程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。本发明也可以在分布式计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可位于包括存储器存储设备的本地和/或远程计算机存储介质两者中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为小背板(Mezzanine)总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例且非限制,计算机可读介质可包括计算机存储介质。计算机存储介质包括以存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并可由计算机110访问的任何其它介质。任何上述各项的组合也应包括在计算机可读介质范围内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含例如在启动时帮助计算机110内的诸元件之间传送信息的基本例程,通常存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包含其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1例示了读写不可移动非易失性磁介质的硬盘驱动器141,读写可移动非易失性磁盘152的磁盘驱动器151以及读写可移动非易失性光盘156,诸如CD ROM或其它光介质的光盘驱动器155。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口140等不可移动存储器接口连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由诸如接口150等可移动存储器接口连接至系统总线121。
以上描述并在图1示出的这些驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如图形输入板即电子数字化仪164、话筒163、键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常通过耦合到系统总线的用户输入接口160连接到处理单元120,但可通过其它接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)来连接。监视器191或其它类型的显示设备也经由接口,诸如视频接口190连接至系统总线121。监视器191也可与触摸屏面板等集成。注意,监视器和/或触摸屏面板可物理耦合至其中包括计算设备110的外壳,诸如在图形输入板型个人计算机中。此外,诸如计算设备110等计算机也可以包括其它外围输出设备,诸如扬声器195和打印机196,它们可以通过输出外围接口194连接。
计算机110可使用至一个或多个远程计算机,如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类连网环境在办公室、企业级计算机网络、内联网和因特网中是很常见的。
当在LAN连网环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN联网环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
辅助显示子系统199可通过用户接口160来连接以允许将诸如程序内容、系统状态和事件通知等数据提供给用户,即使计算机系统的主要部分处于低功率状态中。辅助显示子系统199可连接至调制解调器172和/或网络接口170以使得在主处理单元120处于低功率状态的同时这些系统之间能够通信。
直接计算体验
在此所述的技术的各方面涉及提供一种机制,通过该机制可使诸如笔记本计算机系统等计算机系统(例如,可以基于图1的计算机110)进入与通用计算机系统相比更像消费电子设备那样来操作的模式。例如,除了能够作为通用个人计算机操作外,通过在此描述的技术,计算设备可作为诸如简单数字时钟、计算器、便携式DVD播放器或丰富媒体中心设备等的专用设备的全屏专业模拟来操作。这些专用设备一般称为直接体验,因为用户可直接进入与通过通用计算设备得到的体验不同的体验。通常,计算设备从任何减少功率状态(例如,“硬关闭”状态或“软关闭”休眠状态)以一种直接进入特定计算体验的特殊方式来唤醒。
然而,如所理解的,在此所述的各方面不限于任何特定的使用或示例。例如,在此例示出的一种体系结构是参考基于
的操作系统和可从对应于ACPI(高级配置与电源接口,一种用于配置和电源管理的计算机工业标准)睡眠状态的各种功率状态起动的直接体验平台来描述的。然而,可使用其它操作系统和功率状态。因此,任何在此描述的示例、结构和/或功能是非限制性的,并且本发明可按一般在计算和设备使用方面提供好处与优点的各种方式来使用。
为了进行描述,将使用用于在睡眠状态中操作或处于睡眠状态中的ACPI标准作为示例,其中“关闭”状态指除S0工作状态(其中CPU正在执行代码)之外任何睡眠状态,包括硬关闭状态(例如S5)和软关闭状态(例如,S3、S4和处于无人值守模式中的S0状态);用于这些状态的ACPI标准一般在下表中概述:
直接计算体验的概念使计算机用户能够非常快速地开始利用个人计算机用于媒体消费或者其它设备操作,包括在个人计算机引导之后或者从待机或睡眠中恢复。在直接体验中,个人计算机例如可更像专用媒体播放器或诸如便携式DVD播放器等其它消费电子设备那样工作。为此,直接体验基础结构通常使用人机接口设备(HID)事件来使个人计算机从任何睡眠模式(包括关机(S5)、休眠(S4)或待机(S3))启动,并且可立即起动如播放DVD的程序等应用程序。取决于设置和用户首选项/设定,用户可以登录也可以不登录。
在一个示例体系结构中,直接体验平台硬件包括一或多个专用致动器和相关联的唤醒电路。一般而言,可提供固件(BIOS)支持以启用致动器并保留系统唤醒源(即,按下了哪一个致动器)。这可包括ACPI与非ACPI两者的固件支持。
操作系统组件可包括内核模式组件,诸如ACPI驱动程序等,它们可被扩展成支持枚举致动器能力并且从平台固件检索致动事件和系统唤醒事件,以及将这些事件转发至用户模式软件以供消费和进一步处理。一般而言,用户模式组件包括用户模式软件组件,该组件从内核直接体验致动器驱动程序检索系统唤醒源,并且起动所需应用程序,并且(有可能)同时起动用于最终用户配置的工具以使可用直接体验致动器匹配目标应用程序和配置数据存储。
图2是这样一个一般的直接体验体系结构/基础结构的示例表示,其中可提供直接体验操作系统组件202用于构建硬件事件启动的、类似电器的体验。在该具体示例实现中,这些组件包括致动器处理程序服务或其它消费代理204以及人机接口设备(HID)驱动程序设备对象206(例如基于ACPIHID)。通常,致动器处理程序服务204负责提供任何配置用户界面以允许选择目标应用程序、与驱动程序206交互以向内核模式请求系统唤醒源、基于该唤醒源起动适当的应用程序以及实现确定在来自HID的信号(例如按钮按压信号)之后哪一用户帐户应当支持应用程序起动的逻辑。
一般且如下所述,在该示例实现中,直接体验事件(部分地)与一专用致动机制(例如按钮)208有关,该机制的致动事件用同一事件或者通过直接体验平台210路由的相应事件来启动或唤醒个人计算机。注意,尽管图2仅示出诸如人机接口设备按钮/开关/遥控器形式的单个致动机制208,但如在此所述的,该直接体验平台可被设计成支持系统上的一个或多个致动机制等等。而且,致动机制可以是例如从定时器或其它唤醒装置(例如,网络活动检测器、电话检测器等)来启动的进程等等。
通常,致动机制208发送信号至计算机系统的芯片组或嵌入式控制器212。因此,直接体验平台210一般是由硬件制造商(OEM)提供的,但代之以可由第三方厂商或甚至操作系统厂商来提供,诸如在附加设备中提供。响应于在芯片组/控制器212处的信号检测,ACPI和/或其它BIOS固件214提供对应于唤醒事件源的数据给操作系统内核,以例如调用人机接口设备驱动程序设备对象206。
如上所述,通常致动导致致动器处理程序服务或其它消费代理204起动如媒体播放器等目标应用程序220。注意,取决于实现细节,如果机器处于关机过程中并且用户击中一个直接体验致动器,那么系统可能仍会关机。如果HID的致动发生在登录屏幕或任何其它时刻,则用户可能需要登录(如果要求的话)并且随后进入直接体验模式。如果致动发生多次,则应用程序可被起动一次或多次;每一应用程序(或者用户策略/偏好数据)可规定如何处理应用程序的多次调用。
如图2所示,直接体验组件204、206和214因而可利用现有的ACPI和驱动程序模型框架用于固件/操作系统交互,并且可在必要时构建在ACPI之上(例如,定义新的私有方法、设备ID等等)。操作系统直接体验组件204和206被设计为与直接体验唤醒或致动事件的用户模式消费者集成在一起。如果给定的操作系统不包括用户模式组件和/或支持它,则与直接体验内核模式组件206的接口可被设计成使得制造商或其它感兴趣的第三方厂商可提供其自己的直接体验事件的用户模式消费者。
一个实施例可被设计成使用第直接体验功能专用的新硬件致动器(例如非标准的ACPI按钮),其中直接体验模型不试图重载现有ACPI按钮的含义或以其它方式使用现有ACPI按钮。另一实施例可共享标准ACPI相关按钮(诸如通过两次致动、按压并保持等等),包括ACPI电源按钮、睡眠按钮、盖子开关或任何其它ACPI唤醒源(实时时钟、LAN唤醒等等)。因此,直接体验(例如专用)致动器不必指致动器是物理上独立的实体,或者它必须由人类交互来触发。
如上所述,存在多个直接体验起动致动器,诸如图3中如致动器3081-308n所示。注意,多个致动器同时或者以某种顺序按压可具有更多的含义,并且它还等价于具有单个专用的直接体验按钮,其中多种含义取决于致动模式,并且有可能取决于其它当前状态信息,例如在媒体播放器中是否有媒体盘。因而,如按压并保持或者(快速)两次按压等致动模式可被区分以从同一致动器起动不同的应用程序。
为区分对于特定致动器3081-308n所采取的各种动作,(例如,要起动哪一特殊应用程序),致动器服务204可访问如系统注册表330等数据存储来定位要采取的一个或多个动作。例如,致动器服务204可构造关于致动器ID的注册表键,并且将它通过注册表330映射到应用程序标识符,例如,用于确定和起动目标应用程序220。注意,代替起动应用程序,数据存储(例如注册表330)可代之以指定要采取的不同动作或者指定要采取的一个或多个附加动作。硬件制造商、厂商或用户可配置要采取的一个或多个动作。
在一个示例实现中,内核代码206可基于在启动时由BIOS提供的信息来加载注册表330,如在图3中由内核代码206与注册表330之间的虚线箭头所示。例如,直接体验基础结构可利用HID规范来允许该基础结构提供用于定义每一直接体验致动器的目的的描述符,(例如媒体播放器按钮、电子邮件按钮等等);ACPI驱动程序可检索这些HID描述符并且将它们存储在注册表330中的已知位置,从而使它们可用于用户模式组件。或者,致动器描述可在之前存储在注册表330中(例如由设备制造商)并且可由致动器服务或其它消费代理204在运行时访问以确定对应于被触发的致动器的应用程序标识符。一般而言,例示出的直接体验基础结构不必对致动器的目标应用程序功能是什么作出任何假设或强加任何限制;任何直接体验致动器可由制造商等来指定和/或能让最终用户配置以起动任何所需的应用程序或执行另一动作。注意,这包括不采取动作,这不同于响应于致动器事件系统唤醒并且否则在操作系统恢复运行之后不采取动作。
对于更希望的操作,直接体验基础结构支持实现从任何睡眠状态唤醒以及从S5状态的系统开机的致动器。致动器和基础结构也可作为来自S0的运行时事件来工作。例如,媒体致动器可负责从软关闭(ACPI S5)启动系统、从睡眠状态(ACPI S1-S4)唤醒系统和/或提供运行时用户致动器按压事件的通知(从ACPI S0状态)。对于特定的实现,制造商可确定致动器是转移自关闭状态还是睡眠状态。
如在此所述,这一媒体致动器可线接至ACPI兼容芯片组上的任何可用GPE(通用事件),或者可替换地线接至膝上型计算机的嵌入式(例如GPIO)控制器,它可被编程为将嵌入式控制器的GPE置为有效。媒体致动器可被线接并且GPE被编程为仅作为唤醒事件起作用,而不作为仅运行时事件起作用。直接体验基础结构可利用睡眠恢复事件来对由操作系统为其它通用平台唤醒事件完成的工作进行日志记录和跟踪。因而,取决于如何配置系统,直接体验可通过在系统处于S1-S4睡眠状态中时致动直接体验致动器或者当在运行时按压直接体验致动器时(例如,当系统处于S0工作状态中时)来启动直接体验。所采取的动作根据当按压直接体验致动器时计算机系统所处的状态而不同。
在检测到对直接体验致动器的致动之后可立即起动应用程序。加速从S3的起动的一种方法是预期特殊的恢复以提供较佳的恢复体验,这或者自动地或者通过维持历史数据来完成。例如,当用户进入待机睡眠状态时,在预期要从作为直接体验事件的待机事件恢复时(一个或多个)专用程序可自动放入存储器中,因此如果用户通过适合的致动器恢复,则该应用程序在恢复时已经在存储器中。同样,当系统休眠时,当预期从作为直接体验恢复的休眠恢复时,(一个或多个)专用程序可自动放入存储器中,例如,在存储器内容以休眠文件被传送到盘之前。或者,休眠文件可自动在恢复时加载,包括直接体验恢复,其中相应的直接体验触发的程序自动加载并执行。
注意,一个动作对于一特定的致动器可要求登录,并且在成功登录之后起动一个应用程序(或者有可能在不成功的登录之后起动一不同的应用程序)。
当运行具有直接体验的系统时,该系统可在受约束/沙箱化模式中操作,其中仅某些操作可发生,例如,键盘可被有效锁定(除了有可能允许退出沙箱化模式的模式之外),文件系统不能被访问(除了有可能特别指定的媒体内容之外)等等。这可取决于按压了哪一个致动器,并且还可取决于是否要求登录。例如,如果用户恢复(包括有可能通过现有的ACPI按钮而非独立的直接体验致动器)但不提供用于完全通用操作的正确口令,则计算机系统可仅作为媒体播放器操作,其中限制或者不限制键盘操作和文件访问。换言之,可配置计算机系统使得未能正确登录被视为一种类型的直接体验致动。
通过一个或多个正确配置的专用致动器启动操作系统的其它非媒体示例包括启动游戏程序、启动个人信息管理器程序、启动设备等等。而且,专用致动可在无明确或物理上可识别的致动器的情况下启动,诸如例如通过加载某个DVD电影、打开盖子到一定程度等等。实质上计算机系统能区分的任何触发机制可导致直接体验被启动。
在一个实现中,直接体验致动器按压事件可使用现有的内核事件通知来展示,诸如从使用内核事件通知系统通知的内核功率管理器来展示。用于直接体验致动器事件的内核事件通知系统通知可包括各种数据,诸如致动器事件的时戳(ACPI驱动程序从平台ACPI源语言,即ASL收到通知的时刻)、直接体验致动器的实例ID或其它标识符、以及一个或多个包含附加信息(如配置信息、状态信息或对于用户模式组件有可能感兴趣的其它信息)的标志。
如可容易地了解的,在此所述的示例实现允许计算机系统从任何关闭状态启动,这些状态包括待机(例如ACPI S3)、休眠(例如ACPI S4)和关机(例如ACPI S5),并且起动最终用户体验,这通常是一个对用于启动系统的特定致动机制专用的应用程序。例如,系统设计者可添加消费者友好的访问按钮,诸如通过机箱面板或无线遥控器的媒体相关按钮。这些致动机制专用于使系统从关闭状态启动或者从睡眠状态唤醒系统且随后使之进入专用的体验,如媒体播放模式。正常情况下,从睡眠恢复使系统返回到操作系统被挂起的状态与上下文,而从关闭状态引导系统则根据用户帐户和口令配置提供登录或用户桌面屏幕。然而,用于被设计成具有媒体回放特征的系统的替换性所需体验可通过专用致动器来启动或唤醒计算机并且立即(一旦系统运行就)向用户提供媒体播放器、专用的媒体外壳或其它应用程序。
在一个一般的示例中,平台的BIOS支持包括ACPI和非ACPI固件,其中系统的BIOS固件负责声明ACPI中的一个或多个直接体验致动器对象,从而提供致动器的ACPI配置和操作支持、正确地启用专用致动器(诸如装备致动器以从ACPI睡眠状态或从S5状态唤醒)、以及捕捉并正确地标识系统唤醒或启动致动器按压。BIOS还可跨ACPI转换(例如从ACPI S4或S5状态)保留唤醒源事件,为致动器设备提供标准的ACPI设备配置、方法和事件支持,并且提供用于检索致动器的目标功能的方法。
为使操作系统能够确定转换源以便唤醒,硬件或固件检测并保存唤醒事件源使得可以在以后返回它。注意,在一个实现中,后续的致动器事件不覆盖原始的唤醒源。还要注意,在该特定示例实现中,ACPI驱动程序检索ACPI名称空间中描述的每一唯一致动器设备的HID描述,并且使之可用于致动器服务或其它用户模式组件204。ACPI驱动程序处理发自平台的ACPI名称空间的运行时和唤醒通知事件,并且与内核功率管理器接口以发出直接体验致动事件的内核事件通知系统通知。致动或唤醒事件可使用ACPI通知代码从平台固件传达到致动器驱动程序。注意ACPI驱动程序可使用内核事件通知系统通知机制将直接体验事件通知给感兴趣的消费者。
对监听直接体验事件感兴趣的系统软件组件可使用内核事件通知系统API等来注册直接体验通知。例如,如果致动器服务204(图2)识别一致动器类型并且被配置为采取有关该类型的致动事件的动作,则致动器服务204通过内核事件通知系统注册直接体验致动器事件的通知。
在一个实施例中,操作系统安全是通过确保对用户的凭证要求不被绕过或以其它方式避开来维护的,从而防止对计算机系统的未经授权访问。例如,图4示出引起从睡眠状态的恢复的按钮按压(步骤434),以及可在具有已经登录过进行使用的桌面上可能发生的按钮按压(步骤438)。如图4所示,用户代理可在已用用户凭证登录过(即想要支持直接体验)的用户之下运行。无论是从睡眠状态唤醒(步骤434)还是当其上启用代理的桌面获得焦点时(步骤438),代理检测其中正在运行该代理的用户帐户的桌面何时变为活动。如果该帐户变为活动,则代理在步骤440处与内核驱动程序通信以确定系统唤醒或通电的源(例如,按下了哪一个致动器),并且起动用于该致动器和该用户的直接体验应用程序(步骤444)。
如图5所示,一个示例直接体验用户代理540可由任务调度程序542在用户登录时启动。用户代理540向内核事件通知系统544注册每当推压任何直接体验致动器时得到通知。在一个示例设计中,用户代理540被实现为进程内COM组件(由任务调度程序加载),它支持ITaskHandler接口(由任务调度程序使用以与加载的COM组件通信)。如图5所示,用户代理540是由任务调度程序542在用户登录时启动的(登录事件)。任务调度程序542调用ITaskHandler::Start方法。当用户代理540被启动时,它产生一个独立的工作程序线程546并且将控制返回给任务调度程序542,诸如任务调度程序542所要求的。
工作程序线程546可创建一个隐藏的窗口,用于从内核事件通知系统544接收功率设置改变通知。在创建该窗口之后,该窗口从注册表330检索所需信息以提供被致动的机制(例如按钮)与要起动的应用程序之间的映射。例如,第一注册表位置可由ACPI在从固件启动时填充,以提供致动器标识符(例如按钮ID)和一个或多个其它(例如用途ID)标识符之间的映射。第二位置由制造商填充,用于将用途标识符映射到要起动的应用程序。用户代理540读取这两个位置并且创建致动器标识符与要起动的应用程序之间的映射。
随后,用户代理540可将自己向内核事件通知系统544注册以接收关于直接体验致动器的通知。如果操作系统是响应于对直接体验致动器之一的按压而被启动的,则用户代理540一旦在它注册了之后就接收到通知,并且进入一消息循环并等待来自内核事件通知系统544的通知事件。
当用户代理540从内核事件通知系统544收到通知时,用户代理540可检查其它系统设置,如组策略设置的存在,计算机系统管理员可指定这些设置来覆盖本地配置的直接体验行为。如果不存在,则用户代理540可检查通知的时戳。如果在消息净荷中的时戳比存储在注册表330中的时戳值新,则用户代理确定哪一致动器被按压并且起动与该致动器相关联的应用程序。例如,内核事件通知系统544在其消息中提供致动器标识符,用户代理540随后将其与先前加载的致动器-应用程序的映射比较以确定要起动哪一应用程序。在起动应用程序之后,用户代理540可保持活动,等待来自内核事件通知系统544的更多通知。用户代理540在用户代理540上的一个特定停止方法(例如ITaskHandler::Stop方法)被调用(例如,用以销毁窗口和终止线程)时停止,除非和直到被另一方法调用恢复为止。
因而,在此例中,用户代理540依赖于任务调度程序542在启动时起动它,以及依赖于内核事件通知系统544在检测到直接体验致动器时通知它,并且有可能依赖于组策略设置(例如用户代理可在没有合适的设置的情况下不起动)。用户代理540还依赖于注册表330,后者包含关于直接体验致动器和响应于直接体验事件要起动的相关联的应用程序的数据。
图6示出一直接媒体工作流示例,包括当关联于一特殊媒体程序的直接体验致动器(DEX按钮)唤醒机器时(步骤600)的选项。如可看到的,在可任选的初始显示(步骤602)之后,在步骤606处可向用户提示输入登录信息,例如如果如由步骤604例示的那样诸如由系统设置和用户优偏好/设定所要求的话。注意,登录要求可取决于按压了哪一个致动器,例如对于一个致动器要登录,而另一个不需要登录。
在该示例配置中,用户不必登录,并且如果用户没有登录,则在步骤610处致动器处理程序204自动起动媒体播放器应用程序。在步骤612处媒体播放器应用程序查找用于播放的媒体,并且(假设找到了媒体)在步骤620处播放该媒体。注意,系统可起动媒体播放器应用程序为例如仅对DVD/CD所优化的全屏。还要注意,如从步骤612出发的虚线所示,系统可首先进入沙箱模式,如通过步骤616及以上所述来表示的。
如果用户成功登录,(或者如果系统另外被配置为绕过登录),则在此示例配置中系统代之以在步骤614处以专用媒体环境(诸如
媒体中心外壳)来起动,例如以全屏或以最大化窗口模式来起动,这可由制造商或用户定制。再一次,取决于配置,系统可在受约束或沙箱模式中操作,如通过步骤616及以上所述来表示。
在媒体回放之后,用户可能希望退出直接体验并且要作为通用计算机来操作计算机系统。在步骤622处可要求用户解锁系统(例如从沙箱模式),诸如通过在步骤626处输入个人标识号,即使该用户先前已经用正确的凭证登录过。例如,在沙箱模式中,媒体中心外壳可以是全功能的,除了不能删除某些文件之外。
未在图6中示出的其它示例媒体相关选项包括浏览和播放来自媒体库(包括被许可和未被许可的文件、照片、播放列表等等)的各种内容类型,以及浏览和收听与登录用户相关联的或者由计算机系统的其它用户或计算机系统的网络或因特网上的其它用户所共享的音乐。
尽管本发明易于进行各种改变和替换构造,但在附图中示出并在上面详细地描述了其某些例示实施例。然而应当理解,并无任何意图将本发明限于所公开的具体形式,相反,意图是要覆盖落在本发明的精神与范围内的所有修改、替换构造和等价方案。