説明

すべてのユーザによる完全なアクセスが可能なデータ記憶デバイス

ホストコンピュータの周辺デバイスが、マイクロコントローラおよび2つの仮想デバイスを有する。第1の仮想デバイスは、マイクロコントローラに、ホストコンピュータの任意のユーザからの第1のコマンドセットのコマンドを渡し、好ましくは、さらに、ホストコンピュータの特権ユーザのみからの第2のコマンドセットのコマンドも渡す。第2の仮想デバイスは、マイクロコントローラに、ホストコンピュータの任意のユーザからの第2のセットのコマンドを渡す。本発明の1つの物理実装では、2つの仮想デバイスは独立した物理デバイスとして実装され、第2のデバイスは、ユーザが非特権である場合のみ、ホストコンピュータへのインタフェースに接続される。本発明の別の物理実装では、2つの仮想デバイスは共通の物理デバイス内に実装され、周辺デバイスのメモリのセクタが、非特権ユーザからの第2のセットのコマンドを処理するために予約される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、着脱可能な記憶デバイスに関し、特に、ホストコンピュータのユーザによって、ユーザのアクセス特権に関係なく完全にアクセスされることが可能な、着脱可能なUSB記憶デバイスに関する。
【背景技術】
【0002】
キーチェーン記憶デバイスは、着脱可能なモジュールであり、ホストコンピュータのユーザがデータを保存できるディスクライクな記憶領域と、モジュールがホストコンピュータと通信することを可能にするUSBインタフェースとを提供する。本発明の焦点は、記憶デバイスとホストコンピュータとの間の通信の手段および方法に当てられている。
【0003】
既存のオペレーティングシステムは、マスストレージクラス(MSC)USBデバイスのサポートを含んでいる。これらのデバイスは、ホストコンピュータのユーザに、ハードディスクと同様の単純な記憶を提供することが意図されたものである。MSCデバイスへの標準アクセスは、ホストコンピュータのオペレーティングシステムを使用して、特権操作(マイクロソフト(Microsoft)の登録商標ウィンドウズ(登録商標Windows)オペレーティングシステム内の管理者など)の必要なしに実行されることが可能である。標準のもとで定義されていない任意の特別な操作には、管理者モードでなければ利用できないプライベートコマンドインタフェースの使用が必要とされる。そのような特別なコマンドの例としては、セキュア記憶デバイスへのパスワードの伝達や、USBデバイスのクロックの設定などがある。
【0004】
いくつかのタイプの周辺媒体については、媒体がコンピュータに接続されたことをオペレーティングシステムが認識した場合に、媒体上に記憶された事前定義されたファイルを、オペレーティングシステムが自動的に実行する。例えば、登録商標ウィンドウズ(登録商標Windows)システムのCDドライブ内にデータCDが挿入された場合、オペレーティングシステムは、「autorun.inf」と呼ばれる、CD上のファイルを検出して実行する。この機能は、キーチェーン記憶デバイスなどの、単純なリムーバブル記憶デバイスでは利用できない。
【0005】
オペレーティングシステムのこれらの制限は、任意のタイプの通信を可能にし、自動実行機能を含める、キーチェーン記憶デバイスのための特別なデバイスドライバを、ホストコンピュータ内にインストールすることにより克服することが可能である。
【0006】
そのようなデバイスドライバは、特別な開発を必要とし、さらに、USBメモリモジュールの接続先として意図されたすべてのパーソナルコンピュータ上へのインストールを必要とする。キーチェーン記憶デバイスは、ユーザが作業を行う各コンピュータ上で一様に動作することが期待されているため、これは大きな欠点である。その上、セキュリティのために、そのようなデバイスドライバのアクセスは、登録商標ウィンドウズ(登録商標Windows)によって、管理者特権を有するユーザに制限される。管理者特権は、通常、ユーザは利用できない。会社内で管理者特権を有しているマネージャでさえ、インターネットカフェなどの会社外の場所でそのような特権を与えられる見込みはない。
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、既存のオペレーティングシステムを使用した、キーチェーン記憶デバイスのドライバなしの動作を可能にし、その上、自動実行およびプライベートコマンドインタフェースも有効にするための方法を提供する。
【0008】
本発明の第1の目的は、プライベートコマンド内でキーチェーン記憶デバイスと通信するためには管理者特権を使用するという、従来技術における必要性を克服することである。
【0009】
本発明の第2の目的は、キーチェーン記憶デバイスがホストコンピュータ内に挿入された場合に任意のユーザアプリケーションを自動実行するための、方法を提供することである。
【課題を解決するための手段】
【0010】
したがって、本発明によれば、(a)ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、(b)ホストコンピュータの任意のユーザから受信した第1のセットのコマンドを、マイクロコントローラに渡すための、第1の仮想デバイスと、(c)ホストコンピュータの任意のユーザから受信した第2のセットのコマンドを、マイクロコントローラに渡すための、第2の仮想デバイスとを含む、ホストコンピュータとともに使用するための周辺デバイスが提供される。
【0011】
さらに、本発明によれば、ホストコンピュータと、ホストコンピュータに動作可能な仕方で接続された周辺デバイスとを含むシステム(周辺デバイスは、マイクロコントローラと、複数のセクタを有するメモリと、第1のセットのコマンドを、ホストコンピュータの任意のユーザから受信した場合に、実行のためにマイクロコントローラに渡し、第2のセットのコマンドを、ホストコンピュータの特権ユーザから受信した場合にのみ、実行のためにマイクロコントローラに渡すように動作する第1の仮想デバイスとを含む)において、ホストコンピュータの任意のユーザが、第2のセットのコマンドを、マイクロコントローラにより実行されるようにすることを可能にするための方法が提供され、前記方法は、(a)第2のセットのコマンドを、ホストコンピュータの任意のユーザから受信した場合に、実行のためにマイクロコントローラに渡すように動作する第2の仮想デバイスを、周辺デバイス内に含めるステップと、(b)周辺デバイスをホストコンピュータに、動作可能な仕方で接続するステップと、(c)ホストコンピュータのユーザによる、第2のセットのコマンドを、ホストコンピュータから周辺デバイスに送信するステップと、(d)ユーザが特権ユーザである場合は、第2のセットのコマンドを、第1の仮想デバイスを経由して、マイクロコントローラに送信するステップと、(e)それ以外の場合は、第2のセットのコマンドを、第2の仮想デバイスを経由して、マイクロコントローラに送信するステップとを含む。
【0012】
本発明によれば、さらに、ホストコンピュータとともに使用するための周辺デバイスが提供され、前記周辺デバイスは、(a)ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、(b)ホストコンピュータからのコマンドをマイクロコントローラに渡すための第1の仮想デバイスと、(c)周辺デバイス内に第2の仮想デバイスが存在することをホストコンピュータが検出した場合のオートランをサポートする、第1の仮想デバイスとは独立した、第2の仮想デバイスとを含む。
【0013】
本発明の基本的な周辺デバイスは、ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、2つの仮想デバイスとを含む。第1の仮想デバイスは、第1のコマンドセットのコマンド(例えば、周辺デバイスがマスストレージデバイスである場合は、データアクセスコマンド)を、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、マイクロコントローラに渡す。好ましくは、第1の仮想デバイスは、さらに、第2のコマンドセットのコマンド(例えば、周辺デバイスがマスストレージデバイスである場合は、特別なコマンド)を、それらのコマンドが特別な特権を有するユーザにより発行された場合(例えば、ユーザが管理者またはスーパユーザである場合)のみ、マイクロコントローラに渡す。第2の仮想デバイスは、第2のセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、マイクロコントローラに渡す。好ましくは、第2の仮想デバイスは、ホストコンピュータの任意のユーザからの任意のコマンドを、マイクロコントローラに渡す。これが実現される1つの方法は、第2の仮想デバイスのネイティブコマンドとしてフォーマットされたコマンドを、第2の仮想デバイスから受信するように、そして、ネイティブコマンドを、意図されたコマンドとして再解釈するように、マイクロコントローラを動作させることによるものである。
【0014】
好ましくは、周辺デバイスは、さらに、ホストコンピュータへの周辺デバイスの動作可能な接続が始動された場合にオートランをサポートする、第3の仮想デバイスも含む。
【0015】
好ましくは、周辺デバイスは、さらに、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるための、USBインタフェースなどのインタフェースも含む。インタフェースがUSBインタフェースである場合、第1の仮想デバイスはUSBマスストレージインタフェースであることが好ましい。
【0016】
好ましくは、インタフェースは、ホストコンピュータへの、両方の仮想デバイスの動作可能な接続を同時に生じさせ、それによりホストコンピュータは、インタフェースがそれ自身を再構成する必要なしに、いずれかの仮想デバイスを経由してマイクロコントローラにコマンドを送信するというオプションを有するようになる。例えば、インタフェースがUSBインタフェースである場合、ホストコンピュータにとっての、両方の仮想デバイスのこの同時利用可能性は、2つの仮想デバイスを、ホストコンピュータによってともに列挙されるように動作させることによりもたらされる。あるいは、インタフェースは、ホストコンピュータへの、仮想デバイスの交互に動作可能な接続を生じさせる。任意の時点において、ホストコンピュータは、マイクロコントローラに、第1の仮想デバイスまたは第2の仮想デバイスのいずれかを経由して、ただし両方を経由してではなく、アクセスすることが可能である。例えば、インタフェースがUSBインタフェースである場合、ホストコンピュータにとっての、仮想デバイスのこの交互の利用可能性は、2つの仮想デバイスを、ホストコンピュータによって交互に列挙されるように(両方の仮想デバイスがともに列挙されるようにではなく、第1の仮想デバイスが列挙されるか、または第2の仮想デバイスが列挙されるように)動作させることによりもたらされる。
【0017】
最も好ましくは、最初の2つの仮想デバイス、および第3の仮想デバイス(存在する場合)は、インタフェースのサブインタフェースである。
【0018】
本発明の周辺デバイスの1つの好ましい実施形態では、第1および第2の仮想デバイスは、周辺デバイス内の独立した第1および第2の物理デバイス内にそれぞれ実装される。周辺デバイスは、さらに、ホストコンピュータへの、周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、好ましくは、さらに、第2の物理デバイスをインタフェースに、動作可能な仕方で可逆的に接続するためのスイッチも含む。インタフェースがUSBインタフェースである場合、好ましくは、第2の物理デバイスは、インタフェースのUSB HIDサブインタフェースである。最も好ましくは、HIDデバイスは、第2のセットのコマンドが、厳密に言えば、HIDデバイスがホストコンピュータから受信するように正式に構成されたコマンドに含まれていない場合でも、第2のセットのコマンドをマイクロコントローラに示すための、複数の仮想マルチレベルLEDなどの機構と、第2のセットのコマンドの結果をホストコンピュータに示すための、複数の仮想ユーザスイッチなどの機構とを含む。
【0019】
周辺デバイスが第3の仮想デバイスも含む場合、第3の仮想デバイスも、第1の仮想デバイス内に実装される。インタフェースがUSBインタフェースである場合、第1の物理デバイスは、好ましくは、全体的なインタフェースのマルチLUN USBサブインタフェースである。
【0020】
本発明の周辺デバイスの別の好ましい実施形態では、第1および第2の物理デバイスは、共通の物理デバイス内に実装される。好ましくは、周辺デバイスは、複数のセクタを含むメモリも含む。第1のコマンドセットは、メモリのそれぞれの指定されたセクタにデータを書き込むための、書き込みコマンドを含む。非特権ユーザからの第2のセットのコマンドを共通の物理デバイスがマイクロコントローラに渡すようにさせるために、ユーザはそのコマンドを、第1のセットの書き込みコマンド(その指定されたセクタは、第2のセットのコマンドのために予約されたセクタである)の中のデータとして埋め込む。予約されたセクタは、静的に、または動的に予約されたものであってもよい。
【0021】
周辺デバイスは、好ましくは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースを含む。インタフェースがUSBインタフェースである場合、好ましくは、共通の物理デバイスは、インタフェースのマルチLUN USBサブインタフェースである。
【0022】
本発明の方法は、マイクロコントローラと、複数のセクタを有するメモリと、第1の仮想デバイスとを含む周辺デバイスを、ホストコンピュータと組み合わせて、より効果的に使用することを目指している。第1の仮想デバイスは、第1のコマンドセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、実行のためにマイクロコントローラに渡す。第1の仮想デバイスは、第2のコマンドセットのコマンドを、それらのコマンドが特別な特権を有するユーザにより発行された場合(例えば、ユーザが管理者またはスーパユーザである場合)のみ、実行のためにマイクロコントローラに渡す。
【0023】
本発明の基本的な方法は、任意のユーザが第2のセットのコマンドを発行することを可能にし、そして、それらのコマンドが周辺デバイスのマイクロプロセッサによって実行されるようにする。本発明の基本的な方法は、4つのステップを有する。第1のステップでは、第2の仮想デバイスが周辺デバイス内に含められる。第2の仮想デバイスは、第2のコマンドセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、実行のためにマイクロコントローラに渡す。第2のステップでは、周辺デバイスがホストコンピュータに、動作可能な仕方で接続される。第3のステップでは、ユーザは、第2のコマンドセットのコマンドを周辺デバイスに送信する。第4のステップでは、第2のコマンドセットのコマンドが、ユーザが適切な特別な特権を有している場合は第1の仮想デバイスによって、そしてそれ以外の場合は第2の仮想デバイスによって、マイクロコントローラに実行のために送信され、その動作が、マイクロコントローラにより、第2のセットのコマンドとして解釈される。
【0024】
好ましくは、本発明の方法は、第2のステップで周辺デバイスがホストコンピュータに動作可能な仕方で接続された場合のオートランをサポートする、第3の仮想デバイスを、周辺デバイス内に含めるという、さらなる初期ステップも含む。オートランは、ユーザが特別な特権を有しているかどうかを判定するため、第2のコマンドセットのコマンドをマイクロプロセッサに渡すための、第2の仮想デバイスは必要としない。
【0025】
本発明の方法の1つの好ましい実施形態では、第1および第2の仮想デバイスは、周辺デバイス内の独立した第1および第2の物理デバイス内にそれぞれ実装される。本方法は、第2のセットのコマンドを第1の仮想デバイスを経由してマイクロプロセッサに送信するために必要な特別な特権をユーザが有していない場合にのみ、第2の物理デバイスをホストコンピュータに動作可能な仕方で接続する、さらなるステップを含む。
【0026】
本発明の別の好ましい実施形態では、第1および第2の仮想デバイスは、共通の物理デバイス内に実装される。本方法は、第2のコマンドセットのコマンドを内部に埋め込んだ第1のコマンドセットのコマンドを認識するように、共通の物理デバイスを構成する、さらなるステップを含む。第2のコマンドセットのコマンドは、そのコマンドを第1のコマンドセットのコマンド内に埋め込み、第1のコマンドセットのそのコマンドを周辺デバイスに送信することにより、周辺デバイスに送信される。周辺デバイスにおいては、共通の物理デバイスが、第1のコマンドセットのコマンドから、第2のコマンドセットのコマンドを抽出する。好ましくは、第1のコマンドセットのコマンド(その内部に第2のコマンドセットのコマンドが埋め込まれている可能性があると、共通の物理デバイスによって認識されるもの)は、第2のセットのコマンドのために予約されたメモリセクタへの書き込みのための、書き込みコマンドである。第2のセットのコマンドは、その予約されたセクタに書き込まれるべきデータとして、第1のセットのコマンドの内部に埋め込まれる。セクタは、静的に、または動的に予約されてもよい。
【0027】
本発明の別の基本的な周辺デバイスは、ホストコンピュータおよび2つの仮想デバイスから受信したコマンドを実行するための、マイクロコントローラを含む。第1の仮想デバイスは、コマンドをマイクロコントローラに渡す。第2の仮想デバイスは、第1の仮想デバイスから独立しており、周辺デバイス内に第2の仮想デバイスが存在することをホストコンピュータが検出した場合のオートランをサポートする。
【0028】
好ましくは、周辺デバイスは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、2つの仮想デバイスはインタフェースのサブインタフェースである。より好ましくは、インタフェースはUSBインタフェースである。最も好ましくは、第1の仮想デバイスは、USBマスストレージインタフェースであり、第2の仮想デバイスは、インタフェースのUSB CDサブインタフェースである。
【0029】
好ましくは、2つの仮想デバイスは、共通の物理デバイス内に実装される。最も好ましくは、周辺デバイスは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、共通の物理デバイスは、インタフェースのマルチLUN USBサブインタフェースである。
【0030】
本発明を、添付の図面を参照して、あくまで例示として以下に説明する。
【発明を実施するための最良の形態】
【0031】
本発明は、接続先のホストコンピュータの任意のユーザにより完全にアクセスされることが可能な、着脱可能な記憶デバイスに関する。特に、本発明は、管理者特権を有さないユーザが、マスストレージクラスUSBデバイスに、特別なコマンドを発行することを可能にするために使用されてもよい。
【0032】
本発明による着脱可能な記憶デバイスの原理および動作は、図面および添付の説明を参照することにより、よりよく理解されるであろう。
【0033】
ここで図面を参照すると、図1は、全体が100で表される、本発明に関連する従来技術のシステムを示している。システム100は、パーソナルコンピュータ(PC)110、およびデータ交換のためにUSB接続141を介して接続可能なUSBキーチェーン記憶デバイス120を含む。
【0034】
キーチェーン記憶デバイス120は、PC110のユーザに、デバイスの不揮発性メモリ121内にデータを記憶する機能と、任意選択で、セキュリティ機能、データ圧縮、または信号処理などの、追加機能122とを提供する。デバイス120は、機能122およびメモリ121を一方で管理し、USBマスストレージクラス(MSC)インタフェース124を介した通信を他方で管理する、マイクロコントローラ123を含む。USB MSCインタフェース124は、マスストレージクラスデバイスのためのUSB規格により定義される。PC110がUSBホストインタフェース113を有し、PC110のオペレーティングシステム(OS)112がUSB MSCデバイスのためのサポートを含む場合、この定義は、任意のPC110がUSB接続141を経由してキーチェーン記憶デバイス120とインタフェースすることを可能にする。その場合、PC110のユーザは、PC110の機能111をアプリケーションプログラム内で使用して、例えば、デバイス120へのファイルの書き込み、ファイルの暗号化、圧縮されたファイルの読み出し、またはデバイス120上に記憶された指紋の認識のために、キーチェーン記憶デバイス120を利用することができる。
【0035】
図2は、USBキーチェーン記憶デバイス120内のコマンドフローを示す。USB規格で定義されているように、USB MSCインタフェース124は、USBコネクタと、ケーブル布線と、USB端点のリストとを通信のために備えた、USBインタフェース135を含む。キーチェーン記憶デバイス120は、PC110によって、USBマスストレージクライアント131として識別される。このクライアント131は、アクセスコマンド132、プライベートコマンド133、およびオートラン134という、複数のコマンドタイプを受け入れることが可能である。
【0036】
アクセスコマンド132は、キーチェーン記憶デバイス120上に記憶されたデータに、通常のディスクと同様にアクセスするために使用される。そのようなコマンドの例としては、「リード・ディスク・セクタ(read disk sector)」、「ライト・ディスク・セクタ(write disk sector)」、および「ゲット・ディスク・サイズ(get disk size)」などがある。
【0037】
任意選択のプライベートコマンド133は、ディスクライクな記憶機能ではない任意の追加機能122を実装するために使用される。これらの機能は、使用するデバイス120のタイプにより異なる。例えば、セキュア記憶デバイス120は、パスワードを送信するため、またはセキュアモードと非セキュアモードとの間を切り換えるための、プライベートコマンド133を受け入れる。バイオメトリックキーデバイス120は、ユーザの指紋を確認するためのプライベートコマンド133を受け入れる。信号処理キーデバイス120は、音声または映像データを、符号化および復号化するためのプライベートコマンド133を受け入れる。
【0038】
オートラン134は、キーチェーン記憶デバイス120がUSB接続141を経由してPC110に接続された場合の、PC110上のアプリケーションの自動実行を可能にする、任意選択の機能である。OS112が、このクラスのデバイス120のためのオートラン134を認識した場合、PC110が接続を認識すると、PC110は、キーチェーン記憶デバイス120から特定のデータを自動的に読み出して、このデータ内に記述されたプログラムを実行する。そのようなデータの例は、データCD−ROM上のいずれのアプリケーションが実行されるべきかを記述するファイル「autorun.inf」である。
【0039】
オペレーティングシステム112は、一般に、マスストレージクラスデバイス131がアクセスされることが可能な方法を制限する。例えば、登録商標ウィンドウズ(登録商標Windows)では、PC110のユーザが管理者特権を有していない場合、そのユーザは、USBマスストレージクライアント131にプライベートコマンド133を送信することはできない。
【0040】
オペレーティングシステム112は、一般に、オートラン134機能も、特定のデバイスタイプに制限する。ほとんどのオペレーティングシステム112は、一般的なマスストレージクライアント131内のオートラン機能を認識しない。
【0041】
これらの問題を克服するために、従来技術のキーチェーン記憶デバイス120では、メモリ121を管理するためのアクセスコマンド132だけでなく、プライベートコマンド133などのキーチェーン記憶デバイス機能122も使用するために、オペレーティングシステム112に別のデバイスドライバを追加することが要求される。このデバイスドライバは、キーチェーン記憶デバイス120が接続される各PC110上にインストールされていなければならない。デバイスドライバがインストールされていない場合は、キーチェーン記憶デバイス120の単純な記憶121機能のみが使用可能となる。もちろん、これはデバイスドライバによる解決策の大きな欠点である。本発明は、この問題を解決するための異なる手法を提示する。
【0042】
本発明の好ましい実施形態150を示す、図3をここで参照する。図2の従来技術と比較すると、図3に示す本発明は、上で説明した異なるタイプのコマンド(アクセスコマンド132、任意選択のプライベートコマンド133、およびオートラン134)のために使用される、複数の仮想USBデバイス151、153、および155を備えている。使用される異なるデバイスの数は、アプリケーションに固有である。本発明の他の好ましい実施形態は、そのような仮想デバイスを2つだけ(例えば、以下で説明するように、仮想デバイス151および155のみ)含み、または、そのような仮想デバイスを4つ以上含む。
【0043】
キーチェーン記憶デバイス150は、仮想USBデバイス151、153、および155に加えて、USBインタフェース157、マイクロコントローラ158、不揮発性メモリ159、および内蔵機能160を含む。USBインタフェース157は、デバイス151、153、および155を含む複合USBデバイスのためのインタフェースである。USB仮想デバイス151、153、および155は、USBインタフェース157のサブインタフェースである。USBインタフェース157は、USB通信リンク143を経由してPC110と通信を行う。デバイス151は、クライアント131に類似したUSBマスストレージクライアントであり、キーチェーン記憶デバイス150のデータアクセスインタフェースを含む。キーチェーン記憶デバイス150のディスクライクな記憶機能を使用する、PC110上の機能111は、このUSBデバイス151を参照する。デバイス153は、プライベートコマンド154のために本発明により使用されるUSBデバイスである。このデバイス153は、PC110の非特権ユーザにとってさえも、OS112からアクセスすることが可能なタイプのUSBデバイスである。マイクロコントローラ158は、デバイス153により受信されたコマンドを、プライベートコマンド154として再解釈する。デバイス155は、オートラン機能156を実装するために使用されるUSBデバイスである。このデバイス155は、それに対してOS112がオートラン機能156を作動させるタイプのUSBデバイスである。そのようなデバイスの一例は、USB CDデバイスである。仮想デバイス155は仮想デバイス151から独立しているため、OS112が仮想デバイス151内のオートラン機能を認識しない場合でも、記憶デバイス150はオートランをサポートする。OS112は、デバイス151とデバイス155の両方を並行して認識し、したがって、両方のデバイスのすべての機能を利用することができる。
【0044】
マイクロコントローラ158は、すべての異なるUSB仮想デバイス151、153、および155からの情報を収集し、受信した要求を、メモリ159リソースおよびその他の内蔵機能160を使用して処理する。
【0045】
キーチェーン記憶デバイス150は、ディスクライクなデータアクセス152と、特別な特権なしにOS112からアクセス可能なプライベートコマンド154インタフェースと、オートラン機能156という、本発明の3つの主要な特徴を含む。
【0046】
図4Aおよび図4Bは、図3のキーチェーン記憶デバイス150の2つの異なる物理実装を示す。プライベートコマンドを通信するためにUSBヒューマンインタフェースデバイス(HID)クラスを使用し、オートラン機能を実行するためにUSB CDデバイスを使用する、USBキーチェーン記憶デバイス150の物理実装の概略を示す、図4Aをここで参照する。HIDデバイスは、非管理者にとってさえも常にアクセス可能であり、その理由は、これらのデバイスは、任意のユーザにとって(特別な特権を有していないユーザにとってさえも)常にアクセス可能であるべき、キーボード、マウス、またはゲームパッドなどの他のデバイスとインタフェースするように設計されているためである。登録商標ウィンドウズ(登録商標Windows)内のCDデバイスドライバは、オートラン機能を含む。この実装の背後にある着想は、OS112から利用可能なCDオートランを使用して、キーチェーン記憶デバイス150のオートラン機能を実装するということ、および、非特権ユーザにとって自由にアクセス可能なHIDインタフェースを使用して、非管理モードプライベート通信を実装するということである。
【0047】
図4Aのキーチェーン記憶デバイス150は、USBヒューマンインタフェースデバイス(HID)230、USB CDデバイス220、およびUSB記憶デバイス210という、3つの独立したUSB仮想デバイスを備えている。CDデバイス220および記憶デバイス210は、両方ともUSBマスストレージクラス定義に属し、USB規格に従って、CDデバイス220および記憶デバイス210によって構成されるマルチLUN記憶デバイスサブインタフェース201としてグループ化される。
【0048】
図4Aの実装内の、データアクセスコマンド212のためのインタフェースは、記憶デバイス210を経由する。オートラン221機能は、CDデバイス220を経由して利用可能である。プライベートコマンドは、PC110上でのユーザの特権により、2つの異なるインタフェースを介して利用可能である。
【0049】
特権(登録商標ウィンドウズ(登録商標Windows)の管理者(Administrator))モードでは、プライベートコマンドは、特権ユーザにとって利用可能なUSB記憶デバイスプライベートコマンドインタフェース211を使用して、USB記憶デバイス210を経由して送信される。このUSB記憶クラスプライベートコマンドインタフェース211は、機能111が任意のプライベートデータ構造をディスクライクなデバイスに送信することを可能にするために、OS112により提供される方法である。図4Aのキーチェーン記憶デバイス150は、このインタフェースを、従来技術のキーチェーン記憶デバイス120が使用するのと同じ方法で使用する。
【0050】
非特権モードでは、プライベートコマンドは、非特権モードプライベートコマンド231を使用して、USB HIDインタフェース230を経由して送信される。スイッチ202は、ユーザにより必要とされる場合のみ、つまり、PC110上で非特権モードで動作している場合のみ、HIDデバイス230を有効にするために使用される。通常、HIDデバイスは、マスストレージデバイスと同様に、限定されたコマンドのセットのみを受け入れるように構成されている。したがって、HIDデバイス230を使用して、図4Aのキーチェーン記憶デバイス150にプライベートコマンド231を通信するために、PC110は、プライベートコマンド231を、HIDデバイス230が受け入れ可能な形態にフォーマットし、それに応じて、マイクロコントローラ158は、HIDデバイス230により受信されたコマンドをプライベートコマンド231として解釈する。例えば、本発明の1つの好ましい実施形態では、HIDデバイス230は、複数の仮想マルチレベルLED(各LEDについて8ビット)、および複数の仮想ユーザスイッチを含むものと定義される。HIDデバイス230は、さらに、LEDをオンおよびオフにするための、ならびに、ユーザスイッチの設定をPC110に返すための、ネイティブコマンドのセットに応答するものと定義される。LEDは、コマンドのデータバイトを8ビットLEDに単に書き込むことにより、プライベートコマンド231を渡すための、PC110からの情報チャネルとして機能する。スイッチは、プライベートコマンド231からの結果をPC110が読み戻すための方法として機能する。これが実現される理由は、プライベートコマンド231そのものが8ビットLEDを使用して符号化されるのと同様に、マイクロコントローラ158は、応答のバイトを、それらのスイッチを使用して符号化することができるためである。この機構は、図4Aのキーチェーン記憶デバイス150に任意のコマンドを送信するために使用できることに注意されたい。図4Aのキーチェーン記憶デバイス150にデータアクセスコマンドを送信するには、記憶デバイス210を利用できるため、ここで強調されるのは、図4Aのキーチェーン記憶デバイス150にプライベートコマンドを送信するには、HIDデバイス230が使用されるということである。
【0051】
PC110のユーザ機能111は、非管理モードで動作している場合、図4Aのキーチェーン記憶デバイス150に、HIDインタフェースが必要とされるということを信号で伝えなければならない。これは、USB CDデバイス220にコマンドを送信することにより行われてもよい。例えば、USB CDデバイス220に、交互のイジェクト(eject)およびロード(load)コマンドによる固有の列を送信すると、スイッチ202が閉じられる。次に、PC110は、USBデバイス150を再び列挙するように要求される。再列挙の後は、HIDデバイス230がシステムによって認識され、任意のさらなるプライベートコマンド231は、HIDインタフェース230を経由して、図4Aのキーチェーン記憶デバイス150に送信される。任意選択で、マルチLUN記憶デバイスサブインタフェース201は、再列挙に応答せず、それによりPC110は、キーチェーン記憶デバイス150を、HIDデバイス230のみを含むものとして取り扱うようになる。この任意選択のもとでは、別の再列挙のために、ユーザ機能111がキーチェーン記憶デバイス150に、スイッチ202を開いてサブインタフェース201を再びアクティブにすることを命令できるように、HIDデバイス230への特別なプライベートコマンド231が定義されなければならない。
【0052】
図3のキーチェーン記憶デバイス150の代替の物理実装を示す、図4Bをここで参照する。図4Bの実装では、記憶データアクセス152、プライベートコマンド154、およびオートラン156という3つの機能すべてを提供するために、1つのマルチLUN USB記憶デバイスサブインタフェース201を使用する。マルチLUN記憶デバイスサブインタフェース201は、USB CDデバイス220’およびUSB記憶デバイス210’を備えている。
【0053】
図4Bの実装では、オートランは、オートラン221を実装する仮想USB CDデバイス220’を使用することによって実装される。これは、図4Aの実装について説明したのと同じ方法で行われる。
【0054】
USB記憶デバイス210’は、データアクセスコマンド212を処理する。USB記憶デバイス210’は、さらに、特権(管理者)ユーザがプライベートコマンドを通信するためのインタフェース211を提供する。再び、これは、図4Aの実装について説明したのと同じ方法で行われる。非特権ユーザは、データアクセスコマンド212内にプライベートコマンドをパッケージすることによって、プライベートコマンドの通信を行う。
【0055】
データアクセスコマンド212は、宛先アドレス、トランザクションタイプ、およびデータという、3つの部分を有する。宛先アドレスは、ヘッド、シリンダ、およびセクタアドレスにより構成される、ディスクセクタアドレスである。宛先アドレスは、ディスクドライブ上の1つのセクタを一意に識別する。このアドレスは、マイクロコントローラ158によって、メモリ159内のアドレスに変換される。トランザクションタイプは、PC110からキーチェーン記憶デバイス150へのデータ転送、またはキーチェーン記憶デバイス150からPC110へのデータ転送に対応した、書き込み動作、または読み出し動作のいずれかである。データ部分は、トランザクション内で転送されるデータである。データは、トランザクションタイプによって、PC110からキーチェーン記憶デバイス150へ、またはキーチェーン記憶デバイス150からPC110へ転送されてもよい。
【0056】
図4Bの実装内での非管理モードプライベートコマンド213は、特定のディスクセクタへのデータアクセスコマンド212を使用して、USB記憶デバイス210’を経由して通信される。マイクロコントローラ158は、USB記憶デバイス210インタフェースからアクセス要求を受信し、要求されたアクセスが、プライベートコマンド位置として指定された位置(例えば、ディスクセクタ)に属すると識別された場合は、コマンドのデータ部分がマイクロコントローラ158によって処理される。それ以外の場合は、アクセスは通常のデータアクセス212として扱われ、データは、記憶159へ転送されるか、または記憶159から転送される。PC110から図4Bのキーチェーン記憶デバイス150へのプライベートコマンドを実装するには、書き込みトランザクションが使用される。図4Bのキーチェーン記憶デバイス150から結果を読み戻すには、読み出し動作がPC110により使用される。
【0057】
非管理モードでのプライベートコマンド通信213のために割り当てられるディスクセクタは、PC110上の非特権ユーザにとってアクセス可能でなければならない。非特権ユーザは、ディスクセクタへの直接アクセスを実行することはできず、OS112のファイルシステムを介して記憶デバイス150にアクセスできるのみである。したがって、プライベートコマンド213のために使用される特別な通信セクタは、USB記憶デバイス210の内部のファイルシステム上のファイルにマッピングされていなければならない。これは、2つの方法のうちの1つで実現されてもよい。
【0058】
第1の方法は、静的に予約されるセクタを使用する。USB記憶デバイス210’がフォーマットされる際に、既知のディスクセクタ内に記憶される、デバイスのファイルシステム内のファイルが作成される。マイクロコントローラ158は、すべてのディスクアクセス212を構文解析して、そのセクタへのアクセスを探す。そのようなアクセスがマイクロコントローラ158によって検出された場合は、トランザクションタイプに従った動作が実行される。トランザクションが書き込みトランザクションである場合は、トランザクション内のデータがプライベートコマンド213として構文解析される。トランザクションが読み出しトランザクションである場合は、マイクロコントローラ158が、要求されたデータを、データアクセス212のデータフィールド内に返し、それにより、プライベートコマンド213を使用してPC110に応答する。予約されたセクタはファイルに属するため、予約されたセクタはファイルシステム内で「使用済み」として印付けられ、OS112はそのセクタを他のいかなるファイルのためにも使用することを試みない。
【0059】
第2の方法は、動的に予約されるセクタを使用する。特定のセクタが、プライベートコマンド213のために使用されるセクタとして、データアクセスコマンド212によってアクセス可能であるとして、動的に印付けられる。トランザクションが終了したら、動的に印付けられたセクタは解放される。プライベートコマンドチャネル213を作成するために、PC110上の機能111は、USB記憶デバイス210’上に新しいファイルを作成し、特定の初期化データをそのファイルに書き込む。図4Bのキーチェーン記憶デバイス150は、この情報を、USB記憶デバイス210’のデータアクセスコマンド212を経由して受信する。マイクロコントローラ158は、コマンド内のデータを構文解析して、データフィールド内の固有の初期化データを検出する。マイクロコントローラ158は、次に、動的に予約されたセクタを、プライベートコマンド213のための通信セクタとして印付ける。任意のさらなるアクセスは、静的に予約されたセクタの使用における場合と同様に、プライベートコマンド213として構文解析される。これにより、PC110の機能111は、プライベートコマンドデータを使用して、PC110が作成した特別なファイルを上書きすることにより、予約されたセクタに再びアクセスすることが可能になる。このファイルの使用を終了するには、通信の終了を通知するプライベートコマンド213が送信され、マイクロコントローラ158は、予約されたセクタへのアクセスの監視を停止する。
【0060】
図5Aおよび図5Bは、それぞれ、図4Aおよび図4Bに示した実装オプションの一般的な動作のフローチャートである。図4Aのキーチェーン記憶デバイス150の動作モードを提示する、図5Aをここで参照する。手順はステップ401において開始され、ここでは、キーチェーン記憶デバイス150とPC110とは切り離されている。ステップ402で、キーチェーン記憶デバイス150は、PC110に接続され、USB CDデバイス220およびUSB記憶デバイス210を含むマルチLUN記憶デバイス201として識別される。ステップ403で、オートランアプリケーションがUSB CDデバイス220から実行される。登録商標ウィンドウズ(登録商標Windows)プラットフォーム上では、これは、USB CDデバイス220からファイル「autorun.inf」を読み出して、そのファイル内にリストされたアプリケーションを実行することを意味している。ステップ404で、自動的に実行されたアプリケーション(または任意のその他の機能111)は、PC110のユーザが管理者権限を有しているかどうかを検査する。ユーザが管理者権限を有していない場合、フローはステップ405に進み、そこで、PC110のアプリケーションは、キーチェーン記憶デバイス150に、スイッチ202を閉じることによってHIDインタフェース230をオンにするように信号で伝える。スイッチ202が閉じられた後で、キーチェーン記憶デバイス150は、それ自身をPC110から論理的に切り離し、HIDデバイス230をアクティブにして、それ自身を再接続する。PC110は、USBインタフェース157を列挙し、USB HIDデバイス230と、USB CDデバイス220およびUSB記憶デバイス210を備えたマルチLUN記憶デバイス201とを検出する。ステップ406で、プライベートコマンド231のためのHIDインタフェース230が、いくつかの初期化プライベートコマンドをキーチェーン記憶デバイス150に送信するために使用される。例えば、プライベートコマンドは、パスワード保護されたキーチェーン記憶デバイス150にパスワードを送信するために使用されうる。ステップ407で、PC110の機能111は、いくつかのコマンドをキーチェーン記憶デバイス150に送信することを決定する。ステップ408で、機能111は、キーチェーン記憶デバイス150に、プライベートコマンド231を送信するべきか、またはデータアクセスコマンド212を送信するべきかを検査する。データアクセスコマンド212が要求される場合、ステップ410で、USB記憶デバイス210にコマンドが送信される。プライベートコマンド231が要求される場合、ステップ409で、HIDデバイス230にコマンドが送信される。コマンドの転送後は、必要とされる任意のさらなるコマンドのために、フローはステップ407に戻る。ステップ404に戻って、ユーザが、PC110上の管理者である場合、フローはステップ411に進み、そこで、USBマスストレージクラスプライベートコマンドインタフェース211を経由してプライベートコマンド211が送信される。ステップ412で、PC110上の機能111は、キーチェーン記憶デバイス150にいくつかのコマンドを送信することを決定する。ステップ413で、機能111は、キーチェーン記憶デバイス150に、プライベートコマンド211を送信するべきか、またはデータアクセスコマンド212を送信するべきかを検査する。データアクセスコマンド212が要求される場合、ステップ415で、USB記憶デバイス210にコマンドが送信される。プライベートコマンド211が要求される場合、ステップ414で、USB記憶デバイス210にコマンドが送信される。コマンドの転送後は、必要とされる任意のさらなるコマンドのために、フローはステップ412に戻る。
【0061】
登録商標ウィンドウズ(登録商標Windows)オペレーティングシステム内のバグにより、現在のところ、管理者特権を有するユーザでさえも、データアクセスコマンドおよびプライベートコマンドの両方を、図4Aに示す物理実装を有するキーチェーン記憶デバイス150に送信することは妨げられる。このバグが修正されるまでの間は、管理者特権を有するユーザでさえも、図5Aの「非管理」分岐を使用しなければならない。対応する、本発明のあまり好ましくない実施形態では、USB記憶デバイス210はプライベートコマンドインタフェース211を有さず、データアクセスコマンドインタフェース212のみを含む。このバグは、さらに、PC110がマルチLUNサブインタフェース201とHIDサブインタフェース230との両方をともに列挙することも妨げるため、HIDサブインタフェース230がアクティブである間はマルチLUNサブインタフェース201を非アクティブにするという、上記の任意選択が使用されなければならない。
【0062】
図5Bをここで参照する。図5Aとの違いのみについて説明する。ステップ404で、ユーザがPC110上の管理者権限を有していない場合、フローはステップ505に進む。ステップ505で、プライベートコマンドインタフェース213が初期化される。プライベートコマンド213の通信に使用される特別なファイルが実装に含まれる場合、このファイルが、この段階で開かれる。プライベートコマンド213のための動的セクタ割り当てが実装に含まれる場合、セクタのためのファイルが作成され、そして、固有の初期化シーケンスを新しいファイルに書き込んでからファイルポインタを巻き戻すことにより、そのファイルがプライベートコマンドインタフェース213と関連付けられる。ステップ506で、プライベートコマンドがコマンドファイルインタフェース213に送信される。ステップ408まで、図5Aと同様にフローが継続される。プライベートコマンドが要求される場合、ステップ509で、特別なファイルインタフェース213を経由してこのコマンドが送信される。
【0063】
上述のように、本発明の範囲は、さらに、データアクセスコマンドを受け入れるための(および特権ユーザからのプライベートコマンドも受け入れるための)仮想USBデバイス151などの、仮想USBデバイスと、オートランをサポートするための仮想USBデバイス155などの、独立した仮想USBデバイスとを有し、しかし、任意のユーザからのプライベートコマンドを受け入れるための仮想USBデバイス153などの、仮想USBデバイスは有さない、周辺記憶デバイスも含む。図4AからUSB HIDデバイス230およびスイッチ202が削除された場合、図4Aは、1つのそのようなデバイスの物理実装を示す。
【0064】
本発明を、限定された数の実施形態に関して説明したが、本発明の多くの変形形態、修正形態、およびその他の応用例が作成されてもよいことが理解されるであろう。
【図面の簡単な説明】
【0065】
【図1】本発明に関連する従来技術のシステムの単純化されたブロック図である。
【図2】本発明に関連する従来技術のUSBキーチェーン記憶デバイスの単純化されたブロック図である。
【図3】本発明の好ましい実施形態によるUSBキーチェーン記憶デバイスの単純化された一般的なブロック図である。
【図4A】図3のデバイスの2つの物理実装の単純化されたブロック図である。
【図4B】図3のデバイスの2つの物理実装の単純化されたブロック図である。
【図5A】図4Aおよび図4Bに示す実装の好ましい動作モードを説明する概略フローチャートである。
【図5B】図4Aおよび図4Bに示す実装の好ましい動作モードを説明する概略フローチャートである。

