(58)【調査した分野】(Int.Cl.,DB名)
前記リクエストは、特定のベンダーからハードウェアデバイスにアクセスするリクエストを有し、前記アクセスすることを可能にするステップは、前記アプリケーションが前記特定のベンダーから前記ハードウェアデバイスの前記第1の機能にアクセスすることを許可されていることを前記デバイス許可記録が示す場合にのみ、前記アプリケーションが前記ハードウェアデバイスの前記第1の機能にアクセスすることを可能にする、
請求項1に記載の方法。
前記複数の命令は、更に、前記プロセッサに、前記コンピュータデバイスにおける前記ハードウェアデバイスのインストールの間に前記特定する動作及び前記格納する動作を実行させる、
請求項6に記載のコンピュータデバイス。
前記ハードウェアデバイスの前記第1の機能にアクセスすることを示す承諾タイプに関連付けられる前記ハードウェアデバイスの前記第1の機能は、アプリケーション識別子のリストにおいて特定される特権を持ったアプリケーションにのみ許可され、前記ハードウェアデバイスの第2の機能にアクセスすることを示す承諾タイプに関連付けられる前記ハードウェアデバイスの前記第2の機能は、どのアプリケーションが前記ハードウェアデバイスの前記第2の機能へのアクセスをリクエストしているのかにかかわらず許可される、
請求項6に記載のコンピュータデバイス。
【発明を実施するための形態】
【0007】
同じ参照符号は、図面の全体を通して、同じ特徴を参照するために用いられる。
【0008】
デバイス機能へのアプリケーションの結び付けがここで論じられる。コンピュータデバイスは、種々のハードウェアを自身にインストールされ得、それら種々のハードウェアデバイスは、様々な機能を有することができる。デバイス許可記録が保持され、これは、どのアプリケーションがコンピュータデバイスのどのハードウェアデバイスのどの機能にアクセスすることを許可されるのかを示す。このデバイス許可記録は動的であり、どのアプリケーションがコンピュータデバイスのどのハードウェアデバイスのどの機能にアクセスすることを許可されるのかを示す様々なユーザ入力に応答して時間にわたって変化する。幾つかの実施形態は、固定された組のデバイス許可記録を有し、一方、他の実施形態は、新しい、これまで知られていなかったハードウェアデバイスがコンピュータデバイスに加えられる場合に新しい記録が作られることを可能にする拡張可能な組のデバイス許可記録をサポートする。コンピュータデバイスで実行されるアプリケーションは、そのコンピュータデバイスにインストールされるハードウェアデバイスの特定の機能へのアクセスをリクエストすることができる。そのようなリクエストに応答して、デバイスブローカーは、アプリケーションが特定のハードウェアデバイスの特定の機能にアクセスすることを許可されるかどうかを決定するよう、デバイス許可記録を確認する。アプリケーションは、アプリケーションがその特定のハードウェアデバイスのその特定の機能にアクセスすることを許可されることをデバイス許可記録が示す場合に、そうすることを可能にされ、そうでない場合は、アプリケーションは、そのハードウェアデバイスにアクセスすることを認められない。
【0009】
ここでは、対称キー暗号化、公衆キー暗号化、及び公衆/プライベートキー対が参照される。たとえそのようなキー暗号化が当業者によく知られているとしても、そのような暗号化の概要は読者の助けとなるようここに含まれる。公衆キー暗号化において、エンティティ(例えば、ユーザ、ハードウェア又はソフトウェアコンポーネント、デバイス、ドメイン、等)は、それと公衆/プライベートキー対を関連付けている。公衆キーは、公に利用可能にされ得るが、エンティティは、プライベートキーを秘密にしたままとする。プライベートキーによらないと、公衆キーを用いて暗号化されているデータを解読することは、計算上非常に困難である。故に、データは、公衆キーを有する何らかのエンティティによって暗号化され、対応するプライベートキーを有するエンティティによってのみ解読され得る。更に、データのためのデジタル署名は、データ及びプライベートキーを用いることによって生成され得る。プライベートキーによらないと、公衆キーを用いて照合され得る署名を生成することは、計算上非常に困難である。公衆キーを有する如何なるエンティティも、公衆キー、署名、及びに署名されたデータに関して適切なデジタル署名照合を実行することによってデジタル署名を照合するために公衆キーを用いることができる。
【0010】
対称キー暗号化において、他方で、共有キー(対象キーとも呼ばれる。)は2つのエンティティによって知られ、それらによって秘密にされる。共有キーを有する如何なるエンティティも、通常、その共有キーにより暗号化されたデータを解読することができる。共有キーによらないと、共有キーにより暗号化されているデータを解読することは、計算上非常に困難である。故に、2つのエンティティが両方とも共有キーを知っている場合に、夫々は、他方によって解読可能なデータを暗号化することができるが、他方のエンティティが共有キーを知らない場合は、その他方のエンティティはデータを解読することができない。同様に、共有キーを有するエンティティは、同じエンティティによって解読可能なデータを暗号化することができるが、他のエンティティは、その他のエンティティが共有キーを知らない場合は、データを解読することができない。更に、デジタル署名は、例えばキーハッシュメッセージ認証コードメカニズムを用いるような対称キー暗号化に基づき、生成され得る。共有キーを有する如何なるエンティティも、デジタル署名を生成して照合することができる。例えば、信頼される第三機関は、特定のエンティティの識別に基づき対称キーを生成することができ、次いで、その特定のエンティティのために(例えば、対称キーを用いてデータを暗号化又は解読することによって)デジタル署名の生成及び照合の両方を行うことができる。
【0011】
図1は、1又はそれ以上の実施形態に従って、デバイス機能へのアプリケーションの結び付けを実施するコンピュータデバイス100の例を表すブロック図である。コンピュータデバイス100は、様々な異なるタイプのデバイスであってよい。例えば、コンピュータデバイス100は、デスクトップコンピュータ、ネットブック若しくはラップトップコンピュータ、ノートパッド若しくはタブレットコンピュータ、モバイル局、エンターテイメント機器、表示デバイスへ通信上結合されるセットトップボックス、テレビ受像機若しくは他の表示デバイス、携帯電話若しくは他の無線電話、ゲーム機、自動車コンピュータ、等であってよい。
【0012】
コンピュータデバイス100は、オペレーティングシステム102と、1又はそれ以上(m)のアプリケーション104(1),・・・,104(m)と、1又はそれ以上(n)のハードウェアデバイス106(1),・・・,106(n)とを有する。アプリケーション104は夫々、ゲーム若しくは他のエンターテイメントアプリケーション、ユーティリティアプリケーション、プロダクティビティアプリケーション(例えば、ワード処理又は表計算アプリケーション)、リファレンスアプリケーション、通信アプリケーション、等のような、様々な異なるタイプのアプリケーションのいずれかであってもよい。アプリケーション104は、コンピュータデバイス100によって、ローカルソースから取得され(例えば、ローカルディスク又はフラッシュメモリデバイスからインストールされ)、且つ/あるいは、リモートソースから取得され(例えば、インターネット、セルラー又は他の無線ネットワークのようなネットワークを介して他のデバイスから取得され)得る。
【0013】
ハードウェアデバイス106は夫々、オペレーティングシステム102にアクセス可能な様々な異なるタイプのデバイス又はコンポーネントのいずれかであってよい。例えば、ハードウェアデバイス106は、カメラ、マイクロホン、プリンタ、記憶デバイス(例えば、フラッシュメモリ、加入者識別モジュール(SIM)カード、等)、モバイルブロードバンドチップセット又はカード、等であってよい。ハードウェアデバイス106は、コンピュータデバイス100の部分として含まれて(例えば、コンピュータデバイス100のプロセッサ及びメモリと同じ筐体に含まれて)、且つ/あるいは、(例えば、有線又は無線接続を介して)コンピュータデバイス100へ結合される別個のデバイスであってよい。ハードウェアデバイス106は、新しいハードウェアデバイスをコンピュータデバイス100と同じ物理的筐体に物理的に加えることによって、又は新しいハードウェアデバイスをコンピュータデバイス100へ(例えば、有線及び/又は無線接続を用いて)別なふうに結合して、コンピュータデバイス100に(それまでインストールされていない場合に)インストールされる関連するソフトウェア及び/又はファームウェアを有することによって、コンピュータデバイス100にインストールされる。その関連するソフトウェア及び/又はファームウェアは、デバイスドライバとも呼ばれ、関連するハードウェアデバイスと如何にして通信すべきかを理解し、コンピュータデバイス100における他のアプリケーション、コンポーネント、又はモジュールがその関連するハードウェアデバイスにアクセスすることを可能にする。デバイスドライバによって提供される正確な機能性は、コンピュータデバイス100が作られた時にオペレーティングシステム102に知られても又は知られていなくてもよい。
【0014】
オペレーティングシステム102は、コンピュータデバイス100で実行されるアプリケーション104を管理するとともに、アプリケーション104によるハードウェアデバイス106へのアクセスを管理する。オペレーティングシステム102は、デバイスブローカー112と、デバイス許可記録114とを有する。ハードウェアデバイス106にアクセスするために、アプリケーション104は、オペレーティングシステム102からそのハードウェアデバイス106へのアクセスをリクエストする。デバイスブローカー112は、リクエスト元のアプリケーション104がそのハードウェアデバイス106にアクセスすることを許可されているかどうかを決定するよう、デバイス許可記録114を確認する。リクエスト元のアプリケーション104がそのハードウェアデバイス106にアクセスすることを許可されていることをデバイス許可記録114が示す場合は、デバイスブローカー112は、リクエスト元のアプリケーション104がそのハードウェアデバイス106にアクセスすることを可能にする。しかし、リクエスト元のアプリケーション104がそのハードウェアデバイス106にアクセスすることを許可されていないとデバイス許可記録114が示す場合は、デバイスブローカー112は、リクエスト元のアプリケーション104がそのハードウェアデバイス106にアクセスすることを妨げる(又は別なふうに認めない)。
【0015】
図2は、1又はそれ以上の実施形態に従ってデバイス機能へのアプリケーションの結び付けを実施するシステム200の例を表すブロック図である。システム200は、
図1のコンピュータデバイス100のようなコンピュータデバイスにおいて実施される。システム200は、
図1のアプリケーション104であってよいアプリケーション202を有する。アプリケーション202は、システム200のデバイス及び/又は他のリソース(例えば、メモリ、他のアプリケーション、等)にアクセスするアプリケーション202の能力が制限される形で実行され得る。コンピュータデバイスのオペレーティングシステム(又は代替的に他のソフトウェア若しくはファームウェア)は、アプリケーション202が、アプリケーション202に割り当てられた又は別なふうに利用可能にされたコンピュータデバイスのメモリにアクセスすることを可能にするが、アプリケーション202がコンピュータデバイスの他のメモリ及び/又はコンピュータデバイスで実行される他のアプリケーションにアクセスすることを妨げる。これは、コンピュータデバイスで実行される他のアプリケーションがアプリケーション202によって干渉されないようにする同時に、アプリケーション202がコンピュータデバイスで実行される他のアプリケーションによって干渉されないようにする。1又はそれ以上の実施形態において、アプリケーション202は、サンドボックス(サンドボックス204として破線により示される。)においてアプリケーション202を実行することによって、制限された形で実行される。単一のアプリケーション202がシステム200にインストールされているが、複数のアプリケーションが同時にシステム200において実行され得る点に留意されたい(夫々のアプリケーションは、通常、それ自身のサンドボックスにおいて実行される。)。
【0016】
コンピュータデバイスにより実施されるシステム200にインストールされるハードウェアデバイスは、様々な機能を有することができ、その中の1又はそれ以上は、一群又は分類の機能にまとめられ得る。ハードウェアデバイスの機能は、ハードウェアデバイスによって提供される又は別なふうにサポート若しくは許可される機能性及び/又は動作をいう。ハードウェアデバイスの特定の機能及びそれらがまとめられる方法は、ハードウェアデバイスの設計者若しくはベンダーによって、又は代替的に他のコンポーネント若しくはエンティティによって(例えば、コンピュータデバイスにおけるオペレーティングシステムの設計者若しくはベンダーによって)、定義され得る。例えば、プリンタデバイスは、(アプリケーションが印刷のためにプリンタへデータを送信することを可能にする)印刷機能、及び(アプリケーションがプリントヘッドを再校正すること、インク又はトナーのレベルを取得すること、印刷に関する統計値を取得すること、等を可能にする)管理機能を有してよい。他の例として、モバイルブロードバンドデバイスは、(アプリケーションがテキストメッセージ、マルチメディアメッセージ、ウェブページ、等のようなデータをモバイルブロードバンド接続を介して送信及び/又は受信することを可能にする)通信機能、(アプリケーションが特定のネットワークにおける使用のためにモバイルブロードバンドデバイスを提供又はセットアップすることを可能にする)プロビショニング機能、及び(アプリケーションが特定のネットワークによる使用のためにコンフィグレーション設定を調整すること、特定のネットワーク上での使用に関する情報(例えば、送信及び/又は受信されるデータの量)を取得すること、等を可能にする)管理機能、等を有してよい。コンピュータデバイスにより実施されるシステム200へ結合されるハードウェアデバイスの機能性は、アプリケーション202以外のシステムのオペレーティングシステム又は他のコンポーネントに知られる必要はない(なお、代替的に、知られていてもよい)。
【0017】
ハードウェアデバイスの機能の特定の分類にアクセスするために、アプリケーション202は、所望の機能にアクセスするようデバイスブローカー206へリクエストを発する。
デバイスブローカー206は、例えば、
図1のデバイスブローカー112であってよい。アプリケーション202は、様々な異なる方法においてデバイスブローカー206へリクエストを発する。1又はそれ以上の実施形態において、アプリケーション202は、アプリケーション202がその場合に所望の機能にアクセスするために使用することができるハードウェアデバイスの所望の機能へのハンドル(又はそれらの他の識別子)を公開又は作成するリクエストを発する。リクエストは、例えば、デバイスインターフェースクラスへのハンドルを公開するリクエストであってよい。リクエストに応答して、デバイスブローカー206は、アプリケーション202がリクエストされる機能にアクセスすることを許可されているかどうかを決定するよう、デバイス許可記録208(
図1のデバイス許可記録114であってよい。)を確認する。デバイスブローカー206は、アプリケーション202がリクエストされる機能にアクセスすることを許可されているとデバイス許可記録208が示す場合にのみ、リクエストされる機能へのリクエストされるハンドル(又は他の識別子)を返す。リクエストされる機能へのこのハンドル(又は他の識別子)は、ハードウェアデバイスに関連する1又はそれ以上のデバイスドライバ(例えば、ソフトウェア又はファームウェア)の識別、ハードウェアデバイスに関連する1又はそれ以上のデバイスドライバの1又はそれ以上のアプリケーションプログラミングインターフェース(API)の識別、等のように、様々な形を取ることができる。1又はそれ以上の実施形態において、デバイスブローカー206(又は、少なくとも、デバイス許可記録208を確認するデバイスブローカー206の部分)は、アプリケーション202がデバイス許可記録208を確認するデバイスブローカー206に干渉することを妨げるよう、システム200の信頼されるコンポーネント(例えば、オペレーティングシステムの信頼されるコアの部分又は他の信頼される部分)として実施される。
【0018】
デバイス許可記録208は、機能識別子214と、関連する承諾タイプ216とを含む。コンピュータデバイスにより実施されるシステム200にインストールされるハードウェアデバイスの機能の各群又は分類は、対応する機能識別子214を有する。各機能識別子214は、必要に応じて、アプリケーションがその機能識別子214によって特定される分類の機能にアクセスするために、どのような承諾が必要とされるかを示す関連する承諾タイプ216を有する。よって、同じハードウェアデバイスのための異なる分類の機能は、アプリケーションがそれらの異なる分類の機能にアクセスするために必要とされる異なるタイプの承諾を示す異なる関連する承諾タイプを有することができる。アプリケーションが機能識別子214によって特定される分類の機能にアクセスするために必要とされる承諾のタイプに依存して、機能識別子はまた、関連するアプリケーション識別子(ID)リスト218を有してよい。各アプリケーションIDリスト218は、関連する機能識別子214によって特定される機能にアクセスすることを許可される1又はそれ以上のアプリケーション識別子のリストである。
【0019】
1又はそれ以上の実施形態において、各機能識別子214は、特定のタイプのハードウェアデバイスの特定の分類又は群の機能を特定するデバイスインターフェースクラスである。例えば、機能識別子214は、カメラタイプのデバイスの画像捕捉機能の識別子、カメラタイプのデバイスのカメラ設定機能の識別子、モバイルブロードバンドタイプのデバイスの通信機能の識別子、モバイルブロードバンドタイプのデバイスのプロビショニング機能の識別子、等であってよい。同じタイプの複数の異なるハードウェアデバイス(例えば、複数の異なるカメラ)は、同じデバイスインターフェースクラスの部分として含まれ得る。デバイスインターフェースクラスは、オペレーティングシステム(例えば、
図1のオペレーティングシステム102)によって若しくはその部分として、及び/又は他のエンティティ(例えば、ハードウェアデバイス設計者若しくはベンダー)によって、定義され得る。
【0020】
システム200の動作の間、コンピュータデバイスにインストールされる特定のハードウェアデバイスに関連するデバイスドライバは、その特定のハードウェアデバイスのためのデバイスインターフェースクラスのインスタンスを、コンピュータデバイスのオペレーティングシステムに登録する。オペレーティングシステムは、デバイスインターフェースクラスのそのインスタンスを特定のハードウェアデバイスに関連付け、如何にしてアプリケーション(例えば、アプリケーション202)がそのインスタンスの機能にアクセスすることができるかのインジケーションを保持する。1又はそれ以上の実施形態において、このインジケーションは、デバイスのインスタンスのためのハンドルである。代替的に、このインジケーションは、機能のポインタ、リンク、又は他の識別子のような他の形で実施され得る。ハンドルがここでは論じられているが、如何にしてアプリケーションがインスタンスの機能にアクセスすることができるのかの他のインジケーションがハンドルと同じように使用され得る点に留意されたい。その特定のハードウェアデバイスの機能にアクセスするために、アプリケーション202は、デバイスブローカー206から、そのインスタンスのためのハンドルをリクエストする。デバイスブローカー206は、アプリケーション202が特定のデバイスインターフェースクラスにアクセスすることを許可されることをデバイス許可記録208が示す場合にのみ、その特定のデバイスインターフェースクラスのインスタンスのためのハンドルを返す。
【0021】
代替的に、デバイスインターフェースクラスよりむしろ、機能識別子214は、他の方法においてハードウェアデバイス又はハードウェアデバイスのタイプを特定することができる。1又はそれ以上の実施形態において、デバイスインターフェースクラスよりむしろ、ハードウェアデバイスの他のカテゴリ又はグルーピングが保持され、そのようなカテゴリ又はグルーピングは夫々、承諾タイプと関連付けられる。それらのカテゴリ又はグルーピングは、同じ分配者によって提供される又は同じベンダーによって製造されるデバイスの集まり、特定の会社、グループ若しくは他のエンティティによって評価又は承認されたデバイスの集まり、等のように、種々の方法において定義され得る。他の実施形態において、デバイスインターフェースクラスよりむしろ、個々のハードウェアデバイスが夫々、承諾タイプ216と関連付けられ得る。個々のハードウェアデバイスは、例えば、ハードウェアデバイスの分配者又はベンダーによって割り当てられるモデル番号又は他の識別子によって、ハードウェアデバイスに関連するデバイスドライバの識別子によって、等、種々の方法において特定され得る。
【0022】
よって、一例として、機能識別子214は、特定のハードウェアデバイスの特定のデバイスインターフェースのインスタンスを特定するハードウェアインスタンスIDであってよい。他の例として、機能識別子214は、特定のハードウェアデバイスのモデルIDであってよく、このモデルIDは、特定のハードウェアデイバスの様々な機能を特定する(例えば、ベンダーの製造識別子、分類識別子、改訂識別子、それらの組み合わせ、等)。
【0023】
各承諾タイプ216は、必要に応じて、アプリケーションが関連する機能識別子214によって特定される分類の機能にアクセスするために、どのような承諾が必要とされるのかを示す。様々な異なるタイプの承諾が承諾タイプ216において特定され得る。1又はそれ以上の実施形態において、各承諾タイプ216は、許可、拒絶、プロンプト、又は特権付与の中の1以上である。許可承諾タイプは、関連する機能へのアクセスが(ハードウェアデバイスへのアクセスするリクエストするアプリケーションと無関係に)許可されることを示す。拒絶承諾タイプは、関連する機能へのアクセスが(ハードウェアデバイスへのアクセスするリクエストするアプリケーションと無関係に)許可されないことを示す。プロンプト承諾タイプは、コンピュータデバイスにより実施されるシステム200のユーザが、アプリケーションが関連する機能にアクセスするための承認を促されることを示す。特権付与承諾タイプは、関連する機能へのアクセスが特権を持ったアプリケーションにのみ許可されることを示す。
【0024】
特定の機能識別子214において示される承諾タイプ216が特権付与承諾タイプである場合に、デバイス許可記録208はまた、機能識別子214に関連付けられたアプリケーションIDリスト218を含む。特定の機能識別子214において示される承諾タイプ216が特権付与承諾タイプ以外である(例えば、許可、拒絶、又はプロンプト承諾タイプである)場合は、その特定の機能識別214に関連付けられたアプリケーションIDリスト218はデバイス許可記録208に含まれる必要がない。各アプリケーションIDリスト218は、関連する機能識別子214によって特定される機能にアクセスすることを許可又は承認される1又はそれ以上のアプリケーション識別子(例えば、特権を持ったアプリケーション)のリストである。機能のための承諾タイプが特権付与承諾タイプであり、且つ、アプリケーション202が、それがアクセスをリクエストするハードウェアデバイスの機能の機能識別子214と関連付けられたアプリケーションIDリストに含まれない場合は、アプリケーション202は、ハードウェアデバイスのそれらの機能へのアクセスを拒絶される。代替的に、機能のための承諾タイプが特権付与である場合は、特権付与承諾タイプのインジケーションは、機能識別子214と関連付けられる承諾タイプ216として含まれる必要はない。むしろ、機能識別子214と関連付けられるアプリケーションIDリスト218の存在により、機能識別子214と関連付けられる承諾タイプは特権付与承諾タイプであることが暗に示され得る。
【0025】
ハードウェアデバイス機能(又はハードウェアのタイプ)と、それらの機能にアクセスすることを許可されるアプリケーション識別子との関連付けは、ハードウェアデバイスへのアプリケーションの結び付けとも呼ばれる。アプリケーション202の識別子が、機能識別子214と関連付けられるアプリケーションIDリストに含まれる場合は、アプリケーション202は、関連する機能識別子214によって特定される機能と結び付けられる。なお、アプリケーション202の識別子が機能識別子214と関連付けられるアプリケーションIDリストに含まれない場合は、アプリケーション202は、関連する機能識別子214によって特定される機能と結び付けられない。
【0026】
アプリケーション202のためのアプリケーション識別子は、様々な異なる方法において生成され得る。1又はそれ以上の実施形態において、アプリケーション202のためのアプリケーション識別子は、暗号化ハッシュ機能をアプリケーション202及び/又はアプリケーション202のメタデータに適用してハッシュ値を生成することによって、生成される。様々な異なる暗号化ハッシュ関数のいずれかが用いられ得る。例えば、SHA−1(Secure Hash Algorithm 1)又はSHA−2、ワールプール(Whirlpool)、タイガー(Tiger)、FSB(First Syndrome-based hash functions)、等がある。デバイスブローカー206、又はデバイスブローカー206によって信頼される他のコンポーネント若しくはモジュールは、アプリケーション202のためのハッシュ値を生成することができる。アプリケーション202のためのハッシュ値は、種々の時点で生成されてよく、例えば、アプリケーション202のためのハッシュ値は、前もって生成され、デバイスブローカー206へ供給される(例えば、アプリケーション202がコンピュータデバイスにより実施されるシステム200にインストールされる時、アプリケーション202が実行を開始する時、等に、生成される。)。アプリケーション202のためのハッシュ値が前もって生成される状況において、ハッシュ値が生成された後に変更されないように(あるいは、ハッシュ値の変更が検出可能であるように)注意が払われる。例えば、ハッシュ値は、デバイスブローカー206によって信頼されるエンティティによってデジタル署名され得る。代替的に、アプリケーション202のためのハッシュ値は、他の時点で、例えば、所望のハードウェアデバイスにアクセスするためのアプリケーション202からのリクエストに応答して、生成され得る。
【0027】
代替的に、アプリケーション202のためのアプリケーション識別子は、他の方法において生成され得る。例えば、識別子は、(例えば、アプリケーション202の開発者又は分配者によって)アプリケーション202へ割り当てられ、信頼されるエンティティ(デバイスブローカー206によって信頼されるコンポーネント、モジュール、デバイス、又の他のエンティティ)によってデジタル署名され得る。デバイスブローカー206、又はデバイスブローカー206によって信頼される他のコンポーネント若しくはモジュールは、アプリケーション202のアプリケーション識別子がデバイスブローカー206によって信頼され得ることを確かめるよう、アプリケーション202のためのデジタル署名を照合することができる。デジタル署名は、所望のハードウェアデバイスにアクセスするためのアプリケーション202からのリクエストに応答して、又は上述されたようなアプリケーション202のためのハッシュ値の生成と同じ他の時点で、照合され得る。
【0028】
デバイス許可記録208は、様々な時点で生成され、変更され得る。1又はそれ以上の実施形態において、デバイスブローカー206を含むオペレーティングシステム(例えば、
図1のオペレーティングシステム102)は、初期デバイス許可記録208を有する。追加のデバイスインターフェースクラス及び関連する許可エントリは、新しいハードウェアがコンピュータデバイスにより実施されるシステム200にインストールされる場合に、デバイス許可記録208に加えられ得る。デバイスインターフェースクラス及び関連する許可エントリは、システム200の更新の間にも追加、除去、及び/又は変更され得る。よって、特定のハードウェアデバイス及び/又はハードウェアデバイスの特定の機能(並びにそれらの識別子)は、コンピュータデバイスが作成又は構築される場合に、コンピュータデバイスにより実施されるシステム200のオペレーティングシステムに知られる必要はなく、むしろ、最後の時点でコンピュータデバイスに加えられ得る。更に、ハードウェアデバイスの特定の機能及びそれらの識別子は、コンピュータデバイスにより実施されるシステム200のオペレーティングシステムに定義されるか、又はそのオペレーティングシステムによって知られるそれらの機能性である必要はない。むしろ、特定の機能と関連付けられる機能識別子がデバイス許可記録208に加えられ、アプリケーション202に知られる機能であってよい。アプリケーション202は、それらの機能がどのようなものであるかを知るオペレーティングシステム(及びシステム200の他のコンポーネント)がない場合に、(デバイス許可記録208に基づき)それらの機能にアクセスすることを可能にされ得る。
【0029】
1又はそれ以上の実施形態において、システム200は、デバイスインストールファイル及びデータ232を受信し又は別なふうに取得するインストールマネージャ230を有する。デバイスインストールファイル及びデータ232は、コンピュータデバイスにより実施されるシステム200においてハードウェアデバイスのためのデバイスドライバとしてインストールされる1又はそれ以上のファイル及び/又はデータを含む。デバイスインストールファイル及びデータ232は、新しいハードウェアデバイスがコンピュータデバイスにより実施されるシステム200にインストールされる場合に、インストールマネージャ230によって取得される。例えば、デバイスインストールファイル及びデータ232は、新しいハードウェアデバイスがコンピュータデバイスにより実施されるシステム200にインストールされる場合に、リモートサービスから自動的にダウンロードされ得る。デバイスインストールファイル及びデータ232は、デバイスドライバ、セットアップ情報ファイル(例えば、INFファイル)、デバイスドライバに関連するメタデータ、マニフェスト、等のように、様々な異なる形を取ることができる。
【0030】
インストールマネージャ230は、デバイスインストールファイル及びデータ232において許可情報を特定し、その許可情報をデバイス許可記録208に加える。この許可情報は、デバイス許可記録208に対してなされるべき変更を特定する。例えば、この許可情報は、特定のデバイスインターフェースクラスのためのアプリケーションIDリストに加えられる(又はそれから除かれる)1以上の新しいアプリケーション識別子を含むことができる。他の例として、この許可情報は、記録208に加える1以上の新しいデバイスインターフェースクラス及び関連する許可エントリを含むことができる。更なる他の例として、この許可情報は、許可のタイプの変更を含むことができる(例えば、プロンプト承諾タイプから特権付与承諾タイプへの又はその逆の、特定のデバイスインターフェースクラスと関連付けられる承諾タイプ216の変更)。上述されたようなアプリケーション202のためのハッシュ値と同様に、生成された後に、デバイスインストールファイル及びデータ232が変更されないように(又は許可情報の変更が検出可能であるように)注意が払われる。例えば、許可情報は、インストールマネージャ230によって信頼されるエンティティによってデジタル署名され得る。
【0031】
同様に、インストールマネージャ230はまた、デバイス更新ファイル及びデータ234を受信し又は別なふうに取得することができる。デバイス更新ファイル及びデータ234は、デバイスインストールファイル及びデータ232と同様であり、デバイス許可記録208に対してなされるべき変更を特定する。しかし、デバイス更新ファイル及びデータ234は、コンピュータデバイスにより実施されるシステム200に既にインストールされているハードウェアデバイスのためのデバイスドライバ及び/又は他のデータを更新するようインストールマネージャ230によって取得される。デバイス更新ファイル及びデータ234は、デバイスドライバ、セットアップ情報ファイル(例えば、INFファイル)、デバイスドライバに関連するメタデータ、マニフェスト、等のように、様々な異なる形を取ることができる。デバイス更新ファイル及びデータ234は、インストールマネージャ230が、デバイスインストールファイル及びデータ232に含まれる許可情報と同様に、デバイス許可記録208に加える様々な許可情報を特定することができる。上述されたようなデバイスインストールファイル及びデータ232における許可情報と同様に、生成された後に、デバイス更新ファイル及びデータ234が変更されないように(又は許可情報の変更が検出可能であるように)注意が払われる。例えば、許可情報は、インストールマネージャ230によって信頼されるエンティティによってデジタル署名によってデジタル署名され得る。
【0032】
デバイスインストールファイル及びデータ232(及び/又はデバイス更新ファイル及びデータ234)は、同じデバイスの異なる機能に加えられる異なるアプリケーションIDを有することができる点に留意されたい。アプリケーションは、ハードウェアデバイスの全ての機能へのアクセスを与えられる必要はない。例えば、インストール及び/又は更新データは、モバイルブロードバンドデバイスのプロビショニング機能を特定する機能識別子214に加えられる1つのアプリケーションIDと、モバイルブロードバンドデバイスの管理機能を特定する機能識別子214に加えられる他のアプリケーションIDとを特定することができる。
【0033】
1又はそれ以上の実施形態において、コンピュータデバイスにより実施されるシステム200にインストールされるハードウェアデバイスは、拡張マークアップ言語(XML)ファイルである関連するメタデータファイルと、INFファイルである関連するセットアップ情報ファイルとを有する。同様に、1又はそれ以上の実施形態において、コンピュータデバイスにより実施されるシステム200に既にインストールされており更新されるハードウェアデバイスは、関連するメタデータXMLファイル及び/又はINFファイルを有することができる。INFファイルは、インストールする特定のファイル及び、それらのファイルがコンピュータデバイスにおいてどこにインストールされるべきか、(例えば、オペレーティングシステムレジストリのようなオペレーティングシステム記憶において)必要とされる設定、等をインストールマネージャ230に示す。INFファイルはまた、デバイスの機能にアクセスするための特定のデバイスインターフェースクラスを(例えば、デバイスインターフェースクラスが互いに区別されることを可能にするグローバル一意識別子(GUID)又は他の識別子を用いて)特定するとともに、それらのデバイスインターフェースクラスの夫々と関連付けられる承諾タイプを特定する。メタデータXMLファイルは、特許付与の承諾タイプを有するINFファイルにおいて特定される各デバイスインターフェースクラスについて、そのデバイスインターフェースクラスの機能にアクセスすることを許可される1又はそれ以上のアプリケーションIDを含む。なお、機能識別子、承諾タイプ、及び/又はアプリケーションIDリストは、メタデータXML及びINFファイルよりむしろ、他の方法においてデバイスインストールファイル及びデータ232及び/又はデバイス更新ファイル及びデータ234に含まれ得る点に留意されたい。
【0034】
また、デバイス許可記録208は、他の時点で、及び/又は他のイベントに応答して、変更され得る点に留意されたい。例えば、システム200のユーザ又は管理者は、デバイス許可記録208に行う特定の変更を示す入力(例えば、特定の機能識別子と関連付けられる特定の承諾タイプを特定する入力、特定の機能識別子と関連付けられるアプリケーションIDリストに加えられる特定のアプリケーションIDを特定する入力、等)を提供してよい。そのような入力は、システム200の設定ユーザインターフェースにアクセスするシステム200のユーザ又は管理者によって、アプリケーションが関連する機能にアクセスするための承認を促される場合に“許可”選択肢を選択するシステム200のユーザによって(例えば、“許可”選択肢のユーザ選択に応答して、アプリケーションの識別子は、特定の機能識別子と関連付けられるアプリケーションIDリストに加えられ得る。)、等により、提供され得る。
【0035】
1又はそれ以上の実施形態において、デバイス許可記録208は、どのコンポーネント又はモジュールが記録208を更新することを認められるかを制限する安全な方法で記憶される。例えば、デバイス許可記録208は、特定のコンポーネント又はモジュール(インストールマネージャ230の1又はそれ以上のモジュール、又デバイスブローカー206を含むオペレーティングシステムのモジュールのみ)によってのみ、例えば、様々な従来の信頼されるブート又は安全なブート技術を用いるような、任意に特定の時点で(例えば、コンピュータデバイスにより実施されるシステム200をブーティングする処理の間)、変更され得る保護されたメモリに記憶され得る。他の例として、デバイス許可記録208は、(例えば、インストールマネージャ230、又はデバイスブローカー206によって信頼される他のエンティティによって)デジタル署名され、記録208におけるデジタル署名が照合される場合にのみデバイスブローカー206によって使用され得る。
【0036】
デバイス許可記録208は、複数の機能識別子並びに関連する承諾タイプ及び/又はアプリケーションIDリストを含むテーブルとして、
図2では表されている。テーブルとして表されているが、デバイス許可記録208は、様々な異なるデータ構造又は記憶技術を用いて実施され得る点に留意されたい。また、デバイス許可記録208は、複数の記憶又はテーブルに分けられ得る点にも留意されたい。例えば、デバイス許可記録208は2つの記憶を有してよく、1つの記憶は機能識別子214及び関連する承諾タイプ216を含み、他の記憶は機能識別子214及び関連するアプリケーションIDリスト218を含む。
【0037】
更に、コンピュータデバイスにより実施されるシステム200に知られるハードウェアデバイスのリストは静的である必要はない(が代替的に静的であってもよい)点に留意されたい。ハードウェアデバイスがコンピュータデバイスにより実施されるシステム200に加えられる場合に、デバイス許可記録208は、アプリケーション202によるアクセスのためのその後の要求時に、どのようなタイプの承諾がコンピュータデバイスにより実施されるシステム200に加えられるハードウェアデバイスの新しいインスタンスに加えられるべきかを適切に反映するよう管理される。ハードウェアデバイスの新しいインスタンスは、機能識別子214がデバイス許可記録208に既に含まれている機能を有するハードウェアデバイスをいう。例えば、1つの特定のカメラ(カメラの1つのインスタンス)は予め、コンピュータデバイスにより実施されるシステム200へ結合されてよく、第2のカメラ(カメラの新しいインスタンス)は、コンピュータデバイスにインストールされてよい。カメラの機能のための機能識別子214は、この第2のカメラがコンピュータデバイスにインストールされる新しいカメラであるとしても、デバイス許可記録208に既に含まれ得る。
【0038】
1又はそれ以上の実施形態において、デバイスブローカー206は、コンピュータデバイスにより実施されるシステム200にインストールされるハードウェアデバイスの新しいインスタンスのための様々なポリシー又はルールの1又はそれ以上を適用する。例えば、デバイスブローカー206は、デバイス許可記録208において特定の機能識別子214によって特定される承諾のタイプが、いつハードウェアデバイスがインストールされたのかにかかわらず、その特定の機能識別子214によって特定される分類の機能にアクセスするようリクエストする全てのアプリケーションに適用可能であると決定することができる。他の例として、デバイスブローカー206は、ハードウェアデバイスの新しいインスタンスのために特定の機能識別子214によって特定される分類の機能へのアクセスが、適切な承諾がユーザから得られる(例えば、ユーザが、ハードウェアデバイスの新しいインスタンスがアクセスされるための承認を促されるか、又はハードウェアデバイスの新しいインスタンスが、コンピュータデバイスに既にインストールされているハードウェアデバイスの他のインスタンスと同じように扱われるための承諾を促される)まで拒絶されると決定することができる。代替的に、如何にして承諾がハードウェアデバイスの新しいインスタンスに適用されるべきかのより精細な決定が(例えば、特定の機能識別子214、又はアクセスがリクエストされている機能識別子214と関連付けられる特定の承諾タイプ216に基づき)なされてよい。
【0039】
更に、1又はそれ以上の実施形態において、特定のアプリケーションは、特定のハードウェアデバイスの機能へのアクセスに制限される。そのような制限は、例えば、特定のベンダー(例えば、製造者、分配者、等)が、どのアプリケーションがそのベンダーのハードウェアデバイスの機能にアクセスすることができるのかを(他のベンダーからの他のハードウェアデバイスが同じ機能をサポートするかどうかにかかわらず)制限することを可能にする。そのような制限は、種々の方法において実施され得る。例えば、異なる機能識別子214が、(それらの異なる機能識別子によって特定される機能が同じであるとしても)異なるハードウェアデバイスについて使用され得る。他の例として、ハードウェアデバイスに関連するデータ(例えば、最初にオペレーティングシステムに含まれるデータ、デバイスインストールファイル及びデータ232におけるデータ、デバイス更新ファイル及びデータ234におけるデータ、等)は、特定のアプリケーションIDリストを有するアプリケーションによってアクセスされ得る(例えば、ハードウェアデバイスベンダー、ハードウェアデバイスモデル、等によって特定される)特定のハードウェアデバイスのインジケーションを含むことができる。それらのハードウェアデバイスのインジケーションは、例えば、それらのハードウェアデバイスのインジケーションをデバイス許可記録208において特定のアプリケーションIDと関連付けることによって、保持され得る。この例に従い、デバイスブローカー206は、アプリケーション202のアプリケーションIDが特定のハードウェアデバイスの機能の分類と関連付けられるアプリケーションIDリスト218に含まれる場合且つその特定のハードウェアデバイスがその機能の分類についてアプリケーションIDリスト218におけるアプリケーション202のアプリケーション202と関連付けられる場合にのみ、アプリケーション202がその機能の分類にアクセスすることを可能にすることができる。
【0040】
図3は、1又はそれ以上の実施形態に従ってデバイス許可記録を変更する処理300の例を表すフローチャートである。処理300は、コンピュータデバイス、例えば、
図1のコンピュータデバイス100によって、実行され、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせにおいて実施され得る。処理300は、動作の組として示され、様々な動作の操作を実行するために示された順序に制限されない。処理300は、デバイス許可記録を変更する処理の例であり、デバイス許可記録の変更に関する更なる議論は、異なる図を参照してここに含まれる。
【0041】
処理300において、ハードウェアデバイスに関連するインストール又は更新データが取得される(動作302)。このデータは、コンピュータデバイスでのハードウェアデバイスのインストールの間、且つ/あるいは、コンピュータデバイスに予めインストールされているハードウェアデバイスのためのデバイスドライバ及び/又は他のデータの更新の間、使用される。データは、例えば、
図2のデバイスインストールファイル及びデータ232並びに/又はデバイス更新ファイル及びデータ234からであってよい。
【0042】
インストール又は更新データが新しい又は更新される承諾タイプを含むかどうかに関して、確認がなされる(動作304)。新しい承諾タイプは、コンピュータデバイスにインストールされる新しいハードウェアデバイスの機能のための承諾タイプと、コンピュータデバイスに予めインストールされているハードウェアデバイスの新しい機能のための承諾タイプとに言及する。更新される承諾タイプは、コンピュータデバイスに予めインストールされているハードウェアデバイスの機能のための承諾タイプにおける変更に言及する。
【0043】
インストール又は更新データが新しい又は更新される承諾タイプを含む場合は、デバイス許可記録は、取得されたインストール又は更新データに基づき更新される(動作306)。デバイス許可記録のこの更新は、デバイス許可記録への新しい承諾タイプの追加、コンピュータデバイスに予めインストールされているハードウェアデバイスの機能のための承諾タイプの変更、等といった、デバイス許可記録に対する様々な変更を含む。
【0044】
更に、インストール又は更新データがアプリケーションIDリストに対する変更を含むかどうかに関しても、確認がなされる(動作308)。アプリケーションIDリストに対する変更は、コンピュータデバイスにインストールされる又は既にインストールされているハードウェアデバイスの機能にアクセスすることを許可されるべき1又はそれ以上のアプリケーションの識別子に対する変更(例えば、追加、除外、等)に言及する。アプリケーションIDリストに対する変更は、上述されたように、特権付与承諾タイプと関連付けられる機能についてインストール又は更新データにおいて含まれ得る。
【0045】
なされるべきでデバイス許可記録のアプリケーションIDリストに対する変更は、インストール又は更新データから特定される(動作310)。この特定は、ハードウェアデバイスの特定の機能にアクセスすることを許可されるアプリケーションの識別子を特定すること、又はハードウェアデバイスの特定の機能にアクセスすることを許可されないアプリケーションの識別子を特定することであってよい。
【0046】
デバイス許可記録のアプリケーションIDリストは、取得されたインストール又は更新データに基づき更新される(動作312)。動作312におけるこの更新は、更なるユーザ承諾なしでハードウェアデバイスの特定の機能にアクセスすることを許可されるようにデバイス許可記録においてアプリケーションの識別子を格納にすること(例えば、特定の機能と関連付けられるアプリケーションIDリストに識別子を加えること)、アプリケーションがハードウェアデバイスの特定の機能にアクセスすることを許可されないようにデバイス許可記録からアプリケーションの識別子を除くこと(例えば、特定の機能と関連付けられるアプリケーションIDリストから識別子を除くこと)、等を含むことができる。
【0047】
デバイス許可記録がインストール又は更新データに基づきあらゆる新しい又は更新される承諾タイプを反映するよう更新され、且つ/あるいは、アプリケーションの識別子に対するあらゆる変更を反映するよう更新された後、動作302において取得されたデータに基づくインストール又は更新は終了される(動作314)。更なるインストール又は更新データが後の時点で取得されてよく、処理300は繰り返されて、その更なるインストール又は更新データに基づきなされるデバイス許可記録に対する更なる変更をもたらす。
【0048】
代替的に、動作302で取得されるインストール又は更新データがハードウェアデバイスの新しいインスタンスのためのインストールデータである状況では、動作304乃至314は、適切な承諾がユーザから受け取られた後にのみ、実行され得る。よって、デバイス許可記録の承諾タイプに対する変更及びデバイス許可記録のアプリケーションIDリストに対する変更は、そのような変更がユーザによって承諾されるまでは、ハードウェアデバイスの新しいインスタンスのためのインストールデータに基づき行われない。
【0049】
図4は、1又はそれ以上の実施形態に従ってハードウェアデバイスの機能にアクセスするリクエストに応答する処理400の例を表すフローチャートである。処理400は、コンピュータデバイス、例えば、
図1のコンピュータデバイス100によって、実行され、ソフトウェア、ファームウェア、又はそれらの組み合わせにおいて実施され得る。処理400は、動作の組として示され、様々な動作の操作を実行するために示された順序に制限されない。処理400は、ハードウェアデバイスの機能にアクセスするリクエストに応答する処理の例であり、ハードウェアデバイスの機能にアクセスするリクエストに対する応答に関する更なる議論は、異なる図を参照してここに含まれる。
【0050】
処理400において、ハードウェアデバイスの機能にアクセスするリクエストが受信される(動作402)。このリクエストは、上述されたように、デバイスブローカーで受信される。
【0051】
アプリケーションが機能にアクセスすることを許可されていることをデバイス許可記録が示すかどうかに関して、確認がなされる(動作404)。この確認は、例えば、機能と関連付けられる承諾タイプが特権付与承諾タイプであるかどうかを確認し、そうである場合は、アプリケーションの識別子がハードウェアデバイスの機能と関連付けられるアプリケーションIDリストに含まれるかどうかを確認することによって、行われる。この確認は、通常、上述されたように、アプリケーションが確認を不正に変更し又は別なふうに干渉することを防ぐよう、コンピュータデバイスにより実施される処理400のオペレーティングシステムの信頼される部分において行われる。
【0052】
動作404における確認に基づき、アプリケーションが機能にアクセスすることを許可されると決定される場合は、リクエストは許可され、アプリケーションは機能にアクセスすることを可能にされる(動作406)。この許可は、例えば、上述されたように、リクエストされている機能へのハンドル又は他の識別子をアプリケーションへ返すことであってよい。なお、動作404における確認に基づき、アプリケーションが機能にアクセスすることを許可されないと決定される場合は、リクエストは拒絶され、アプリケーションは機能にアクセスすることを認められない(動作408)。この拒絶は、例えば、上述されたように、機能へのハンドル又は他の識別子をアプリケーションへ返すことを拒むことであってよい。
【0053】
よって、ここで論じられるデバイス機能へのアプリケーションの結び付けの技術は、ハードウェアデバイスの種々の機能が特定のアプリケーションにのみアクセス可能であることを可能にする。例えば、プリンタのベンダーは、彼らが流通させるプリンタを管理するアプリケーションを分配することができ、それにより、全てのアプリケーションがそのプリンタを用いてデータを印刷することを可能にしながら、彼らが開発又は別なふうに承認する(任意に、他のプリンタベンダーが開発又は別なふうに承認する)プリンタ管理のためのアプリケーションのみがプリンタを管理することを可能にする。他の例として、ベンダーは、新しいハードウェアデバイスと、そのハードウェアデバイスを使用するアプリケーションを開発し、ベンダーが開発するアプリケーションおみがそのハードウェアデバイスを使用することを可能にすることができる。
【0054】
更に、ここで論じられるデバイス機能へのアプリケーションの結び付けの技術を用いるシステムは拡張可能である。どのアプリケーションがハードウェアにアクセスすることを許可されるのかは、時間にわたって変化しうる。更に、(例えば。1又はそれ以上の新しいハードウェアデバイスインターフェースクラスを有する)新しいハードウェアデバイスは、ハードウェアデバイスの開発者又はベンダーがハードウェアデバイスにアクセスすることができると望むアプリケーションのみがハードウェアデバイスにアクセスすることができるように、システムにインストールされ得る。
【0055】
図5は、1又はそれ以上の実施形態に従ってデバイス機能へのアプリケーションの結び付けを実施するよう構成され得るコンピュータデバイス500の例を表す。コンピュータデバイス500は、例えば、
図1のコンピュータデバイス100であってよく、且つ/あるいは、
図2のシステム200を実施してよい。
【0056】
コンピュータデバイス500は、1又はそれ以上のプロセッサ又はプロセッシングユニット502と、1又はそれ以上のメモリ及び/又は記憶コンポーネント506を有することができる1又はそれ以上のコンピュータ可読媒体504と、1又はそれ以上の入出力(I/O)デバイス508と、様々なコンポーネント及びデバイスが互いと通信することを可能にするバス510とを有する。コンピュータ可読媒体504及び/又は1又はそれ以上のI/Oデバイス508は、コンピュータデバイス500の一部として含まれてよく、あるいは、代替的に、コンピュータデバイス500へ結合されてよい。バス510は、様々な異なるバスアーキテクチャを用いるメモリバス又はメモリコントローラ、ペリフェラルバス、アクセラレイティッド・グラフィクス・ポート、プロセッサ又はローカルバス、等を含む様々なタイプのバス構造の中の1又はそれ以上を表す。バス510は、有線及び/又は無線バスを有することができる。
【0057】
メモリ/記憶コンポーネント506は、1又はそれ以上のコンピュータ記憶媒体を表す。コンポーネント506は、揮発性媒体(例えば、ランダムアクセスメモリ(RAM))及び/又は不揮発性媒体(例えば、読出専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスク、等)を有することができる。コンポーネント506は、固定式媒体(例えば、RAM、ROM、固定式ハードドライブ、等)及び取り外し可能な媒体(例えば、フラッシュメモリドライブ、リムーバブル・ハードドライブ、光ディスク、等)を有することができる。
【0058】
ここで論じられる技術は、1又はそれ以上のプロセッシングユニット502によって実行される命令を有するソフトウェアにおいて実施可能である。当然に、種々の命令がコンピュータデバイス500の種々のコンポーネントにおいて、例えば、プロセッシングユニット502において、プロセッシングユニット502の様々なキャッシュメモリにおいて、デバイス500の他のキャッシュメモリにおいて(図示せず。)、他のコンピュータ可読媒体において、等で、記憶され得る。更に、当然に、命令がコンピュータデバイス500において記憶される場所は、時間にわたって変化しうる。
【0059】
1又はそれ以上の入出力デバイス508は、ユーザがコマンド及び情報をコンピュータデバイス500に入力することを可能にし、更に、情報がユーザ及び/又は他のコンポーネント若しくはデバイスに提示されることを可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロホン、スキャナ等があり、出力デバイスの例には、表示デバイス(例えば、モニタ又はプロジェクタ)、スピーカ、プリンタ、ネットワークカード等がある。
【0060】
様々な技術が、ソフトウェア又はプログラムモジュールの一般的な脈略においてここで記載される。一般的に、ソフトウェアは、特定のタスクを実行し又は特定の抽象データ型を実施するルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造、等を含む。それらのモジュール及び技術の実施は、何らかの形のコンピュータ可読媒体において記憶され、又はそれにわたって伝送されてよい。コンピュータ可読媒体は、コンピュータデバイスによってアクセス可能な如何なる利用可能な媒体であってもよい。限定されない例として、コンピュータ可読媒体は、“コンピュータ記憶媒体”及び“通信媒体”を有してよい。
【0061】
“コンピュータ記憶媒体”は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報の記憶のためのあらゆる方法又は技術において実施される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)若しくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は所望の情報を記憶するために使用可能であり且つコンピュータによってアクセス可能なあらゆる他の媒体を含むが、これらに限られない。
【0062】
“通信媒体”は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の伝送メカニズムのような変調データ信号において具現する。通信媒体はまた、あらゆる情報送達媒体を含む。語“変調データ信号”は、信号において情報を符号化するようにその特性の1又はそれ以上を設定又は変更された信号を意味する。限定されない例として、通信媒体は、有線ネットワーク及び直接有線接続のような有線媒体、並びに音響、RF、赤外線、及び他の無線媒体のような無線媒体を含む。上記のいずれかの組み合わせも、コンピュータ可読媒体の適用範囲内に含まれる。
【0063】
一般に、ここで記載される機能又は技術のいずれも、ソフトウェア、ファームウェア、ハードウェア(例えば、固定ロジック回路)、手動プロセッシング、又はそれらの実施の組み合わせを用いて実施され得る。ここで使用される語“モジュール”及び“コンポーネント”は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを表す。ソフトウェア実施の場合に、モジュール又はコンポーネントは、プロセッサ(例えば、1又は複数のCPU)で実行される場合に、指定されるタスクを実行するプログラムコードを表す。プログラムコードは、1又はそれ以上のコンピュータ可読メモリデバイスにおいて記憶され得る。これに関する更なる記載は、
図5を参照して見つけられてよい。ここで記載されるデバイス機能へのアプリケーションの結び付けの技術の特徴は、プラットフォーム非依存であり、当該技術が、様々なプロセッサを有する様々な市販のコンピュータプラットフォームで実施され得ることを意味する。
【0064】
対象について、構造上の特徴及び/又は方法上の動作に特有の言語において記載してきたが、添付の特許請求の範囲において定義される対象は、必ずしも、上記の具体的な特徴又は動作に限定されないことが理解されるべきである。むしろ、上記の具体的な特徴及び動作は、特許請求の範囲を実施する例となる形態として開示される。