(57)【要約】  クローズドシステム(closed system)において無署名コンテンツ(unsigned content)の実行を可能にし、そのような無署名コンテンツがシステム上で実行されるときリソースをセキュアにすることを可能にするメカニズムが開示されている。例えば、クローズドシステムのオペレーティングシステムレイヤと実際の無署名コンテンツの間にはアクセスレイヤが使用されている。このアクセスレイヤは、グラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤなどの種々のサブレイヤで構成可能になっている。これらのレイヤは、無署名コンテンツがネイティブオペレーティングシステムレイヤおよびクローズドシステムの関連リソースに行なうことができるアクセスを制御する。このようなアクセスレイヤが設けられていると、無署名コンテンツ、例えば、ビデオゲームは、署名付きコンテンツだけが実行されるように設計されているのが一般的であるクローズドシステム上で実行されることが可能になる。
2010528343.tif 000002
【特許請求の範囲】
【請求項１】
クローズドシステムにおいて無署名コンテンツを実行し、アクセスをセキュアにするためのシステムにおいて、
クローズドコンピューティングデバイス２００であって、前記クローズドコンピューティングデバイスは署名当局２０５、２１０によって許可されたソフトウェアコンテンツコンポーネントを実行するように構成されているものと、
少なくとも１つの無署名ソフトウェアコンテンツコンポーネント２１５、２２０であって、前記少なくとも１つの無署名コンテンツコンポーネントは、前記署名当局によって許可された前記ソフトウェアコンテンツコンポーネント用のインタフェースを提供することに加えて、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネント用のインタフェース５１０、５１５、５２０、５２５、５２７、５２８を前記クローズドコンピューティングデバイスに仮想化させることによって前記クローズドコンピューティングデバイス上で実行されるものと、
を備えたことを特徴とするシステム。
【請求項２】
前記インタフェースは、グラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤのうちの少なくとも１つに対応していることを特徴とする請求項１に記載のシステム。
【請求項３】
前記グラフィックスレイヤ、前記オーディオレイヤ、前記入力レイヤ、および前記ストレージレイヤのうちの少なくとも１つは、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントに関連するデータがストアされる第１のバッファ、および前記データが前記第１のバッファからコピーされる第２のバッファで構成されると共に、前記データは前記第２のバッファにおいて有効性検査されることを特徴とする請求項２に記載のシステム。
【請求項４】
前記データは、前記有効性検査のあと、前記クローズドコンピューティングデバイスに関連するリソースに提供されることを特徴とする請求項３に記載のシステム。
【請求項５】
前記データは、前記有効性検査のあと、前記クローズドコンピューティングデバイスに関連するリソースに提供される前にリングバッファに提供されることを特徴とする請求項３に記載のシステム。
【請求項６】
前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントは、コンピューティングデバイスからのコネクションを通して前記クローズドコンピューティングデバイスに提供されることを特徴とする請求項１に記載のシステム。
【請求項７】
前記少なくとも１つの無署名ソフトウェアコンポーネントは、（ａ）コンピューティングデバイスからのダイナミックコミュニケーションおよび（ｂ）前記コンピューティングデバイスからのストリーミングのうちの一方を使用して前記クローズドコンピューティングデバイスに提供されることを特徴とする請求項１に記載のシステム。
【請求項８】
クローズドシステムにおいて無署名コンテンツを実行し、アクセスをセキュアにするための方法であって、
クローズドコンピューティングデバイスを、署名当局によって許可されたソフトウェアコンテンツコンポーネントを実行するように構成するステップ１１００と、
前記クローズドコンピューティングデバイスを、前記クローズドコンピューティングデバイス上で少なくとも１つの無署名ソフトウェアコンテンツコンポーネントを実行するように構成するステップ１１０５と、
を含み、前記少なくとも１つの無署名ソフトウェアコンポーネントは、前記少なくとも１つの無署名コンテンツコンポーネントは、前記署名当局によって許可された前記ソフトウェアコンテンツコンポーネント用のインタフェースを提供することに加えて、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネント用のインタフェース５１０、５１５、５２０、５２５、５２７、５２８を前記クローズドコンピューティングデバイスに仮想化させることによって前記クローズドコンピューティングデバイス上で実行されることを特徴とする方法。
【請求項９】
前記クローズドコンピューティングデバイスにユニークなユーザＩＤを割り当てて、前記クローズドコンピューティングデバイスの違反有無を前記ユニークなユーザＩＤを通してトラッキングするステップを、さらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記インタフェースを使用するステップをさらに含み、前記インタフェースはグラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤのうちの少なくとも１つに対応していることを特徴とする請求項８に記載の方法。
【請求項１１】
前記グラフィックスレイヤ、前記オーディオレイヤ、前記入力レイヤ、および前記ストレージレイヤのうちの少なくとも１つを、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントに関連するデータがストアされる第１のバッファ、および前記データが前記第１のバッファからコピーされる第２のバッファでなるように構成するステップをさらに含み、前記データは前記第２のバッファにおいて有効性検査されることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記有効性検査のあと、前記データを前記クローズドコンピューティングデバイスに関連するリソースに提供するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントを、コンピューティングデバイスからのコネクションを通して前記クローズドコンピューティングデバイスに提供するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１４】
前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントを、（ａ）コンピューティングデバイスからのダイナミックコネクションおよび（ｂ）前記コンピューティングデバイスからのストリーミングのうちの一方を使用して前記クローズドコンピューティングデバイスに提供するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１５】
クローズドシステムにおいて無署名コンテンツを実行し、アクセスをセキュアにするためのコンピュータ実行可能命令を収めているコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
クローズドコンピューティングデバイスを、署名当局によって許可されたソフトウェアコンテンツコンポーネントを実行するように構成すること１１００と
少なくとも１つの無署名ソフトウェアコンテンツコンポーネントを前記クローズドコンピューティングデバイス上で実行するように構成すること１１０５と、
を含み、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントは、前記署名当局によって許可された前記ソフトウェアコンテンツコンポーネント用のインタフェースを提供することに加えて、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネント用のインタフェースを前記クローズドコンピューティングデバイスに仮想化させることによって前記クローズドコンピューティングデバイス上で実行されることを特徴とするコンピュータ可読媒体。
【請求項１６】
前記クローズドコンピューティングデバイスにユニークなユーザＩＤを割り当てて、前記コンピューティングデバイスの違反有無を前記ユニークなユーザＩＤを通してトラッキングすること、をさらに含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記インタフェースを使用することをさらに含み、前記インタフェースはグラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤのうちの少なくとも１つに対応していることを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１８】
前記グラフィックスレイヤ、前記オーディオレイヤ、前記入力レイヤ、および前記ストレージレイヤのうちの少なくとも１つを、前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントに関連するデータがストアされる第１のバッファ、および前記データが前記第１のバッファからコピーされる第２のバッファからなるように構成することをさらに含み、前記データは前記第２のバッファにおいて有効性検査されることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記有効性検査のあと、前記データを前記クローズドコンピューティングデバイスに関連するリソースに提供することをさらに含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
前記少なくとも１つの無署名ソフトウェアコンテンツコンポーネントを、（ａ）コンピューティングデバイスからのダイナミックコネクションおよび（ｂ）前記コンピューティングデバイスからのストリーミングのうちの一方を使用して前記クローズドコンピューティングデバイスに提供することをさらに含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本テクノロジはコンピューティングの分野に関し、さらに具体的にはゲーミング環境に関する。
【背景技術】
【０００２】
ゲーミングシステムは今日のコンピューティング環境において広く行き渡っている。ゲームコンソール(game console)は、ハードウェアベンダによって制御される署名付きゲーム(signed game)だけがそのコンソール上で実行されるのを可能にするクローズドシステム(closed system)であるのが一般的である。この制限が行なわれる理由は、緊密制御環境において知的財産の不正行為が最低限に保たれているビジネスモデルをパブリッシャのために残しておくか、あるいはゲーミングマシン上でプレイ可能なタイプのゲームを制御して、例えば、コンテンツをプレイする子供に対する両親の期待に応えるコンテンツを許可するかどうかに関係なく、さまざまである。さらに、署名付きコードが実行されるのを可能にすると、コミュニティスコア(community score)やデジタル通貨(digital currency)などの、ある種の想定が正確であることが不可欠であるオンラインコミュニティにおいてゲームで不正を行なう可能性を制御し、軽減するのに役立つことになる。
【０００３】
しかし、ゲームコンソールに存在するこれらの緊密な制限は、より大きな創造的コミュニティ全体が、クローズドゲームコンソール上でゲームまたはゲームに似たアプリケーションを開発するのを妨げている。従って、重要なことは、中でも、開発者、ゲーム愛好者(gamer)、一般的ゲーム熱中者(hobbyist)、および学生ゲーム開発者が従来のクローズドシステム用にゲームを書くことを可能にする必要性に対処することである。さらに、重要なことは、ゲームコンソールにハッキングして、そのコンソール上の無署名コード(unsigned code)の実行を可能にするために時間と努力を費やしている（さもなければ、下述する本明細書に開示の主題に従えば、このような時間と労力を費やさないで済むようなときに）という問題に対処することである。
【発明の概要】
【０００４】
クローズドシステムにおいて無署名コンテンツ(unsigned content)の実行を可能にし、そのような無署名コンテンツがそのシステム上で実行されるときリソースをセキュアにすることを可能にするメカニズムが提供されている。本明細書に開示の主題の一側面では、クローズドシステムのオペレーティングシステムレイヤと実際の無署名コンテンツとの間にアクセスレイヤが使用されている。さらに、このアクセスレイヤは、グラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤなどの、種々のサブレイヤから構成可能になっている。これらのレイヤは、無署名コンテンツがネイティブオペレーティングシステムレイヤおよびその関連リソースに行なうことのできるアクセスのタイプと量を制御することができる。
【０００５】
例示に限定されない一側面では、上記に挙げたサブレイヤのいずれも、クローズドシステムがユーザモードにあるときの入力バッファ、およびクローズドシステムがスーパバイザモードにあるときの対応する有効性検査(validation)バッファなどの、種々のバッファで構成することができ、そこでは、情報（コードおよび／データ）が入力バッファから有効性検査バッファにコピーされるようになっている（有効性検査バッファで有効性検査されるために）。さらに、上記の有効性検査バッファで有効性検査されたコマンドをストアしておくことができるリングバッファ(ring buffer)のような、他の種々のコンポーネントを使用することもできる。
【０００６】
以上から理解されるように、この概要説明は、詳細な説明の個所で以下に詳しく説明されている概念のいくつかを選んで簡単に紹介したものである。この概要は、請求項に記載の主題のキーとなる特徴または基本的特徴を特定するものではなく、請求項に記載の主題の範囲を判断する際の一助となるものでもない。
【図面の簡単な説明】
【０００７】
上述した概要説明は下述する詳細な説明と共に、その理解を容易にするために添付図面を参照して記述されている。本発明の開示事項を例示するために、開示事項の種々の側面が示されている。しかし、開示事項は論述している具体的側面に限定されるものではない。図面において、
【図１】署名付きソフトウェアコンポーネント、すなわち、署名付きゲームだけが代表的なクローズドシステム上で実行可能である従来システムを示す図である。
【図２】署名付きゲームと無署名ゲームが共にクローズドシステム上で実行可能であるシステムを示す図である。
【図３】署名付きゲームが認証され、無署名ゲームが認証されていないことを示す図である。
【図４】ゲーミングオペレーティングシステムと無署名コンテンツの間にゲームアクセスレイヤが存在し、そこではこの介在レイヤが無署名コンテンツによるアクセスを制御することを示す図である。
【図５】図４に抽象化して示したアクセスレイヤが、グラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤなどの、種々のサブレイヤからなることを示す詳細図である。
【図６】図５を参照して論述している側面、すなわち、サブレイヤによって使用される種々のバッファに焦点を当てて論述している側面を示す詳細図である。
【図７】クローズドシステムが行なっていることが、無署名コードが実行されるようにハードウェアを仮想化することであることを示す図である。
【図８】無署名コンテンツをあるコンピューティングソースからクローズドシステムに提供することを可能にする方法が無数に存在することを示す図である。
【図９】本明細書に開示した主題に従って無署名コンテンツを実行させることができる例示のシステム環境（これに限定されない）を示すブロック図である。
【図１０】本明細書に開示の主題の別の側面に従って前記無署名コンテンツを実行させることができる例示のマルチメディアコンソールデバイス（これに限定されない）を示すブロック図である。
【図１１】クローズドシステムにおける無署名コンテンツの実行とアクセスのセキュアをブロック図形式で示す図である。
【発明を実施するための形態】
【０００８】
概要
一般的に、ゲームコンソールは署名付きゲームだけが実行されるのを可能にしている。署名付きゲームが弱点を突くような(exploitive)方法でクローズドコンソールを公開しないようにするために、ゲームは認証(certification)と呼ばれるプロセスに通すことが強行されている。この認証は、ゲームに署名することを可能にする前に、ゲームが厳格なルールセットに従うことを要求している。これらの厳格なルールは、メーカにだけでなく、コンテンツパブリッシャにも支障となる方法でクローズドコンソールがハッキングされるのを許す可能性のあるエクスプロイト(exploit)をタイトルが、知らないうちに作成するのを防止するようになっている。具体的には、クローズドコンソール上のコンテンツの不正行為(piracy)を防止することが重要になっている。
【０００９】
クローズドコンソール上で実行されるゲームは、いずれも、メモリ、ＣＰＵアクセス、ＧＰＵ、光ディスクドライブ、入力デバイス、および持続性ストレージ（ハードディスクドライブなど）などの、リソースへのアクセスを必要としている。無署名ゲームは、署名付きゲームに要求される代表的な認証プロセスに通されないので、本明細書には、無署名ゲームから保護されたリソースに流れるデータが有効であることを確かめる方法を示すためのシステム、方法、およびコンピュータ可読媒体が開示されている。
【００１０】
本明細書の開示事項の例示に限定されない側面では、すべてのデータは、クローズドゲーミングコンソールにおいて無署名ゲームと保護リソースから前後に流れるデータの有効性検査を取り扱うリソース管理レイヤに通される。このレイヤは、すべての保護リソースが無署名ゲームによって直接にアクセスできないことを保証すると共に、保護リソースに入るすべてのエントリポイントがよく知られていることを保証する。ある無署名ゲームが保護リソースに不正にアクセスしようとするか、あるいは全体がアクセス禁止(off limits)されているリソースにアクセスしようとすると、このレイヤはすべての実行を即時に中止することができる。さらに、リソース管理レイヤから利用できるエントリポイントは、コンソールメーカによって固定し、事前に決定することができる。このようにすると、無署名コードが恣意的に新しいエントリポイントを作成するのを防止するのに役立つことかできる。
【００１１】
より危険である一部の保護リソースは、別の抽象化レベルを用意することができる。ハイレベルバッファを専用プロトコル(specialized protocol)と併用すると、基礎となるリソースへの大部分のコールを抽象化することができる。キーポイントにおけるハイレベルバッファ内のコールは、リソース管理レイヤにフラッシュ(flush)したあと、有効性検査してから保護リソースに送ることができる。
【００１２】
最後に、リソース管理システムはセキュリティ違反のような、期待外のアクティビティを検出すると、そのアクティビティを中央ロケーションのログに記録することができる。このメカニズムをユニークなユーザＩＤシステムと併用すると、コンソールメーカは、ユーザ別にグループ化されたセキュリティ違反の数をトラッキングすることができる。このシステムによって提示されたデータを使用すると、コンソールメーカはセキュリティエクスプロイト(security exploit)の発生源をトラッキングし、汚れのないユーザ(inviolate user)を適切に取り扱うことができる。
【００１３】
クローズドシステムにおける無署名コンテンツの側面
本明細書に開示した主題のこのセクションでは、その実行がセキュアになるような形で（すなわち、クローズドシステムにおけるリソースが保護されるような形で）クローズドシステムにおいて無署名コンテンツが実行されることを中心に説明している。これらの側面の理解を容易にするためには、これらの側面を従来技術と比較すると役に立つ。
【００１４】
そこで、図１は、署名付きソフトウェアコンポーネント、すなわち、署名付きゲームだけが代表的なクローズドシステム上で実行できるような従来システムを示す図である。具体的には、クローズドシステム１８０が示され、そこではゲームＡ１８５とゲームＢ１９０のような、種々の署名付きゲームがクローズドシステム１８０に対して実行１９５可能になっている。これらのゲーム１８５、１９０は、クローズドシステム１８０のメーカによって許可されているのが一般であるが、ある側面では、ゲーム開発者または他の一部のサードパーティによって許可されることもある。いずれの場合も、システム１８０が「クローズド」とみなされているのは、汎用パーソナルコンピュータ（ＰＣ）の場合と同じように、すべてのソフトウェアアプリケーションがそこで実行できるとは限らないという意味においてである。
【００１５】
代表的な署名プロセスはこの分野では周知であり、上記で言及したように、知的財産の侵害行為を制限し、誰が該当コンテンツへのアクセス権があるかを制御する、といった種々の目的に役立っている。しかし、この種のクローズドシステム１８０には多数の利点があるにもかかわらず、その他の「無署名(unsigned)」ゲーム（署名当局によって公的に許可されていないゲーム）の開発を必ずしも制限しているとは限らない。このような無署名ゲームは、既存のゲームの上に構築されるゲームであることも（「署名付き」ゲームのパブリッシャから許可が得られている場合は、そのような署名付きゲームであることさえある）、あるいはさもなければ、クローズドシステム上で実行不可能である新開発のゲームであることもある。
【００１６】
そこで、図１とは対照的に、図２は署名付きゲームと無署名ゲームの両方をクローズドシステム上で実行させることができるシステムを示している。図１のクローズドシステム、すなわち、クローズドシステム１８０とは対照的に、この異なるクローズドシステム２００は、署名付きゲームＡ２０５およびＢ２１０だけでなく、無署名ゲームＣ２１５とＤ２２０も実行させることができる。なお、当然に理解されるように、図示のクローズドシステム１８０と２００は単に例示したものであり、コンピューティングデバイスのどのような特定メーカまたは世代にも限定されない（この種のシステムは、図１と図２の具体図ではなく、抽象ボックスで示されている）。
【００１７】
上記で言及したように、無署名コンテンツを実行させることができないのが一般的であるシステム２００上で無署名ゲーミングコンテンツＣ２１５とＤ２２０を実行させるようにすると、このようなシステム２００のゲーミング能力が拡張されることになる。しかし、無署名ゲーミングコンテンツを実行させるようにすると、セキュリティ上の問題が発生することにもなる。ゲームＣ２１５とＤ２２０は無署名であるので、つまり、これらのゲームがなにを目的としているのかが検証されていないので、最終的には、不正または望ましくないコードおよびデータがゲーミングシステム２２０上で実行される可能性がある。以下に図４を参照して簡単に説明するように、セキュリティレイヤの存在が必要になる。また、このセキュリティレイヤは、第一に、無署名ゲームの実行を可能にするだけでなく、望ましくないコードおよびデータがゲーミングシステム２００のリソースとやりとりするのを防止するという利点もある。
【００１８】
次に、図３は、署名付きゲームが認証されていること、および無署名ゲームが認証されていないことを示している。具体的には、ゲームＡ３０５とＢ３１０はなんらかの認証または有効性検査当局によって署名され、これらのゲームがその当局によって指名された特定のクローズドシステム上で実行３３５できるようにされている。このような署名付きゲームＡ３０５とｂ３１０は認証３２５されていると言われる。これとは対照的に、未認証ゲーム３３０は、このなんらかの当局によって署名されていないゲーム、すなわち、ゲームＡ  ３１５およびＢ３２０であるので、クローズドシステム３００上で実行できないのが一般的である。本明細書の開示事項の上記側面および下記側面によれば、このようなゲーム３１５、３２０はクローズドシステム３００上で実行させることができる（元々署名付きゲームＡ３０５およびＢ３１０に加えて）
【００１９】
次に、図４を参照して説明すると、図４は、ゲーミングオペレーティングシステムと無署名コンテンツの間にアクセスレイヤが存在し、そこではこの介在レイヤが無署名コンテンツによるアクセスを制御していることを示している。ゲームアクセスレイヤ４０５は抽象化されている（これについては、図５と図６を参照して以下に詳しく説明されている）。簡単に説明すると、これは、広い意味において無署名コンテンツ４１０がやりとりする一種のインタフェースと解することができる。実際には、これは無署名コンテンツ４１０のための仮想化ハードウェアを表し、無署名コンテンツ４１０がオペレーティングシステムレイヤ４００との厳格な互換性をもたないで済むようにしている（これは、署名付きゲーミングコンテンツ、例えば、図３に示すゲームＡ３０５およびＢ３１０の場合と同様である）。
【００２０】
具体的には、図４に抽象化したものとして示しているアクセスレイヤ４０５は、図５を参照して詳しく説明されている。アクセスレイヤ４０５は、少なくとも６つのレイヤ、すなわち、グラフィックスレイヤ５１０、オーディオレイヤ５１５、入力レイヤ５２０、ストレージレイヤ５２５、ネットワークレイヤ５２７、および数値計算(math)レイヤ５２８で構成することができる。これらのレイヤの各々は、異なるタスクを受け持っている。例えば、グラフィックスレイヤ５１０は、グラフィックス（フラットシェーディング、正規マッピング、テクスチャマッピングなどを含むが、これらに限定されない）をレンダリングすることを担当することができる。オーディオレイヤ５１５は、そのタイトルが示すように、クローズドシステム上のオーディオを担当することができる（当然に理解されるように、このオーディオは無署名コンテンツと関連付けられていることもあれば、関連付けられていないこともある。これは、ＣＤ、ＤＶＤ、またはある種のコンピュータデバイスファイルから得た独立のオーディオであることもあり得る）。入力レイヤ５２０は、コントローラボタンの選択、入力デバイスを使用したクリッキングなどのように、ユーザからの入力を取り扱うことを担当することができる。ストレージレイヤ５２５は、ある種のゲーミングコンテンツをストアし、またはある種のゲーミングコンテンツを再コールすることを担当することができる（さらに、これは、ゲーミングコンテンツを新しいコンソールハードウェアと同水準にするコードおよび／またはデータをストアすることによって、レガシーソフトウェア(legacy software)の実行を可能にするために使用することができる）。ネットワークレイヤ５２７は、マルチプレイヤゲーミングを可能にし、そこではコンソール側といずれかの関連サーバ側の両方のネットワーキングスタックがオンラインマルチプレイヤ体験を可能にするように使用可能になっている。最後に、数値計算レイヤ５２８は、ある種の数値計算関数の実行を可能にし、例えば、マップレンダリングを効率化することができる（グラフィックスが関係する場合）。いずれの場合も、これらのレイヤ５１０、５１５、５２０、５２５、５２７、５２８の各々は、セキュアなコンピューティングを保証するために管理対象コード(managed code)５３０などの無署名コードが通り抜ける必要のあるセキュアなゲートを、ユーザモード５００とスーパバイザ（例えば、カーネル）モード５０５の間に得るのに役立っている（すなわち、コンソールメーカまたは他の関係パーティが意図していない目的のために、無署名コードが基礎となるネイティブＯＳレイヤ５４０およびいずれかの関連コンソールソースを引き継がないようにしている）。
【００２１】
そこで、図５に示すように、前記の無署名コードに関連する一部の管理対象コード５３０は、上述したように種々のサブレイヤ５１０、５１５、５２０、５２５、５２７、５２８で構成可能であるアクセスレイヤ４０５に提供される。管理対象コード５３０はユーザモード５００側から提供され、これらのサブレイヤを通してフィルタリングされてスーパバイザモード５０５側に渡される。これらの６レイヤ５１０、５１５、５２０、５２５、５２７、５２８は、（１）適切なインタフェースが管理対象コード５３０に公開されること、および（２）ネイティブＯＳレイヤ５４０内にあって、管理対象コード５３０がアクセスすると想定されているリソースに管理対象コード５３０だけがアクセスすることを保証している。従って、全体的に、アクセスレイヤ４０５は、第１の場合に有用な役割を、第２の場合に防衛的な役割を果たし、それぞれが無署名コンテンツの実行を可能に、正しくない無署名コンテンツがある種のリソースにアクセスするのを防止する。他の場合は、管理対象コード５３０がスーパバイザモード５０５でネイティブＯＳレイヤ５４０に直接にアクセス可能である場合は、そのコード５３０はゲーミングコンソールにネイティブであるリソースに対して完全な制御権を持つことになる。しかし、このことは、メーカが意図しない目的のためにコンソールが使用されるといったように、上述した理由で望ましくないことがある。
【００２２】
図６は、図５を参照して上述した側面を示す詳細図である。例えば、ある人が、グラフィックスレイヤ５１０のような、上述したサブレイヤの１つを受け取り、そのサブコンポーネントに目を向けたとすると、これらのコンポーネントは図６の右側に示すコンポーネントのように見えることになる。第一に、グラフィックスレイヤ５１０は図６の左側に示されており、これはなんらかの入力６００を受け取ることになる（出力を提供することもあるが、この側面は、ここでは入力提示目的に限定されている）。
【００２３】
従って、グラフィックスレイヤ５１０は、上記入力６００を受け入れる入力バッファ６０５を備えることができる。この分野の精通者ならば容易に理解されるように、ここでは、バーテックス(vertex)バッファ、インデックスバッファ、バーテックスおよびピクセルシェーダ(shader)などのように、異なるタイプのバッファを使用することが可能である。コードおよび／またはデータが入力されたあと、これはユーザモード５００側からスーパバイザモード５０５側にコピーすることができる。従って、これは入力バッファ６０５から有効性検査バッファ６１０にコピーされる。この有効性検査バッファ６１０において、情報（コード、データ、その他の同等物）が有効性検査され、それがスーパバイザモード５０５にアクセスすることが許されていると想定されたタイプの情報であることが確かめられる。
【００２４】
なにがスーパバイザモード５０５でアクセスすることが許されると想定される基準は、コンソールメーカまたはその他のサードパーティによって定義することが可能であり、これは、そのようなパーティによって継続的に更新し、モニタすることができる。従って、有効性検査バッファ６１０にストアされた情報に関してチェックが行なわれる。例えば、有効性検査バッファ６１０においてハンドルを有効性検査することができる。ここで、「ハンドル」とは、プログラムが上述したように、ライブラリ関数やなんらかのハードウェアリソースなどのリソースにアクセスするのを可能にするトークン(token)、代表例として、ポインタであると解される。この情報が有効であれば、リングバッファ６１５に渡して、ネイティブコンソールリソースに対して実行させることができる。
【００２５】
当然に理解されるように、入力６００される情報のタイプが分かっていれば、その他のバッファアーキテクチャを使用することが可能である。コマンドが有効性検査バッファ６１０にストアされているときは、リングバッファ６１５の側面を使用されることがある。他方、コマンドに対するパラメータがある場合は、リングバッファ６１５は必要でないことがある。
【００２６】
本明細書に開示の主題の別の側面において、図７は、クローズドシステムが行なうことが、無署名コードが実行される対象となるハードウェアを仮想化することであることを示している。従って、基本的に、仮想マシンの形体をした仮想環境７０８が構築され、そこでは無署名コードが実行可能になっている。このような無署名コードはユーザモードで実行できるので、スーパバイザモード５０５にあるときは、さもなければ、無署名コードが有するはずのシステム７０６のリソースに対する制御が制限されている。ネイティブＯＳレイヤ７０４は、無署名コードに見合ったソフトウェアとハードウェアを仮想化し、ネイティブＯＳレイヤ７０４がアクセスおよび／または制御できる望みのセットのリソースだけを無署名コードに与えることができる。
【００２７】
この分野の精通者ならば理解されるように、各々がそれぞれの無署名ゲームごとに異なる仮想環境をもつ種々の仮想マシンを使用することが可能である。別の方法として、無署名ゲームの重要なサブセットの全部または一部をそこで実行するためにある種の汎用仮想マシン標準(universal virtual machine standard)を使用することも可能である。この場合、これらは、未署名ゲームがそこで実行されるための仮想マシン環境を提供するクローズドシステム７０６の重要な開示事項によって意図されている実装上の単なる明細にすぎない。
【００２８】
最後に、無署名コンテンツが図８に示すように、あるコンピューティングソースからクローズドシステムに提供されるときの方法は多数存在する。この側面の意図は、図４に言及され、図５と図６を参照して詳しく説明したアクセスレイヤ５０４が種々タイプの無署名コンテンツを取り扱うことができることを示すことである。この側面で意図しているコンテンツのタイプとしては、クローズドコンピューティングシステム８０８のアクセスレイヤに一度だけ提供８０２されるコンテンツ、システム８０６にストリーム化８０４されるコンテンツ、または定期的および動的にシステム８０８に提供されるコンテンツがある。
【００２９】
本明細書では、種々タイプのコンテンツを提供するアーキテクチャが本明細書において意図されている。あるタイプでは、コンピューティングソース８０２、８０４、８０６とクローズドシステム８０８の間に介在サーバ８１０が存在していることがあるのに対し、他のタイプでは、コンピューティングソースとクローズドシステム８０８間が直結されていることがある。この分野の精通者ならば容易に理解されるように、コンテンツがクローズドシステムに配信されるときの方法はさまざまである。コンテンツがクローズドシステム８０８に与えられると、システム８０８はこのコンテンツを受け取り、図４に示すアクセスレイヤ４０５、図５に示すグラフィックスレイヤ５１０、オーディオレイヤ５１５、入力レイヤ５２０およびストレージレイヤ５２５、および図６に示す種々のバッファ６０５、６１０および６１５を通して、そのコンテンツを実行させることができる。情報がどのように受信され、ストアされ、システム８０８のソースに渡されるかは、システム８０８のメーカがアクセスレイヤに課している制約によって決まり、従って無署名コンテンツの内容によって決まる。
【００３０】
例示のコンピューティングデバイス
上述したように、本明細書に開示の主題はどのようなデバイスにも適用され、そこでは、無署名コンテンツが、さもなければクローズドシステム上で実行されることが望ましいとされている。なお、上述したように当然に理解されるように、無署名コンテンツのそれに同等の他のコンテンツも、本明細書に開示のすべての種類のコンピューティングオブジェクトと共に働くことができる。従って、図９を参照して下述する以下の汎用リモートコンピュータは単なる一例であり、本明細書に開示の主題は、スタンドアロンデバイスであるか、ネットワーク／バスの相互操作性と相互作用性を備えたデバイスであるかに関係なく、どのようなクライアントデバイスまたはポータブルデバイスと共に実現することが可能である。従って、本明細書に開示の主題は、非常に少ない、または最小限のリソースが関係しているようなネットワーク化ホスティングサービス(networked hosted service)の環境、例えば、クライアントデバイスがアプライアンスに置かれたオブジェクトのように、ネットワーク／バスとのインタフェースとなっているだけのネットワーク化環境において実現することができる。
【００３１】
必ずしも必要でないが、本明細書に開示の主題は、その一部を、デバイスまたはオブジェクト用のサービスの開発者による使用のためにオペレーティングシステムを介して実現することも、および／または本明細書に開示の主題に関連して動作するアプリケーションソフトウェア内に組み込んでおくこともできる。ソフトウェアは、プログラムモジュールのように、クライアントワークステーション、サーバまたはその他のデバイスのような、１または２以上のコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で説明することができる。この分野の精通者ならば理解されるように、本明細書に開示の主題は、その他のコンピュータシステム構成およびプロトコルと共に実施することが可能である。
【００３２】
そこで、図９は、図２乃至図８を参照して説明した種々の側面が実現可能である、適当なコンピューティングシステム環境１００ａの例を示す図であり、上記から明らかであるように、このコンピューティングシステム環境１００ａは実行デバイス用の適当なコンピューティング環境の単なる一例であり、これらの側面の使用または機能性の範囲に関してなんらの制限があることを示唆するものではない。また、このコンピューティング環境１００ａは、例示の動作環境１００ａに図示のコンポーネントのいずれか、またはその組み合わせに関してなんらの依存関係または要求条件があると解されるものでもない。
【００３３】
図９を参照して説明すると、前記側面を実現するための例示のリモートデバイスは、コンピュータ１１０ａの形体をした汎用コンピューティングデバイスを含んでいる。コンピュータ１１０ａのコンポーネントには、処理ユニット１２０ａ、システムメモリ１３０ａ、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット１２０ａに結合するシステムバス１２１ａが含まれているが、これらに限定されない。システムバス１２１ａは、いくつかのタイプのバス構造のいずれにすることも可能であり、その中には、バスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスが含まれている。
【００３４】
コンピュータ１１０ａは、種々のコンピュータ可読媒体を装備しているのが一般的である。コンピュータ可読媒体は、利用可能であれば、コンピュータ１１０ａによってアクセス可能であるどのような媒体にすることができる。例を挙げると、コンピュータ可読媒体には、コンピュータ記憶媒体と通信媒体が含まれているが、これらに限定されない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータなどの情報をストアしておくためのなんらかの方法またはテクノロジで実現された揮発性および不揮発性で、取り外し可能および取り外し不能の両方の媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリテクノロジ、ＣＤＲＯＭ、ＤＶＤ(digital versatile disk)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または望みの情報をストアするために使用可能で、コンピュータ１１０ａによってアクセス可能であるその他の媒体が含まれるが、これらに限定されない。通信媒体は、搬送波などの変調データ信号またはその他のトランスポートメカニズムでコンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータを具現化し、その中には、なんらかの情報配信媒体が含まれているのが一般的である。
【００３５】
システムメモリ１３０ａには、ＲＯＭ(read only memory)および／またはＲＡＭ(random access memory)などの、揮発性および／または不揮発性メモリの形体をしたコンピュータ記憶媒体が含まれている。スタートアップ時のように、コンピュータ１１０ａ内のエレメント間で情報を転送するのを支援する基本ルーチンで構成された基本入出力システム(basic input/output system)はメモリ１３０ａにストアしておくことができる。メモリ１３０ａは、処理ユニット１２０ａに即時にアクセス可能で、および／または現在処理ユニット１２０ａの操作の対象となっているデータおよび／またはプログラムモジュールも収容いているのが一般的である。例を挙げると、メモリ１３０ａは、オペレーティングシステム、アプリケーションプログラム、その他のプログラムモジュール、およびプログラムデータも収めておくことができるが、これらに限定されない。
【００３６】
コンピュータ１１０ａは、その他の取り外し可能／取り外し不能の揮発性／不揮発性コンピュータ記憶媒体を備えていることもある。例えば、コンピュータ１１０ａは、取り外し不能の不揮発性磁気媒体との間で読み書きを行なうハードディスクドライブ、取り外し可能の不揮発性磁気ディスクとの間で読み書きを行なう磁気ディスクドライブ、および／またはＣＤ−ＲＯＭまたはその他の光媒体などの、取り外し可能の不揮発性光ディスクとの間で読み書きを行なう光ディスクドライブを備えることも可能である。例示の動作環境において使用できる、その他の取り外し可能／取り外し不能の揮発性／不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、ＤＶＤ(digital versatile disk)、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらに限定されない。ハードディスクドライブは、インタフェースなどの取り外し不能メモリインタフェースを通してシステムバス１２１ａに接続されているのが一般的であり、磁気ディスクドライブまたは光ディスクドライブは、インタフェースなどの取り外し可能メモリインタフェースによってシステムバス１２１ａに接続されているのが一般的である。
【００３７】
ユーザがコントローラを介して入力をクローズドコンピューティングデバイスに与えることができるほかに、ユーザは、キーボードおよびマウス、トラックボールまたはタッチパッドと普通に呼ばれているポインティングデバイスなどの、入力デバイスを通してコマンドおよび情報をコンピュータ１１０ａに入力することができる。このような周辺デバイスのほかに、その他の入力デバイスとしては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力１４０ａおよびシステムバス１２１ａに結合された関連インタフェースを通して処理ユニット１２０ａに接続されているが、パラレルポート、ゲームポートまたはＵＳＢ(universal serial bus)などの、他のインタフェースおよびバス構造によって接続されていることもある。グラフィックスサブシステムがシステムバス１２１ａに接続されていることもある。モニタまたはその他のタイプのディスプレイデバイスも、出力インタフェース１５０ａのような、インタフェースを介してシステムバス１２１ａに接続されており、インタフェースの方はビデオメモリに連絡していることがある。モニタのほかに、コンピュータは、スピーカおよびプリンタなどの他の周辺出力デバイスを装備していることもあり、これらのデバイスは出力インタフェースを通して接続されていることがある。
【００３８】
コンピュータ１１０ａは、リモートコンピュータ１７０ａのような、１または２以上の他のリモートコンピュータとの論理コネクションを使用してネットワーク化環境または分散環境で動作することが可能であり、リモートコンピュータの方は、デバイス１１０ａとは異なるメディア能力を備えていることがある。リモートコンピュータ１７０ａは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたはその他の共通ネットワークノード、またはその他の任意のリモートメディア消費または送信デバイスであることがあり、コンピュータ１１０ａに関連して上述したエレメントのいずれか、またはすべてを備えていることがある。図９に図示の論理コネクションは、ＬＡＮ(local area network)またはＷＡＮ(wide area network)などのネットワーク１７１ａを含んでいるが、その他のネットワーク／バスを含んでいることもある。このようなネットワーキング環境は、ホーム、オフィス、企業内コンピュータネットワーク、イントラネットおよびインターネットにおいて普及している。
【００３９】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０ａはネットワークインタフェースまたはアダプタを通してＬＡＮ１７１ａに接続されている。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０ａは、インターネットなどのＷＡＮ上でコミュニケーションを確立するためのモデムまたはその他の手段を装備しているのが一般的である。モデムは内蔵型または外付け型があり、どちらも入力１４０ａのユーザ入力インタフェースまたはその他の適当なメカニズムを介してシステムバス１２１ａに接続可能になっている。ネットワーク化環境では、コンピュータ１１０ａに関連して図示したプログラムモジュールまたはその一部は、リモートメモリストレージデバイスにストアしておくことが可能である。以上から理解されるように、図示し、説明したネットワークコネクションは例示であり、コンピュータ間に通信リンクを確立するための他の手段を使用することも可能である。
【００４０】
例示のマルチメディア（クローズド）コンソール環境
次に図１０を参照して説明すると、図１０は、ある署名当局（クローズドデバイスのメーカであるか、あるゲーミングパブリッシャであるかに関係なく）によって署名される限定量のソフトウェアコンポーネントに対してクローズされていることがある、例示の別のコンピューティングデバイス（この例に限定されない）、すなわち、例示のマルチメディアコンソールを示すブロック図である。図１０は、本明細書に開示の主題の側面を実現することができるマルチメディアコンソール１００の機能コンポーネントを示している。このマルチメディアコンソール１００は、レベル１（Ｌ１）キャッシュ１０２、レベル２（Ｌ２）キャッシュ１０４、およびフラッシュＲＯＭ(Read-only Memory)１０６を備えた中央処置ユニット（ＣＰＵ）１０１を搭載している。レベル１キャッシュ１０２とレベル２キャッシュ１０４は、データを一時的にストアしておき、メモリアクセスサイクルの回数を減らすことにより、処理速度とスループットを向上している。フラッシュＲＯＭ１０６は、マルチメディアコンソール１００に電源が投入されたときブートプロセスの初期フェーズ期間にロードされる実行可能コードをストアしておくことができる。別の方法として、初期ブートフェーズ期間にロードされる実行可能コードは、ＦＬＡＳＨメモリデバイス（図示せず）にストアされていることもある。さらに、ＲＯＭ１０６は、ＣＰＵ１０１とは別のロケーションに置かれていることもある。
【００４１】
このコンソールは、グラフィックス処理ユニット(graphics processing unit: GPU)１０８およびビデオエンコーダ／ビデオコーデック（コーダ／デコーダ）１１４のような種々のリソースを装備し、高速および高解像度グラフィックス処理のためのビデオ処理パイプラインからコンソールに利用可能になっている。このセットアップでは、データは、バスを経由してグラフィックス処理ユニット１０８からビデオエンコーダ／ビデオデコーダに送られる。ビデオ処理パイプラインは、データをＡ／Ｖ（オーディオ／ビデオ）ポート１４０に出力し、そこからテレビジョンまたは他のディスプレイにデータに送られる。メモリコントローラ１１０がＧＰＵ１０８およびＣＰＵ１０１に接続されて、ＲＡＭ(Random Access Memory)などの、種々タイプのメモリ１１２にプロセッサがアクセスするのを容易にしている。なお、種々タイプのメモリはＲＡＭに限定されない。
【００４２】
マルチメディアコンソール１００は、Ｉ／Ｏコントローラ１２０、システム管理コントローラ１２２、オーディオ処理ユニット１２３、ネットワークインタフェースコントローラ１２４、第１のＵＳＢホストコントローラ１２６、第２のＵＳＢコントローラおよびフロントパネルＩ／Ｏサブアセンブリ１３０を装備し、これらは好ましくはモジュール１１８上に実装されている。ＵＳＢコントローラ１２６と１２８は、周辺コントローラ１４２（１）−１４２（２）、ワイヤレスアダプタ１４８、および外部メモリユニット１４６（例えば、フラッシュメモリ、外部ＣＤ／ＤＶＤ  ＲＯＭドライブ、取り外し可能メディアなど）に対するホストの働きをする。ネットワークインタフェース１２４および／またはワイヤレスアダプタ１４８は、ネットワーク（例えば、インターネット、ホームネットワークなど）にアクセスすることを可能にし、イーサネット（登録商標）(Ethernet（登録商標）)カード、モデム、ブルートゥース(Bluetooth)モジュール、ケーブルモデムなどを含む、広範囲にわたる種々のワイヤードまたはワイヤレスインターネットコンポーネントのいずれにすることも可能である。
【００４３】
システムメモリ１４３は、ブートプロセス期間にロードされるアプリケーションデータをストアしておくためのものである。メディアドライブ１４４が用意されているが、これは、ＤＶＤ／ＣＤドライブ、ハードディスク、またはその他の取り外し可能メディアドライブなどで構成可能になっている。メディアドライブ１４４はマルチメディアコンソール１００に内蔵されている場合と、外付けになっている場合とがある。アプリケーションデータは、メディアドライブ１４４を通してアクセスして、マルチメディアコンソール１００による実行、プレイバックなどを可能にしている。メディアドライブ１４４は、シリアルＡＴＡバスまたはその他の高速コネクション（例：ＩＥＥＥ１３９４）などのバスを介してＩ／Ｏコントローラ１２０に接続されている。
【００４４】
システム管理コントローラ１２２は、マルチメディアコンソール１００の可用性を保証することに関係する種々のサービス機能を提供している。オーディオ処理ユニット１２３とオーディオコーデック１３３は、ハイファイ(high fidelity)およびステレオ処理と共に対応するオーディオ処理パイプレインを形成している。オーディオデータは、オーディオ処理ユニット１２３とオーディオコーデック１２６の間を通信リンク経由で搬送される。オーディオ処理パイプラインはデータをＡ／Ｖポートに出力し、オーディオ機能を備えた外部オーディオプレイヤまたはデバイスによって再現される。
【００４５】
フロントパネルＩ／Ｏサブアセンブリ１３０は、電源ボタン１５０とイジェクトボタン１５２だけでなく、マルチメディアコンソール１００の外面に露出されたＬＥＤ（発光ダイオードまたはその他のインジケータの機能もサポートしている。システム電源供給モジュール１３６は、マルチメディアコンソール１００のコンポーネントに電力を供給する。ファン１３８は、マルチメディアコンソール１００内部の回路を冷却する。
【００４６】
マルチメディアコンソール１００内部のＣＰＵ１０１、ＧＰＵ１０８、メモリコントローラ１１０、およびその他の種々コンポーネントは１または２以上のバスを介して相互に接続されており、その中には、種々のバスアーキテクチャのいずれかを使用したシリアルバスとパラレルバス、メモリバス、周辺バス、およびプロセッサバスまたはローカルバスが含まれている。
【００４７】
マルチメディアコンソール１００がパワーオンまたはリブートされるとき、アプリケーションデータは、システムメモリ１４３からメモリ１１２および／またはキャッシュ１０２、１０４にロードされ、ＣＰＵ１０１上で実行されることが可能になっている。アプリケーションは、マルチメディアコンソール１００で利用できる種々のメディアタイプにナビゲートするとき、一貫したユーザ体験が得られるようにするグラフィカルユーザインタフェースを提示することができる。動作時には、メディアドライブ１４４内に収められたアプリケーションおよび／またはその他のメディアがメディアドライブ１４４から起動(launch)またはプレイされて、マルチメディアコンソール１００に追加機能を提供することができる。
【００４８】
マルチメディアコンソール１００は、システムをテレビジョンや他のディスプレイに接続するだけでスタンドアロンシステムとして動作させることができる。このスタンドアロンモードにあるときは、マルチメディアコンソール１００は、１または２以上のユーザがシステムとやりとりしたり、ムービを見たり、ミュージックを聴いたり、などをすることを可能にする。しかし、ネットワークインタフェース１２４またはワイヤレスアダプタ１４８を通して利用可能にされるブロードバンド接続性が組み込まれていると、マルチメディアコンソール１００は、さらに、より大きなネットワークコミュニティにおける参加者として動作させることができる。
【００４９】
図１０に図示のマルチメディアコンソールは、例えば、ゲームなどのマルチメディアアプリケーションを実行するために使用可能である代表的なマルチメディアコンソールである。マルチメディアアプリケーションは、例えば、システムセッティング、ボイスチャット(voice chat)、ネットワーク化ゲーミング、ネットワーク上で他のユーザとやりとりする機能、ｅメール、ブラウザアプリケーションなどを含むシステム機能(system feature)で強化することができる。このようなシステム機能を使用すると、異なるロケーションにいるプレイヤがインターネットを介して共通ゲームをプレイできるといったように、マルチメディアコンソールの機能を向上することができる。
【００５０】
また、時間と共に、システム機能は更新されることもあれば、マルチメディアアプリケーションに追加されることもある。マルチメディア開発者は、これらのシステム機能を得るためにマルチメディアアプリケーションに重要な変更を行なわなくても、本明細書に記載したシステムおよび方法によれば、マルチメディア開発者は、マルチメディアアプリケーションと関連して稼動する別のシステムアプリケーションを通してこれらのシステム機能を得ることができる。例えば、ネットワーク化機能に関連する機能をシステムアプリケーションに取り入れておくと、マルチメディア（例えば、ゲーム）開発者は、少ない作業量でネットワーク化機能が得られるようにマルチメディアアプリケーションを容易に適応させることが可能になる。このような機能の１つとして、マルチユーザおよびネットワーク化ユーザのためのシステムレベル通知機能がある。システム上で稼動するゲームのように、個々のマルチメディアアプリケーションによって取り扱うのではなく、システムレベル通知をシステムアプリケーションの一部にしておくと、ゲーム招待などの通知表示を取り扱うことがマルチメディアアプリケーション開発者の開発プロセスから除かれるので、開発者はマルチメディアアプリケーション自体に集中することができる。
【００５１】
上述したように、本発明の例示実施形態を種々のコンピューティングデバイスおよびネットワークアーキテクチャと関連付けて説明してきたが、その基礎となる概念は、デバイスまたはシステムを制御するために入力デバイスが利用されることのある、どのようなコンピューティングデバイスまたはシステムにも適用することができる。例えば、ここで説明している側面をアルゴリズムおよびハードウェアで実現したものは、デバイス上の独立オブジェクトとしても、別のオブジェクトの一部としても、再使用可能なコントロールとしても、サーバからのダウンロード可能なオブジェクトとしても、デバイスまたはオブジェクトとネットワーク間の「仲介者(middle man)」としても、分散オブジェクトとしても、ハードウェアとしても、メモリ内においても、上記に挙げたもののいずれかの組み合わせとしても提供されるコンピューティングデバイスのオペレーティングシステムに適用することができる。例示のプログラミング言語、名前および例は、本明細書では、種々の選択項目を表すものとして選択されているが、これの言語、名前および例は限定的なものではない。図１１は、無署名コードがクローズドシステム上で実行されるのを可能にするアルゴリズムの流れを実現する１つの方法を示しているが、この分野の通常の知識を有するものならば理解されるように、本主題の種々の実施形態によって達成される同一、類似または等価機能を達成するオブジェクトコードと名称(nomenclature)を準備する方法は多数存在している。
【００５２】
上述したように、本明細書に説明されている種々の手法は、ハードウェアまたはソフトウェアと関連付けて、該当する場合には、ハードウェアとソフトウェアの組み合わせと関連付けて実現することが可能である。従って、本明細書に開示の主題の方法および装置、またはある種の側面またはその一部は、フロッピディスケット、ＣＤ−ＲＯＭ、ハードドライブ、またはその他のいずれかのマシン可読記憶媒体などの、有形的媒体で具現化されたプログラムコード（つまり、命令）の形体にすることができ、そこでは、プログラムコードがコンピュータなどのマシンにロードされ、マシンによって実行されるとき、そのマシンは本明細書に開示の側面を実施するための装置になる。プログラマブルコンピュータ上でプログラムコードが実行される場合には、コンピューティングデバイスは、プロセッサ、プロセッサによって読み取り可能である記憶媒体（揮発性および不揮発性メモリおよび／または記憶エレメントを含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを搭載しているのが一般的である。これらの側面に従って提供されるソフトウェアを実現し、または利用することができる１または２以上のプログラムは、好ましくは、コンピュータと通信するように高水準手続き型またはオブジェクト指向プログラミング言語で書かれている。しかし、これらのプログラムは、それが望ましければ、アセンブリ言語またはマシン言語で書くこともできる。いずれの場合も、言語はコンパイル型または解釈型言語にすることが可能で、ハードウェアで実現したものと組み合わせることができる。
【００５３】
本明細書に開示の側面の方法および装置は、電気的配線またはケーブリング、光ファイバ、またはその他のいずれかの伝送形態などの、なんらかの伝送媒体上を送信されるプログラムコードの形で具現化されたコミュニケーションを通して実施することも可能であり、そこでは、プログラムコードが受信され、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス(programmable logic device: PLD)、クライアントマシンなどの、マシンにロードされ、マシンによって実行されるとき、そのマシンは本明細書に開示の主題を実施するための装置になる。汎用プロセッサ上に実装されているときは、プログラムコードはプロセッサと組み合わさって、本明細書に開示の主題の機能を起動するように動作するユニークな装置を提供する。さらに、本側面と関連して使用される記憶手法は、常にハードウェアとソフトウェアを組みあせたものにすることができる。
【００５４】
上述した側面は、種々の図面の好適実施形態と関連付けて説明してきたが、当然に理解されるように、他の類似実施形態を使用することも、上述した実施形態に変更または追加を行なって、その範囲から逸脱することなく同一機能を実行することも可能である。例えば、この分野の精通者ならば認識されるように、本明細書に記載されている方法は、ゲーミングコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなどのように、ワイヤードであるか、ワイヤレスであるかに関係なく、どのようなコンピューティングデバイスまたは環境にも適用することができ、さらに、通信ネットワークを介して接続され、ネットワークを通してやりとりする、かかるコンピューティングデバイスの数に関係なく適用することが可能である。
【００５５】
さらに、当然に理解されるように、特に、ネットワーク化されたワイヤレスデバイスの数の増加に伴って、ハンドヘルドデバイスのオペレーティングシステムおよびその他のアプリケーション固有のオペレーティングシステムを含む、さまざまなコンピュータプラットフォームが意図されている。さらに、本明細書に開示の主題の機能は、複数の処理チップまたはデバイス内に、またはこれらにまたがって実装させることが可能であり、ストレージも同様に複数のデバイスにまたがって行なうことが可能である。従って、本明細書に説明した側面は、どのような単一実施形態にも限定されるものではなく、その領域または範囲は請求項の記載に従って解釈されるものである。
【００５６】
要約
以上を要約すると、種々の方法、システム、およびコンピュータ可読媒体は、上述した側面を具現化することができる。例えば、図１１においては、クローズドシステムにおいて無署名コンテンツを実行し、アクセスをセキュアにするための次のような側面が意図されている。図１１のブロック１１００において、このような実行とセキュアにすることは、ゲーミングコンソールなどのクローズドコンピューティングデバイスを使用して行なうことができ、そこではクローズドコンピューティングデバイスは、署名当局によって許可されたソフトウェアコンテンツコンポーネント、すなわち、例えば、署名付きソフトウェアを実行するように構成されている。さらに、無署名ソフトウェアコンテンツコンポーネントはそのようなクローズドコンピューティングデバイス上で実行させることができ、そこでは無署名ソフトウェアコンテンツコンポーネンツは、クローズドコンピューティングデバイスにインタフェースを仮想化させることによって、つまり、無署名ソフトウェアがブロック１１０５に示すように、クローズドシステムに対して実行できるように入力を提供させることによって、クローズドコンピューティングデバイス上で実行されている。従って、本明細書において「インタフェース」という用語は、ソフトウェアによって一般に使用されるような入力と出力を広義に解することを意図している。このような仮想化インタフェースは、前記署名当局によって許可された署名付きソフトウェアコンテンツコンポーネント用の代表的なインタフェースの提供に上乗せする形で提供されている。従って、ブロック１１００において、署名付きコンテンツがブロック１１１５において実行されているのか、無署名コンテンツがブロック１１２０において実行されているのかの判断が行なわれる。前者のケースは図１を参照して説明した従来のケースである。本明細書に図２乃至図８を参照して詳しく説明している後者のケースは、クローズドゲーミングシステムの拡張した使い方を提供している。
【００５７】
従って、すでに上述したように、および図１１のブロック１１２５に示すように、前記のインタフェースは、グラフィックレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤ（図５に最初に示されている）のうちの少なくとも１つに対応付けることができる。さらに、グラフィックスレイヤ、オーディオレイヤ、入力レイヤ、およびストレージレイヤのうちの少なくとも１つは、ブロック１１３０に示すように、無署名ソフトウェアコンテンツコンポーネントがストアされる第１のバッファ、およびデータが第１のバッファからコピーされる第２のバッファなどの、種々のバッファで構成することができる（そこでは、データは前記第２のバッファにおいて有効性検査される）。これらの側面は図６に分かりやすく示されている。従って、データは、前記有効性検査が行なわれたあと、クローズドコンピューティングデバイスに関連するリソース（メモリ、ＣＰＵアクセス、光ディスクドライブ、入力デバイス、ハードディスクドライブなど）に与えることができる。別の方法として、データは、この有効性検査が行なわれたあと、クローズドコンピューティングデバイスに関連する前記リソースに与えられる前に、リングバッファに与えることもできる。なお、この分野の精通者ならば理解されるように、これは本明細書に開示の主題の単なる一例の側面であり、この側面に限定されるものではない。
【００５８】
図８のような、他の図面に関連して上述したように、無署名ソフトウェアコンテンツコンポーネント（例えば、ユーザまたは開発者作成のゲーム）は、コンピューティングデバイスからのコネクションを通して（または別の方法では、通常のケースにおいて、ＤＶＤまたは他のなんらかの光デバイス、磁気デバイスまたは同等デバイスなどを通して）クローズドコンピューティングデバイスに提供することができる。さらに、このような提供は、コンピューティングデバイス（ＰＣ、サーバ、またはその他のゲーミングコンソールであるかに関係ない）からのコミュニケーションを通してダイナミックに行なうことも、別の方法として、このようなコンピューティングデバイスからの無署名コンテンツをストリーミングすることによって行なうこともできる。当然のことであるが、この要約は限定的ではなく、単なる例示である。また、明らかであるように、ユニークなユーザＩＤをクローズドコンピューティングデバイスに割り当てて、クローズドコンピューティングデバイスの違反有無をそのユニークなユーザＩＤを通してトラッキングするといったような、ここでは説明していないが、上述したその他の側面も、この要約に明示的に言及されていなくても、本明細書において意図されている。
【図１】
2010528343.tif 000003
【図２】
2010528343.tif 000004
【図３】
2010528343.tif 000005
【図４】
2010528343.tif 000006
【図５】
2010528343.tif 000007
【図６】
2010528343.tif 000008
【図７】
2010528343.tif 000009
【図８】
2010528343.tif 000010
【図９】
2010528343.tif 000011
【図１０】
2010528343.tif 000012
【図１１】
2010528343.tif 000013
【国際調査報告】
2010528343.tif 000014
2010528343.tif 000015