JP6147733B2 - 隔離されたアプリケーションのためのブローカードアイテムアクセス - Google Patents

隔離されたアプリケーションのためのブローカードアイテムアクセス Download PDF

Info

Publication number
JP6147733B2
JP6147733B2 JP2014513492A JP2014513492A JP6147733B2 JP 6147733 B2 JP6147733 B2 JP 6147733B2 JP 2014513492 A JP2014513492 A JP 2014513492A JP 2014513492 A JP2014513492 A JP 2014513492A JP 6147733 B2 JP6147733 B2 JP 6147733B2
Authority
JP
Japan
Prior art keywords
item
application
items
access
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014513492A
Other languages
English (en)
Other versions
JP2014515528A (ja
JP2014515528A5 (ja
Inventor
ケイ. ビーム,タイラー
ケイ. ビーム,タイラー
ラダクリシュナン,カヴィタ
ジェイ. カラス,ベンジャミン
ジェイ. カラス,ベンジャミン
エム. ブランチ,カトリーナ
エム. ブランチ,カトリーナ
ウォン,リヨン
ティー. キム,アレン
ティー. キム,アレン
ジェイ. ボール,スティーヴン
ジェイ. ボール,スティーヴン
ローリセラ,ジェイ.トレイシー
ビー. グレアム,スコット
ビー. グレアム,スコット
ミシュラ,マナヴ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014515528A publication Critical patent/JP2014515528A/ja
Publication of JP2014515528A5 publication Critical patent/JP2014515528A5/ja
Application granted granted Critical
Publication of JP6147733B2 publication Critical patent/JP6147733B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Description

ユーザは、様々な異なるソースから広い範囲のアプリケーションにアクセスする。例えば、ユーザは、従来、コンピュータ読み取り可能記憶媒体(光ディスクなど)に記憶された「ブリックアンドモルタル」からアプリケーションを取得して、そのアプリケーションをユーザの自宅のコンピューティングデバイスにインストールする。これらのアプリケーションは、一般的に、評判のよいデベロッパにより提供され、信頼できると考えられた。
その後、ユーザがネットワークにアクセスして、アプリケーションを見つけ、インストールする方法が開発された。例えば、インターネットを介してアプリケーションマーケットプレースにアクセスして、アプリケーションを購入することができる。ある場合には、アプリケーションマーケットプレースは、複数のアプリケーションを含み、それらは様々な異なるデベロッパに因るものである。しかし、利用可能にされるアプリケーション数は多く、それらのアプリケーションを提供するデベロッパのばらつきがあるので、アプリケーションの機能性を信頼できる程度は変わり得る。例えば、アプリケーションは欠陥のある機能を有したり、悪意者により書かれていたり、ということがある。
本欄では、発明の詳細な説明で詳しく説明するコンセプトの一部を選んで、簡単に説明する。本欄は、特許を請求する主題の重要な特徴や本質的な特徴を特定するものではなく、特許を請求する主題の範囲を限定するものでもない。
一または複数の態様によれば、コンピューティングデバイスのブローカーモジュールにおいて要求を受けとる。受け取られる要求は、コンピューティングデバイス中の隔離されたアプリケーションからの、アイテムソースの一または複数のアイテムにアクセスする要求である。隔離されたアプリケーションが、アイテムソースの一または複数のアイテムのどれに(もしあれば)アクセスする権限を有するかチェックする。隔離されたアプリケーションがアクセスする権限を有する、一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトが生成され、生成された記憶アイテムオブジェクトが隔離されたアプリケーションに返される。しかし、隔離されたアプリケーションが一または複数のアイテムのうちどれにもアクセスする権限を有さないとき、受け取られた要求は拒絶される。
一または複数の態様では、アプリケーションはブローカーモジュールのアプリケーションプログラミングインタフェース(API)を起動して、アイテムソースの一または複数のアイテムへのアクセスを要求する。アプリケーションは、ブローカーモジュールを通して以外はアイテムソースへのアクセスを制限されている隔離されたアプリケーションである。少なくとも一記憶アイテムオブジェクトがブローカーモジュールから受け取られ、各記憶アイテムオブジェクトは隔離されたアプリケーションがアクセスする権限を与えられた一または複数のアイテムのうちのアイテムを含む。
詳細な説明は添付した図面を参照して説明する。図中、参照数字の最も左の桁は、その参照数字が最初に現れる図面を指す。説明と図面の異なる箇所で同じ参照番号を用いるが、それは同様の又は同一のアイテムを示す。
ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装する一システム例を示す。 ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装する他の一システム例を示す。 一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法のデータフローをさらに詳細に説明する図である。 一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順を説明する図である。 一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順を説明する図である。
概要
ここで、隔離されたアプリケーションのためのブローカードアイテムアクセスを説明する。ブローカーモジュールは、隔離されたアプリケーションと、一または複数のアイテムソース(例えば、ファイルシステム、デバイス、他の一アプリケーションなど)との間にある。アイテムソースのアイテムにアクセスするため、隔離されたアプリケーションは、ブローカーモジュールのアプリケーションプログラミングインタフェース(API)を起動することにより、アイテムへのアクセスを要求する。隔離されたアプリケーションが要求されたアイテムへのアクセスを許可されると、ブローカーモジュールは要求されたアイテムにアクセスして、その隔離されたアプリケーションに、要求されたアイテムの表現であるオブジェクトを返す。隔離されたアプリケーションが要求されたアイテムへのアクセスを許可されていないと、ブローカーモジュールは要求されたアイテムへのアクセスを拒否して、その隔離されたアプリケーションに、要求されたアイテムの表現であるオブジェクトを返す。ブローカーモジュールとAPIは、以下により詳しく説明する。
以下の説明では、ここに説明する方法を実行するように動作可能なシステム例をまず説明する。次に、そのシステム例やその他のシステムにおいて動作可能な方法例を説明する。同様に、システム例は方法例の実行には限定されない。
システム例
図1は、ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装するシステム例100を示す。例示のシステム100は、コンピューティングデバイス102を含む。コンピューティングデバイス102はいろいろな方法で構成できる。例えば、コンピューティングデバイス102は、ネットワーク104により通信できるコンピュータとして構成できる。コンピュータは、例えば、デスクトップコンピュータ、タブレットまたはノートパッドコンピュータ、移動局、エンターテイメント機器、ディスプレイデバイスと通信可能に結合したセットトップボックス、テレビジョンその他のディスプレイデバイス、セルラ方式その他の無線電話、ゲームコンソールなどを含む。
コンピューティングデバイス102は、大きなメモリとプロセッサリソースとを有するフルソースデバイス(例えば、パーソナルコンピュータ、ゲームコンソールなど)からメモリ及び/または処理リソースが制限された低リソースデバイス(例えば、従来のセットトップボックス、ハンドヘルドゲームコンソールなど)まである。また、単一のコンピューティングデバイス102を示すが、コンピューティングデバイス102は異なる複数のデバイスを、例えば、会社の業務に用いられる複数のサーバ、リモートコントロールとセットトップボックスの組合せ、画像キャプチャデバイス(例えば、カメラ)、ジェスチャをキャプチャするように構成されたゲームコンソールなどを表していてもよい。
また、コンピューティングデバイス102は、そのコンピューティングデバイス102のハードウェアに動作を実行させる、例えば、プロセッサ、機能ブロックなどを設定する、エンティティ(例えば、ソフトウェア)を含んでいてもよい。例えば、コンピューティングデバイス102は、コンピューティングデバイスに、より具体的にはコンピューティングデバイスのハードウェアに動作を実行させる命令を保持するように構成されたコンピュータ読み取り可能媒体を含んでもよい。このように、命令は、動作を実行するようにハードウェアを設定するように機能し、このようにハードウェアが動作を実行するように変換する。命令は、異なる様々な構成により、コンピュータ読み取り可能媒体によりコンピューティングデバイス102に提供される。
コンピュータ読み取り可能媒体のかかる一構成は、信号搬送媒体であり、ネットワーク104などを介してコンピューティングデバイス102のハードウェアに命令を(例えば、搬送波のように)伝送するように構成される。また、コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体として構成でき、信号搬送媒体ではない。コンピュータ読み取り可能記憶媒体の例には、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、光ディスク(例えば、DVDやCD)、フラッシュメモリ、ハードディスクメモリ、及びその他のメモリデバイスであって磁気、光、その他の技術を用いて命令その他のデータを記憶するものが含まれる。
ネットワーク104には異なるいろいろな構成を仮定できる。例えば、ネットワーク104は、インターネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、無線ネットワーク、公衆電話ネットワーク、イントラネット、これらの組合せなどが含まれる。さらに、単一のネットワーク104を示したが、ネットワーク104は複数のネットワークを含むように構成することもできる。
コンピューティングデバイス102は、アイテム管理モジュール106を含むものとして例示されている。アイテム管理モジュール106は、一または複数のアイテムソース108及び/または110へのアクセスを管理する機能を表す。アイテム管理モジュール106は、いろいろな方法で実装できる。例えば、スタンドアロンアプリケーションとして、コンピューティングデバイス102のオペレーティングシステムの一部として、などとして実装できる。
アイテムソース108は、異なる様々なタイプのアイテム112を整理して記憶する方法を用いる。アイテムとは、アプリケーションにより要求され得るデータやコンテンツを言う。例えば、アイテムは、ファイル、フォルダまたはディレクトリ、URI(uniform resource identifier)、URL(uniform resource locator)またはその他のリンク、圧縮されたファイルまたはファイルコレクション(例えば、zipファイルまたはキャビネットファイル)、他のアプリケーションにより維持されたファイル(または別の方法で維持されたコンテンツ)などである。アイテムソース108は、アイテムを整理して記憶する様々な方法を利用して、異なるいろいろな方法で実装できる。例えば、アイテムソース108は、コンピューティングデバイス102のファイルシステム、コンピューティングデバイス102の記憶システム、コンピューティングデバイス102上で実行されている他のアプリケーション(例えば、それ自体がアイテムの整理と記憶を管理するアプリケーション)、データベースなどである。同様に、アイテムソース110は、異なるいろいろな方法で実装でき、ネットワーク104によりコンピューティングデバイス102によりアクセスできるアイテム114を整理し記憶できるいろいろな方法を用いることができる。アイテムソース110は、アイテムソース110は、例えば、サービスプロバイダ(例えば、コンピューティングデバイス102と同様の及び/または異なる方法で構成された一または複数のコンピューティングデバイスを用いて実装されたもの)、サービスプロバイダのファイルシステム、サービスプロバイダの記憶システム、サービスプロバイダにおいて実行されている他のアプリケーション、メディアサーバなどであり得る。
アプリケーション116は、一または複数のプログラム、スクリプト、またはその他の命令のコレクションであってコンピューティングデバイス102において実行されているものである。アプリケーション116は、異なるいろいろな構成を仮定できる。例えば、エンターテイメントアプリケーション(例えば、ゲームまたはオーディオ/ビデオプレーヤ)、ユーティリティアプリケーション(例えば、ワードプロセッサまたはウェブブラウザ)、リファレンスアプリケーション(例えば、辞書または百科事典)などの構成でよい。アプリケーション116は、隔離されたアプリケーションと呼ぶが、それはアプリケーション116がコンピューティングデバイス102のリソース(例えば、ネットワーク接続されたコンピュータ、インターネット、モジュール、デバイス、メモリ、その他のアプリケーション)にアクセスするアプリケーション116の能力が制限されるように実行されているからである。コンピューティングデバイス102のオペレーティングシステム(及び/またはその他のソフトウェア、ファームウェア、及び/またはハードウェア)は、アプリケーション116に、アプリケーション116に割り当てられたまたは利用可能とされたコンピューティングデバイス102のメモリその他のリソースにアクセスさせるが、アプリケーション116に、コンピューティングデバイス102のその他のメモリ、リソース、及び/またはその上で実行されているアプリケーションへはアクセスさせない。これは、コンピューティングデバイス上で実行されている他のアプリケーションを保護して、アプリケーション116と干渉しないようにし、アプリケーション116を保護して、コンピューティングデバイス102上で実行されている他のアプリケーションにより干渉されないようにして、すなわちアプリケーション116をコンピューティングデバイス102上の他のアプリケーションから隔離(isolate)している。隔離の一部として、コンピューティングデバイス102のオペレーティングシステム(及び/または他のソフトウェア、ファームウェア、及び/またはハードウェア)は、アプリケーション116が、後でより詳細に説明するアイテム管理モジュール106を通して意外には、アイテムソース108及び/またはアイテムソース110にアクセスしないようにする。
一または複数の実施形態では、アプリケーション116はサンドボックスでアプリケーション116を実行することにより、制限的に実行される。コンピューティングデバイス102には単一のアプリケーション116を例示したが、留意点として、コンピューティングデバイス102では複数のアプリケーションを同時に実行できる(各アプリケーションはそれ自体のサンドボックス中で実行される)。
アイテム管理モジュール106は、さらに、ブローカモジュール120とピッカーモジュール122とを含むように例示されている。ブローカモジュール120は、アイテムソース108及び/または110へのアプリケーション116のアクセスを管理するアイテム管理モジュール106の機能を表す。ブローカモジュール120は、例えば、アプリケーション116により要求されたアイテム112及び/または114を発見(locate)し、発見されたアイテム112及び/または114をアプリケーション116に提供する仲介者として機能できる。アプリケーション116は、ブローカモジュール120を通してアイテム112及び/または114にアクセスできるが、隔離されたアプリケーションなので、アイテムソース108及び/または110に(及びこれらのアイテムソース内のアイテム112及び/または114に)アクセスすることは制限されている。さらに、アイテム112及び/または114は、アプリケーション116に提供され得る。アプリケーション116は、アイテム112及び/または114がどこで取得されたかを知る必要はなく、例えば、アプリケーション116はアイテムソース108及び/または110により用いられる名前空間を知らなくてもよい。これにより、アプリケーションはいろいろなアイテムソースからのアイテムを、一律に、アイテムソースの種類によらずに扱うことができる。
また、ブローカーモジュール120は、任意的に、ピッカーモジュール122を利用して、アイテムソース108及び/または110にアクセスする別の方法を提供できる。ピッカーモジュール122は、トラステッドメソッドを提供して、アプリケーション(例えば、ブローカモジュール120を介してアイテムソース108及び/または110へのプログラムされたアクセスをしないもの)に、アイテムソース108及び/または110(及びこれらのアイテムソース中のアイテム112及び/または114)にアクセスさせる。
一般的に、ここに説明する機能はどれも、ソフトウェア、ファームウェア、ハードウェア(例えば、固定的な論理回路)、マニュアル処理、またはこれらの組合せで実装できる。ここで用いる「モジュール」と「機能」との用語は、一般的に、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを表す。ソフトウェア実装の場合、モジュール、機能、ロジック(logic)は、ハードウェアにより、例えば一または複数のプロセッサ及び/または機能ブロックにより、規定された動作を実行する命令とハードウェアを表す。
図2は、ここで説明する、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を実装するシステム例200を示す。例示したように、システム200は、アイテム管理方法を実行する、図1のコンピューティングデバイス102のアイテム管理モジュール106により、部分的に実装できる。例えば、アイテム管理モジュール106は、オペレーティングシステム、オペレーティングシステムと協働して動作するアプリケーション、スタンドアロンアプリケーションなどとして組み込める。どこに組み込まれているかにかかわらず、アイテム管理モジュール106は、ローカルに及び/またはリモートに(例えば、図1のネットワーク104を介して)、コンピューティングデバイスにアクセスできるアイテムを管理する方法を利用できる。
システム200は、例示したように、アプリケーション202(例えば、図1のアプリケーション116)、アイテムソース204(例えば、図1のアイテムソース108または110)、及びアイテム206(例えば、図1のアイテム112または114)を含む。この例では、アプリケーション202は、アプリケーション202に対してブローカモジュール120によりエクスポーズされた一または複数のアプリケーションプログラミングインタフェース(API)210を介して、ブローカモジュール120と通信して、アイテムソース204にアクセスする。図2には単一のアプリケーション202と単一のアイテムソース204を例示したが、留意点として、システム200は、任意数のアイテムソース204にアクセスする任意数のアプリケーション202を含むことができる。
アプリケーション202は、特定のアイテムソース及び/または特定のアイテムロケーションにアクセスする許可を受けることができる。この許可は、一般的には、アプリケーション202がアイテム206へのアクセスを要求する前に与えられるが、異なる時間及び異なる方法で与えることができる。一または複数の実施形態では、この許可は、アプリケーション202がシステム200を実装するコンピューティングデバイスにダウンロードまたはインストールされる時に行われる。例えば、ダウンロードまたはインストールのプロセスの一部として、ユーザは、アプリケーション202がアクセスしようとする特定のアイテムソース及び/または特定のアイテムロケーションを通知され、アプリケーション202がこれらの特定のアイテムソース及び/または特定のアイテムロケーションにアクセスする許可をうけているかに関する入力(例えば、特定のボタンまたはその他のユーザインタフェース(UI)部分)を提供できる。あるいは、この許可は他の時間に、例えば、アプリケーション202が修正または更新された時に、システム200のユーザによるその後のアプリケーション202の設定の時等に、与えられても良い。どのように許可が与えられるかにかかわらず、システム200は、アプリケーション202がどのアイテムソース及び/またはアイテムロケーションにアクセスする許可をうけているかという記録を含む許可記憶部(authorization store)208を保持する。許可記憶部208は、ブローカモジュール120に対してアクセス可能であり、アプリケーション202がどのアイテムソース及び/またはアイテムロケーションにアクセスする許可を受けているかという記録を、ブローカモジュール120が取得して利用できる。
アプリケーション202は、ブローカモジュール120によりサポートされた異なるいろいろなアイテムソース204のいずれにもアクセスする許可を受けることができる。例えば、アプリケーション202がアクセスする許可を受けられるアイテムソースは、ファイルシステム、コンピューティングデバイス上で実行されている一または複数のアプリケーション、サービスプロバイダにより実装されている一または複数の記憶システムなどである。
また、アプリケーション202は、異なるいろいろなアイテムロケーションのいずれにもアクセスする許可を受けられる。異なるアイテムソースに対して異なるタイプのアイテムロケーションを画定することができる。例えば、アイテムソースがファイルシステムである場合、アイテムロケーションはフォルダやライブラリ(例えば、ドキュメントライブラリ、ミュージックライブラリ、ビデオライブラリ、写真ライブラリ)として画定できる。ライブラリは、一または複数のロケーション(例えば、一または複数のデバイス上のフォルダやディレクトリ)のコレクションを指し、ライブラリに含まれたロケーションは任意的にシステム200のユーザにより修正され得る。他の例として、アイテムソースがアプリケーションである場合、アイテムロケーションはそのアプリケーションにより画定されたアイテムのグルーピングその他のコレクションであってもよい。
ブローカモジュール120はアイテムアクセスモジュール212を含む。このアイテムアクセスモジュール212は、アプリケーション202からのアイテムにアクセスする要求に応答するブローカモジュール120の機能を表す。API210は、アイテムへの異なるいろいろなタイプのアクセスのためにアプリケーション202により起動され得るいろいろなインタフェースをサポートする。例えば、API210は、アイテムを読むためのインタフェース、アイテムを書くためのインタフェース、アイテムを作成するためのインタフェース、アイテムを削除するためのインタフェース、アイテムを修正するためのインタフェース、アイテムをコピーするためのインタフェース、アイテムを動かすためのインタフェース、アイテムを名称変更するためのインタフェース、アイテムの特性を読み出すためのインタフェースなどを含む。アプリケーション202からアイテムソースを抽象化して、異なるアイテムソースに対して同じインタフェースを用いることができる。例えば、アイテムを読み出すまたは列挙するために起動されるAPIを、ブローカモジュール120によりサポートされた複数のアイテムソースに、及びアプリケーション202がアクセスする許可を受けているブローカモジュール120によりサポートされたアイテムソース等に、適用できる。他の一例として、アプリケーション202は、APIを起動してアイテムを書き込むまたは名称変更する時、アイテムソースを指定する必要はない(例えば、アイテムソースは、後で詳細に説明するように、記憶アイテムオブジェクト中に見つかるまたは内在している)。
あるいは、要求に対してアイテムソースを特定するインタフェースのパラメータを含んでいてもよい。例えば、API210は、ファイルシステムソース及びサービスプロバイダ記憶システムソースの両方に使える読み出しアイテムインタフェースであって、その読み出しアイテムインタフェースのパラメータがアプリケーション202の2つのソースのどちらがアイテムの読み出しを要求しているか示すパラメータを有するものを含み得る。他の代替策として、異なるアイテムソースに対して異なるインタフェースを用いることもできる。例えば、API210は、ファイルシステムソースからアイテムを読み出すのに使われるファイルシステム読み出しアイテムインタフェース、サービスプロバイダ記憶システムソースからアイテムを読み出すのに使われるサービスプロバイダ読み出しアイテムインタフェースを含む。
アプリケーション202は、一または複数のAPI210を起動して、アイテムソースの(例えば、アイテムソースに記憶された)一または複数のアイテムへのアクセスを要求する。要求を受け取ると、アイテムアクセスモジュール212は、アプリケーション202がアクセスする許可を受けているアイテムソース及び/またはアイテムロケーションの記録をチェックし、この記録に基づいて、要求されたアイテムにアクセスする許可をアプリケーションが受けているか判断する。要求された一または複数のアイテムのいずれにもアクセスする許可をアプリケーション202が受けていない(アプリケーションが一または複数のアイテムのどれにもアクセスする許可を受けていない)とき、アイテムアクセスモジュール212は要求されたアクセスをさせない。例えば、アプリケーション202が写真ライブラリ中のファイルへのアクセスを要求したが、音楽ライブラリ中のファイルへのアクセスしか許可を受けていない場合、アイテムアクセスモジュール212は要求されたアクセスをさせない。アイテムアクセスモジュール212は、任意的に、(一または複数のアイテムへのアクセスを要求するアプリケーションにより起動されたAPI210に関連する結果値として)要求されたアクセスが拒絶されたとの表示を返す。
しかし、アプリケーション202が、要求された一または複数のアイテムのどれかにアクセスする許可を受けているとき、アイテムアクスモジュール212は、アプリケーション202がアクセスする許可を受けている一または複数のアイテムのうちのアイテムを取得し、それへのアクセスを許可する。要求された一または複数のアイテムがブローカモジュール120により取得される方法は、アイテムソース108に基づき変わってもよく、ブローカモジュール120はアイテムソース108にいかにアクセスするかの表示を有する(または取得できる)ように構成される。アイテムアクセスモジュール212は、アプリケーション202がアクセスを許可されている各アイテムを表す記憶アイテムオブジェクト(storage item object)を生成する。この記憶アイテムオブジェクトは、そのアイテムに関連する様々な情報を含み、任意的に、アイテムのデータ及び/またはコンテンツを含む。アイテムアクセスモジュール212は、この生成された記憶アイテムオブジェクトをアプリケーション202に返す。
あるいは、ブローカモジュール120は、前もって受け取ったアイテムアクセスに許可を用いるのではなく、ピッカーモジュール122を用いて、アプリケーション202により要求された一または複数のアイテムへのアクセスをする。一または複数のアイテムへのアクセス要求を受け取ると、ブローカモジュール120は、ユーザインタフェースを生成するためピッカーモジュール122を実装し、ピッカーモジュール122はピッカーUIモジュール220を起動する。ピッカーUIモジュール220は、ユーザに、そのユーザが一または複数のアイテムへのアクセスを許可するか問うUIを提示し、ユーザに一または複数のアイテムへナビゲートまたは発見させる。ユーザがアプリケーション202に一または複数のアイテムへのアクセスを許可するかどうかを示すユーザ入力を受け取る。ユーザがアプリケーション202に一または複数のアイテムへのアクセスを許可すると、ピッカーモジュール122は一または複数のアイテムを取得し、記憶アイテムオブジェクト表現112の生成のため、取得した一または複数のアイテムをアイテムアクセスモジュール212に返す。あるいは、ピッカーモジュール122は、一または複数のアイテムを取得するのではなく、上記の通りモジュール212が一または複数のアイテムを取得するためにアイテムアクセスモジュール212に表示を返してもよい。
アイテムアクセスモジュール212は、記憶アイテムオブジェクトをアプリケーション202に返す。記憶アイテムオブジェクトはアイテムを表す。記憶アイテムオブジェクトはアイテムの抽象化または表現である。記憶アイテムオブジェクトにより表されたアイテムに対するアプリケーション202によるアクセス(例えば、読み取り、書き込み、修正など)は、ブローカモジュール120及び/または記憶アイテムオブジェクト自体を通して行われる。記憶アイテムオブジェクトは異なる様々な形式を取り得る。一または複数の実施形態では、記憶アイテムオブジェクトは、ブローカモジュール120により生成され、アプリケーション202に対してエクスポーズ(expose)されたオブジェクトである。ブローカモジュール120は、記憶アイテムオブジェクトの識別子その他の識別情報(identification)をアプリケーション202に提供することにより、かかるアプリケーション202に記憶アイテムオブジェクトを返す。記憶アイテムオブジェクトの様々な方法やオペレーションは、アプリケーション202により起動され、記憶アイテムオブジェクトにより表されたアイテムに関する情報を取得し、及び/または記憶アイテムオブジェクトにより表されたアイテムに様々なオペレーションを行うことができる。あるいは、記憶アイテムオブジェクトは、記憶アイテムオブジェクトにより表されるアイテムに関する様々な情報を、及び/または記憶アイテムオブジェクトに様々なオペレーションを行うためにアプリケーション202により起動される方法またはオペレーションを含むデータ構造(data structure)である。ブローカモジュール120は、データ構造をアプリケーション202に提供することにより、かかる記憶アイテムオブジェクトを返す。
一または複数の実施形態では、記憶アイテムオブジェクトは、特性部、サムネイル部、コンテンツ部、及びオペレーション部を含む。記憶アイテムオブジェクトの特性部は、アイテムの様々な特性や属性を含む。アイテムに対してアイテムソース204により維持される異なる様々な特性や属性は、記憶アイテムオブジェクトの特性部に含めることができる。例えば、記憶アイテムオブジェクトの特性部は、アイテムの名称、アイテムの(例えば、バイト単位の)サイズ、アイテムのタイプ(例えば、写真タイプ、音楽タイプ)などを含み得る。
記憶アイテムオブジェクトのサムネイル部は、アイテムのビジュアル表現を含む。このサムネイルは画像または画像シーケンス(例えば、ビデオ)であってもよい。サムネイルは、例えば、画像の一部(例えば、文書の1頁や写真の一部)、アイテムを縮小したもの(例えば、写真を縮小したもの)、アイテムのタイプを表すアイコンなどであってもよい。
記憶アイテムオブジェクトのコンテンツ部分は、アイテムのコンテンツまたはアイテムのコンテンツをいかに取得するかの表示を含む。例えば、アイテムが写真であるとき、コンテンツ部分はその写真自体のデータを、またはその写真のデータが記憶されているところへのリンク(例えば、URL(Uniform Resource Locator)またはパス)を含み得る。アイテムは、アプリケーション202にストリーミングされるデータ(例えば、音楽ファイルやビデオファイル)であってもよく、そのアイテムのコンテンツを以下に取得するかの表示は、ストリーミングされるデータ(へのリンク等)の表示を含んでいてもよい。また、コンテンツ部分は、アイテムを読み書きするオペレーションなどのアイテムに対するオペレーションを含み得る。
記憶アイテムオブジェクトのオペレーション部は、アイテムに対して行える一または複数の方法またはオペレーションを含む。異なる様々なオペレーションをアイテムに対して行え、アイテムへの異なる様々なアクセスを提供できる。具体的なオペレーションは、アイテムのタイプに少なくとも部分的に基づき変わり得る。例えば、オペレーションには、アイテムを名称変更するオペレーション、アイテムを削除するオペレーションなどが含まれる。アイテムがファイルシステムのフォルダである場合、オペレーションは、フォルダ内のファイルの列挙、フォルダ内のファイルのソート、フォルダ内のファイルの削除、フォルダへの新しいファイルの追加、フォルダまたはそのフォルダ中のファイルの名称変更などが含まれる。
記憶アイテムオブジェクトの形式にかかわらず、記憶アイテムオブジェクトに様々なオペレーションを実行でき、記憶アイテムオブジェクトはアイテムのコンテンツ、またはアイテムのコンテンツを以下に取得するかの表示を含む。このように、記憶アイテムオブジェクトは、一または複数のアイテムを含むものと見なすこともできる。例えば、フォルダの記憶アイテムオブジェクトは、そのフォルダ内のファイルを表す一または複数のアイテムを含み得る。
ここで記憶アイテムオブジェクトを説明するが、留意点として、異なるタイプの記憶アイテムオブジェクトをサポートすることができる。異なるタイプの記憶アイテムオブジェクトは、記憶タイムのタイプに関する異なる特性、オペレーションなどを含み得る。例えば、記憶ファイルオブジェクトと記憶フォルダオブジェクトを使える。記憶ファイルオブジェクトは、ファイル特有の特性とオペレーション(例えば、ファイル名称変更オペレーション)を含み、記憶フォルダオブジェクトは、フォルダに特有な特性とオペレーション(例えば、フォルダ中のファイルを列挙する列挙オペレーション)を含む。他の一例として、デバイスオブジェクトとネットワークノードオブジェクトを用いることができ、デバイスオブジェクトはデバイスに特有な特性とオペレーションを含み、ネットワークノードオブジェクトはネットワークノードに特有の特性とオペレーションを含む。
アプリケーション202に返される一または複数の記憶アイテムオブジェクトは、アプリケーション202により主張され得る。例えば、アプリケーション202はMRU(most recently used)リストを用いて、アプリケーション202により最も最近用いられた一または複数のアイテムを容易に特定できる。一または複数の実施形態では、ブローカモジュール120が記憶アイテムオブジェクトの持続的記憶を管理する。ブローカモジュール120は、一般的に、隔離された各アプリケーションに対して持続的アクセスリストを保持する。任意的に、隔離された複数のアプリケーションが1つの持続的アクセスリストを共有してもよい。持続的アクセスリストは、持続的な記憶アイテムオブジェクトのリストであり、アプリケーション202はAPI210を起動して、持続的アクセスリスト中の持続的記憶アイテムオブジェクトを読み出して使うことができる。持続的記憶アイテムが持続的アクセスリストに追加されたとき、ブローカモジュール120は、アプリケーション202にトークンその他の持続的記憶アイテムオブジェクトの識別子を提供でき、アプリケーション202は、かかるトークンその他の識別子を用いて、持続的アクセスリストから持続的記憶アイテムオブジェクトを読み出すことができる。ブローカモジュール120は、アプリケーション202の持続的記憶アイテムオブジェクトの複数のリストを、例えばMRUリストとそれとは別の持続的アクセスリストを保持することもできる(例えば、アプリケーション202は、アイテムが最近どう使われたかに係わらず必要なだけ記憶アイテムオブジェクトを持続できる)。ブローカモジュール120は、任意的に、異なるリストに対して異なる寿命を実装して、リストの記憶アイテムオブジェクトを保持する異なる時間(及び/または時間を決定する異なる方法)を反映することができる。
持続的記憶アイテムオブジェクトは、デバイス識別子、オペレーティングシステム(例えば、NTFS)オブジェクト識別子、名前/タイムスタンプマッチング、これらの組合せなど、異なるいろいろな方法で特定できる。このように、アイテムが名称変更されたり移動されたりしても、持続的記憶アイテムオブジェクトを特定できる。また、記憶アイテムオブジェクトはアプリケーション202の複数の実行にわたり持続することができ、アプリケーション202が終了されてから再び実行された時(例えば、シャットダウンされてから再び起動された時)、アプリケーション202は持続的記憶アイテムオブジェクトを読み出して使用できる。
あるいは、ブローカモジュール120ではなくアプリケーション202が、持続的な記憶アイテムオブジェクトの記憶を管理できる。アプリケーション202は、異なるロケーションで、例えば、アプリケーション202に割り当てられたまたは利用可能にされたメモリまたはその他の記憶ロケーションに記憶して、記憶アイテムオブジェクトを持続することができる。このように、アプリケーション202は、後でアイテムが再び必要になると、ブローカモジュール120からアイテムを再要求するのではなく、アイテムを表す持続的記憶アイテムオブジェクトを用いることができる。
ブローカモジュール120は任意的にフィルタリングモジュール214を含む。このフィルタリングモジュールは、アプリケーション202によりアクセスできるアイテムをフィルタするブローカモジュール120の機能を表す。アプリケーション202は、上記の通り、特定のアイテムソース及び/または特定のアイテムロケーションにアクセスする許可を受けている。フィルタリングモジュール214により、アクセス要求をさらにフィルタして、アクセスが許可されていても、特定のアイテムロケーションにアプリケーション202がアクセスしないようにできる。フィルタリングモジュール214は、アイテムアクセスモジュール212がこれらのアイテムを表す生成された記憶アイテムを返す前に、アイテムソースからのアイテムをフィルタする。このように、フィルタされたアイテムを表す記憶アイテムは、アプリケーション202がアクセスを許可されたそのアイテムソース及び/またはアイテムロケーションにかかわらず、アプリケーション202に返されない。
フィルタリングモジュール214は、ブローカモジュール120の設計者及び/またはシステム200の管理者の希望などに基づき、特定のアイテムロケーションをフィルタするように構成できる。例えば、フィルタリングモジュール214は、システムファイルを記憶した特定のフォルダやディレクトリをフィルタして、アプリケーション202がこれらの特定のフォルダやディレクトリにアクセスすることを防止できる。他の一例として、フィルタリングモジュール214は、システムファイル、隠しファイルなどの特定のファイルタイプをフィルタできる。
また、ブローカモジュール120は、任意的に、編成モジュール216を含む。この編成モジュールは、特定の順序及び/または特定のグルーピングでアイテムを編成するブローカモジュール120の機能を表す。アプリケーション202は、ブローカモジュール120により特定の順序及び/またはグルーピングで編成されて返されることを要求できる。編成モジュール216は、異なる時に要求された順序でアイテムを編成し、例えば、アイテムアクセスモジュール212が要求されたアイテムを表す記憶アイテムオブジェクトを生成する前に、アクセスされたアイテムをソーティング及び/またはグルーピングしたり、アイテムアクセスモジュール212により生成された要求されたアイテムを表す記憶アイテムオブジェクトをソーティング及び/またはグルーピングしたりする。
異なる様々な順序が編成モジュール216によりサポートされ、異なるソート基準に基づく異なる順序が異なるアイテムタイプやアイテムロケーションについてサポートされる。例えば、アイテムは関連する日付(例えば、写真アイテムの写真が撮られた日、アイテムソース204にアイテムが記憶された日、音楽アイテムの歌が録音された日)に基づき(例えば、時間的に昇順または降順に)順序付けることができる。他の一例により、アイテムは、(例えば、音楽アイテムやビデオアイテムの)収録アーティストに基づき、(例えば、音楽アイテムやビデオアイテムの)アルバム名に基づき、(例えば、音楽アイテムやビデオアイテムの)ジャンルに基づき、(例えば、アルファベット順に)順序付けることができる。編成モジュール216は、アプリケーション202を選択する一組の順序付けをサポートできる。あるいは、編成モジュール216は、アイテムソース204によりサポートされるアイテムのメタデータに基づき、ソート基準をサポートできる。このように、アイテムに関連する特性、属性、その他のメタデータを、順序付けに用いるソート基準として、アプリケーション202により特定できる。
同様に、異なる様々なグルーピングが編成モジュール216によりサポートされ、異なるグルーピング基準に基づく異なるグルーピングが異なるアイテムタイプやアイテムロケーションについてサポートされる。例えば、アイテムはアイテムタイプによりグループ分けできる(例えば、音楽アイテムは同じグループに分けられ、文書アイテムは同じグループに分けられる)。他の一例により、アイテムは、(例えば、音楽アイテムやビデオアイテムの)収録アーティストに基づき、(例えば、音楽アイテムやビデオアイテムの)アルバム名に基づき、(例えば、音楽アイテムやビデオアイテムの)ジャンルに基づき、グループ分けすることができる。グルーピングは、一組のコンテナ記憶アイテムオブジェクトであり、各々が一または複数の記憶アイテムオブジェクトを含み、ある条件に合う記憶アイテムオブジェクトを提供するために列挙することができる。編成モジュール216は、アプリケーション202が選択できる一組のグルーピングをサポートできる。あるいは、編成モジュール216は、アイテムソース204によりサポートされるアイテムのメタデータに基づき、グルーピング基準をサポートできる。このように、アイテムに関連する特性、属性、その他のメタデータを、グルーピングに用いるグルーピング基準として、アプリケーション202により特定できる。
あるグルーピングにおいて、アイテムを様々なソート基準を用いてソートできることは上記の通りであるが、必ずしもソートしなくてもよい。さらに、アプリケーション202は、あるグルーピングの記憶アイテムオブジェクトの検索を要求でき、検索モジュール218に関して後で説明するのと同様に、異なる様々な検索基準を提供できる。
また、ブローカモジュール120は、任意的に、検索モジュール218を含む。検索モジュール218は、具体的なアイテムを検索するブローカモジュール120の機能を表す。アプリケーション202は、具体的な検索基準を満たすアイテムがブローカモジュール120により返されることを要求できる。検索モジュール218は、アイテムソース204を検索し、検索基準を満たす(例えば、マッチする)アイテムを探し、検索基準を満たすアイテムがアプリケーション202に返される。アイテムアクセスモジュール212が要求された検索基準を満たすアイテムを表す記憶アイテムオブジェクトを生成する前に、検索モジュール218が、アイテムソース204中のアイテムを検索して、検索基準を満たすアイテムを特定する。あるいは、検索モジュール218は、生成された記憶アイテムオブジェクトを検索して、検索基準を満たす記憶アイテムオブジェクトを特定し、検索基準を満たす生成された記憶アイテムオブジェクトのみがアプリケーション202に返される。
異なる様々な検索基準が検索モジュール218によりサポートされ得る。例えば、検索基準はアイテムタイプ(例えば、音楽ファイル)であり、その検索基準はそのアイテムタイプの任意のアイテムにより満たされるてもよいし、または検索基準は名称であり、その検索基準はその具体的な名称(例えば、ファイル名)を有するアイテムにより満たされてもよい。また、より複雑な検索基準が検索モジュール218によりサポートされてもよい。例えば、日付範囲、ワイルドカード値(例えば、任意の1文字を示すクエスチョンマークやゼロ以上の文字を示すアスタリスク)、AQS(Advanced Query Syntax、これに関する詳細情報は米国ワシントン州レドモンド市のマイクロソフトコーポレーションから得られる)などの利用がサポートされ得る。留意点として、アプリケーション202は、検索基準を提供できるが、(例えば、上記の通り、許可記憶部208に保持されている記録に基づき、)そのアプリケーション202がアクセスを許可されているアイテムのみにアクセスできる。
また、ブローカモジュール120は、アプリケーション202がアイテムへのアクセスを許可されている場合、そのアプリケーション202にそのアイテムにアクセスさせる。ブローカモジュール120は、任意的に、アプリケーション202を、自動的に、かかる許可を示すユーザ入力が無くても、一または複数のアイテムロケーションにアクセスする許可を受けているものとして扱う。かかるロケーションの一例は、隔離されたすべてのアプリケーションがデータの書き込みを許可されているダウンロードフォルダである。ブローカモジュール120は、任意的に、(上記の通り、)アプリケーション202が一または複数のアイテムロケーションにアクセスを許可されるまで、アプリケーション202を特定タイプのアクセスに制限することができる。例えば、アプリケーション202は、ダウンロードフォルダにファイルを書き込むことを自動的に許可されるが、コンピューティングデバイスのユーザがアプリケーション202に、そのダウンロードフォルダからファイルを読み出す許可を与えた場合に限り、そのダウンロードフォルダからファイルを読み出す許可がされる。
ここに説明する隔離されたアプリケーションへのブローカードアイテムアクセス方法は、様々な利用シナリオをサポートする。例えば、写真編集アプリケーションは実行され、ブローカモジュールを介してファイルにアクセスできる。写真編集アプリケーションがコンピューティングデバイスにインストールされると、ユーザは、写真ライブラリ中のファイルにアクセスする許可を写真編集アプリケーションに与えることができるが、他のロケーションのファイルにアクセスする許可は与えない。動作中、写真編集アプリケーションは、ブローカモジュールに様々なファイルを要求できるが、ブローカモジュールは写真ライブラリのファイル以外のファイルを求める要求は拒絶する。写真編集アプリケーションは、写真ライブラリ以外のロケーションに記憶されたファイルへのアクセスが禁止される。
図3は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法のデータフロー300をさらに詳細に説明する図である。データフロー300を、図2のシステム200の要素を参照して説明する。アプリケーション202は、ブローカモジュール120の一または複数のAPIを起動することにより、ブローカモジュール120にアクセス要求302を送る。アクセス要求302は、アイテムソース204に、あるタイプのアクセスを求める要求である。
ブローカモジュール120は、一または複数のアクセス要求304をアイテムソース204に送り、アクセス要求302により要求されたアイテムを取得する。ブローカモジュール120は、アイテムソース204のAPIを起動し、メッセージその他のデータ構造をアイテムソース204に送ることなどにより、アイテムソース204が実装されている方法に応じて様々な方法で一または複数のアクセス要求304を送ることができる。
一または複数のアイテムのアイテム情報306は、アイテムソース204からブローカモジュール120に返される。アイテム情報306は、アクセス要求302に基づく一または複数のアイテムを記述する。上記の通り、アイテム情報306が返されたアイテムは、例えば、あるアイテムソースにおけるアイテムの情報を含み、フィルタされたアイテムを含むことができる。アイテム情報306は、アイテムソース204の一または複数のアイテムを記述する情報を含む。アイテムを表す記憶アイテムオブジェクトに含まれうる情報は、アイテム情報306に含まれ得る。
ブローカモジュール120は、アイテム情報306に基づき一または複数の記憶アイテムオブジェクト308を生成する。ブローカモジュール120は、アイテム情報306中で特定された少なくとも1つのアイテムの記憶アイテムオブジェクト308を生成する。上記の通り、ブローカモジュール120は、任意的に、アイテム情報306から特定された一または複数のアイテムをフィルタし、フィルタされた一または複数のアイテムの記憶アイテムオブジェクト308を生成しない。また、上記の通り、ブローカモジュール120は、任意的に、記憶アイテムオブジェクト308を、または記憶アイテムオブジェクト308に含まれる情報を、ある順序またはあるグルーピングに編成することもできる。
APIの例
ブローカモジュールは、一または複数のAPIを隔離されたアプリケーションにエクスポーズする。一または複数のAPIは隔離されたアプリケーションにより起動できる、アイテムに異なる様々なアクセスをするための様々なインタフェースをサポートしている。例えば、ブローカモジュール120はAPI210を上記の通りエクスポーズ(expose)する。下記の表1乃至11は、ブローカモジュールによりエクスポーズされるAPIの例を示す。言うまでもなく、これらのAPIは例であり、これらのAPIのうち一または複数はブローカモジュールによりエクスポーズされなくてもよく、別のAPIがブローカモジュールによりエクスポーズされてもよく、及び/またはブローカモジュールによりエクスポーズされるAPIに変更を加えることもできる。
APIは、ある名前空間にグループ化または集められる。表1乃至11はそれぞれある名前空間のAPIを含む。かかるグルーピングを行う方法は、例えば、ブローカモジュールの開発者の希望に基づいて変わり得る。APIの名前は、名前空間を識別するプリアンブルを有し、表1乃至11にリストされたAPIの名前は、(テーブルには示していないが)この共通プリアンブルを含む。例えば、既知のフォルダ名前空間の場合、共通プリアンブルは「Windows.Storage.KnownFolders」であり得る。したがって、「musicLibrary」APIの名前は、この共通プリアンブルを含み、以下の表4に「musicLibrary」としてリストされているが、「Windows.Storage.KnownFolders.musicLibrary」である。
表1は、記憶アイテムオブジェクトのAPIを示し、これは記憶アイテム名前空間とも呼ばれる。記憶アイテム名前空間の共通プリアンブルは、「Windows.Storage.Storageltem」である。記憶アイテム名前空間のAPIにより、隔離されたアプリケーションは、記憶アイテムオブジェクトにより表されたアイテムに関する情報を取得し、及び/または記憶アイテムオブジェクトにより表されたアイテムに様々なオペレーションを行うことができる。
Figure 0006147733
表2は、記憶フォルダ(またはStorageFolder)記憶アイテムオブジェクトのAPIを示し、これは記憶フォルダ名前空間とも呼ばれる。記憶フォルダ名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。記憶フォルダ名前空間のAPIにより、隔離されたアプリケーションは、記憶フォルダオブジェクトにより表されたフォルダに関する情報を取得し、及び/または記憶フォルダオブジェクトにより表されたフォルダに様々なオペレーションを行うことができる。記憶フォルダオブジェクトは、表1を参照して上記した記憶アイテムオブジェクトのすべてのAPIを承継するまたは含む。
Figure 0006147733
表3は、記憶ファイル(またはStorageFile)記憶アイテムオブジェクトのAPIを示し、これは記憶ファイル名前空間とも呼ばれる。記憶ファイル名前空間の共通プリアンブルは、「Windows.Storage.StorageFile」である。記憶ファイル名前空間のAPIにより、隔離されたアプリケーションは、記憶ファイルオブジェクトにより表されたファイルに関する情報を取得し、及び/または記憶ファイルオブジェクトにより表されたファイルに様々なオペレーションを行うことができる。記憶ファイルオブジェクトは、表1を参照して上記した記憶アイテムオブジェクトのすべてのAPIを承継するまたは含む。
Figure 0006147733
表4は、既知のフォルダ名前空間のAPIを示し、これは隔離されたアプリケーションによりアクセスできるファイルシステムアイテムソースの一組のフォルダまたはライブラリを指す。既知のフォルダ名前空間の共通プリアンブルは、「Windows.Storage.KnownFolders」である。既知のフォルダ名前空間のAPIにより、事前に画定された一組のフォルダまたはディレクトリは、隔離されたアプリケーションによりアクセスできる。
Figure 0006147733
表5は記憶名前空間のAPIを示す。これは、隔離されたアプリケーションにあるファイルまたはフォルダを記憶または読み出しさせる一組のインタフェースである。記憶アイテム名前空間の共通プリアンブルは、「Windows.Storage」である。
Figure 0006147733
表6は、クエリオプションのAPIを示し、これはクエリオプション名前空間とも呼ばれる。クエリオプション名前空間の共通プリアンブルは、「Windows.Storage.QueryOptions」である。クエリオプション名前空間のAPIにより、隔離されたアプリケーションは、隔離されたアプリケーションにより送られた検索要求の様々なクエリオプションを規定することができる。
Figure 0006147733
表7はクエリ名前空間のAPIを示す。これは、隔離されたアプリケーションにアイテムのクエリまたは検索を送らせる一組のインタフェースである。クエリ名前空間の共通プリアンブルは、「Windows.Storage」である。
Figure 0006147733
表8は、クイックアクセサ名前空間のAPIであり、これは、(例えば、素早く、AQSクエリを規定せずに)アイテムを読み出させる一組のインタフェースである。APIは、異なる方法でのアイテムの読み出しをサポートし、例えば浅いモード(例えば、フォルダまたはディレクトリからの結果を返す)、深いモード(例えば、フォルダまたはディレクトリからの結果とともに、すべてのサブフォルダまたはサブディレクトリを返す)をサポートする。クイックアクセサ名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。
Figure 0006147733
表9は、クエリ生成名前空間のAPIを示す、これは、隔離されたアプリケーションによりクエリを生成させる一組のインタフェースである。一旦生成されると、これらのクエリは、ブローカモジュールにより保持でき、後で、クエリを生成する隔離されたアプリケーションによりアクセスされる。クエリ生成名前空間の共通プリアンブルは、「Windows.Storage.StorageFolder」である。
Figure 0006147733
表10は、記憶アイテムパーシステンス名前空間のAPIを示し、これは隔離されたアプリケーションに記憶アイテムオブジェクトを持続させる一組のインタフェースである。記憶アイテムオブジェクトは、上記の通り、隔離されたアプリケーションの複数の実行にわたり持続できる。記憶アイテム持続名前空間の共通プリアンブルは、「StorageApplicationPermissions.futureAccessList」である。
Figure 0006147733
表11は、最も最近使われた(MRU)リストのAPIであり、これは隔離されたアプリケーションに、最も最近使われたアイテムのリストを生成し保持させる一組のインタフェースである。MRUリストは、持続記憶アイテムオブジェクトの一例であり、持続アクセスリストはMRUリストである。MRUリスト名前空間の共通プリアンブルは、「StorageApplicationPermissions.mostRecentlyUsedList」である。
Figure 0006147733
方法例
以下の説明では、上記のシステムとデバイスを用いて実装できる、隔離されたアプリケーションのためのブローカードアイテムアクセス方法を説明する。 本方法の各態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装できる。これらの方法は、一または複数のデバイスにより実行される動作を規定する一組のステップ(act)として示され、それぞれのステップにより動作を実行するために示した順序には必ずしも限定されない。以下の説明の一部では、図1、2及び3の要素を参照する。
図4は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順400を説明する図である。方法400は、ブローカモジュール120などのブローカモジュールにより実装される。方法400において、アイテムソースのうちの一または複数のアイテムにアクセスする要求を受け取る(ステップ402)。要求は、コンピューティングデバイスの隔離されたアプリケーションから受け取られ、一般的には、あるアイテムソースへのあるタイプのアクセスを求める要求である。この要求は、上記の通り、隔離されたアプリケーションにより受け取られ、ブローカモジュールによりエクスポーズされるAPIを起動する。上記の通り、異なる様々なタイプの要求を、例えば、アイテムの読み出し、アイテムの書き込み、アイテムの修正、アイテムの検索などの要求を受け取ることができる。
隔離されたアプリケーションが、アイテムソースの一または複数のアイテムのどれに、もしあれば、アクセスする権限を有するかチェックする(ステップ404)。隔離されたアプリケーションが一または複数のアイテムのどれにアクセスする許可を受けているかは、上記の通り、具体的なアイテムソース及び/または具体的なアイテムロケーションに基づく。チェックは、アイテムソース(例えば、フォルダ、ライブラリ、記憶構造)のルートノードがアクセスされた時など、異なる時に行える。
方法400は、隔離されたアプリケーションが一または複数のアイテムのどれにもアクセスする許可を受けていないかに基づいて進む(ステップ406)。隔離されたアプリケーションが、一または複数のアイテムのどれにもアクセスする許可を受けていない(アプリケーションがアクセスを要求されたアイテムのどれにもアクセスする許可を受けていない)とき、要求は拒否される(ステップ408)。上記の通り、任意的に、隔離されたアプリケーションに要求が拒否されたとの表示が返される。
しかし、隔離されたアプリケーションが一または複数のアイテムの少なくとも1つにアクセスする許可を受けているとき、隔離されたアプリケーションがアクセスを許可されている一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトが生成される(ステップ410)。各記憶アイテムオブジェクトは、上記の通り、一または複数の記憶アイテムに関連する様々な情報を含む。隔離されたアプリケーションがアクセスを許可されている一または複数のアイテムのうちのアイテムからは、上記の通り、フィルタで排除されたアイテムソースのアイテムを除くことができる。
隔離されたアプリケーションに、生成された一または複数の記憶アイテムオブジェクトが返される(ステップ412)。記憶アイテムオブジェクトは、隔離されたアプリケーションに提供されたデータ構造でもよいし、上記の通り、隔離されたアプリケーションにエクスポーズされたオブジェクトでもよい。記憶アイテムオブジェクトは、任意的に、上記の通り、特定の順序や特定のグルーピングで編成されてもよい。
図5は、一または複数の実施形態による隔離されたアプリケーションのためのブローカードアイテムアクセス方法の実装手順500を説明する図である。方法500は、アプリケーション116やアプリケーション202などの隔離されたアプリケーションにより実装される。方法500では、ブローカモジュールのAPIが起動され、アイテムソースの一または複数のアイテムへのアクセスを要求する(ステップ502)。一般的には、要求は、具体的なアイテムソースへのあるタイプのアクセスを求める要求である。上記の通り、異なる様々なタイプの要求を、例えば、アイテムの読み出し、アイテムの書き込み、アイテムの修正、アイテムの検索などの要求を受け取ることができる。
隔離されたアプリケーションがアクセスする権限を与えられた一または複数のアイテムのうちのアイテムを含む少なくとも1つの記憶アイテムオブジェクトが、ブローカーモジュールから受け取られる(ステップ504)。隔離されたアプリケーションが一または複数のアイテムのどれにアクセスする許可を受けているかのチェックは、アイテムソース(例えば、フォルダ、ライブラリ、記憶構造)のルートノードがアクセスされた時など、異なる時に行える。各記憶アイテムオブジェクトは、上記の通り、アイテムに関連する様々な情報を含む。記憶アイテムオブジェクトが受け取られている一または複数のアイテムのうちのアイテムからは、上記の通り、フィルタで排除されたアイテムソースのアイテムを除くことができる。記憶アイテムオブジェクトは、隔離されたアプリケーションに返されたデータ構造でもよいし、上記の通り、隔離されたアプリケーションにエクスポーズされたオブジェクトでもよい。また、記憶アイテムオブジェクトは、任意的に、上記の通り、特定の順序で編成されてもよい。
結論
ここでは、様々なモジュールにより実行される、通信、受信、送信、記憶、生成、取得などの様々なステップを説明した。留意点として、様々なモジュールによりかかるステップを実行できる。ステップを実行させるモジュールは、そのステップを実行するモジュール自体、または代替的にそのステップを実行する他のコンポーネントやモジュール(またはそのモジュールと協働してそのステップを実行する)を起動またはアクセスするモジュールを含む。
本主題を個別の構造的特徴及び/又は方法動作を用いて説明したが、言うまでもなく、添付した特許請求の範囲に規定する主題は、上記の特定の特徴や動作には必ずしも限定されない。上記の特定の特徴や動作は、請求項を実施する形式例を開示するものである。

Claims (8)

  1. コンピューティングデバイスにおける方法であって、
    前記コンピューティングデバイスのブローカーモジュールにおいて、前記コンピューティングデバイスの隔離されたアプリケーションに一または複数のアプリケーションプログラミングインタフェース(API)をエクスポーズするステップであって、前記一または複数のAPIは、アイテムへの異なるタイプのアクセスのために前記隔離されたアプリケーションにより起動され得る一または複数のインタフェースをサポートするステップと、
    前記ブローカーモジュールにおいて、前記一または複数のAPIを介して、前記隔離されたアプリケーションからの、アイテムソースの一または複数のアイテムにアクセスする要求を受け取るステップと、
    前記コンピューティングデバイスにおいて、前記隔離されたアプリケーションが前記一または複数のアイテムのどれにアクセスする許可を受けているかチェックするステップと、
    前記隔離されたアプリケーションが前記一または複数のアイテムのうちどれにもアクセスする許可を受けていないとき、前記要求を拒絶するステップと、
    許可を受けているとき、
    前記隔離されたアプリケーションがアクセスする許可を受けている前記一または複数のアイテムのうちのアイテムを表す一または複数の記憶アイテムオブジェクトを生成するステップと、
    前記一または複数のアイテムのうちの、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムを表す前記生成された一または複数の記憶アイテムオブジェクトをフィルタするステップであって、あるファイルタイプに対応する一または複数の記憶アイテムオブジェクトを排除して、前記フィルタされた一または複数の記憶アイテムオブジェクトが前記ファイルタイプに対応する記憶アイテムオブジェクトを含まないようにするステップと、
    前記隔離されたアプリケーションに前記フィルタされた一または複数の記憶アイテムオブジェクトを返すステップとを有する、方法。
  2. 前記隔離されたアプリケーションは、前記ブローカーモジュールを通して以外は前記アイテムソースへのアクセスを制限される、請求項1に記載の方法。
  3. 前記隔離されたアプリケーションに前記一または複数の記憶アイテムオブジェクトを返すステップは、前記隔離されたアプリケーションに、前記一または複数のAPIのインタフェースであって、記憶アイテムオブジェクトにより表されるアイテムの一または複数の特性を読み出すことを可能にするインタフェースをエクスポーズするステップと、前記記憶アイテムオブジェクトにより表されるアイテムにおける一または複数の動作をサポートするステップとを有する、請求項1に記載の方法。
  4. 前記隔離されたアプリケーションからの要求に応じて、前記一または複数の記憶アイテムオブジェクトのうちの1つを持続するステップをさらに有する、請求項1に記載の方法。
  5. 前記チェックするステップは、前記隔離されたアプリケーションが前記アイテムソースのロケーションのアイテムにアクセスする許可を受けているかチェックするステップを有する、請求項1に記載の方法。
  6. 前記一または複数のアイテムのうち、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムを、前記要求により特定された順序で編成するステップをさらに有する、請求項1に記載の方法。
  7. 前記一または複数のアイテムのうち、前記隔離されたアプリケーションがアクセスする許可を受けているアイテムを、前記要求により特定されたグルーピングで編成するステップをさらに有する、請求項1に記載の方法。
  8. 前記要求は検索基準を含み、前記一または複数のアイテムは前記検索基準を満たす一または複数のアイテムを含む、請求項1に記載の方法。
JP2014513492A 2011-05-27 2011-10-09 隔離されたアプリケーションのためのブローカードアイテムアクセス Expired - Fee Related JP6147733B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/118,158 US20120304283A1 (en) 2011-05-27 2011-05-27 Brokered item access for isolated applications
US13/118,158 2011-05-27
PCT/US2011/055529 WO2012166187A1 (en) 2011-05-27 2011-10-09 Brokered item access for isolated applications

Publications (3)

Publication Number Publication Date
JP2014515528A JP2014515528A (ja) 2014-06-30
JP2014515528A5 JP2014515528A5 (ja) 2014-11-20
JP6147733B2 true JP6147733B2 (ja) 2017-06-14

Family

ID=47220209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014513492A Expired - Fee Related JP6147733B2 (ja) 2011-05-27 2011-10-09 隔離されたアプリケーションのためのブローカードアイテムアクセス

Country Status (12)

Country Link
US (1) US20120304283A1 (ja)
EP (1) EP2715649A4 (ja)
JP (1) JP6147733B2 (ja)
KR (1) KR101828642B1 (ja)
CN (1) CN103562926B (ja)
AU (1) AU2011369370B2 (ja)
BR (1) BR112013030312A2 (ja)
CA (1) CA2836881A1 (ja)
MX (1) MX339055B (ja)
RU (1) RU2602987C2 (ja)
TW (1) TWI550513B (ja)
WO (1) WO2012166187A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120331521A1 (en) * 2011-06-27 2012-12-27 Samsung Electronics Co., Ltd. System and method for application centric cloud management
US9186299B1 (en) * 2012-03-23 2015-11-17 Clark Levi Topical pharmaceutical compounds and methods
US9547607B2 (en) 2013-06-27 2017-01-17 Microsoft Technology Licensing, Llc Brokering application access for peripheral devices
US9514477B2 (en) * 2013-07-10 2016-12-06 AVG Netherlands B.V. Systems and methods for providing user-specific content on an electronic device
US9473562B2 (en) * 2013-09-12 2016-10-18 Apple Inc. Mediated data exchange for sandboxed applications
US10243963B1 (en) * 2015-12-18 2019-03-26 Symantec Corporation Systems and methods for generating device-specific security policies for applications
CN113110941B (zh) * 2016-01-15 2024-05-03 谷歌有限责任公司 使用应用容器管理代码和依赖性数据的传递
GB2555569B (en) * 2016-10-03 2019-06-12 Haddad Elias Enhanced computer objects security
US10509774B2 (en) * 2017-06-09 2019-12-17 Red Hat, Inc. Secure containerized user specific isolated data storage
US11366789B2 (en) 2017-06-29 2022-06-21 Microsoft Technology Licensing, Llc Content access
CN110083465B (zh) * 2019-04-26 2021-08-17 上海连尚网络科技有限公司 一种寄宿应用间的数据传递方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2341057A (en) * 1998-08-28 2000-03-01 Ibm Allocating names to network resources for shared access
TW565768B (en) * 2002-04-12 2003-12-11 Digirose Technology Co Ltd Network peripheral requiring no advance driver installation
US7548930B2 (en) * 2002-10-18 2009-06-16 Neighborhood America Platform for management of internet based public communications and public comment
TW200418285A (en) * 2003-03-06 2004-09-16 Xnet Technology Corp Computer network management software system installing network management software in network interface card
WO2005043360A1 (en) * 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US7493592B2 (en) * 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US20050216598A1 (en) * 2004-03-23 2005-09-29 Taiwan Semiconductor Manufacturing Co., Ltd. Network access system and associated methods
JP5021475B2 (ja) * 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US20080216071A1 (en) * 2005-04-07 2008-09-04 Koninklijke Philips Electronics, N.V. Software Protection
US8010671B2 (en) * 2005-04-29 2011-08-30 Microsoft Corporation Method and system for shared resource providers
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
CN1892664A (zh) * 2005-06-30 2007-01-10 国际商业机器公司 控制对资源的访问的方法和系统
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7840967B1 (en) * 2006-07-06 2010-11-23 Oracle America, Inc. Sharing data among isolated applications
EP2137636B1 (en) * 2007-04-13 2019-02-20 Open Text Sa Ulc Application isolation system
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US20110035601A1 (en) * 2007-12-21 2011-02-10 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
US8060940B2 (en) * 2008-06-27 2011-11-15 Symantec Corporation Systems and methods for controlling access to data through application virtualization layers
KR20100003092A (ko) * 2008-06-30 2010-01-07 주식회사 케이티 중개 서비스를 제공하는 방법 및 장치
EP2194456A1 (en) * 2008-12-05 2010-06-09 NTT DoCoMo, Inc. Method and apparatus for performing a file operation
US9594900B2 (en) * 2008-12-09 2017-03-14 Microsoft Technology Licensing, Llc Isolating applications hosted by plug-in code
US8051152B2 (en) * 2008-12-12 2011-11-01 Sap Ag Isolated application server
US8782670B2 (en) * 2009-04-10 2014-07-15 Open Invention Network, Llc System and method for application isolation
CN101556563B (zh) * 2009-05-25 2010-10-27 成都市华为赛门铁克科技有限公司 多数据源的访问控制方法、装置和存储系统
EP2449466A1 (en) * 2009-06-30 2012-05-09 Citrix Systems, Inc. Methods and systems for selecting a desktop execution location
US20110055352A1 (en) * 2009-09-02 2011-03-03 Korea Advanced Institute Of Science And Technology System and method for brokering content and metadata of content on network
US20110085667A1 (en) * 2009-10-09 2011-04-14 Adgregate Markets, Inc. Various methods and apparatuses for securing an application container
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation

Also Published As

Publication number Publication date
RU2013152629A (ru) 2015-06-10
US20120304283A1 (en) 2012-11-29
BR112013030312A2 (pt) 2016-11-29
AU2011369370A1 (en) 2013-12-19
JP2014515528A (ja) 2014-06-30
CN103562926B (zh) 2016-11-09
EP2715649A1 (en) 2014-04-09
AU2011369370B2 (en) 2017-03-30
EP2715649A4 (en) 2016-07-27
CN103562926A (zh) 2014-02-05
RU2602987C2 (ru) 2016-11-20
WO2012166187A1 (en) 2012-12-06
MX339055B (es) 2016-05-06
KR101828642B1 (ko) 2018-02-12
CA2836881A1 (en) 2012-12-06
MX2013013922A (es) 2013-12-16
TWI550513B (zh) 2016-09-21
KR20140041499A (ko) 2014-04-04
TW201248497A (en) 2012-12-01

Similar Documents

Publication Publication Date Title
JP6147733B2 (ja) 隔離されたアプリケーションのためのブローカードアイテムアクセス
KR101120755B1 (ko) 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법
US8176061B2 (en) Tracking digital assets on a distributed network
JP5005726B2 (ja) 複数の供給源からのメディアファイルの管理
CN102184211B (zh) 文件系统和检索、写入、修改或删除文件的方法与装置
US7966603B2 (en) Systems and methods for context-based content management
US20140195516A1 (en) Systems and methods for presenting content items in a collections view
EP3142030A1 (en) Techniques and systems for supporting podcasting
JP2006107446A (ja) ネットワーク・ドキュメントのバッチ索引付けのためのシステムおよび方法
US20130007667A1 (en) People centric, cross service, content discovery system
US20150026257A1 (en) Music box
US20140359488A1 (en) Centralized Management of Link Data for Multiple Applications, Computers and Resources, through Operating Systems and Networked Storage Services
US9479493B1 (en) Document management system user interfaces
US10853425B2 (en) Systems and methods for managed asset distribution in a distributed heterogeneous storage environment
JP2012531688A (ja) メタデータに従ってファイルシステムのファイルにアクセスする方法、およびその方法を実装する装置
Alomari et al. Cdport: A framework of data portability in cloud platforms
US20140317128A1 (en) Natural language search
KR101589333B1 (ko) 영구 문서 모음 관리 기법
KR20080102828A (ko) 미디어컨텐츠 메타데이터 구축시스템
US8635120B1 (en) File system merchandising
US20210357419A1 (en) Preventing dbms deadlock by eliminating shared locking
US7801922B2 (en) File index processing
EP4195068A1 (en) Storing and retrieving media recordings in an object store
Freund File Systems and Usability—the Missing Link
RADOVICI et al. DISTRIBUTED MULTIMEDIA FILE SYSTEM.

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141002

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150331

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150630

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150728

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151130

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160118

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20160311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170517

R150 Certificate of patent or registration of utility model

Ref document number: 6147733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees