用于封闭系统的编程框架的制作方法

文档序号:6477344阅读:161来源:国知局
专利名称:用于封闭系统的编程框架的制作方法
用于封闭系统的编程框架 背景 游戏控制台在当今计算环境中是普遍的。游戏控制台通常是只允许由硬件厂商控 制的经签署的游戏在这些控制台上执行的封闭系统。该限制可出于各种原因而做出,无论 是为发行商保护具有其中对知识产权的侵犯被维持在最低限度的严格控制环境的商业模 型,还是为了控制能够在游戏系统上玩的游戏的类型,例如以便允许孩子玩符合家长期望 的内容。另外,只允许经签署的代码运行帮助控制并减少其中诸如社区分数或数字货币等 特定假设必须是准确的在线社区中游戏作弊的可能性。 然而,存在于游戏控制台上的这些严格限制总体上妨碍了较大型的创造性社区在 封闭的游戏控制台上开发游戏或类似游戏的应用程序。因此,解决允许开发者、玩家、一般 业余爱好者和学生游戏开发者社区等为传统上封闭的系统编写游戏的需求是重要的。另 外,解决花费时间和精力来攻击(hack)游戏控制台以允许未经签署的代码在这些游戏控 制台上运行的自制(homebrew)开发者(有了以下公开的本发明主题他们本不必花费这些 时间和精力)的急速增长市场的问题是重要的。
概述 提供了允许未经签署的内容在封闭系统上运行以对以受保护的内核模式操作的 资源执行资源调用的机制。在所公开的本发明主题的一方面中,当在封闭系统上以用户模 式运行未经签署的内容时,只展示批准的API列表以允许对以内核模式操作的资源的资源 调用。所展示的API确认资源调用并在必要时将该资源调用从用户模式语言格式转换为 内核模式语言格式。在一个示例性且非限制性示例中,可能存在与诸如图形层、音频层、输 入层和存储层等受保护资源的子层接口的若干API。在一个示例性且非限制性示例方面, 所提到的API可以是非平台专用的,以使得能够在各种平台上实现来自已开发的内容的接 口。在一个示例性且非限制性方面,可修改所提到的API以改变所授予的对平台资源的访 问权。 应当注意,提供本概述是为了以简化的形式介绍下面在详细描述中进一步描述的 一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮 助确定所要求保护的主题的范围。
附图简述 以上的概述以及以下的详细描述在结合附图阅读时能更好地理解。为了阐明本发 明,示出了本发明的各方面。然而,本发明不限于所讨论的特定方面。包括以下附图