【特許請求の範囲】
【請求項1】
ホストコンピュータとともに使用するための周辺デバイスであって、前記周辺デバイスは、
(a)前記ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、
(b)前記ホストコンピュータの任意のユーザから受信した第1のセットの前記コマンドを、前記マイクロコントローラに渡すための、第1の仮想デバイスと、
(c)前記ホストコンピュータの任意のユーザから受信した第2のセットの前記コマンドを、前記マイクロコントローラに渡すための、第2の仮想デバイスとを備える、周辺デバイス。
【請求項2】
前記第1の仮想デバイスは、前記ホストコンピュータの特権ユーザのみから受信した前記第2のセットの前記コマンドを、前記マイクロコントローラに渡すように動作する、請求項1に記載の周辺デバイス。
【請求項3】
前記第2の仮想デバイスは、前記ホストコンピュータの任意のユーザから受信した任意の前記コマンドを、前記マイクロコントローラに渡すように動作する、請求項1に記載の周辺デバイス。
【請求項4】
前記マイクロコントローラは、前記第2の仮想デバイスのネイティブコマンドとしてフォーマットされた任意の前記コマンドを、前記第2の仮想デバイスから受信するように、そして、前記ネイティブコマンドを、前記任意のコマンドとして再解釈するように動作する、請求項3に記載の周辺デバイス。
【請求項5】
(d)前記コマンドを受信するために、前記ホストコンピュータへの前記周辺デバイスの動作可能な接続を生じさせるためのインタフェース
をさらに備える、請求項1に記載の周辺デバイス。
【請求項6】
前記仮想デバイスは、前記インタフェースのサブインタフェースである、請求項5に記載の周辺デバイス。
【請求項7】
前記インタフェースは、USBインタフェースである、請求項5に記載の周辺デバイス。
【請求項8】
前記第1の仮想デバイスは、USBマスストレージインタフェースである、請求項7に記載の周辺デバイス。
【請求項9】
前記インタフェースは、前記コマンドを受信するために、前記ホストコンピュータへの、両方の前記仮想デバイスの同時の動作可能な接続を生じさせる、請求項5に記載の周辺デバイス。
【請求項10】
前記インタフェースはUSBインタフェースであり、そして、前記第1および第2の仮想デバイスは、前記ホストコンピュータによってともに列挙されるように動作し、それにより、前記ホストコンピュータに、同時に、動作可能な仕方で接続されるようになる、請求項9に記載の周辺デバイス。
【請求項11】
前記インタフェースは、前記コマンドを受信するために、前記ホストコンピュータへの、前記2つの仮想デバイスの交互の動作可能な接続を生じさせる、請求項5に記載の周辺デバイス。
【請求項12】
前記インタフェースはUSBインタフェースであり、そして、前記第1および第2の仮想デバイスは、前記ホストコンピュータによって交互に列挙されるように動作し、それにより、前記ホストコンピュータに、交互に、動作可能な仕方で接続されるようになる、請求項11に記載の周辺デバイス。
【請求項13】
(e)前記ホストコンピュータへの前記周辺デバイスの前記動作可能な接続が始動された場合の、オートランをサポートする、第3の仮想デバイス
をさらに備える、請求項7に記載の周辺デバイス。
【請求項14】
前記仮想デバイスは、前記インタフェースのサブインタフェースである、請求項13に記載の周辺デバイス。
【請求項15】
前記第3の仮想デバイスは、前記インタフェースのUSB CDサブインタフェースである、請求項13に記載の周辺デバイス。
【請求項16】
前記第1の仮想デバイスおよび前記第2の仮想デバイスは、独立したそれぞれの第1および第2の物理デバイス内に実装される、請求項1に記載の周辺デバイス。
【請求項17】
(d)前記コマンドを受信するために、前記ホストコンピュータへの前記周辺デバイスの動作可能な接続を生じさせるためのインタフェース
をさらに備える、請求項16に記載の周辺デバイス。
【請求項18】
(e)前記第2の物理デバイスを前記インタフェースに、動作可能な仕方で可逆的に接続するためのスイッチ
をさらに備える、請求項17に記載の周辺デバイス。
【請求項19】
前記インタフェースはUSBインタフェースであり、前記第2の物理デバイスは、前記インタフェースのUSB HIDサブインタフェースである、請求項17に記載の周辺デバイス。
【請求項20】
前記第2の物理デバイスは、
(i)前記第2のセットの前記コマンドを、前記マイクロコントローラに示すための機構と、
(ii)前記第2のセットの前記コマンドの結果を、前記ホストコンピュータに示すための機構とを含む、請求項19に記載の周辺デバイス。
【請求項21】
前記第2のセットの前記コマンドを、前記マイクロコントローラに示すための前記機構は、複数の仮想マルチレベルLEDを含み、そして、前記第2のセットの前記コマンドの前記結果を、前記ホストコンピュータに示すための前記機構は、複数の仮想ユーザスイッチを含む、請求項20に記載の周辺デバイス。
【請求項22】
(e)前記ホストコンピュータへの前記周辺デバイスの前記動作可能な接続が始動された場合の、オートランをサポートする、第3の仮想デバイス
をさらに備える、請求項17に記載の周辺デバイス。
【請求項23】
前記第3の仮想デバイスも、前記第1の物理デバイス内に実装される、請求項22に記載の周辺デバイス。
【請求項24】
前記インタフェースはUSBインタフェースであり、前記第1の物理デバイスは、前記インタフェースのマルチLUN USBサブインタフェースである、請求項23に記載の周辺デバイス。
【請求項25】
前記第1の仮想デバイスおよび前記第2の仮想デバイスは、共通の物理デバイス内に実装される、請求項1に記載の周辺デバイス。
【請求項26】
(d)複数のセクタを含むメモリ
をさらに備え、前記コマンドの前記第1のセットには、前記メモリのそれぞれの指定されたセクタにデータを書き込むための書き込みコマンドが含まれ、
前記第2のセットの前記コマンドのために予約されたセクタに書き込むためのそれぞれの前記書き込みコマンド内に、前記第2のセットの前記コマンドが埋め込まれている場合に、前記共通の物理デバイスは、前記ホストコンピュータの任意のユーザから受信した前記第2のセットの前記コマンドを、前記マイクロコントローラに渡すように動作する、請求項25に記載の周辺デバイス。
【請求項27】
前記予約されたセクタは、静的に予約される、請求項26に記載の周辺デバイス。
【請求項28】
前記予約されたセクタは、動的に予約される、請求項26に記載の周辺デバイス。
【請求項29】
(d)前記コマンドを受信するために、前記ホストコンピュータへの前記周辺デバイスの動作可能な接続を生じさせるためのインタフェース
をさらに備える、請求項25に記載の周辺デバイス。
【請求項30】
前記インタフェースはUSBインタフェースであり、前記共通の物理デバイスは、前記インタフェースのマルチLUN USBサブインタフェースである、請求項29に記載の周辺デバイス。
【請求項31】
ホストコンピュータと、前記ホストコンピュータに動作可能な仕方で接続された周辺デバイスとを含むシステム(前記周辺デバイスは、マイクロコントローラと、複数のセクタを有するメモリと、第1のセットのコマンドを、前記ホストコンピュータの任意のユーザから受信した場合に、実行のためにマイクロコントローラに渡し、第2のセットのコマンドを、前記ホストコンピュータの特権ユーザから受信した場合にのみ、実行のためにマイクロコントローラに渡すように動作する第1の仮想デバイスとを含む)において、前記ホストコンピュータの任意のユーザが、前記第2のセットの前記コマンドを、前記マイクロコントローラにより実行されるようにすることを可能にするための方法であって、前記方法は、
(a)前記第2のセットのコマンドを、前記ホストコンピュータの任意のユーザから受信した場合に、実行のために前記マイクロコントローラに渡すように動作する第2の仮想デバイスを、前記周辺デバイス内に含めるステップと、
(b)前記ホストコンピュータに、前記周辺デバイスを動作可能な仕方で接続するステップと、
(c)前記ホストコンピュータのユーザによる、前記ホストコンピュータからの前記第2のセットのコマンドを、前記周辺デバイスに送信するステップと、
(d)前記ユーザが特権ユーザである場合は、前記第2のセットの前記コマンドを、前記第1の仮想デバイスを経由して、前記マイクロコントローラに送信するステップと、
(e)それ以外の場合は、前記第2のセットの前記コマンドを、前記第2の仮想デバイスを経由して、前記マイクロコントローラに送信するステップとを含む方法。
【請求項32】
(f)前記動作可能な接続が生じさせられた場合のオートランをサポートする、第3の仮想デバイスを、前記周辺デバイス内に含めるステップ
をさらに含み、前記オートランは、前記ユーザが特権ユーザであるかどうかを判定する、請求項31に記載の方法。
【請求項33】
前記第1および第2の仮想デバイスは、前記周辺デバイス内の独立したそれぞれの第1および第2の物理デバイス内に実装され、前記方法は、
(f)前記ユーザが特権ユーザでない場合のみ、前記ホストコンピュータに、前記第2の物理デバイスを動作可能な仕方で接続するステップ
をさらに含む、請求項31に記載の方法。
【請求項34】
前記第1および第2の仮想デバイスは、前記周辺デバイス内の共通の物理デバイス内に実装され、前記方法は、
(f)前記第2のセットの前記コマンドが内部に埋め込まれた、前記第1のセットのコマンドを認識するように、前記共通の物理デバイスを構成するステップ
をさらに含み、ここで、前記第2のセットの前記コマンドを前記周辺デバイスに送信する前記ステップは、
(i)前記第2のセットの前記コマンドを、前記第1のセットのコマンド内に埋め込むステップと、
(ii)前記第1のセットの前記コマンドを前記周辺デバイスに送信するステップと
を含むステップによって行われ、そして、ここで、前記第2のセットの前記コマンドを前記第2の仮想デバイスを経由して前記マイクロコントローラに送信する前記ステップは、前記第1のセットの前記コマンドから、前記第2のセットの前記コマンドを抽出するステップを含むステップによって行われる、請求項31に記載の方法。
【請求項35】
前記第2のセットの前記コマンドを内部に埋め込んでいるとして、前記共通の物理デバイスにより認識される、前記第1のセットの前記コマンドは、前記第2のセットの前記コマンドのために予約された前記メモリのセクタに書き込むための、書き込みコマンドである、請求項34に記載の方法。
【請求項36】
(f)前記セクタを静的に予約するステップ
をさらに含む、請求項35に記載の方法。
【請求項37】
(f)前記セクタを動的に予約するステップ
をさらに含む、請求項35に記載の方法。
【請求項38】
ホストコンピュータとともに使用するための周辺デバイスであって、前記周辺デバイスは、
(a)前記ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、
(b)前記ホストコンピュータから前記マイクロコントローラに、前記コマンドを渡すための、第1の仮想デバイスと、
(c)前記第1の仮想デバイスとは独立した、第2の仮想デバイスとを含み、前記第2の仮想デバイスは、前記周辺デバイス内に前記第2の仮想デバイスが存在することを前記ホストコンピュータが検出した場合のオートランをサポートする、周辺デバイス。
【請求項39】
(d)前記コマンドを受信するために、前記ホストコンピュータへの前記周辺デバイスの動作可能な接続を生じさせるためのインタフェース
をさらに備え、前記仮想デバイスは前記インタフェースのサブインタフェースである、請求項38に記載の周辺デバイス。
【請求項40】
前記インタフェースは、USBインタフェースである、請求項39に記載の周辺デバイス。
【請求項41】
前記第1の仮想デバイスは、USBマスストレージインタフェースである、請求項40に記載の周辺デバイス。
【請求項42】
前記第2の仮想デバイスは、前記インタフェースのUSB CDサブインタフェースである、請求項40に記載の周辺デバイス。
【請求項43】
前記第1および第2の仮想デバイスは、共通の物理デバイス内に実装される、請求項38に記載の周辺デバイス。
【請求項44】
(d)前記コマンドを受信するために、前記ホストコンピュータへの前記周辺デバイスの動作可能な接続を生じさせるためのインタフェース
をさらに備え、前記共通の物理デバイスは前記インタフェースのマルチLUN USBサブインタフェースである、請求項43に記載の周辺デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

image rotate

image rotate

image rotate

image rotate


【公表番号】特表2007−528036(P2007−528036A)
【公表日】平成19年10月4日(2007.10.4)
【国際特許分類】
【出願番号】特願2006−507589(P2006−507589)
【出願日】平成16年3月25日(2004.3.25)
【国際出願番号】PCT/IL2004/000272
【国際公開番号】WO2004/086363
【国際公開日】平成16年10月7日(2004.10.7)
【出願人】(502111536)エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド (64)
【氏名又は名称原語表記】M−SYSTEMS FLASH DISK PIONEERS LTD.
【住所又は居所原語表記】Central Park 2000,Atir Yeda Street 7,44425 Kfar Sabad,Israel
【Fターム(参考)】