(57)【要約】  コンピューティングデバイスのブローカモジュールが、隔離されたアプリケーションから、アイテムソースの一または複数のアイテムにアクセスする要求を受け取る。要求に応じて、一または複数のアイテムのうちの、隔離されたアプリケーションがアクセスする許可を受けている各アイテムについて、アイテムソースのアイテムを表す記憶アイテムオブジェクトが生成され、隔離されたアプリケーションに返される。隔離されたアプリケーションがあるアイテムにアクセスする許可を受けているかどうかは、具体的なアイテムソース及び／または具体的なアイテムロケーションに基づく。
2014515528.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおける方法であって、
前記コンピューティングデバイスのブローカモジュールにおいて、前記コンピューティングデバイス中の隔離されたアプリケーションからの、アイテムソースの一または複数のアイテムにアクセスする要求を受け取るステップと、
前記コンピューティングデバイスにおいて、前記隔離されたアプリケーションが前記一または複数のアイテムのどれにアクセスする許可を受けているかチェックするステップと、
前記隔離されたアプリケーションが前記一または複数のアイテムのうちどれにもアクセスする許可を受けていないとき、前記要求を拒絶するステップと、
許可を受けているとき、
前記隔離されたアプリケーションがアクセスする許可を受けている前記一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトを生成するステップと、
前記隔離されたアプリケーションに前記一または複数の記憶アイテムオブジェクトを返すステップとを有する、方法。
【請求項２】
前記隔離されたアプリケーションは、前記ブローカーモジュールを通して以外は前記アイテムソースへのアクセスを制限される、請求項１に記載の方法。
【請求項３】
前記隔離されたアプリケーションに前記一または複数の記憶アイテムオブジェクトを返すステップは、前記隔離されたアプリケーションにインタフェースであって、記憶アイテムオブジェクトにより表されるアイテムの一または複数の特性を読み出すことを可能にするインタフェースをエクスポーズするステップと、前記記憶アイテムオブジェクトにより表されるアイテムにおける一または複数の動作をサポートするステップとを有する、請求項１に記載の方法。
【請求項４】
前記隔離されたアプリケーションからの要求に応じて、前記一または複数の記憶アイテムオブジェクトのうちの１つを持続するステップをさらに有する、請求項１に記載の方法。
【請求項５】
前記チェックするステップは、前記隔離されたアプリケーションが前記アイテムソースのロケーションのアイテムにアクセスする許可を受けているかチェックするステップを有する、請求項１に記載の方法。
【請求項６】
前記一または複数のアイテムのうちの、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムをフィルタして、あるタイプのアイテムを排除するステップをさらに有する、請求項１に記載の方法。
【請求項７】
前記一または複数のアイテムのうち、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムを、前記要求により特定された順序で編成するステップをさらに有する、請求項１に記載の方法。
【請求項８】
前記一または複数のアイテムのうち、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムを、前記要求により特定されたグルーピングで編成するステップをさらに有する、請求項１に記載の方法。
【請求項９】
前記要求は検索基準を含み、前記一または複数のアイテムは前記検索基準を満たす一または複数のアイテムを含む、請求項１に記載の方法。
【請求項１０】
コンピューティングデバイスであって、アプリケーションを含み、前記アプリケーションは、前記コンピューティングデバイスの一または複数のプロセッサにより実行されたとき、前記一または複数のプロセッサに、
ブローカモジュールのアプリケーションプログラミングインタフェース（ＡＰＩ）を起動して、アイテムソースの一または複数のアイテムへのアクセスを要求するステップであって、前記アプリケーションは前記一または複数のプロセッサにより実行され、前記ブローカモジュールを通して意外に前記アイテムソースへのアクセスを制限される、隔離されたアプリケーションを含む、ステップと、
前記一または複数のアイテムのうちの、前記隔離されたアプリケーションがアクセスする許可を受けたアイテムを含む少なくとも１つの記憶アイテムオブジェクトを、前記ブローカーモジュールから受け取るステップと、
を実行させる複数の命令を有する、コンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
ユーザは、様々な異なるソースから広い範囲のアプリケーションにアクセスする。例えば、ユーザは、従来、コンピュータ読み取り可能記憶媒体（光ディスクなど）に記憶された「ブリックアンドモルタル」からアプリケーションを取得して、そのアプリケーションをユーザの自宅のコンピューティングデバイスにインストールする。これらのアプリケーションは、一般的に、評判のよいデベロッパにより提供され、信頼できると考えられた。
【０００２】
その後、ユーザがネットワークにアクセスして、アプリケーションを見つけ、インストールする方法が開発された。例えば、インターネットを介してアプリケーションマーケットプレースにアクセスして、アプリケーションを購入することができる。ある場合には、アプリケーションマーケットプレースは、複数のアプリケーションを含み、それらは様々な異なるデベロッパに因るものである。しかし、利用可能にされるアプリケーション数は多く、それらのアプリケーションを提供するデベロッパのばらつきがあるので、アプリケーションの機能性を信頼できる程度は変わり得る。例えば、アプリケーションは欠陥のある機能を有したり、悪意者により書かれていたり、ということがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本欄では、発明の詳細な説明で詳しく説明するコンセプトの一部を選んで、簡単に説明する。本欄は、特許を請求する主題の重要な特徴や本質的な特徴を特定するものではなく、特許を請求する主題の範囲を限定するものでもない。
【０００４】
一または複数の態様によれば、コンピューティングデバイスのブローカーモジュールにおいて要求を受けとる。受け取られる要求は、コンピューティングデバイス中の隔離されたアプリケーションからの、アイテムソースの一または複数のアイテムにアクセスする要求である。隔離されたアプリケーションが、アイテムソースの一または複数のアイテムのどれに（もしあれば）アクセスする権限を有するかチェックする。隔離されたアプリケーションがアクセスする権限を有する、一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトが生成され、生成された記憶アイテムオブジェクトが隔離されたアプリケーションに返される。しかし、隔離されたアプリケーションが一または複数のアイテムのうちどれにもアクセスする権限を有さないとき、受け取られた要求は拒絶される。
【０００５】
一または複数の態様では、アプリケーションはブローカーモジュールのアプリケーションプログラミングインタフェース（ＡＰＩ）を起動して、アイテムソースの一または複数のアイテムへのアクセスを要求する。アプリケーションは、ブローカーモジュールを通して以外はアイテムソースへのアクセスを制限されている隔離されたアプリケーションである。少なくとも一記憶アイテムオブジェクトがブローカーモジュールから受け取られ、各記憶アイテムオブジェクトは隔離されたアプリケーションがアクセスする権限を与えられた一または複数のアイテムのうちのアイテムを含む。
【図面の簡単な説明】
【０００６】
詳細な説明は添付した図面を参照して説明する。図中、参照数字の最も左の桁は、その参照数字が最初に現れる図面を指す。説明と図面の異なる箇所で同じ参照番号を用いるが、それは同様の又は同一のアイテムを示す。
【図１】ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装する一システム例を示す。
【図２】ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装する他の一システム例を示す。
【図３】一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法のデータフローをさらに詳細に説明する図である。
【図４】一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順を説明する図である。
【図５】一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順を説明する図である。
【発明を実施するための形態】
【０００７】
概要
ここで、隔離されたアプリケーションのためのブローカードアイテムアクセスを説明する。ブローカーモジュールは、隔離されたアプリケーションと、一または複数のアイテムソース（例えば、ファイルシステム、デバイス、他の一アプリケーションなど）との間にある。アイテムソースのアイテムにアクセスするため、隔離されたアプリケーションは、ブローカーモジュールのアプリケーションプログラミングインタフェース（ＡＰＩ）を起動することにより、アイテムへのアクセスを要求する。隔離されたアプリケーションが要求されたアイテムへのアクセスを許可されると、ブローカーモジュールは要求されたアイテムにアクセスして、その隔離されたアプリケーションに、要求されたアイテムの表現であるオブジェクトを返す。隔離されたアプリケーションが要求されたアイテムへのアクセスを許可されていないと、ブローカーモジュールは要求されたアイテムへのアクセスを拒否して、その隔離されたアプリケーションに、要求されたアイテムの表現であるオブジェクトを返す。ブローカーモジュールとＡＰＩは、以下により詳しく説明する。
【０００８】
以下の説明では、ここに説明する方法を実行するように動作可能なシステム例をまず説明する。次に、そのシステム例やその他のシステムにおいて動作可能な方法例を説明する。同様に、システム例は方法例の実行には限定されない。
【０００９】
システム例
図１は、ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装するシステム例１００を示す。例示のシステム１００は、コンピューティングデバイス１０２を含む。コンピューティングデバイス１０２はいろいろな方法で構成できる。例えば、コンピューティングデバイス１０２は、ネットワーク１０４により通信できるコンピュータとして構成できる。コンピュータは、例えば、デスクトップコンピュータ、タブレットまたはノートパッドコンピュータ、移動局、エンターテイメント機器、ディスプレイデバイスと通信可能に結合したセットトップボックス、テレビジョンその他のディスプレイデバイス、セルラ方式その他の無線電話、ゲームコンソールなどを含む。
【００１０】
コンピューティングデバイス１０２は、大きなメモリとプロセッサリソースとを有するフルソースデバイス（例えば、パーソナルコンピュータ、ゲームコンソールなど）からメモリ及び／または処理リソースが制限された低リソースデバイス（例えば、従来のセットトップボックス、ハンドヘルドゲームコンソールなど）まである。また、単一のコンピューティングデバイス１０２を示すが、コンピューティングデバイス１０２は異なる複数のデバイスを、例えば、会社の業務に用いられる複数のサーバ、リモートコントロールとセットトップボックスの組合せ、画像キャプチャデバイス（例えば、カメラ）、ジェスチャをキャプチャするように構成されたゲームコンソールなどを表していてもよい。
【００１１】
また、コンピューティングデバイス１０２は、そのコンピューティングデバイス１０２のハードウェアに動作を実行させる、例えば、プロセッサ、機能ブロックなどを設定する、エンティティ（例えば、ソフトウェア）を含んでいてもよい。例えば、コンピューティングデバイス１０２は、コンピューティングデバイスに、より具体的にはコンピューティングデバイスのハードウェアに動作を実行させる命令を保持するように構成されたコンピュータ読み取り可能媒体を含んでもよい。このように、命令は、動作を実行するようにハードウェアを設定するように機能し、このようにハードウェアが動作を実行するように変換する。命令は、異なる様々な構成により、コンピュータ読み取り可能媒体によりコンピューティングデバイス１０２に提供される。
【００１２】
コンピュータ読み取り可能媒体のかかる一構成は、信号搬送媒体であり、ネットワーク１０４などを介してコンピューティングデバイス１０２のハードウェアに命令を（例えば、搬送波のように）伝送するように構成される。また、コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体として構成でき、信号搬送媒体ではない。コンピュータ読み取り可能記憶媒体の例には、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、光ディスク（例えば、ＤＶＤやＣＤ）、フラッシュメモリ、ハードディスクメモリ、及びその他のメモリデバイスであって磁気、光、その他の技術を用いて命令その他のデータを記憶するものが含まれる。
【００１３】
ネットワーク１０４には異なるいろいろな構成を仮定できる。例えば、ネットワーク１０４は、インターネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、無線ネットワーク、公衆電話ネットワーク、イントラネット、これらの組合せなどが含まれる。さらに、単一のネットワーク１０４を示したが、ネットワーク１０４は複数のネットワークを含むように構成することもできる。
【００１４】
コンピューティングデバイス１０２は、アイテム管理モジュール１０６を含むものとして例示されている。アイテム管理モジュール１０６は、一または複数のアイテムソース１０８及び／または１１０へのアクセスを管理する機能を表す。アイテム管理モジュール１０６は、いろいろな方法で実装できる。例えば、スタンドアロンアプリケーションとして、コンピューティングデバイス１０２のオペレーティングシステムの一部として、などとして実装できる。
【００１５】
アイテムソース１０８は、異なる様々なタイプのアイテム１１２を整理して記憶する方法を用いる。アイテムとは、アプリケーションにより要求され得るデータやコンテンツを言う。例えば、アイテムは、ファイル、フォルダまたはディレクトリ、ＵＲＩ（uniform  resource  identifier）、ＵＲＬ（uniform  resource  locator）またはその他のリンク、圧縮されたファイルまたはファイルコレクション（例えば、ｚｉｐファイルまたはキャビネットファイル）、他のアプリケーションにより維持されたファイル（または別の方法で維持されたコンテンツ）などである。アイテムソース１０８は、アイテムを整理して記憶する様々な方法を利用して、異なるいろいろな方法で実装できる。例えば、アイテムソース１０８は、コンピューティングデバイス１０２のファイルシステム、コンピューティングデバイス１０２の記憶システム、コンピューティングデバイス１０２上で実行されている他のアプリケーション（例えば、それ自体がアイテムの整理と記憶を管理するアプリケーション）、データベースなどである。同様に、アイテムソース１１０は、異なるいろいろな方法で実装でき、ネットワーク１０４によりコンピューティングデバイス１０２によりアクセスできるアイテム１１４を整理し記憶できるいろいろな方法を用いることができる。アイテムソース１１０は、アイテムソース１１０は、例えば、サービスプロバイダ（例えば、コンピューティングデバイス１０２と同様の及び／または異なる方法で構成された一または複数のコンピューティングデバイスを用いて実装されたもの）、サービスプロバイダのファイルシステム、サービスプロバイダの記憶システム、サービスプロバイダにおいて実行されている他のアプリケーション、メディアサーバなどであり得る。
【００１６】
アプリケーション１１６は、一または複数のプログラム、スクリプト、またはその他の命令のコレクションであってコンピューティングデバイス１０２において実行されているものである。アプリケーション１１６は、異なるいろいろな構成を仮定できる。例えば、エンターテイメントアプリケーション（例えば、ゲームまたはオーディオ／ビデオプレーヤ）、ユーティリティアプリケーション（例えば、ワードプロセッサまたはウェブブラウザ）、リファレンスアプリケーション（例えば、辞書または百科事典）などの構成でよい。アプリケーション１１６は、隔離されたアプリケーションと呼ぶが、それはアプリケーション１１６がコンピューティングデバイス１０２のリソース（例えば、ネットワーク接続されたコンピュータ、インターネット、モジュール、デバイス、メモリ、その他のアプリケーション）にアクセスするアプリケーション１１６の能力が制限されるように実行されているからである。コンピューティングデバイス１０２のオペレーティングシステム（及び／またはその他のソフトウェア、ファームウェア、及び／またはハードウェア）は、アプリケーション１１６に、アプリケーション１１６に割り当てられたまたは利用可能とされたコンピューティングデバイス１０２のメモリその他のリソースにアクセスさせるが、アプリケーション１１６に、コンピューティングデバイス１０２のその他のメモリ、リソース、及び／またはその上で実行されているアプリケーションへはアクセスさせない。これは、コンピューティングデバイス上で実行されている他のアプリケーションを保護して、アプリケーション１１６と干渉しないようにし、アプリケーション１１６を保護して、コンピューティングデバイス１０２上で実行されている他のアプリケーションにより干渉されないようにして、すなわちアプリケーション１１６をコンピューティングデバイス１０２上の他のアプリケーションから隔離（isolate）している。隔離の一部として、コンピューティングデバイス１０２のオペレーティングシステム（及び／または他のソフトウェア、ファームウェア、及び／またはハードウェア）は、アプリケーション１１６が、後でより詳細に説明するアイテム管理モジュール１０６を通して意外には、アイテムソース１０８及び／またはアイテムソース１１０にアクセスしないようにする。
【００１７】
一または複数の実施形態では、アプリケーション１１６はサンドボックスでアプリケーション１１６を実行することにより、制限的に実行される。コンピューティングデバイス１０２には単一のアプリケーション１１６を例示したが、留意点として、コンピューティングデバイス１０２では複数のアプリケーションを同時に実行できる（各アプリケーションはそれ自体のサンドボックス中で実行される）。
【００１８】
アイテム管理モジュール１０６は、さらに、ブローカモジュール１２０とピッカーモジュール１２２とを含むように例示されている。ブローカモジュール１２０は、アイテムソース１０８及び／または１１０へのアプリケーション１１６のアクセスを管理するアイテム管理モジュール１０６の機能を表す。ブローカモジュール１２０は、例えば、アプリケーション１１６により要求されたアイテム１１２及び／または１１４を発見（locate）し、発見されたアイテム１１２及び／または１１４をアプリケーション１１６に提供する仲介者として機能できる。アプリケーション１１６は、ブローカモジュール１２０を通してアイテム１１２及び／または１１４にアクセスできるが、隔離されたアプリケーションなので、アイテムソース１０８及び／または１１０に（及びこれらのアイテムソース内のアイテム１１２及び／または１１４に）アクセスすることは制限されている。さらに、アイテム１１２及び／または１１４は、アプリケーション１１６に提供され得る。アプリケーション１１６は、アイテム１１２及び／または１１４がどこで取得されたかを知る必要はなく、例えば、アプリケーション１１６はアイテムソース１０８及び／または１１０により用いられる名前空間を知らなくてもよい。これにより、アプリケーションはいろいろなアイテムソースからのアイテムを、一律に、アイテムソースの種類によらずに扱うことができる。
【００１９】
また、ブローカーモジュール１２０は、任意的に、ピッカーモジュール１２２を利用して、アイテムソース１０８及び／または１１０にアクセスする別の方法を提供できる。ピッカーモジュール１２２は、トラステッドメソッドを提供して、アプリケーション（例えば、ブローカモジュール１２０を介してアイテムソース１０８及び／または１１０へのプログラムされたアクセスをしないもの）に、アイテムソース１０８及び／または１１０（及びこれらのアイテムソース中のアイテム１１２及び／または１１４）にアクセスさせる。
【００２０】
一般的に、ここに説明する機能はどれも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定的な論理回路）、マニュアル処理、またはこれらの組合せで実装できる。ここで用いる「モジュール」と「機能」との用語は、一般的に、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを表す。ソフトウェア実装の場合、モジュール、機能、ロジック（logic）は、ハードウェアにより、例えば一または複数のプロセッサ及び／または機能ブロックにより、規定された動作を実行する命令とハードウェアを表す。
【００２１】
図２は、ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装するシステム例２００を示す。例示したように、システム２００は、アイテム管理方法を実行する、図１のコンピューティングデバイス１０２のアイテム管理モジュール１０６により、部分的に実装できる。例えば、アイテム管理モジュール１０６は、オペレーティングシステム、オペレーティングシステムと協働して動作するアプリケーション、スタンドアロンアプリケーションなどとして組み込める。どこに組み込まれているかにかかわらず、アイテム管理モジュール１０６は、ローカルに及び／またはリモートに（例えば、図１のネットワーク１０４を介して）、コンピューティングデバイスにアクセスできるアイテムを管理する方法を利用できる。
【００２２】
システム２００は、例示したように、アプリケーション２０２（例えば、図１のアプリケーション１１６）、アイテムソース２０４（例えば、図１のアイテムソース１０８または１１０）、及びアイテム２０６（例えば、図１のアイテム１１２または１１４）を含む。この例では、アプリケーション２０２は、アプリケーション２０２に対してブローカモジュール１２０によりエクスポーズされた一または複数のアプリケーションプログラミングインタフェース（ＡＰＩ）２１０を介して、ブローカモジュール１２０と通信して、アイテムソース２０４にアクセスする。図２には単一のアプリケーション２０２と単一のアイテムソース２０４を例示したが、留意点として、システム２００は、任意数のアイテムソース２０４にアクセスする任意数のアプリケーション２０２を含むことができる。
【００２３】
アプリケーション２０２は、特定のアイテムソース及び／または特定のアイテムロケーションにアクセスする許可を受けることができる。この許可は、一般的には、アプリケーション２０２がアイテム２０６へのアクセスを要求する前に与えられるが、異なる時間及び異なる方法で与えることができる。一または複数の実施形態では、この許可は、アプリケーション２０２がシステム２００を実装するコンピューティングデバイスにダウンロードまたはインストールされる時に行われる。例えば、ダウンロードまたはインストールのプロセスの一部として、ユーザは、アプリケーション２０２がアクセスしようとする特定のアイテムソース及び／または特定のアイテムロケーションを通知され、アプリケーション２０２がこれらの特定のアイテムソース及び／または特定のアイテムロケーションにアクセスする許可をうけているかに関する入力（例えば、特定のボタンまたはその他のユーザインタフェース（ＵＩ）部分）を提供できる。あるいは、この許可は他の時間に、例えば、アプリケーション２０２が修正または更新された時に、システム２００のユーザによるその後のアプリケーション２０２の設定の時等に、与えられても良い。どのように許可が与えられるかにかかわらず、システム２００は、アプリケーション２０２がどのアイテムソース及び／またはアイテムロケーションにアクセスする許可をうけているかという記録を含む許可記憶部（authorization  store）２０８を保持する。許可記憶部２０８は、ブローカモジュール１２０に対してアクセス可能であり、アプリケーション２０２がどのアイテムソース及び／またはアイテムロケーションにアクセスする許可を受けているかという記録を、ブローカモジュール１２０が取得して利用できる。
【００２４】
アプリケーション２０２は、ブローカモジュール１２０によりサポートされた異なるいろいろなアイテムソース２０４のいずれにもアクセスする許可を受けることができる。例えば、アプリケーション２０２がアクセスする許可を受けられるアイテムソースは、ファイルシステム、コンピューティングデバイス上で実行されている一または複数のアプリケーション、サービスプロバイダにより実装されている一または複数の記憶システムなどである。
【００２５】
また、アプリケーション２０２は、異なるいろいろなアイテムロケーションのいずれにもアクセスする許可を受けられる。異なるアイテムソースに対して異なるタイプのアイテムロケーションを画定することができる。例えば、アイテムソースがファイルシステムである場合、アイテムロケーションはフォルダやライブラリ（例えば、ドキュメントライブラリ、ミュージックライブラリ、ビデオライブラリ、写真ライブラリ）として画定できる。ライブラリは、一または複数のロケーション（例えば、一または複数のデバイス上のフォルダやディレクトリ）のコレクションを指し、ライブラリに含まれたロケーションは任意的にシステム２００のユーザにより修正され得る。他の例として、アイテムソースがアプリケーションである場合、アイテムロケーションはそのアプリケーションにより画定されたアイテムのグルーピングその他のコレクションであってもよい。
【００２６】
ブローカモジュール１２０はアイテムアクセスモジュール２１２を含む。このアイテムアクセスモジュール２１２は、アプリケーション２０２からのアイテムにアクセスする要求に応答するブローカモジュール１２０の機能を表す。ＡＰＩ２１０は、アイテムへの異なるいろいろなタイプのアクセスのためにアプリケーション２０２により起動され得るいろいろなインタフェースをサポートする。例えば、ＡＰＩ２１０は、アイテムを読むためのインタフェース、アイテムを書くためのインタフェース、アイテムを作成するためのインタフェース、アイテムを削除するためのインタフェース、アイテムを修正するためのインタフェース、アイテムをコピーするためのインタフェース、アイテムを動かすためのインタフェース、アイテムを名称変更するためのインタフェース、アイテムの特性を読み出すためのインタフェースなどを含む。アプリケーション２０２からアイテムソースを抽象化して、異なるアイテムソースに対して同じインタフェースを用いることができる。例えば、アイテムを読み出すまたは列挙するために起動されるＡＰＩを、ブローカモジュール１２０によりサポートされた複数のアイテムソースに、及びアプリケーション２０２がアクセスする許可を受けているブローカモジュール１２０によりサポートされたアイテムソース等に、適用できる。他の一例として、アプリケーション２０２は、ＡＰＩを起動してアイテムを書き込むまたは名称変更する時、アイテムソースを指定する必要はない（例えば、アイテムソースは、後で詳細に説明するように、記憶アイテムオブジェクト中に見つかるまたは内在している）。
【００２７】
あるいは、要求に対してアイテムソースを特定するインタフェースのパラメータを含んでいてもよい。例えば、ＡＰＩ２１０は、ファイルシステムソース及びサービスプロバイダ記憶システムソースの両方に使える読み出しアイテムインタフェースであって、その読み出しアイテムインタフェースのパラメータがアプリケーション２０２の２つのソースのどちらがアイテムの読み出しを要求しているか示すパラメータを有するものを含み得る。他の代替策として、異なるアイテムソースに対して異なるインタフェースを用いることもできる。例えば、ＡＰＩ２１０は、ファイルシステムソースからアイテムを読み出すのに使われるファイルシステム読み出しアイテムインタフェース、サービスプロバイダ記憶システムソースからアイテムを読み出すのに使われるサービスプロバイダ読み出しアイテムインタフェースを含む。
【００２８】
アプリケーション２０２は、一または複数のＡＰＩ２１０を起動して、アイテムソースの（例えば、アイテムソースに記憶された）一または複数のアイテムへのアクセスを要求する。要求を受け取ると、アイテムアクセスモジュール２１２は、アプリケーション２０２がアクセスする許可を受けているアイテムソース及び／またはアイテムロケーションの記録をチェックし、この記録に基づいて、要求されたアイテムにアクセスする許可をアプリケーションが受けているか判断する。要求された一または複数のアイテムのいずれにもアクセスする許可をアプリケーション２０２が受けていない（アプリケーションが一または複数のアイテムのどれにもアクセスする許可を受けていない）とき、アイテムアクセスモジュール２１２は要求されたアクセスをさせない。例えば、アプリケーション２０２が写真ライブラリ中のファイルへのアクセスを要求したが、音楽ライブラリ中のファイルへのアクセスしか許可を受けていない場合、アイテムアクセスモジュール２１２は要求されたアクセスをさせない。アイテムアクセスモジュール２１２は、任意的に、（一または複数のアイテムへのアクセスを要求するアプリケーションにより起動されたＡＰＩ２１０に関連する結果値として）要求されたアクセスが拒絶されたとの表示を返す。
【００２９】
しかし、アプリケーション２０２が、要求された一または複数のアイテムのどれかにアクセスする許可を受けているとき、アイテムアクスモジュール２１２は、アプリケーション２０２がアクセスする許可を受けている一または複数のアイテムのうちのアイテムを取得し、それへのアクセスを許可する。要求された一または複数のアイテムがブローカモジュール１２０により取得される方法は、アイテムソース１０８に基づき変わってもよく、ブローカモジュール１２０はアイテムソース１０８にいかにアクセスするかの表示を有する（または取得できる）ように構成される。アイテムアクセスモジュール２１２は、アプリケーション２０２がアクセスを許可されている各アイテムを表す記憶アイテムオブジェクト（storage  item  object）を生成する。この記憶アイテムオブジェクトは、そのアイテムに関連する様々な情報を含み、任意的に、アイテムのデータ及び／またはコンテンツを含む。アイテムアクセスモジュール２１２は、この生成された記憶アイテムオブジェクトをアプリケーション２０２に返す。
【００３０】
あるいは、ブローカモジュール１２０は、前もって受け取ったアイテムアクセスに許可を用いるのではなく、ピッカーモジュール１２２を用いて、アプリケーション２０２により要求された一または複数のアイテムへのアクセスをする。一または複数のアイテムへのアクセス要求を受け取ると、ブローカモジュール１２０は、ユーザインタフェースを生成するためピッカーモジュール１２２を実装し、ピッカーモジュール１２２はピッカーＵＩモジュール２２０を起動する。ピッカーＵＩモジュール２２０は、ユーザに、そのユーザが一または複数のアイテムへのアクセスを許可するか問うＵＩを提示し、ユーザに一または複数のアイテムへナビゲートまたは発見させる。ユーザがアプリケーション２０２に一または複数のアイテムへのアクセスを許可するかどうかを示すユーザ入力を受け取る。ユーザがアプリケーション２０２に一または複数のアイテムへのアクセスを許可すると、ピッカーモジュール１２２は一または複数のアイテムを取得し、記憶アイテムオブジェクト表現１１２の生成のため、取得した一または複数のアイテムをアイテムアクセスモジュール２１２に返す。あるいは、ピッカーモジュール１２２は、一または複数のアイテムを取得するのではなく、上記の通りモジュール２１２が一または複数のアイテムを取得するためにアイテムアクセスモジュール２１２に表示を返してもよい。
【００３１】
アイテムアクセスモジュール２１２は、記憶アイテムオブジェクトをアプリケーション２０２に返す。記憶アイテムオブジェクトはアイテムを表す。記憶アイテムオブジェクトはアイテムの抽象化または表現である。記憶アイテムオブジェクトにより表されたアイテムに対するアプリケーション２０２によるアクセス（例えば、読み取り、書き込み、修正など）は、ブローカモジュール１２０及び／または記憶アイテムオブジェクト自体を通して行われる。記憶アイテムオブジェクトは異なる様々な形式を取り得る。一または複数の実施形態では、記憶アイテムオブジェクトは、ブローカモジュール１２０により生成され、アプリケーション２０２に対してエクスポーズ（expose）されたオブジェクトである。ブローカモジュール１２０は、記憶アイテムオブジェクトの識別子その他の識別情報（identification）をアプリケーション２０２に提供することにより、かかるアプリケーション２０２に記憶アイテムオブジェクトを返す。記憶アイテムオブジェクトの様々な方法やオペレーションは、アプリケーション２０２により起動され、記憶アイテムオブジェクトにより表されたアイテムに関する情報を取得し、及び／または記憶アイテムオブジェクトにより表されたアイテムに様々なオペレーションを行うことができる。あるいは、記憶アイテムオブジェクトは、記憶アイテムオブジェクトにより表されるアイテムに関する様々な情報を、及び／または記憶アイテムオブジェクトに様々なオペレーションを行うためにアプリケーション２０２により起動される方法またはオペレーションを含むデータ構造（data  structure）である。ブローカモジュール１２０は、データ構造をアプリケーション２０２に提供することにより、かかる記憶アイテムオブジェクトを返す。
【００３２】
一または複数の実施形態では、記憶アイテムオブジェクトは、特性部、サムネイル部、コンテンツ部、及びオペレーション部を含む。記憶アイテムオブジェクトの特性部は、アイテムの様々な特性や属性を含む。アイテムに対してアイテムソース２０４により維持される異なる様々な特性や属性は、記憶アイテムオブジェクトの特性部に含めることができる。例えば、記憶アイテムオブジェクトの特性部は、アイテムの名称、アイテムの（例えば、バイト単位の）サイズ、アイテムのタイプ（例えば、写真タイプ、音楽タイプ）などを含み得る。
【００３３】
記憶アイテムオブジェクトのサムネイル部は、アイテムのビジュアル表現を含む。このサムネイルは画像または画像シーケンス（例えば、ビデオ）であってもよい。サムネイルは、例えば、画像の一部（例えば、文書の１頁や写真の一部）、アイテムを縮小したもの（例えば、写真を縮小したもの）、アイテムのタイプを表すアイコンなどであってもよい。
【００３４】
記憶アイテムオブジェクトのコンテンツ部分は、アイテムのコンテンツまたはアイテムのコンテンツをいかに取得するかの表示を含む。例えば、アイテムが写真であるとき、コンテンツ部分はその写真自体のデータを、またはその写真のデータが記憶されているところへのリンク（例えば、ＵＲＬ（Uniform  Resource  Locator）またはパス）を含み得る。アイテムは、アプリケーション２０２にストリーミングされるデータ（例えば、音楽ファイルやビデオファイル）であってもよく、そのアイテムのコンテンツを以下に取得するかの表示は、ストリーミングされるデータ（へのリンク等）の表示を含んでいてもよい。また、コンテンツ部分は、アイテムを読み書きするオペレーションなどのアイテムに対するオペレーションを含み得る。
【００３５】
記憶アイテムオブジェクトのオペレーション部は、アイテムに対して行える一または複数の方法またはオペレーションを含む。異なる様々なオペレーションをアイテムに対して行え、アイテムへの異なる様々なアクセスを提供できる。具体的なオペレーションは、アイテムのタイプに少なくとも部分的に基づき変わり得る。例えば、オペレーションには、アイテムを名称変更するオペレーション、アイテムを削除するオペレーションなどが含まれる。アイテムがファイルシステムのフォルダである場合、オペレーションは、フォルダ内のファイルの列挙、フォルダ内のファイルのソート、フォルダ内のファイルの削除、フォルダへの新しいファイルの追加、フォルダまたはそのフォルダ中のファイルの名称変更などが含まれる。
【００３６】
記憶アイテムオブジェクトの形式にかかわらず、記憶アイテムオブジェクトに様々なオペレーションを実行でき、記憶アイテムオブジェクトはアイテムのコンテンツ、またはアイテムのコンテンツを以下に取得するかの表示を含む。このように、記憶アイテムオブジェクトは、一または複数のアイテムを含むものと見なすこともできる。例えば、フォルダの記憶アイテムオブジェクトは、そのフォルダ内のファイルを表す一または複数のアイテムを含み得る。
【００３７】
ここで記憶アイテムオブジェクトを説明するが、留意点として、異なるタイプの記憶アイテムオブジェクトをサポートすることができる。異なるタイプの記憶アイテムオブジェクトは、記憶タイムのタイプに関する異なる特性、オペレーションなどを含み得る。例えば、記憶ファイルオブジェクトと記憶フォルダオブジェクトを使える。記憶ファイルオブジェクトは、ファイル特有の特性とオペレーション（例えば、ファイル名称変更オペレーション）を含み、記憶フォルダオブジェクトは、フォルダに特有な特性とオペレーション（例えば、フォルダ中のファイルを列挙する列挙オペレーション）を含む。他の一例として、デバイスオブジェクトとネットワークノードオブジェクトを用いることができ、デバイスオブジェクトはデバイスに特有な特性とオペレーションを含み、ネットワークノードオブジェクトはネットワークノードに特有の特性とオペレーションを含む。
【００３８】
アプリケーション２０２に返される一または複数の記憶アイテムオブジェクトは、アプリケーション２０２により主張され得る。例えば、アプリケーション２０２はＭＲＵ（most  recently  used）リストを用いて、アプリケーション２０２により最も最近用いられた一または複数のアイテムを容易に特定できる。一または複数の実施形態では、ブローカモジュール１２０が記憶アイテムオブジェクトの持続的記憶を管理する。ブローカモジュール１２０は、一般的に、隔離された各アプリケーションに対して持続的アクセスリストを保持する。任意的に、隔離された複数のアプリケーションが１つの持続的アクセスリストを共有してもよい。持続的アクセスリストは、持続的な記憶アイテムオブジェクトのリストであり、アプリケーション２０２はＡＰＩ２１０を起動して、持続的アクセスリスト中の持続的記憶アイテムオブジェクトを読み出して使うことができる。持続的記憶アイテムが持続的アクセスリストに追加されたとき、ブローカモジュール１２０は、アプリケーション２０２にトークンその他の持続的記憶アイテムオブジェクトの識別子を提供でき、アプリケーション２０２は、かかるトークンその他の識別子を用いて、持続的アクセスリストから持続的記憶アイテムオブジェクトを読み出すことができる。ブローカモジュール１２０は、アプリケーション２０２の持続的記憶アイテムオブジェクトの複数のリストを、例えばＭＲＵリストとそれとは別の持続的アクセスリストを保持することもできる（例えば、アプリケーション２０２は、アイテムが最近どう使われたかに係わらず必要なだけ記憶アイテムオブジェクトを持続できる）。ブローカモジュール１２０は、任意的に、異なるリストに対して異なる寿命を実装して、リストの記憶アイテムオブジェクトを保持する異なる時間（及び／または時間を決定する異なる方法）を反映することができる。
【００３９】
持続的記憶アイテムオブジェクトは、デバイス識別子、オペレーティングシステム（例えば、ＮＴＦＳ）オブジェクト識別子、名前／タイムスタンプマッチング、これらの組合せなど、異なるいろいろな方法で特定できる。このように、アイテムが名称変更されたり移動されたりしても、持続的記憶アイテムオブジェクトを特定できる。また、記憶アイテムオブジェクトはアプリケーション２０２の複数の実行にわたり持続することができ、アプリケーション２０２が終了されてから再び実行された時（例えば、シャットダウンされてから再び起動された時）、アプリケーション２０２は持続的記憶アイテムオブジェクトを読み出して使用できる。
【００４０】
あるいは、ブローカモジュール１２０ではなくアプリケーション２０２が、持続的な記憶アイテムオブジェクトの記憶を管理できる。アプリケーション２０２は、異なるロケーションで、例えば、アプリケーション２０２に割り当てられたまたは利用可能にされたメモリまたはその他の記憶ロケーションに記憶して、記憶アイテムオブジェクトを持続することができる。このように、アプリケーション２０２は、後でアイテムが再び必要になると、ブローカモジュール１２０からアイテムを再要求するのではなく、アイテムを表す持続的記憶アイテムオブジェクトを用いることができる。
【００４１】
ブローカモジュール１２０は任意的にフィルタリングモジュール２１４を含む。このフィルタリングモジュールは、アプリケーション２０２によりアクセスできるアイテムをフィルタするブローカモジュール１２０の機能を表す。アプリケーション２０２は、上記の通り、特定のアイテムソース及び／または特定のアイテムロケーションにアクセスする許可を受けている。フィルタリングモジュール２１４により、アクセス要求をさらにフィルタして、アクセスが許可されていても、特定のアイテムロケーションにアプリケーション２０２がアクセスしないようにできる。フィルタリングモジュール２１４は、アイテムアクセスモジュール２１２がこれらのアイテムを表す生成された記憶アイテムを返す前に、アイテムソースからのアイテムをフィルタする。このように、フィルタされたアイテムを表す記憶アイテムは、アプリケーション２０２がアクセスを許可されたそのアイテムソース及び／またはアイテムロケーションにかかわらず、アプリケーション２０２に返されない。
【００４２】
フィルタリングモジュール２１４は、ブローカモジュール１２０の設計者及び／またはシステム２００の管理者の希望などに基づき、特定のアイテムロケーションをフィルタするように構成できる。例えば、フィルタリングモジュール２１４は、システムファイルを記憶した特定のフォルダやディレクトリをフィルタして、アプリケーション２０２がこれらの特定のフォルダやディレクトリにアクセスすることを防止できる。他の一例として、フィルタリングモジュール２１４は、システムファイル、隠しファイルなどの特定のファイルタイプをフィルタできる。
【００４３】
また、ブローカモジュール１２０は、任意的に、編成モジュール２１６を含む。この編成モジュールは、特定の順序及び／または特定のグルーピングでアイテムを編成するブローカモジュール１２０の機能を表す。アプリケーション２０２は、ブローカモジュール１２０により特定の順序及び／またはグルーピングで編成されて返されることを要求できる。編成モジュール２１６は、異なる時に要求された順序でアイテムを編成し、例えば、アイテムアクセスモジュール２１２が要求されたアイテムを表す記憶アイテムオブジェクトを生成する前に、アクセスされたアイテムをソーティング及び／またはグルーピングしたり、アイテムアクセスモジュール２１２により生成された要求されたアイテムを表す記憶アイテムオブジェクトをソーティング及び／またはグルーピングしたりする。
【００４４】
異なる様々な順序が編成モジュール２１６によりサポートされ、異なるソート基準に基づく異なる順序が異なるアイテムタイプやアイテムロケーションについてサポートされる。例えば、アイテムは関連する日付（例えば、写真アイテムの写真が撮られた日、アイテムソース２０４にアイテムが記憶された日、音楽アイテムの歌が録音された日）に基づき（例えば、時間的に昇順または降順に）順序付けることができる。他の一例により、アイテムは、（例えば、音楽アイテムやビデオアイテムの）収録アーティストに基づき、（例えば、音楽アイテムやビデオアイテムの）アルバム名に基づき、（例えば、音楽アイテムやビデオアイテムの）ジャンルに基づき、（例えば、アルファベット順に）順序付けることができる。編成モジュール２１６は、アプリケーション２０２を選択する一組の順序付けをサポートできる。あるいは、編成モジュール２１６は、アイテムソース２０４によりサポートされるアイテムのメタデータに基づき、ソート基準をサポートできる。このように、アイテムに関連する特性、属性、その他のメタデータを、順序付けに用いるソート基準として、アプリケーション２０２により特定できる。
【００４５】
同様に、異なる様々なグルーピングが編成モジュール２１６によりサポートされ、異なるグルーピング基準に基づく異なるグルーピングが異なるアイテムタイプやアイテムロケーションについてサポートされる。例えば、アイテムはアイテムタイプによりグループ分けできる（例えば、音楽アイテムは同じグループに分けられ、文書アイテムは同じグループに分けられる）。他の一例により、アイテムは、（例えば、音楽アイテムやビデオアイテムの）収録アーティストに基づき、（例えば、音楽アイテムやビデオアイテムの）アルバム名に基づき、（例えば、音楽アイテムやビデオアイテムの）ジャンルに基づき、グループ分けすることができる。グルーピングは、一組のコンテナ記憶アイテムオブジェクトであり、各々が一または複数の記憶アイテムオブジェクトを含み、ある条件に合う記憶アイテムオブジェクトを提供するために列挙することができる。編成モジュール２１６は、アプリケーション２０２が選択できる一組のグルーピングをサポートできる。あるいは、編成モジュール２１６は、アイテムソース２０４によりサポートされるアイテムのメタデータに基づき、グルーピング基準をサポートできる。このように、アイテムに関連する特性、属性、その他のメタデータを、グルーピングに用いるグルーピング基準として、アプリケーション２０２により特定できる。
【００４６】
あるグルーピングにおいて、アイテムを様々なソート基準を用いてソートできることは上記の通りであるが、必ずしもソートしなくてもよい。さらに、アプリケーション２０２は、あるグルーピングの記憶アイテムオブジェクトの検索を要求でき、検索モジュール２１８に関して後で説明するのと同様に、異なる様々な検索基準を提供できる。
【００４７】
また、ブローカモジュール１２０は、任意的に、検索モジュール２１８を含む。検索モジュール２１８は、具体的なアイテムを検索するブローカモジュール１２０の機能を表す。アプリケーション２０２は、具体的な検索基準を満たすアイテムがブローカモジュール１２０により返されることを要求できる。検索モジュール２１８は、アイテムソース２０４を検索し、検索基準を満たす（例えば、マッチする）アイテムを探し、検索基準を満たすアイテムがアプリケーション２０２に返される。アイテムアクセスモジュール２１２が要求された検索基準を満たすアイテムを表す記憶アイテムオブジェクトを生成する前に、検索モジュール２１８が、アイテムソース２０４中のアイテムを検索して、検索基準を満たすアイテムを特定する。あるいは、検索モジュール２１８は、生成された記憶アイテムオブジェクトを検索して、検索基準を満たす記憶アイテムオブジェクトを特定し、検索基準を満たす生成された記憶アイテムオブジェクトのみがアプリケーション２０２に返される。
【００４８】
異なる様々な検索基準が検索モジュール２１８によりサポートされ得る。例えば、検索基準はアイテムタイプ（例えば、音楽ファイル）であり、その検索基準はそのアイテムタイプの任意のアイテムにより満たされるてもよいし、または検索基準は名称であり、その検索基準はその具体的な名称（例えば、ファイル名）を有するアイテムにより満たされてもよい。また、より複雑な検索基準が検索モジュール２１８によりサポートされてもよい。例えば、日付範囲、ワイルドカード値（例えば、任意の１文字を示すクエスチョンマークやゼロ以上の文字を示すアスタリスク）、ＡＱＳ（Advanced  Query  Syntax、これに関する詳細情報は米国ワシントン州レドモンド市のマイクロソフトコーポレーションから得られる）などの利用がサポートされ得る。留意点として、アプリケーション２０２は、検索基準を提供できるが、（例えば、上記の通り、許可記憶部２０８に保持されている記録に基づき、）そのアプリケーション２０２がアクセスを許可されているアイテムのみにアクセスできる。
【００４９】
また、ブローカモジュール１２０は、アプリケーション２０２がアイテムへのアクセスを許可されている場合、そのアプリケーション２０２にそのアイテムにアクセスさせる。ブローカモジュール１２０は、任意的に、アプリケーション２０２を、自動的に、かかる許可を示すユーザ入力が無くても、一または複数のアイテムロケーションにアクセスする許可を受けているものとして扱う。かかるロケーションの一例は、隔離されたすべてのアプリケーションがデータの書き込みを許可されているダウンロードフォルダである。ブローカモジュール１２０は、任意的に、（上記の通り、）アプリケーション２０２が一または複数のアイテムロケーションにアクセスを許可されるまで、アプリケーション２０２を特定タイプのアクセスに制限することができる。例えば、アプリケーション２０２は、ダウンロードフォルダにファイルを書き込むことを自動的に許可されるが、コンピューティングデバイスのユーザがアプリケーション２０２に、そのダウンロードフォルダからファイルを読み出す許可を与えた場合に限り、そのダウンロードフォルダからファイルを読み出す許可がされる。
【００５０】
ここに説明する隔離されたアプリケーションへのブローカードアイテムアクセス方法は、様々な利用シナリオをサポートする。例えば、写真編集アプリケーションは実行され、ブローカモジュールを介してファイルにアクセスできる。写真編集アプリケーションがコンピューティングデバイスにインストールされると、ユーザは、写真ライブラリ中のファイルにアクセスする許可を写真編集アプリケーションに与えることができるが、他のロケーションのファイルにアクセスする許可は与えない。動作中、写真編集アプリケーションは、ブローカモジュールに様々なファイルを要求できるが、ブローカモジュールは写真ライブラリのファイル以外のファイルを求める要求は拒絶する。写真編集アプリケーションは、写真ライブラリ以外のロケーションに記憶されたファイルへのアクセスが禁止される。
【００５１】
図３は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法のデータフロー３００をさらに詳細に説明する図である。データフロー３００を、図２のシステム２００の要素を参照して説明する。アプリケーション２０２は、ブローカモジュール１２０の一または複数のＡＰＩを起動することにより、ブローカモジュール１２０にアクセス要求３０２を送る。アクセス要求３０２は、アイテムソース２０４に、あるタイプのアクセスを求める要求である。
【００５２】
ブローカモジュール１２０は、一または複数のアクセス要求３０４をアイテムソース２０４に送り、アクセス要求３０２により要求されたアイテムを取得する。ブローカモジュール１２０は、アイテムソース２０４のＡＰＩを起動し、メッセージその他のデータ構造をアイテムソース２０４に送ることなどにより、アイテムソース２０４が実装されている方法に応じて様々な方法で一または複数のアクセス要求３０４を送ることができる。
【００５３】
一または複数のアイテムのアイテム情報３０６は、アイテムソース２０４からブローカモジュール１２０に返される。アイテム情報３０６は、アクセス要求３０２に基づく一または複数のアイテムを記述する。上記の通り、アイテム情報３０６が返されたアイテムは、例えば、あるアイテムソースにおけるアイテムの情報を含み、フィルタされたアイテムを含むことができる。アイテム情報３０６は、アイテムソース２０４の一または複数のアイテムを記述する情報を含む。アイテムを表す記憶アイテムオブジェクトに含まれうる情報は、アイテム情報３０６に含まれ得る。
【００５４】
ブローカモジュール１２０は、アイテム情報３０６に基づき一または複数の記憶アイテムオブジェクト３０８を生成する。ブローカモジュール１２０は、アイテム情報３０６中で特定された少なくとも１つのアイテムの記憶アイテムオブジェクト３０８を生成する。上記の通り、ブローカモジュール１２０は、任意的に、アイテム情報３０６から特定された一または複数のアイテムをフィルタし、フィルタされた一または複数のアイテムの記憶アイテムオブジェクト３０８を生成しない。また、上記の通り、ブローカモジュール１２０は、任意的に、記憶アイテムオブジェクト３０８を、または記憶アイテムオブジェクト３０８に含まれる情報を、ある順序またはあるグルーピングに編成することもできる。
【００５５】
ＡＰＩの例
ブローカモジュールは、一または複数のＡＰＩを隔離されたアプリケーションにエクスポーズする。一または複数のＡＰＩは隔離されたアプリケーションにより起動できる、アイテムに異なる様々なアクセスをするための様々なインタフェースをサポートしている。例えば、ブローカモジュール１２０はＡＰＩ２１０を上記の通りエクスポーズ（expose）する。下記の表１乃至１１は、ブローカモジュールによりエクスポーズされるＡＰＩの例を示す。言うまでもなく、これらのＡＰＩは例であり、これらのＡＰＩのうち一または複数はブローカモジュールによりエクスポーズされなくてもよく、別のＡＰＩがブローカモジュールによりエクスポーズされてもよく、及び／またはブローカモジュールによりエクスポーズされるＡＰＩに変更を加えることもできる。
【００５６】
ＡＰＩは、ある名前空間にグループ化または集められる。表１乃至１１はそれぞれある名前空間のＡＰＩを含む。かかるグルーピングを行う方法は、例えば、ブローカモジュールの開発者の希望に基づいて変わり得る。ＡＰＩの名前は、名前空間を識別するプリアンブルを有し、表１乃至１１にリストされたＡＰＩの名前は、（テーブルには示していないが）この共通プリアンブルを含む。例えば、既知のフォルダ名前空間の場合、共通プリアンブルは「Windows.Storage.KnownFolders」であり得る。したがって、「musicLibrary」ＡＰＩの名前は、この共通プリアンブルを含み、以下の表４に「musicLibrary」としてリストされているが、「Windows.Storage.KnownFolders.musicLibrary」である。
【００５７】
表１は、記憶アイテムオブジェクトのＡＰＩを示し、これは記憶アイテム名前空間とも呼ばれる。記憶アイテム名前空間の共通プリアンブルは、「Windows.Storage.Storageltem」である。記憶アイテム名前空間のＡＰＩにより、隔離されたアプリケーションは、記憶アイテムオブジェクトにより表されたアイテムに関する情報を取得し、及び／または記憶アイテムオブジェクトにより表されたアイテムに様々なオペレーションを行うことができる。
【００５８】
【表１】
2014515528.tif 000003
【００５９】
表２は、記憶フォルダ（またはStorageFolder）記憶アイテムオブジェクトのＡＰＩを示し、これは記憶フォルダ名前空間とも呼ばれる。記憶フォルダ名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。記憶フォルダ名前空間のＡＰＩにより、隔離されたアプリケーションは、記憶フォルダオブジェクトにより表されたフォルダに関する情報を取得し、及び／または記憶フォルダオブジェクトにより表されたフォルダに様々なオペレーションを行うことができる。記憶フォルダオブジェクトは、表１を参照して上記した記憶アイテムオブジェクトのすべてのＡＰＩを承継するまたは含む。
【００６０】
【表２】
2014515528.tif 000004
【００６１】
表３は、記憶ファイル（またはStorageFile）記憶アイテムオブジェクトのＡＰＩを示し、これは記憶ファイル名前空間とも呼ばれる。記憶ファイル名前空間の共通プリアンブルは、「Windows.Storage.StorageFile」である。記憶ファイル名前空間のＡＰＩにより、隔離されたアプリケーションは、記憶ファイルオブジェクトにより表されたファイルに関する情報を取得し、及び／または記憶ファイルオブジェクトにより表されたファイルに様々なオペレーションを行うことができる。記憶ファイルオブジェクトは、表１を参照して上記した記憶アイテムオブジェクトのすべてのＡＰＩを承継するまたは含む。
【００６２】
【表３】
2014515528.tif 000005
【００６３】
表４は、既知のフォルダ名前空間のＡＰＩを示し、これは隔離されたアプリケーションによりアクセスできるファイルシステムアイテムソースの一組のフォルダまたはライブラリを指す。既知のフォルダ名前空間の共通プリアンブルは、「Windows.Storage.KnownFolders」である。既知のフォルダ名前空間のＡＰＩにより、事前に画定された一組のフォルダまたはディレクトリは、隔離されたアプリケーションによりアクセスできる。
【００６４】
【表４】
2014515528.tif 000006
【００６５】
表５は記憶名前空間のＡＰＩを示す。これは、隔離されたアプリケーションにあるファイルまたはフォルダを記憶または読み出しさせる一組のインタフェースである。記憶アイテム名前空間の共通プリアンブルは、「Windows.Storage」である。
【００６６】
【表５】
2014515528.tif 000007
【００６７】
表６は、クエリオプションのＡＰＩを示し、これはクエリオプション名前空間とも呼ばれる。クエリオプション名前空間の共通プリアンブルは、「Windows.Storage.QueryOptions」である。クエリオプション名前空間のＡＰＩにより、隔離されたアプリケーションは、隔離されたアプリケーションにより送られた検索要求の様々なクエリオプションを規定することができる。
【００６８】
【表６】
2014515528.tif 000008
【００６９】
表７はクエリ名前空間のＡＰＩを示す。これは、隔離されたアプリケーションにアイテムのクエリまたは検索を送らせる一組のインタフェースである。クエリ名前空間の共通プリアンブルは、「Windows.Storage」である。
【００７０】
【表７】
2014515528.tif 000009
【００７１】
表８は、クイックアクセサ名前空間のＡＰＩであり、これは、（例えば、素早く、ＡＱＳクエリを規定せずに）アイテムを読み出させる一組のインタフェースである。ＡＰＩは、異なる方法でのアイテムの読み出しをサポートし、例えば浅いモード（例えば、フォルダまたはディレクトリからの結果を返す）、深いモード（例えば、フォルダまたはディレクトリからの結果とともに、すべてのサブフォルダまたはサブディレクトリを返す）をサポートする。クイックアクセサ名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。
【００７２】
【表８】
2014515528.tif 000010
【００７３】
表９は、クエリ生成名前空間のＡＰＩを示す、これは、隔離されたアプリケーションによりクエリを生成させる一組のインタフェースである。一旦生成されると、これらのクエリは、ブローカモジュールにより保持でき、後で、クエリを生成する隔離されたアプリケーションによりアクセスされる。クエリ生成名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。
【００７４】
【表９】
2014515528.tif 000011
【００７５】
表１０は、記憶アイテムパーシステンス名前空間のＡＰＩを示し、これは隔離されたアプリケーションに記憶アイテムオブジェクトを持続させる一組のインタフェースである。記憶アイテムオブジェクトは、上記の通り、隔離されたアプリケーションの複数の実行にわたり持続できる。記憶アイテム持続名前空間の共通プリアンブルは、「StorageApplicationPermissions.futureAccessList」である。
【００７６】
【表１０】
2014515528.tif 000012
【００７７】
表１１は、最も最近使われた（ＭＲＵ）リストのＡＰＩであり、これは隔離されたアプリケーションに、最も最近使われたアイテムのリストを生成し保持させる一組のインタフェースである。ＭＲＵリストは、持続記憶アイテムオブジェクトの一例であり、持続アクセスリストはＭＲＵリストである。ＭＲＵリスト名前空間の共通プリアンブルは、「StorageApplicationPermissions.mostRecentlyUsedList」である。
【００７８】
【表１１】
2014515528.tif 000013
【００７９】
方法例
以下の説明では、上記のシステムとデバイスを用いて実装できる、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を説明する。  本方法の各態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装できる。これらの方法は、一または複数のデバイスにより実行される動作を規定する一組のステップ（act）として示され、それぞれのステップにより動作を実行するために示した順序には必ずしも限定されない。以下の説明の一部では、図１、２及び３の要素を参照する。
【００８０】
図４は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順４００を説明する図である。方法４００は、ブローカモジュール１２０などのブローカモジュールにより実装される。方法４００において、アイテムソースのうちの一または複数のアイテムにアクセスする要求を受け取る（ステップ４０２）。要求は、コンピューティングデバイスの隔離されたアプリケーションから受け取られ、一般的には、あるアイテムソースへのあるタイプのアクセスを求める要求である。この要求は、上記の通り、隔離されたアプリケーションにより受け取られ、ブローカモジュールによりエクスポーズされるＡＰＩを起動する。上記の通り、異なる様々なタイプの要求を、例えば、アイテムの読み出し、アイテムの書き込み、アイテムの修正、アイテムの検索などの要求を受け取ることができる。
【００８１】
隔離されたアプリケーションが、アイテムソースの一または複数のアイテムのどれに、もしあれば、アクセスする権限を有するかチェックする（ステップ４０４）。隔離されたアプリケーションが一または複数のアイテムのどれにアクセスする許可を受けているかは、上記の通り、具体的なアイテムソース及び／または具体的なアイテムロケーションに基づく。チェックは、アイテムソース（例えば、フォルダ、ライブラリ、記憶構造）のルートノードがアクセスされた時など、異なる時に行える。
【００８２】
方法４００は、隔離されたアプリケーションが一または複数のアイテムのどれにもアクセスする許可を受けていないかに基づいて進む（ステップ４０６）。隔離されたアプリケーションが、一または複数のアイテムのどれにもアクセスする許可を受けていない（アプリケーションがアクセスを要求されたアイテムのどれにもアクセスする許可を受けていない）とき、要求は拒否される（ステップ４０８）。上記の通り、任意的に、隔離されたアプリケーションに要求が拒否されたとの表示が返される。
【００８３】
しかし、隔離されたアプリケーションが一または複数のアイテムの少なくとも１つにアクセスする許可を受けているとき、隔離されたアプリケーションがアクセスを許可されている一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトが生成される（ステップ４１０）。各記憶アイテムオブジェクトは、上記の通り、一または複数の記憶アイテムに関連する様々な情報を含む。隔離されたアプリケーションがアクセスを許可されている一または複数のアイテムのうちのアイテムからは、上記の通り、フィルタで排除されたアイテムソースのアイテムを除くことができる。
【００８４】
隔離されたアプリケーションに、生成された一または複数の記憶アイテムオブジェクトが返される（ステップ４１２）。記憶アイテムオブジェクトは、隔離されたアプリケーションに提供されたデータ構造でもよいし、上記の通り、隔離されたアプリケーションにエクスポーズされたオブジェクトでもよい。記憶アイテムオブジェクトは、任意的に、上記の通り、特定の順序や特定のグルーピングで編成されてもよい。
【００８５】
図５は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順５００を説明する図である。方法５００は、アプリケーション１１６やアプリケーション２０２などの隔離されたアプリケーションにより実装される。方法５００では、ブローカモジュールのＡＰＩが起動され、アイテムソースの一または複数のアイテムへのアクセスを要求する（ステップ５０２）。一般的には、要求は、具体的なアイテムソースへのあるタイプのアクセスを求める要求である。上記の通り、異なる様々なタイプの要求を、例えば、アイテムの読み出し、アイテムの書き込み、アイテムの修正、アイテムの検索などの要求を受け取ることができる。
【００８６】
隔離されたアプリケーションがアクセスする権限を与えられた一または複数のアイテムのうちのアイテムを含む少なくとも１つの記憶アイテムオブジェクトが、ブローカーモジュールから受け取られる（ステップ５０４）。隔離されたアプリケーションが一または複数のアイテムのどれにアクセスする許可を受けているかのチェックは、アイテムソース（例えば、フォルダ、ライブラリ、記憶構造）のルートノードがアクセスされた時など、異なる時に行える。各記憶アイテムオブジェクトは、上記の通り、アイテムに関連する様々な情報を含む。記憶アイテムオブジェクトが受け取られている一または複数のアイテムのうちのアイテムからは、上記の通り、フィルタで排除されたアイテムソースのアイテムを除くことができる。記憶アイテムオブジェクトは、隔離されたアプリケーションに返されたデータ構造でもよいし、上記の通り、隔離されたアプリケーションにエクスポーズされたオブジェクトでもよい。また、記憶アイテムオブジェクトは、任意的に、上記の通り、特定の順序で編成されてもよい。
【００８７】
結論
ここでは、様々なモジュールにより実行される、通信、受信、送信、記憶、生成、取得などの様々なステップを説明した。留意点として、様々なモジュールによりかかるステップを実行できる。ステップを実行させるモジュールは、そのステップを実行するモジュール自体、または代替的にそのステップを実行する他のコンポーネントやモジュール（またはそのモジュールと協働してそのステップを実行する）を起動またはアクセスするモジュールを含む。
【００８８】
本主題を個別の構造的特徴及び／又は方法動作を用いて説明したが、言うまでもなく、添付した特許請求の範囲に規定する主題は、上記の特定の特徴や動作には必ずしも限定されない。上記の特定の特徴や動作は、請求項を実施する形式例を開示するものである。
【図１】
2014515528.tif 000014
【図２】
2014515528.tif 000015
【図３】
2014515528.tif 000016
【図４】
2014515528.tif 000017
【図５】
2014515528.tif 000018
【国際調査報告】
2014515528.tif 000019
2014515528.tif 000020