图1示出了其中只有经签署的软件组件(即,经签署的游戏)才能够在通常封闭 的系统上运行的系统; 图2示出了其中经签署和未经签署的游戏两者都能够在封闭系统上运行的系统;
图3示出经签署的游戏得到认证而未经签署的游戏未得到认证;
图4示出在游戏访问层和游戏操作系统之间存在API ; 图5以其诸如图形、音频、输入和存储等各种子层更详细地示出了在图4中被示为 抽象的的访问层;
图6示出了具有与图5的各种子层交互的子接口的API ;
图7更详细地示出了存储API子接口的各方面;
图8示出了由存储API使用的文件格式;
图9示出了保存内容的示例性方法; 图9a示出了确认来自先前的用户模式的数据的示例性方法; 图10示出了表示根据所公开的本发明主题的未经签署的内容可在其上执行的示 例性、非限制性计算系统环境的框图; 图11示出了可引入未经签署的内容的示例性方式;以及 图12示出了显示根据所公开的本发明主题的另一方面所述未经签署的内容可在 其上执行的示例性、非限制性多媒体控制台设备的框图。
详细描述
概览 通常,游戏控制台只允许经签署的游戏执行。为了确保经签署的游戏不以任何可 利用方式使封闭控制台暴露,通过被称为认证的过程来推出游戏。认证要求游戏在被签署 之前遵循一组严格的规则。这些严格的规则适于防止标题(title)不知不觉地造成可允许 以对制造商以及内容发行商有害的方式攻击封闭控制台的漏洞(e邓loit)。具体而言,防止 封闭控制台上内容的盗版是重要的。 在封闭控制台上运行的游戏都可能需要访问资源,诸如存储器、CPU访问、GPU、光 盘驱动器、输入设备和持久存储(如硬盘驱动器)等。因为未经签署的游戏没有经历经签 署的游戏所需的典型认证过程,所以在此公开了用于示出确保从未经签署的游戏流至受保 护资源的数据是受限且受控的方式的系统、方法和计算机可读介质。 在本发明的一个示例性且非限制性方面中,应用程序编程接口 (API)支持通过资 源管理层作出的资源请求以限制受保护资源对未经签署的、可能是恶意的源代码的暴露。 在本发明的一个示例性且非限制性方面中,API还可被配置成限制未经签署的游戏通过封 闭的游戏控制台中的资源管理层作出的对受保护资源的访问。API提供公知的入口点,以允 许未经签署的游戏访问控制台的受保护资源。变得对资源管理层可用的入口点可以是固定 的并由控制台制造商来预定以帮助限制和控制数据流并帮助防止创建新的、不安全的入口 点。 在本发明的一个示例性且非限制性方面中,资源管理层可具有子层。为了方便资 源管理层和封闭控制台的受保护资源之间的调用,API将具有支持资源管理层的各种子层 的子接口。这些子接口中的某一些将用于资源管理层的音频、输入、存储、图形和数学子层。
最后,因为API是封闭控制台中以内核或系统管理程序模式操作的受保护资源和 以用户或托管模式操作的资源管理系统或层之间的接口,所以该API可具有用于阻止可能 是恶意的代码对通常在用户/内核模式中可用的受保护资源的不受束缚的访问的适当的 安全措施。因此,API可通过限制所允许的受保护资源调用的类型和范围来提供某种程度 的安全性。 封闭系统中的未经签署的内容的各方面 所公开的本发明主题的此章节聚焦于封闭系统中未经签署的内容以执行是安全 的(即,以使得该封闭系统中的资源得到保护)方式的执行。为了获得对这些方面的更好
5理解,将只允许经签署的内容的封闭系统与允许未经签署和经签署的内容两者的封闭系统 进行比较是有益的。 由此,图1示出了其中只有经签署的软件组件(即,经签署的游戏)才能够运行的 封闭系统。具体而言,描绘了诸如游戏A 185和游戏B 190能够对其执行195的封闭系统 180。这些游戏185、 190通常由封闭系统180制造商来授权,然而,在某些方面它们可由游戏 开发者或某些其他第三方来授权。在任何情况下,系统180都被认为在并非每一个软件应 用程序都可在其上运行的意义上是"封闭的",如同对于通用个人计算机(PC)的情况一样。
如以上所提到的,典型的签署过程用于各种目的,诸如限制知识产权的侵犯以及 控制谁可访问适当的内容等。然而,不管这一封闭系统180有多少优点,它不必要地限制了 其他"未经签署的"游戏(未被游戏机构官方授权的游戏)的开发。这些未经签署的游戏可 以是在现有游戏之上构建的游戏(在从经签署游戏的发行商获得许可的情况下甚至是"经 签署的"游戏上构建的),或者它们可以是无法在封闭系统上运行的新开发的游戏。
因此,与图1相比,图2示出了其中经签署和未经签署的游戏两者都能够在封闭系 统上运行的系统。与图1的封闭系统(即,封闭系统180)相比不同的封闭系统200不仅可 运行经签署的游戏A 205和B 210,而且可运行未经签署的游戏C 215和D 220。但是应当 主意,所描绘的封闭系统180和200仅仅是示例性的并且不限于计算设备的任何特定制造 商或世代(针对这些系统的抽象框可代替图1和2中的具体描绘示出)。
如以上所提到的,允许未经签署的游戏内容C 215和D 220在通常不允许未经签 署的内容运行的系统200上运行扩展了这一系统200的游戏能力。然而,允许运行未经签 署的游戏内容215、220也呈现出安全问题。因为游戏C 215和D 220是未经签署的,S卩,它 们未被验证是它们所声称的游戏,所以恶意或不合乎需要的代码和数据可能结束在游戏系 统220上运行。如将简短解释的,参考图4,必须存在安全层。并且该安全层不仅首先允许 未经签署的游戏运行,而且另外具有防止不合乎需要的代码和数据与游戏系统200资源交 互的益处。 接着,图3示出经签署的游戏得到认证而未经签署的游戏未得到认证。具体而言, 游戏A 305和B 310由某一认证或确认机构签署以使得这些游戏能够在由该机构指定的具 体封闭系统上运行335。这些经签署的游戏A 305和B 310被认为是得到认证的325。相 反,未得到认证的游戏330是未由某一这样的机构签署的游戏,即,游戏A 315和B 320,并 且因此它们通常无法在封闭系统300上执行。有了本发明的以上和以下各方面,这些游戏 315、320能够在封闭系统300上运行(除了最初经签署的游戏A 305和B 310之外)。
现在转向图4,图4示出在以用户模式或未经签署的模式操作的游戏访问层和以 内核或系统管理程序模式操作的游戏操作系统之间存在应用程序编程接口 (API)。API 415 支持由游戏访问层405作出的操作系统层400资源请求。如上所述,为了保护操作系统层 400免遭可能在未经签署的内容中发现的恶意代码或不适当地利用操作系统层400资源的 其他代码的攻击,必须在游戏系统的受保护部分,即操作系统层400和该游戏系统的不受 保护或用户部分之间建立屏障。为了方便和创建该屏障,必须管理被允许由未经签署的内 容执行的代码。 托管代码是由诸如封闭控制台提供商等内容提供者提供的、提供给开发者以供用 来开发未经签署的内容的代码。由于未经签署的内容恶意地或无意地干扰或访问诸如物理
6存储器等受保护的封闭控制台资源的风险,通常是未标识的未经签署的开发者在开发代码 时只可被允许一定程度的灵活性。这是因为未经签署的内容将不经历认证过程以变成经签 署的内容。因此,为了限制未经签署的内容开发者对于系统资源的能力,内容提供者向内容 开发者提供托管或预定代码。 该托管或预定代码本质上是由控制台提供商建立的一组方针,如果这些方针由未 经签署的内容开发者使用,将优选地不允许对封闭控制台的受保护资源的不适当的访问。 可能存在实现托管代码的若干不同的方式。例如,控制台提供商可预定应用程序通常所需 的访问路径和访问级别并将该代码提供给未经签署的内容开发者。该预先打包的代码将无 法修改以防止生成新的访问路径和访问级别。向未经签署的内容开发者提供托管代码的方 式变化并且不影响本发明。与本发明相关的是托管代码和内核/系统管理程序本机代码与 受保护的控制台资源不同地交互。 继续图4,参考游戏访问层405,游戏访问层405是抽象(这将在下文中参考图5 和6更详细地解释)。简而言之,游戏访问层405可被广泛地理解成一种供未经签署的内容 410与其交互的接口。实际上,它表示用于未经签署的内容410的虚拟化硬件以使得该未经 签署的内容410不必严格地与操作系统层400兼容(如对于经签署的游戏内容(例如,图 3所示的游戏A 305和B 310)的情况)。 API 415是为支持由游戏访问层405作出的操作系统层400请求而提供的接口。 因为可由未经签署的内容执行的托管代码与可由经签署的内容执行的本机语言代码不同, 所以出于上述原因,API 415将取得托管代码资源请求并将这些请求转换成由操作系统层 400使用的本机语言模式。这将在以下参考API415子接口的各种示例性且非限制性类型更 全面地描述。 API 415支持来自游戏访问层405的、对操作系统层400的资源调用的方式将参考 图5更详细地解释。如以上所提到的,因为可能存在若干种能够对其作出调用的受保护资 源,即,存储、音频、数学、图形、输入,所以访问层405可包括至少六层图形层510、音频层 515、输入层520、存储层525和数学层528。这些层中的每一个都负责不同的任务。
例如,图形层510可负责呈现图形(包括但不限于,平面着色、普通映射、纹理映射 等);音频层515,顾名思义,可负责封闭系统上的音频(但应注意,这一音频可以与或不与 未经签署的内容相关联,即,它可以是从CD、DVD或某一计算机设备文件获取的独立音频); 输入层520可负责处理来自用户的输入,诸如控制器按钮选择、使用输入设备的点击等;存 储层525可负责存储特定游戏内容或重新调用特定游戏内容(另外,该层可用于通过存储 使游戏内容达到新控制台硬件水平的代码和/或数据来允许运行传统软件);以及最后, 数学层528可允许执行特定数学功能,例如以便允许更高效的映射渲染(如果涉及图形的 话)。应当注意,子层510、515、520、525、527、528是示例性的并用于示出本发明的各方面。
这些层510、515、520、525、527、528中的每一个在用户模式500和系统管理程序 (例如,内核)模式505之间作出各自的资源调用。更清楚地,游戏访问层405及相关联的 层510、515、520、525、527、528用托管代码530来对本机OS层540中的资源作出资源调用。 确认资源调用,并且如果发现该资源调用的任何参数无效或在可接受范围之外,则立即终 止该调用。关于确认的附加信息可参考图9a找到。在确认资源调用后,向该资源调用展示 批准的API ,并处理该资源调用。
在用户模式和内核模式之间分隔的原因之一是使得未经签署的代码不会出于非 控制台制造商或其他利益方所预期的目的而接管底层本机OS层540及任何相关联的控制 台资源。因此,按照图5,与上述未经签署的代码相关联的某些托管代码530被提供给访问 层405,该访问层405可包括以上所讨论的各个子层510、515、520、525、527、528。托管代码 530从用户模式500侧提供,并经由本发明的API穿过各子层向下过滤至系统管理程序模式 505侧。这六层510、515、520、525、527、528经由API 415对本机OS层540作出资源调用。 API 415从游戏访问层405和各种子层510、515、520、525、527、528接收资源调用。API进 而与本机OS层540交互以释放供资源调用使用的资源。 因为各种资源将需要变得对使用托管代码530的未经签署的内容开发者可用,所 以由子层510、515、520、525、527、528作出的调用由API 415的各子接口来处理,如图6所 示。图6更详细地示出了向本机OS层540提供来自子层510、515、520、525、527、528的资源 调用的API 415的各子接口。更具体而言,API 415的各子接口对应于子层的类型。子接口 图形API 610向本机0S层540提供来自图形层510的图形资源调用;子接口音频API 615 向本机OS层540提供来自音频层515的音频资源调用,输入API 620对应于输入层520, 存储API对应于存储层525,数学API 628对应于数学层528。相关领域的技术人员应当理 解,本发明不限于所示子接口 API。 子接口 API 610、615、620、625和628提供从托管代码到本机代码的接口 ,提供了
对每一种子接口的应用的示例性且非限制性描述。
存储API 作为可实现的一种类型的API的示例性且非限制性的示例,在此参考图7更全面 地描述图6的存储API 625。存储API 625向开发者提供将未经签署的内容保存在受保护 的系统资源中并管理这些内容而不必知道底层设备和格式的能力,即,在封闭的游戏控制 台而非通用PC上。这是提供将由开发者在已经在代码中包含访问受保护的系统资源所必 需的语言的托管方式中使用的代码的托管代码方面。此外,因为访问系统资源所必需的已 开发的代码被提供给开发者,所以存储API 625还可通过隔离特定资源和文件来提供某种 程度的安全性。以下描述是一种提供满足上述目标中的部分或全部的存储API 625的示例 性且非限制性方式。 图7是存储API 625的逻辑体系结构概览的示例性且非限制性图示。存储API 625 将要保存在受保护资源上的游戏分组到各个本地逻辑容器中。每一个容器都可包含零个或 更多已保存的游戏并且可以是用户知晓的本地存储710或者用户不可知的本地存储715。 用户可根据正在执行的任务而变化。例如,如果正在开发未经签署的内容,则用户可以是开 发者。在另一示例中,如果正在玩未经签署的游戏,则用户可以是玩家。继续该描述,用户 不可知本地存储715可由执行已保存的游戏的任何用户简档来访问。用户简档知晓容器只 可由创建游戏的用户简档来访问。通常,每一个用户简档都将可访问一个用户简档知晓容 器和一个用户简档不可知容器。 —旦创建了存储710或715的实例,就可在其中创建单独的已保存的游戏。这通 过要求存储710或715以给定名称创建文件即可。具有已保存的游戏存储的实例还允许开 发者获取到已保存的游戏的流、删除已保存的游戏、枚举存储中的所有已保存的游戏或重 命名已保存的游戏。此外,存储710或715可被清空所有文件或完全删除。
已保存的游戏或标题在执行时将需要访问相关文件系统上的该游戏的存储位置。
通常,标题将会将如纹理、电影和汇编等支持文件放置在相关文件系统中的该标题的可执
行目录或子目录中。如果标题无法访问或不知道该数据的位置,则游戏无法正确地工作。为
了将必需的信息提供给已保存的标题,提供标题安装本地支持720。支持720提供游戏所必
需的特定信息,包括已保存的游戏所属于的标题的名称、已保存的游戏所属于的标题的id、
已保存的游戏的名称、关于已保存的游戏的评论以及表示已保存的游戏的縮略图。 封闭控制台存储格式通常不同于通用或PC格式。为了向用户提供以各种格式存
储信息的能力,存储API 625具有供在封闭控制台上使用的逻辑托管内容包装器725和供
在PC上使用的系统10和外壳包装器730。 一般而言,包装器可被视作取得用一种语言或格
式开发的内容并提供允许以另一种格式使用该内容所必需的语言的解释器。这提供了上述
非平台专用功能。换言之,开发者可编写将游戏内容保存到存储的代码并在各平台之间,即
在封闭控制台和PC之间传送该代码。由此包装器725和包装器730解释并提供将内容保
存到其相应的存储系统所必需的格式化。 关于用于封闭控制台的存储系统,即封闭控制台文件系统745的要求将很可能与 关于PC,即PC文件系统740的要求不同,由此存储格式将很可能不同。未经签署的内容开 发者可能没有足够的经验或时间来编写将其内容保存到封闭控制台或PC中任一个所必需 的代码,存储API 625提供包装器725和730以使得开发者只需执行保存内容功能而不管 底层格式。 另外,封闭控制台的底层资源通常与PC不同并且可能需要附加功能来通过存储 API 625执行存储调用,提供了互操作层735,其与系统管理程序模式505中的封闭控制台 文件系统745和用户模式500中的包装器725接口 。 API 625访问互操作层735以获取对 保存内容所必需的封闭内容文件系统745的访问权。游戏以下述方式格式化。
已保存的游戏文件格式 存储API 625将创建将遵循如图8所示的特定已保存的游戏格式的文件。文件 800被分成三部分首部块数据810、已保存的游戏数据815和縮略图数据820。通常首先 写入首部块810,之后是已保存的游戏数据815。已保存的游戏数据815通常是构成已保存 的游戏状态的标题限定的内容。与已保存的游戏相关联的縮略图数据820通常出现在已保 存的游戏数据815之后的流中。
保存游戏文件 用于保存游戏的简化的过程在图9中示出。各过程步骤为了简明起见而抽象地示 出。相关领域的技术人员应当理解,图9所示的过程可使用各种方法来执行并且对每一个 步骤的详细描述均非启用本发明所必需的。参考图9,在步骤900,执行保存的游戏。在步骤 905,存储API 605将游戏数据格式化成以上在图8中所描述的格式。 一旦格式化该数据, 则在步骤915,将目的地文件安装在相关文件系统,即封闭控制台系统或通用系统中。 一旦 安装了目的地文件,则在步骤920,将游戏保存到图7中的用户知晓本地存储710或用户不 可知本地存储715中所安装的内容文件。 可优选在将数据从用户模式传递至如上述本机系统API之前确认如图9所述的资 源调用。对资源调用的确认帮助降低或消除可能无意地向无效资源调用展示API的概率。 图9a是在将资源调用数据传递给本机系统API之前确认资源调用的方式的示例性且非限
9制性示例。 在步骤900,将在用户模式中存储的数据复制到所分配的用于确认的、驻留在内核模式中的存储器的部分中。这样做是为了试图防止任何类型的存储器引用来自用户模式的一部分的任何数据以维护用户模式和内核模式之间的分隔。在复制存储内容后,在步骤902,对照已知良好的或可接受的值来确认数据的参数。某些参数检查可包括枚举值集合确认、范围检查、空引用检查等。 在完成902的确认步骤后,将指向内核模式资源的所有指针转换成安全句柄并将该句柄存储在句柄表中。然后将该句柄返回到用户模式并在需要使用本机或内核模式指针时将该句柄用作引用。检查试图使用该句柄的后续调用以确保调用引用有效句柄。使用用户模式中的句柄而不是本机指针的主要原因是在用户模式和内核模式之间提供附加分隔层。另一原因是防止恶意代码作出一个有效的资源调用以取得本机指针,然后一旦该代码知道该本机指针,就使用该本机指针信息来恶意地访问本机资源。 一旦检查并确认了数据,就调用本机系统调用;使得将返回到用户模式的堆上的任何数据复制到用户模式分配中以使得不存在对内核模式存储器的引用。
内容提供体系结构的类型 此处构想了各种类型的内容提供体系结构。 一个类型可具有计算源102、1004、1006与封闭系统1008之间的居间服务器IOIO,而其他类型可具有计算源与封闭系统1008之间的直接连接。本领域技术人员将容易理解可将内容传递给封闭系统的各种方式。 一旦将内容提供给封闭系统1008,系统1008就可取得该内容并通过图4所示的访问层405和API 415,图6所示的各种图形610、音频615、数学628和存储625子接口来运行该内容。接收、存储信息以及将信息向下传递给系统1008资源的方式将取决于访问层中由系统1008制造商施加的限制,并由此取决于未经签署的内容的内容。
示例性计算设备 如上所述,所公开的本发明主题应用于其中期望在本来封闭的系统上运行未经签署的内容的任何设备。然而,应当理解,如上所示,等价于未经签署的内容的内容的其他内容可以与当前公开的所有种类的计算对象一起工作。因此,在下面的图11中描述的以下通用远程计算机仅是一个示例,且本发明主题可用任何客户机或便携式设备来实现,而不管其是独立的还是具有网络/总线互操作性和交互。由此,本发明主题可在其中蕴含了极少或最少客户机资源的联网主存服务的环境,例如其中客户机设备仅用作到网络/总线的接口 (如置于器具中的对象)的联网环境中实现。 尽管并不是必需的,但本发明主题可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合本发明主题操作的应用软件中。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域技术人员可以理解,本发明主题可以用其它计算机系统配置和协议来实施。 图11由此示出了其中可实现参考先前附图描述的各方面的合适的计算系统环境100a的一个示例,但如以上清楚地描述的,计算系统环境100a仅为用于执行设备的合适计算环境的一个示例,并非旨在对这些方面的使用范围或功能提出任何限制。也不应将计算系统100a解释为对示例性操作环境100a中示出的任一组件或其组合具有任何依赖性或需求。 参考图ll,用于实现上述各方面的示例性远程设备包括计算机110a形式的通用计算设备。计算机110a的组件可以包括,但不限于,处理单元120a、系统存储器130a、和将包括系统存储器在内的各种系统组件耦合至处理单元120a的系统总线121a。系统总线121a可以是若干种类型的总线结构中的任一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。 计算机110a通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110a访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所需信息并可由计算机110a访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。 系统存储器130a可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)可被存储在存储器130a中,它包含帮助在诸如启动期间在计算机110a内的元件之间传递信息的基本例程。存储器130a通常还包含处理单元120a可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,存储器130a还可以包括操作系统、应用程序、其它程序模块、和程序数据。 计算机110a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机110a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至系统总线121a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至系统总线121a。 用户除了能够经由控制器来向封闭计算设备提供输入之外,用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸垫)向计算机110a输入命令和信息。除了这些外围设备之外,其他输入设备可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至系统总线121a的用户输入140a和相关联的接口连接到处理单元120a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子系统也可以被连接到系统总线121a。监视器或其它类型的显示设备也通过接口,如输出接口 150a连接至系统总线121a,而输出接口 150a又与视频存储器通信。除监视器之外,计算机还可以包括其它外围输出设备,如扬声器和打印机,它们可以通过输出接口 150a连接。 计算机110a可使用至诸如远程计算机170a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机170a又可以具有与设备110a不同的媒体能力。远程计算机170a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程媒体消费或传输设备,并且可以包括上面关于计算机110a所描述的任何或全部元件。图9所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络171a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。 当在LAN联网环境中使用时,计算机110a通过网络接口或适配器连接至LAN171a。当在WAN联网环境中使用时,计算机110a通常包括调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。调制解调器可以是内置或外置的,它可以通过输入140a的用户输入接口或其它适当机制连接至系统总线121a。在网络化环境中,相对于计算机llOa所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性多媒体(封闭的)控制台环境 接着参考图12,所示的是示出另一示例性、非限制性计算设备(即,示例性多媒体控制台)的框图,该控制台对于有限量的由某一签署机构(无论是该封闭系统制造商还是某一游戏发行商)签署的软件组件可以是封闭的。图12示出其中可实现所公开的本发明主题的各方面的多媒体控制台100的功能组件。多媒体控制台100包括具有1级(LI)高速缓存102、2级(L2)高速缓存104和闪存R0M(只读存储器)106的中央处理单元(CPU) 101。1级高速缓存102和2级高速缓存104临时存储数据并因此减少了存储器访问周期数,从而提高了处理速度和吞吐量。闪存ROM 106可存储在多媒体控制台IOO通电时在引导进程的初始阶段加载的可执行代码。另选地,在初始引导阶段期间加载的可执行代码可被存储在闪存设备(未示出)中。此夕卜,ROM 106可与CPU 101分开放置。 该控制台可具有对其可用的各种资源,诸如来自用于高速、高分辨率图形处理的视频处理流水线的图形处理单元(GPU) 108和视频编码器/视频编解码器(编码器/解码器)114。在该设置中,数据经由总线从图形处理单元108输送到视频编码器/视频编解码器114。视频处理流水线将数据输出到A/V(音频/视频)端口 140以传输到电视或其它显示器。存储器控制器110被连接到GPU108和CPU 101以方便处理器访问各种类型的存储器112,诸如但不局限于RAM(随机存取存储器)。 多媒体控制台100包括较佳地在模块118上实现的1/0控制器120、系统管理控制器122、音频处理单元123、网络接口控制器124、第一USB主控制器126、第二USB控制器128和前面板1/0子部件130。 USB控制器126和128用作外围控制器142 (1)-142 (2)、无线适配器148、和外置存储器单元146(例如闪存、外置CD/DVD ROM驱动器、可移动介质等)的主机。网络接口 124和/或无线适配器148提供对网络(例如因特网、家庭网络等)的访问并且可以是各种不同有线或无线接口组件中的任一种,包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等等。 提供系统存储器143以存储在引导进程期间加载的应用程序数据。提供媒体驱动器144且其可包括DVD/CD驱动器、硬盘驱动器、或其它可移动媒体驱动器等。媒体驱动器144对于多媒体控制台IOO可以内置或外置。应用程序数据可经由媒体驱动器144访问,以由多媒体控制台100执行、回放等。媒体驱动器144经由诸如串行ATA总线或其它高速连接(例如IEEE 1394)等总线连接到I/O控制器120。 系统管理控制器122提供涉及确保多媒体控制台100的可用性的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的对应的音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器126之间传输。音频处理流水线将数据输出到A/V端口 140以供外置音频播放器或具有音频能力的设备再现。
前面板I/O部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152以及任何LED(发光二极管)或其它指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
CPU 101、 GPU 108、存储器控制器110、和多媒体控制台100内的各个其它组件经由一条或多条总线互连,包括串行和并行总线、存储器总线、外围总线、和使用各种总线架构中任一种的处理器或局部总线。 当多媒体控制台IOO通电或重新引导时,应用程序数据可从系统存储器143加载到存储器112和/或高速缓存102、 104中并在CPU 101上执行。应用程序可呈现在导航到多媒体控制台IOO上可用的不同媒体类型时提供一致的用户体验的图形用户界面。在操作中,媒体驱动器144中包含的应用程序和/或其它媒体可从媒体驱动器144启动或播放,以向多媒体控制台100提供附加功能。 多媒体控制台100可通过将该系统简单地连接到电视机或其它显示器而作为独立系统来操作。在该独立模式中,多媒体控制台ioo可以允许一个或多个用户与该系统交互、看电影、听音乐等。然而,随着通过网络接口 124或无线适配器148可用的宽带连接的集成,多媒体控制台100还可在较大网络社区中作为参与者来操作。 图10所示的多媒体控制台是可用于执行诸如例如游戏等多媒体应用程序的典型的多媒体控制台。多媒体应用程序可用系统特征来增强,这些系统特征包括例如系统设置、语音聊天、联网游戏、通过网络与其他用户交互的能力、电子邮件、浏览器应用程序等。这些系统特征启用多媒体控制台100的经改进的功能,诸如,例如不同位置的玩家可以经由因特网玩同一个游戏。 同样,随着时间流逝,可以更新或向多媒体应用程序添加系统特征。并非要求多媒体开发者对多媒体应用程序做出显著修改来提供这些系统特征,此处描述的系统和方法允许多媒体开发者通过结合多媒体应用程序工作的独立的系统应用程序来提供系统特征。例如,系统应用程序可以实现涉及联网能力的功能,从而使多媒体(例如,游戏)开发者进行少量工作即可使多媒体应用程序能够被容易地调整以提供联网能力。这种能力之一是对于
多个和联网的用户的系统级通知。使系统级通知成为系统应用程序的一部分而非由诸如运
行于系统上的游戏等各个多媒体应用程序处理,为多媒体应用程序开发者将处理诸如游戏
邀请等显示通知从开发过程中除去,并允许他们致力于多媒体应用程序本身。 如上所示,尽管结合各种计算设备和网络体系结构描述了本发明主题的示例性实
施例,但基本概念可被应用于其中可利用输入设备来控制设备或系统的任何计算设备或系
统。例如,所讨论的各方面的算法和硬件实现可被应用于计算设备的操作系统,可作为设备
上的独立对象、作为另一对象的一部分、作为可重复使用的控件、作为可从服务器下载的对
象、作为设备或对象与网络之间的"中间人"、作为分布式对象、作为硬件、以存储器、以上任
何的组合等来提供。尽管此处选择了示例性编程语言、名称和示例来表示各种选择,但这些语言、名称和示例并不旨在是限制性的。 如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。由此,本发明主题的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现所公开的本发明各方面的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。 可实现或利用根据这些方面来提供的任何软件的一个或多个程序较佳地以高级过程语言或面向对象编程语言实现以便与计算机系统进行通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。 所公开的本发明各方面的方法和装置也可以经由以通过某种传输介质传输的程
序代码的形式体现的通信来实现,比如通过电线或电缆、通过光纤或经由任何其它传输形
式,其中,当程序代码由诸如EPR0M、门阵列、可编程逻辑器件(PLD)、客户计算机等机器接
收、加载并执行时,该机器成为用于实现所公开的本发明主题的装置。当在通用处理器上实
现时,程序代码与处理器相结合来提供一种用于调用本发明主题的功能的独特装置。另外,
结合本发明的各方面使用的任何存储技术总是可以是硬件和软件的组合。 尽管结合各附图的优选实施例描述了上述各方面,但可以理解,可以使用其它类
似的实施例,或可以对所述实施例进行修改和添加来执行相同的功能而不背离本发明。例
如,本领域技术人员将认识到在本申请中所述的方法可应用于诸如游戏控制台、手持式计
算机、便携式计算机等无论是有线还是无线的任何计算设备或环境,且可被应用于经由通
信网络连接并通过该网络交互的任何数目的这种计算设备。 此外,应当强调,构想了包括手持式设备操作系统和其它专用操作系统的各种计算机平台,尤其是在无线联网设备的数量持续增长时。此外,本发明主题的功能可在多个处理芯片或设备中或跨多个处理芯片或设备实现,且存储可类似地跨多个设备来实现。因此,所公开的本发明各方面不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。
1权利要求
一种用于访问封闭系统中的受保护资源的系统,包括生成对所述受保护资源[405]的资源调用的未经签署的软件组件[410];封闭计算设备[180],其中所述封闭计算设备管理所述受保护资源[405];以及至少一个应用程序编程接口[415],其中所述应用程序编程接口[415]向所述受保护资源[405]呈现所述资源调用。
2. 如权利要求l所述的系统,其特征在于,受保护资源[405]包括图形组件[510]、音 频组件[515]、数学组件[528]、存储组件[525]或输入组件[520]。
3. 如权利要求2所述的系统,其特征在于,所述应用程序编程接口 [415]包括对应于所 述图形组件[610]、音频组件[615]、数学组件[628]、存储组件[625]或输入组件[620]的 一个子接口。
4. 如权利要求l所述的系统,其特征在于,所述封闭计算设备[200]是封闭的游戏控制 台[则。
5. 如权利要求l所述的系统,其特征在于,所述封闭计算设备[200]是通用计算机 [100a]。
6. 如权利要求l所述的系统,其特征在于,所述受保护资源[405]使用本机代码格式 [540]。
7. 如权利要求l所述的系统,其特征在于,所述资源调用在用户模式[500]中生成。
8. —种用于提供对封闭系统中的以内核模式操作的受保护资源[405]的访问的方法, 所述方法包括从以用户模式操作的未经签署的软件组件[410]接收封闭计算设备资源调用; 确认所述资源调用[902];以及 展示应用程序编程接口 [415]以接收所述资源调用。
9. 如权利要求8所述的方法,其特征在于,确认所述资源调用包括 将与所述资源调用相关联的存储内容从用户模式存储器位置复制[900]到内核模式存储器位置[906];确认所述资源调用的参数[902];将为处理所述资源调用而创建的内核模式指针转换成句柄[904];以及 将所述句柄返回到用户模式中[904]。
10. 如权利要求9所述的方法,其特征在于,所述参数包括枚举值集合确认、范围检查 或空引用检查[902]。
11. 如权利要求8所述的方法,其特征在于,还包括向所述受保护资源[405]呈现所述 资源调用。
12. 如权利要求8所述的方法,其特征在于,所述封闭系统[200]是封闭的游戏控制台 [180]或通用计算机[100a]。
13. 如权利要求8所述的方法,其特征在于,从未经签署的软件组件[410]接收到的资 源调用采用托管代码格式[530]。
14. 如权利要求8所述的方法,其特征在于,呈现所述资源调用还包括将所接收到的托 管代码格式转换成由所述受保护资源[405]使用的本机语言格式。
15. —种包括计算机可读指令的计算机可读介质,所述指令用于提供对封闭系统中的以内核模式操作的受保护资源[405]的访问,所述计算机可读指令包括用于以下动作的指令生成对以内核模式[505]操作的资源的用户模式资源调用; 确认所述用户模式资源调用[902];以及如果所述资源调用得到确认,则展示应用程序编程接口 [415]以执行所述资源调用 [904]。
16. 如权利要求15所述的计算机可读介质,其特征在于,所述应用程序编程接口 [415] 将用户模式[500]中的所述资源调用转换成内核模式[505]中的资源调用。
17. 如权利要求15所述的计算机可读介质,其特征在于,所述资源对应于所述封闭系 统中的受保护的图形资源[510],对应于所述封闭系统中的受保护的音频资源[515],对应 于所述封闭系统中的受保护的存储资源[525],对应于所述封闭系统中的受保护的数学资 源[528],或者对应于所述封闭系统中的受保护的输入资源[520]。
18. 如权利要求15所述的计算机可读介质,其特征在于,用于确认所述用户模式资源 调用的指令包括用于确认所述资源调用的参数[902]的指令。
19. 如权利要求18所述的计算机可读介质,其特征在于,所述参数包括枚举值集合确 认、范围检查或空引用检查[902]。
20. 如权利要求15所述的计算机可读介质,其特征在于,还包括用于在所述资源调用 未得到确认[902]的情况下终止所述资源调用的指令。
全文摘要
公开了允许执行未经签署的内容并在这些未经签署的内容在封闭系统上执行时保护该系统中的资源的机制。例如,在实现未经签署的内容的访问层和封闭系统的操作系统之间使用应用程序编程接口。该应用程序编程接口可具有对应于访问层的子层的子接口,包括图形子接口、音频子接口、输入子接口和存储子接口。这些子接口向封闭系统的受保护资源呈现各子层所作出的访问调用。通过提供应用程序编程接口,未经签署的内容(例如,视频游戏)能够在通常被设计成只运行经签署的内容的封闭系统上运行。
文档编号G06F15/16GK101743536SQ200880017198
公开日2010年6月16日 申请日期2008年5月23日 优先权日2007年5月25日
发明者J·M·沃克, M·皮科西奥, P·L·布莱施, S·哈格瑞夫斯, T·W·小米勒 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1