(57)【要約】【課題】既存のオペレーティングシステムを使用した、キーチェーン記憶デバイスのドライバなしの動作を可能にし、その上、自動実行およびプライベートコマンドインタフェースも有効にするための方法を提供する。【解決手段】ホストコンピュータの周辺デバイスが、マイクロコントローラおよび２つの仮想デバイスを有する。第１の仮想デバイスは、マイクロコントローラに、ホストコンピュータの任意のユーザからの第１のコマンドセットのコマンドを渡し、さらに、ホストコンピュータの特権ユーザのみからの第２のコマンドセットのコマンドも渡す。第２の仮想デバイスは、マイクロコントローラに、ホストコンピュータの任意のユーザからの第２のセットのコマンドを渡す。２つの仮想デバイスは独立した物理デバイスとして実装され、第２のデバイスは、ユーザが非特権である場合のみ、ホストコンピュータへのインタフェースに接続される。【選択図】図４Ａ
2006202339.tif 000002
【特許請求の範囲】
【請求項１】
所定のオペレーションシステムによって制御されると共に少なくともディスクドライブドライバ、ＵＳＢマスストレージドライバ及びＵＳＢホストコントローラを具備する外部装置への着脱が可能なＵＳＢストレージデバイスであって、
フラッシュメモリの記憶領域を、第１の領域と第２の領域とに分けて定義してなる記憶手段と、
前記外部装置とＵＳＢプロトコルに基づいた通信を行う通信手段と、
前記通信手段を介して、前記記憶手段に対して情報の読み出し、書き込み及び削除を実行する制御手段と、
を備え、
前記制御手段は、
前記外部装置が有するＵＳＢマスストレージクラスドライバのＳＣＳＩコマンドセットに定義された論理ユニット番号に対応し、前記第１の領域を情報の読み出し、書き込み及び削除を実行可能なディスクユニットとして、前記第２の領域を情報の読み出しのみを実行可能なＣＤ−ＲＯＭユニットとして、前記ＵＳＢマスストレージクラスドライバに認識させるための当該領域のフォーマット情報を記憶し、
前記ディスクドライブドライバからの指令に従って、前記フォーマット情報を前記ＵＳＢマスストレージクラスドライバに供給して、当該ＵＳＢマスストレージクラスドライバに、本ＵＳＢストレージデバイスを前記ディスクユニット及び前記ＣＤ−ＲＯＭユニットという２つの論理ユニットを有する一つのＳＣＳＩデバイスとして認識させるとともに、  前記外部装置から受け取った指令と前記フォーマット情報とに基づいて、前記第１の領域に対しては情報の読み出し、書き込み又は削除を実行し、前記第２の領域に対しては情報の読み出しのみを実行することを特徴とするＵＳＢストレージデバイス。
【請求項２】
請求項１に記載のＵＳＢストレージデバイスにおいて、
前記制御手段は、前記論理ユニット毎に、その論理ユニットにおける論理ブロック番号と前記記憶手段の物理ブロック番号との対応関係を管理すると共に、当該対応関係を前記フォーマット情報と共に記憶し、この記憶している対応関係に基づき、情報の読み出し、書き込み又は削除を実行することを特徴とするＵＳＢストレージデバイス。
【請求項３】
請求項１又は請求項２に記載のＵＳＢストレージデバイスにおいて、
第２の領域にはアプリケーションプログラムが予め記憶されており、本ＵＳＢストレージデバイスが外部装置に装着された際に、前記アプリケーションプログラムが自動実行されるように構成されていることを特徴とするＵＳＢストレージデバイス。
【請求項４】
ＵＳＢストレージデバイスに搭載される制御装置であって、
ＵＳＢストレージデバイスが装着されるべき外部装置が有するＵＳＢマスストレージクラスドライバのＳＣＳＩコマンドセットに定義された論理ユニット番号に対応し、ＵＳＢストレージデバイスに設けられたフラッシュメモリからなる記憶装置の第１の領域を情報の読み出し、書き込み及び削除を実行可能なディスクユニットとして、第２の領域を情報の読み出しのみを実行可能なＣＤ−ＲＯＭユニットとして、前記ＵＳＢマスストレージクラスドライバに認識させるための当該領域を管理するフォーマット情報を記憶し、
外部装置のディスクドライブドライバによるコマンドの発行に応答して、前記外部装置のＵＳＢマスストレージクラスドライバへ前記フォーマット情報を供給して、前記ＵＳＢマスストレージクラスドライバに当該制御装置が搭載されたＵＳＢストレージを前記ディスクユニット及び前記ＣＤ−ＲＯＭユニットという２つの論理ユニットを有する一つのＳＣＳＩデバイスとして認識させるとともに、
前記外部装置から受け取った指令と前記フォーマット情報とに基づいて、前記第１の領域に対しては情報の読み出し、書き込み又は削除を実行し、前記第２の領域に対しては情報の読み出しのみを実行することを特徴とする制御装置。
【請求項５】
請求項４に記載の制御装置は、
前記論理ユニット毎に、その論理ユニットにおける論理ブロック番号と前記記憶手段の物理ブロック番号との対応関係を管理すると共に、当該対応関係を前記フォーマット情報と共に記憶し、この記憶している対応関係に基づき、情報の読み出し、書き込み又は削除を実行することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、着脱可能な記憶デバイスに関し、特に、ホストコンピュータのユーザによって、ユーザのアクセス特権に関係なく完全にアクセスされることが可能な、着脱可能なＵＳＢ記憶デバイスに関する。
【背景技術】
【０００２】
キーチェーン記憶デバイスは、着脱可能なモジュールであり、ホストコンピュータのユーザがデータを保存できるディスクライクな記憶領域と、モジュールがホストコンピュータと通信することを可能にするＵＳＢインタフェースとを提供する。本発明の焦点は、記憶デバイスとホストコンピュータとの間の通信の手段および方法に当てられている。
【０００３】
既存のオペレーティングシステムは、マスストレージクラス（ＭＳＣ）ＵＳＢデバイスのサポートを含んでいる。これらのデバイスは、ホストコンピュータのユーザに、ハードディスクと同様の単純な記憶を提供することが意図されたものである。ＭＳＣデバイスへの標準アクセスは、ホストコンピュータのオペレーティングシステムを使用して、特権操作（マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）の登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）オペレーティングシステム内の管理者など）の必要なしに実行されることが可能である。標準のもとで定義されていない任意の特別な操作には、管理者モードでなければ利用できないプライベートコマンドインタフェースの使用が必要とされる。そのような特別なコマンドの例としては、セキュア記憶デバイスへのパスワードの伝達や、ＵＳＢデバイスのクロックの設定などがある。
【０００４】
いくつかのタイプの周辺媒体については、媒体がコンピュータに接続されたことをオペレーティングシステムが認識した場合に、媒体上に記憶された事前定義されたファイルを、オペレーティングシステムが自動的に実行する。例えば、登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）システムのＣＤドライブ内にデータＣＤが挿入された場合、オペレーティングシステムは、「ａｕｔｏｒｕｎ．ｉｎｆ」と呼ばれる、ＣＤ上のファイルを検出して実行する。この機能は、キーチェーン記憶デバイスなどの、単純なリムーバブル記憶デバイスでは利用できない。
【０００５】
オペレーティングシステムのこれらの制限は、任意のタイプの通信を可能にし、自動実行機能を含める、キーチェーン記憶デバイスのための特別なデバイスドライバを、ホストコンピュータ内にインストールすることにより克服することが可能である。
【０００６】
そのようなデバイスドライバは、特別な開発を必要とし、さらに、ＵＳＢメモリモジュールの接続先として意図されたすべてのパーソナルコンピュータ上へのインストールを必要とする。キーチェーン記憶デバイスは、ユーザが作業を行う各コンピュータ上で一様に動作することが期待されているため、これは大きな欠点である。その上、セキュリティのために、そのようなデバイスドライバのアクセスは、登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）によって、管理者特権を有するユーザに制限される。管理者特権は、通常、ユーザは利用できない。会社内で管理者特権を有しているマネージャでさえ、インターネットカフェなどの会社外の場所でそのような特権を与えられる見込みはない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、既存のオペレーティングシステムを使用した、キーチェーン記憶デバイスのドライバなしの動作を可能にし、その上、自動実行およびプライベートコマンドインタフェースも有効にするための方法を提供する。
【０００８】
本発明の第１の目的は、プライベートコマンド内でキーチェーン記憶デバイスと通信するためには管理者特権を使用するという、従来技術における必要性を克服することである。
【０００９】
本発明の第２の目的は、キーチェーン記憶デバイスがホストコンピュータ内に挿入された場合に任意のユーザアプリケーションを自動実行するための、方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の１つの態様では、所定のオペレーションシステムによって制御されると共に少なくともディスクドライブドライバ、ＵＳＢマスストレージドライバ及びＵＳＢホストコントローラを具備する外部装置への着脱が可能なＵＳＢストレージデバイスであって、
フラッシュメモリの記憶領域を、第１の領域と第２の領域とに分けて定義してなる記憶手段と、
前記外部装置とＵＳＢプロトコルに基づいた通信を行う通信手段と、
前記通信手段を介して、前記記憶手段に対して情報の読み出し、書き込み及び削除を実行する制御手段と、
を備え、
前記制御手段は、
前記外部装置が有するＵＳＢマスストレージクラスドライバの特定のコマンドセットたとえばＳＣＳＩコマンドセット等に定義された論理ユニット番号に対応し、前記第１の領域を情報の読み出し、書き込み及び削除を実行可能なディスクユニットとして、前記第２の領域を情報の読み出しのみを実行可能なＣＤ−ＲＯＭユニットとして、前記ＵＳＢマスストレージクラスドライバに認識させるための当該領域のフォーマット情報を記憶し、
前記ディスクドライブドライバからの指令に従って、前記フォーマット情報を前記ＵＳＢマスストレージクラスドライバに供給して、当該ＵＳＢマスストレージクラスドライバに、本ＵＳＢストレージデバイスを前記ディスクユニット及び前記ＣＤ−ＲＯＭユニットという２つの論理ユニットを有する一つのＳＣＳＩデバイスとして認識させるとともに、  前記外部装置から受け取った指令と前記フォーマット情報とに基づいて、前記第１の領域に対しては情報の読み出し、書き込み又は削除を実行し、前記第２の領域に対しては情報の読み出しのみを実行することを特徴とするＵＳＢストレージデバイスが提供される。
この場合、前記制御手段は、前記論理ユニット毎に、その論理ユニットにおける論理ブロック番号と前記記憶手段の物理ブロック番号との対応関係を管理すると共に、当該対応関係を前記フォーマット情報と共に記憶し、この記憶している対応関係に基づき、情報の読み出し、書き込み又は削除を実行する。
また、第２の領域にはアプリケーションプログラムが予め記憶されており、本ＵＳＢストレージデバイスが外部装置に装着された際に、前記アプリケーションプログラムが自動実行されるように構成されている。
さらに、別の態様ではＵＳＢストレージデバイスに搭載される制御装置であって、
ＵＳＢストレージデバイスが装着されるべき外部装置が有するＵＳＢマスストレージクラスドライバのＳＣＳＩコマンドセットに定義された論理ユニット番号に対応し、ＵＳＢストレージデバイスに設けられたフラッシュメモリからなる記憶装置の第１の領域を情報の読み出し、書き込み及び削除を実行可能なディスクユニットとして、第２の領域を情報の読み出しのみを実行可能なＣＤ−ＲＯＭユニットとして、前記ＵＳＢマスストレージクラスドライバに認識させるための当該領域を管理するフォーマット情報ないしコマンドを記憶し、
外部装置のディスクドライブドライバによるコマンドの発行に応答して、前記外部装置のＵＳＢマスストレージクラスドライバへ前記フォーマット情報を供給して、前記ＵＳＢマスストレージクラスドライバに当該制御装置が搭載されたＵＳＢストレージを前記ディスクユニット及び前記ＣＤ−ＲＯＭユニットという２つの論理ユニットを有する一つのＳＣＳＩデバイスとして認識させるとともに、
前記外部装置から受け取った指令と前記フォーマット情報等を含むコマンドセット等とに基づいて、前記第１の領域に対しては情報の読み出し、書き込み又は削除を実行し、前記第２の領域に対しては情報の読み出しのみを実行することを特徴とする制御装置が提供される。
この場合、前記論理ユニット毎に、その論理ユニットにおける論理ブロック番号と前記記憶手段の物理ブロック番号との対応関係を管理すると共に、当該対応関係を前記フォーマット情報と共に記憶し、この記憶している対応関係に基づき、情報の読み出し、書き込み又は削除を実行するようになっている。
また、本発明によれば、（ａ）ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、（ｂ）ホストコンピュータの任意のユーザから受信した第１のセットのコマンドを、マイクロコントローラに渡すための、第１の仮想デバイスと、（ｃ）ホストコンピュータの任意のユーザから受信した第２のセットのコマンドを、マイクロコントローラに渡すための、第２の仮想デバイスとを含む、ホストコンピュータとともに使用するための周辺デバイスが提供される。
【００１１】
さらに、本発明によれば、ホストコンピュータと、ホストコンピュータに動作可能な仕方で接続された周辺デバイスとを含むシステム（周辺デバイスは、マイクロコントローラと、複数のセクタを有するメモリと、第１のセットのコマンドを、ホストコンピュータの任意のユーザから受信した場合に、実行のためにマイクロコントローラに渡し、第２のセットのコマンドを、ホストコンピュータの特権ユーザから受信した場合にのみ、実行のためにマイクロコントローラに渡すように動作する第１の仮想デバイスとを含む）において、ホストコンピュータの任意のユーザが、第２のセットのコマンドを、マイクロコントローラにより実行されるようにすることを可能にするための方法が提供され、前記方法は、（ａ）第２のセットのコマンドを、ホストコンピュータの任意のユーザから受信した場合に、実行のためにマイクロコントローラに渡すように動作する第２の仮想デバイスを、周辺デバイス内に含めるステップと、（ｂ）周辺デバイスをホストコンピュータに、動作可能な仕方で接続するステップと、（ｃ）ホストコンピュータのユーザによる、第２のセットのコマンドを、ホストコンピュータから周辺デバイスに送信するステップと、（ｄ）ユーザが特権ユーザである場合は、第２のセットのコマンドを、第１の仮想デバイスを経由して、マイクロコントローラに送信するステップと、（ｅ）それ以外の場合は、第２のセットのコマンドを、第２の仮想デバイスを経由して、マイクロコントローラに送信するステップとを含む。
【００１２】
本発明によれば、さらに、ホストコンピュータとともに使用するための周辺デバイスが提供され、前記周辺デバイスは、（ａ）ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、（ｂ）ホストコンピュータからのコマンドをマイクロコントローラに渡すための第１の仮想デバイスと、（ｃ）周辺デバイス内に第２の仮想デバイスが存在することをホストコンピュータが検出した場合のオートランをサポートする、第１の仮想デバイスとは独立した、第２の仮想デバイスとを含む。
【００１３】
本発明の基本的な周辺デバイスは、ホストコンピュータから受信したコマンドを実行するためのマイクロコントローラと、２つの仮想デバイスとを含む。第１の仮想デバイスは、第１のコマンドセットのコマンド（例えば、周辺デバイスがマスストレージデバイスである場合は、データアクセスコマンド）を、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、マイクロコントローラに渡す。好ましくは、第１の仮想デバイスは、さらに、第２のコマンドセットのコマンド（例えば、周辺デバイスがマスストレージデバイスである場合は、特別なコマンド）を、それらのコマンドが特別な特権を有するユーザにより発行された場合（例えば、ユーザが管理者またはスーパユーザである場合）のみ、マイクロコントローラに渡す。第２の仮想デバイスは、第２のセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、マイクロコントローラに渡す。好ましくは、第２の仮想デバイスは、ホストコンピュータの任意のユーザからの任意のコマンドを、マイクロコントローラに渡す。これが実現される１つの方法は、第２の仮想デバイスのネイティブコマンドとしてフォーマットされたコマンドを、第２の仮想デバイスから受信するように、そして、ネイティブコマンドを、意図されたコマンドとして再解釈するように、マイクロコントローラを動作させることによるものである。
【００１４】
好ましくは、周辺デバイスは、さらに、ホストコンピュータへの周辺デバイスの動作可能な接続が始動された場合にオートランをサポートする、第３の仮想デバイスも含む。
【００１５】
好ましくは、周辺デバイスは、さらに、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるための、ＵＳＢインタフェースなどのインタフェースも含む。インタフェースがＵＳＢインタフェースである場合、第１の仮想デバイスはＵＳＢマスストレージインタフェースであることが好ましい。
【００１６】
好ましくは、インタフェースは、ホストコンピュータへの、両方の仮想デバイスの動作可能な接続を同時に生じさせ、それによりホストコンピュータは、インタフェースがそれ自身を再構成する必要なしに、いずれかの仮想デバイスを経由してマイクロコントローラにコマンドを送信するというオプションを有するようになる。例えば、インタフェースがＵＳＢインタフェースである場合、ホストコンピュータにとっての、両方の仮想デバイスのこの同時利用可能性は、２つの仮想デバイスを、ホストコンピュータによってともに列挙されるように動作させることによりもたらされる。あるいは、インタフェースは、ホストコンピュータへの、仮想デバイスの交互に動作可能な接続を生じさせる。任意の時点において、ホストコンピュータは、マイクロコントローラに、第１の仮想デバイスまたは第２の仮想デバイスのいずれかを経由して、ただし両方を経由してではなく、アクセスすることが可能である。例えば、インタフェースがＵＳＢインタフェースである場合、ホストコンピュータにとっての、仮想デバイスのこの交互の利用可能性は、２つの仮想デバイスを、ホストコンピュータによって交互に列挙されるように（両方の仮想デバイスがともに列挙されるようにではなく、第１の仮想デバイスが列挙されるか、または第２の仮想デバイスが列挙されるように）動作させることによりもたらされる。
【００１７】
最も好ましくは、最初の２つの仮想デバイス、および第３の仮想デバイス（存在する場合）は、インタフェースのサブインタフェースである。
【００１８】
本発明の周辺デバイスの１つの好ましい実施形態では、第１および第２の仮想デバイスは、周辺デバイス内の独立した第１および第２の物理デバイス内にそれぞれ実装される。周辺デバイスは、さらに、ホストコンピュータへの、周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、好ましくは、さらに、第２の物理デバイスをインタフェースに、動作可能な仕方で可逆的に接続するためのスイッチも含む。インタフェースがＵＳＢインタフェースである場合、好ましくは、第２の物理デバイスは、インタフェースのＵＳＢ  ＨＩＤサブインタフェースである。最も好ましくは、ＨＩＤデバイスは、第２のセットのコマンドが、厳密に言えば、ＨＩＤデバイスがホストコンピュータから受信するように正式に構成されたコマンドに含まれていない場合でも、第２のセットのコマンドをマイクロコントローラに示すための、複数の仮想マルチレベルＬＥＤなどの機構と、第２のセットのコマンドの結果をホストコンピュータに示すための、複数の仮想ユーザスイッチなどの機構とを含む。
【００１９】
周辺デバイスが第３の仮想デバイスも含む場合、第３の仮想デバイスも、第１の仮想デバイス内に実装される。インタフェースがＵＳＢインタフェースである場合、第１の物理デバイスは、好ましくは、全体的なインタフェースのマルチＬＵＮ  ＵＳＢサブインタフェースである。
【００２０】
本発明の周辺デバイスの別の好ましい実施形態では、第１および第２の物理デバイスは、共通の物理デバイス内に実装される。好ましくは、周辺デバイスは、複数のセクタを含むメモリも含む。第１のコマンドセットは、メモリのそれぞれの指定されたセクタにデータを書き込むための、書き込みコマンドを含む。非特権ユーザからの第２のセットのコマンドを共通の物理デバイスがマイクロコントローラに渡すようにさせるために、ユーザはそのコマンドを、第１のセットの書き込みコマンド（その指定されたセクタは、第２のセットのコマンドのために予約されたセクタである）の中のデータとして埋め込む。予約されたセクタは、静的に、または動的に予約されたものであってもよい。
【００２１】
周辺デバイスは、好ましくは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースを含む。インタフェースがＵＳＢインタフェースである場合、好ましくは、共通の物理デバイスは、インタフェースのマルチＬＵＮ  ＵＳＢサブインタフェースである。
【００２２】
本発明の方法は、マイクロコントローラと、複数のセクタを有するメモリと、第１の仮想デバイスとを含む周辺デバイスを、ホストコンピュータと組み合わせて、より効果的に使用することを目指している。第１の仮想デバイスは、第１のコマンドセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、実行のためにマイクロコントローラに渡す。第１の仮想デバイスは、第２のコマンドセットのコマンドを、それらのコマンドが特別な特権を有するユーザにより発行された場合（例えば、ユーザが管理者またはスーパユーザである場合）のみ、実行のためにマイクロコントローラに渡す。
【００２３】
本発明の基本的な方法は、任意のユーザが第２のセットのコマンドを発行することを可能にし、そして、それらのコマンドが周辺デバイスのマイクロプロセッサによって実行されるようにする。本発明の基本的な方法は、４つのステップを有する。第１のステップでは、第２の仮想デバイスが周辺デバイス内に含められる。第２の仮想デバイスは、第２のコマンドセットのコマンドを、ホストコンピュータのユーザがいかなる特権レベルを有していようとも、実行のためにマイクロコントローラに渡す。第２のステップでは、周辺デバイスがホストコンピュータに、動作可能な仕方で接続される。第３のステップでは、ユーザは、第２のコマンドセットのコマンドを周辺デバイスに送信する。第４のステップでは、第２のコマンドセットのコマンドが、ユーザが適切な特別な特権を有している場合は第１の仮想デバイスによって、そしてそれ以外の場合は第２の仮想デバイスによって、マイクロコントローラに実行のために送信され、その動作が、マイクロコントローラにより、第２のセットのコマンドとして解釈される。
【００２４】
好ましくは、本発明の方法は、第２のステップで周辺デバイスがホストコンピュータに動作可能な仕方で接続された場合のオートランをサポートする、第３の仮想デバイスを、周辺デバイス内に含めるという、さらなる初期ステップも含む。オートランは、ユーザが特別な特権を有しているかどうかを判定するため、第２のコマンドセットのコマンドをマイクロプロセッサに渡すための、第２の仮想デバイスは必要としない。
【００２５】
本発明の方法の１つの好ましい実施形態では、第１および第２の仮想デバイスは、周辺デバイス内の独立した第１および第２の物理デバイス内にそれぞれ実装される。本方法は、第２のセットのコマンドを第１の仮想デバイスを経由してマイクロプロセッサに送信するために必要な特別な特権をユーザが有していない場合にのみ、第２の物理デバイスをホストコンピュータに動作可能な仕方で接続する、さらなるステップを含む。
【００２６】
本発明の別の好ましい実施形態では、第１および第２の仮想デバイスは、共通の物理デバイス内に実装される。本方法は、第２のコマンドセットのコマンドを内部に埋め込んだ第１のコマンドセットのコマンドを認識するように、共通の物理デバイスを構成する、さらなるステップを含む。第２のコマンドセットのコマンドは、そのコマンドを第１のコマンドセットのコマンド内に埋め込み、第１のコマンドセットのそのコマンドを周辺デバイスに送信することにより、周辺デバイスに送信される。周辺デバイスにおいては、共通の物理デバイスが、第１のコマンドセットのコマンドから、第２のコマンドセットのコマンドを抽出する。好ましくは、第１のコマンドセットのコマンド（その内部に第２のコマンドセットのコマンドが埋め込まれている可能性があると、共通の物理デバイスによって認識されるもの）は、第２のセットのコマンドのために予約されたメモリセクタへの書き込みのための、書き込みコマンドである。第２のセットのコマンドは、その予約されたセクタに書き込まれるべきデータとして、第１のセットのコマンドの内部に埋め込まれる。セクタは、静的に、または動的に予約されてもよい。
【００２７】
本発明の別の基本的な周辺デバイスは、ホストコンピュータおよび２つの仮想デバイスから受信したコマンドを実行するための、マイクロコントローラを含む。第１の仮想デバイスは、コマンドをマイクロコントローラに渡す。第２の仮想デバイスは、第１の仮想デバイスから独立しており、周辺デバイス内に第２の仮想デバイスが存在することをホストコンピュータが検出した場合のオートランをサポートする。
【００２８】
好ましくは、周辺デバイスは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、２つの仮想デバイスはインタフェースのサブインタフェースである。より好ましくは、インタフェースはＵＳＢインタフェースである。最も好ましくは、第１の仮想デバイスは、ＵＳＢマスストレージインタフェースであり、第２の仮想デバイスは、インタフェースのＵＳＢ  ＣＤサブインタフェースである。
【００２９】
好ましくは、２つの仮想デバイスは、共通の物理デバイス内に実装される。最も好ましくは、周辺デバイスは、ホストコンピュータへの周辺デバイスの動作可能な接続を生じさせるためのインタフェースも含み、共通の物理デバイスは、インタフェースのマルチＬＵＮ  ＵＳＢサブインタフェースである。
【００３０】
本発明を、添付の図面を参照して、あくまで例示として以下に説明する。
【発明を実施するための最良の形態】
【００３１】
本発明は、接続先のホストコンピュータの任意のユーザにより完全にアクセスされることが可能な、着脱可能な記憶デバイスに関する。特に、本発明は、管理者特権を有さないユーザが、マスストレージクラスＵＳＢデバイスに、特別なコマンドを発行することを可能にするために使用されてもよい。
【００３２】
本発明による着脱可能な記憶デバイスの原理および動作は、図面および添付の説明を参照することにより、よりよく理解されるであろう。
【００３３】
ここで図面を参照すると、図１は、全体が１００で表される、本発明に関連する従来技術のシステムを示している。システム１００は、パーソナルコンピュータ（ＰＣ）１１０、およびデータ交換のためにＵＳＢ接続１４１を介して接続可能なＵＳＢキーチェーン記憶デバイス１２０を含む。
【００３４】
キーチェーン記憶デバイス１２０は、ＰＣ１１０のユーザに、デバイスの不揮発性メモリ１２１内にデータを記憶する機能と、任意選択で、セキュリティ機能、データ圧縮、または信号処理などの、追加機能１２２とを提供する。デバイス１２０は、機能１２２およびメモリ１２１を一方で管理し、ＵＳＢマスストレージクラス（ＭＳＣ）インタフェース１２４を介した通信を他方で管理する、マイクロコントローラ１２３を含む。ＵＳＢ  ＭＳＣインタフェース１２４は、マスストレージクラスデバイスのためのＵＳＢ規格により定義される。ＰＣ１１０がＵＳＢホストインタフェース１１３を有し、ＰＣ１１０のオペレーティングシステム（ＯＳ）１１２がＵＳＢ  ＭＳＣデバイスのためのサポートを含む場合、この定義は、任意のＰＣ１１０がＵＳＢ接続１４１を経由してキーチェーン記憶デバイス１２０とインタフェースすることを可能にする。その場合、ＰＣ１１０のユーザは、ＰＣ１１０の機能１１１をアプリケーションプログラム内で使用して、例えば、デバイス１２０へのファイルの書き込み、ファイルの暗号化、圧縮されたファイルの読み出し、またはデバイス１２０上に記憶された指紋の認識のために、キーチェーン記憶デバイス１２０を利用することができる。
【００３５】
図２は、ＵＳＢキーチェーン記憶デバイス１２０内のコマンドフローを示す。ＵＳＢ規格で定義されているように、ＵＳＢ  ＭＳＣインタフェース１２４は、ＵＳＢコネクタと、ケーブル布線と、ＵＳＢ端点のリストとを通信のために備えた、ＵＳＢインタフェース１３５を含む。キーチェーン記憶デバイス１２０は、ＰＣ１１０によって、ＵＳＢマスストレージクライアント１３１として識別される。このクライアント１３１は、アクセスコマンド１３２、プライベートコマンド１３３、およびオートラン１３４という、複数のコマンドタイプを受け入れることが可能である。
【００３６】
アクセスコマンド１３２は、キーチェーン記憶デバイス１２０上に記憶されたデータに、通常のディスクと同様にアクセスするために使用される。そのようなコマンドの例としては、「リード・ディスク・セクタ（ｒｅａｄ  ｄｉｓｋ  ｓｅｃｔｏｒ）」、「ライト・ディスク・セクタ（ｗｒｉｔｅ  ｄｉｓｋ  ｓｅｃｔｏｒ）」、および「ゲット・ディスク・サイズ（ｇｅｔ  ｄｉｓｋ  ｓｉｚｅ）」などがある。
【００３７】
任意選択のプライベートコマンド１３３は、ディスクライクな記憶機能ではない任意の追加機能１２２を実装するために使用される。これらの機能は、使用するデバイス１２０のタイプにより異なる。例えば、セキュア記憶デバイス１２０は、パスワードを送信するため、またはセキュアモードと非セキュアモードとの間を切り換えるための、プライベートコマンド１３３を受け入れる。バイオメトリックキーデバイス１２０は、ユーザの指紋を確認するためのプライベートコマンド１３３を受け入れる。信号処理キーデバイス１２０は、音声または映像データを、符号化および復号化するためのプライベートコマンド１３３を受け入れる。
【００３８】
オートラン１３４は、キーチェーン記憶デバイス１２０がＵＳＢ接続１４１を経由してＰＣ１１０に接続された場合の、ＰＣ１１０上のアプリケーションの自動実行を可能にする、任意選択の機能である。ＯＳ１１２が、このクラスのデバイス１２０のためのオートラン１３４を認識した場合、ＰＣ１１０が接続を認識すると、ＰＣ１１０は、キーチェーン記憶デバイス１２０から特定のデータを自動的に読み出して、このデータ内に記述されたプログラムを実行する。そのようなデータの例は、データＣＤ−ＲＯＭ上のいずれのアプリケーションが実行されるべきかを記述するファイル「ａｕｔｏｒｕｎ．ｉｎｆ」である。
【００３９】
オペレーティングシステム１１２は、一般に、マスストレージクラスデバイス１３１がアクセスされることが可能な方法を制限する。例えば、登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）では、ＰＣ１１０のユーザが管理者特権を有していない場合、そのユーザは、ＵＳＢマスストレージクライアント１３１にプライベートコマンド１３３を送信することはできない。
【００４０】
オペレーティングシステム１１２は、一般に、オートラン１３４機能も、特定のデバイスタイプに制限する。ほとんどのオペレーティングシステム１１２は、一般的なマスストレージクライアント１３１内のオートラン機能を認識しない。
【００４１】
これらの問題を克服するために、従来技術のキーチェーン記憶デバイス１２０では、メモリ１２１を管理するためのアクセスコマンド１３２だけでなく、プライベートコマンド１３３などのキーチェーン記憶デバイス機能１２２も使用するために、オペレーティングシステム１１２に別のデバイスドライバを追加することが要求される。このデバイスドライバは、キーチェーン記憶デバイス１２０が接続される各ＰＣ１１０上にインストールされていなければならない。デバイスドライバがインストールされていない場合は、キーチェーン記憶デバイス１２０の単純な記憶１２１機能のみが使用可能となる。もちろん、これはデバイスドライバによる解決策の大きな欠点である。本発明は、この問題を解決するための異なる手法を提示する。
【００４２】
本発明の好ましい実施形態１５０を示す、図３をここで参照する。図２の従来技術と比較すると、図３に示す本発明は、上で説明した異なるタイプのコマンド（アクセスコマンド１３２、任意選択のプライベートコマンド１３３、およびオートラン１３４）のために使用される、複数の仮想ＵＳＢデバイス１５１、１５３、および１５５を備えている。使用される異なるデバイスの数は、アプリケーションに固有である。本発明の他の好ましい実施形態は、そのような仮想デバイスを２つだけ（例えば、以下で説明するように、仮想デバイス１５１および１５５のみ）含み、または、そのような仮想デバイスを４つ以上含む。
【００４３】
キーチェーン記憶デバイス１５０は、仮想ＵＳＢデバイス１５１、１５３、および１５５に加えて、ＵＳＢインタフェース１５７、マイクロコントローラ１５８、不揮発性メモリ１５９、および内蔵機能１６０を含む。ＵＳＢインタフェース１５７は、デバイス１５１、１５３、および１５５を含む複合ＵＳＢデバイスのためのインタフェースである。ＵＳＢ仮想デバイス１５１、１５３、および１５５は、ＵＳＢインタフェース１５７のサブインタフェースである。ＵＳＢインタフェース１５７は、ＵＳＢ通信リンク１４３を経由してＰＣ１１０と通信を行う。デバイス１５１は、クライアント１３１に類似したＵＳＢマスストレージクライアントであり、キーチェーン記憶デバイス１５０のデータアクセスインタフェースを含む。キーチェーン記憶デバイス１５０のディスクライクな記憶機能を使用する、ＰＣ１１０上の機能１１１は、このＵＳＢデバイス１５１を参照する。デバイス１５３は、プライベートコマンド１５４のために本発明により使用されるＵＳＢデバイスである。このデバイス１５３は、ＰＣ１１０の非特権ユーザにとってさえも、ＯＳ１１２からアクセスすることが可能なタイプのＵＳＢデバイスである。マイクロコントローラ１５８は、デバイス１５３により受信されたコマンドを、プライベートコマンド１５４として再解釈する。デバイス１５５は、オートラン機能１５６を実装するために使用されるＵＳＢデバイスである。このデバイス１５５は、それに対してＯＳ１１２がオートラン機能１５６を作動させるタイプのＵＳＢデバイスである。そのようなデバイスの一例は、ＵＳＢ  ＣＤデバイスである。仮想デバイス１５５は仮想デバイス１５１から独立しているため、ＯＳ１１２が仮想デバイス１５１内のオートラン機能を認識しない場合でも、記憶デバイス１５０はオートランをサポートする。ＯＳ１１２は、デバイス１５１とデバイス１５５の両方を並行して認識し、したがって、両方のデバイスのすべての機能を利用することができる。
【００４４】
マイクロコントローラ１５８は、すべての異なるＵＳＢ仮想デバイス１５１、１５３、および１５５からの情報を収集し、受信した要求を、メモリ１５９リソースおよびその他の内蔵機能１６０を使用して処理する。
【００４５】
キーチェーン記憶デバイス１５０は、ディスクライクなデータアクセス１５２と、特別な特権なしにＯＳ１１２からアクセス可能なプライベートコマンド１５４インタフェースと、オートラン機能１５６という、本発明の３つの主要な特徴を含む。
【００４６】
図４Ａおよび図４Ｂは、図３のキーチェーン記憶デバイス１５０の２つの異なる物理実装を示す。プライベートコマンドを通信するためにＵＳＢヒューマンインタフェースデバイス（ＨＩＤ）クラスを使用し、オートラン機能を実行するためにＵＳＢ  ＣＤデバイスを使用する、ＵＳＢキーチェーン記憶デバイス１５０の物理実装の概略を示す、図４Ａをここで参照する。ＨＩＤデバイスは、非管理者にとってさえも常にアクセス可能であり、その理由は、これらのデバイスは、任意のユーザにとって（特別な特権を有していないユーザにとってさえも）常にアクセス可能であるべき、キーボード、マウス、またはゲームパッドなどの他のデバイスとインタフェースするように設計されているためである。登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）内のＣＤデバイスドライバは、オートラン機能を含む。この実装の背後にある着想は、ＯＳ１１２から利用可能なＣＤオートランを使用して、キーチェーン記憶デバイス１５０のオートラン機能を実装するということ、および、非特権ユーザにとって自由にアクセス可能なＨＩＤインタフェースを使用して、非管理モードプライベート通信を実装するということである。
【００４７】
図４Ａのキーチェーン記憶デバイス１５０は、ＵＳＢヒューマンインタフェースデバイス（ＨＩＤ）２３０、ＵＳＢ  ＣＤデバイス２２０、およびＵＳＢ記憶デバイス２１０という、３つの独立したＵＳＢ仮想デバイスを備えている。ＣＤデバイス２２０および記憶デバイス２１０は、両方ともＵＳＢマスストレージクラス定義に属し、ＵＳＢ規格に従って、ＣＤデバイス２２０および記憶デバイス２１０によって構成されるマルチＬＵＮ記憶デバイスサブインタフェース２０１としてグループ化される。
【００４８】
図４Ａの実装内の、データアクセスコマンド２１２のためのインタフェースは、記憶デバイス２１０を経由する。オートラン２２１機能は、ＣＤデバイス２２０を経由して利用可能である。プライベートコマンドは、ＰＣ１１０上でのユーザの特権により、２つの異なるインタフェースを介して利用可能である。
【００４９】
特権（登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）の管理者（Ａｄｍｉｎｉｓｔｒａｔｏｒ））モードでは、プライベートコマンドは、特権ユーザにとって利用可能なＵＳＢ記憶デバイスプライベートコマンドインタフェース２１１を使用して、ＵＳＢ記憶デバイス２１０を経由して送信される。このＵＳＢ記憶クラスプライベートコマンドインタフェース２１１は、機能１１１が任意のプライベートデータ構造をディスクライクなデバイスに送信することを可能にするために、ＯＳ１１２により提供される方法である。図４Ａのキーチェーン記憶デバイス１５０は、このインタフェースを、従来技術のキーチェーン記憶デバイス１２０が使用するのと同じ方法で使用する。
【００５０】
非特権モードでは、プライベートコマンドは、非特権モードプライベートコマンド２３１を使用して、ＵＳＢ  ＨＩＤインタフェース２３０を経由して送信される。スイッチ２０２は、ユーザにより必要とされる場合のみ、つまり、ＰＣ１１０上で非特権モードで動作している場合のみ、ＨＩＤデバイス２３０を有効にするために使用される。通常、ＨＩＤデバイスは、マスストレージデバイスと同様に、限定されたコマンドのセットのみを受け入れるように構成されている。したがって、ＨＩＤデバイス２３０を使用して、図４Ａのキーチェーン記憶デバイス１５０にプライベートコマンド２３１を通信するために、ＰＣ１１０は、プライベートコマンド２３１を、ＨＩＤデバイス２３０が受け入れ可能な形態にフォーマットし、それに応じて、マイクロコントローラ１５８は、ＨＩＤデバイス２３０により受信されたコマンドをプライベートコマンド２３１として解釈する。例えば、本発明の１つの好ましい実施形態では、ＨＩＤデバイス２３０は、複数の仮想マルチレベルＬＥＤ（各ＬＥＤについて８ビット）、および複数の仮想ユーザスイッチを含むものと定義される。ＨＩＤデバイス２３０は、さらに、ＬＥＤをオンおよびオフにするための、ならびに、ユーザスイッチの設定をＰＣ１１０に返すための、ネイティブコマンドのセットに応答するものと定義される。ＬＥＤは、コマンドのデータバイトを８ビットＬＥＤに単に書き込むことにより、プライベートコマンド２３１を渡すための、ＰＣ１１０からの情報チャネルとして機能する。スイッチは、プライベートコマンド２３１からの結果をＰＣ１１０が読み戻すための方法として機能する。これが実現される理由は、プライベートコマンド２３１そのものが８ビットＬＥＤを使用して符号化されるのと同様に、マイクロコントローラ１５８は、応答のバイトを、それらのスイッチを使用して符号化することができるためである。この機構は、図４Ａのキーチェーン記憶デバイス１５０に任意のコマンドを送信するために使用できることに注意されたい。図４Ａのキーチェーン記憶デバイス１５０にデータアクセスコマンドを送信するには、記憶デバイス２１０を利用できるため、ここで強調されるのは、図４Ａのキーチェーン記憶デバイス１５０にプライベートコマンドを送信するには、ＨＩＤデバイス２３０が使用されるということである。
【００５１】
ＰＣ１１０のユーザ機能１１１は、非管理モードで動作している場合、図４Ａのキーチェーン記憶デバイス１５０に、ＨＩＤインタフェースが必要とされるということを信号で伝えなければならない。これは、ＵＳＢ  ＣＤデバイス２２０にコマンドを送信することにより行われてもよい。例えば、ＵＳＢ  ＣＤデバイス２２０に、交互のイジェクト（ｅｊｅｃｔ）およびロード（ｌｏａｄ）コマンドによる固有の列を送信すると、スイッチ２０２が閉じられる。次に、ＰＣ１１０は、ＵＳＢデバイス１５０を再び列挙するように要求される。再列挙の後は、ＨＩＤデバイス２３０がシステムによって認識され、任意のさらなるプライベートコマンド２３１は、ＨＩＤインタフェース２３０を経由して、図４Ａのキーチェーン記憶デバイス１５０に送信される。任意選択で、マルチＬＵＮ記憶デバイスサブインタフェース２０１は、再列挙に応答せず、それによりＰＣ１１０は、キーチェーン記憶デバイス１５０を、ＨＩＤデバイス２３０のみを含むものとして取り扱うようになる。この任意選択のもとでは、別の再列挙のために、ユーザ機能１１１がキーチェーン記憶デバイス１５０に、スイッチ２０２を開いてサブインタフェース２０１を再びアクティブにすることを命令できるように、ＨＩＤデバイス２３０への特別なプライベートコマンド２３１が定義されなければならない。
【００５２】
図３のキーチェーン記憶デバイス１５０の代替の物理実装を示す、図４Ｂをここで参照する。図４Ｂの実装では、記憶データアクセス１５２、プライベートコマンド１５４、およびオートラン１５６という３つの機能すべてを提供するために、１つのマルチＬＵＮ  ＵＳＢ記憶デバイスサブインタフェース２０１を使用する。マルチＬＵＮ記憶デバイスサブインタフェース２０１は、ＵＳＢ  ＣＤデバイス２２０'およびＵＳＢ記憶デバイス２１０'を備えている。
【００５３】
図４Ｂの実装では、オートランは、オートラン２２１を実装する仮想ＵＳＢ  ＣＤデバイス２２０'を使用することによって実装される。これは、図４Ａの実装について説明したのと同じ方法で行われる。
【００５４】
ＵＳＢ記憶デバイス２１０'は、データアクセスコマンド２１２を処理する。ＵＳＢ記憶デバイス２１０'は、さらに、特権（管理者）ユーザがプライベートコマンドを通信するためのインタフェース２１１を提供する。再び、これは、図４Ａの実装について説明したのと同じ方法で行われる。非特権ユーザは、データアクセスコマンド２１２内にプライベートコマンドをパッケージすることによって、プライベートコマンドの通信を行う。
【００５５】
データアクセスコマンド２１２は、宛先アドレス、トランザクションタイプ、およびデータという、３つの部分を有する。宛先アドレスは、ヘッド、シリンダ、およびセクタアドレスにより構成される、ディスクセクタアドレスである。宛先アドレスは、ディスクドライブ上の１つのセクタを一意に識別する。このアドレスは、マイクロコントローラ１５８によって、メモリ１５９内のアドレスに変換される。トランザクションタイプは、ＰＣ１１０からキーチェーン記憶デバイス１５０へのデータ転送、またはキーチェーン記憶デバイス１５０からＰＣ１１０へのデータ転送に対応した、書き込み動作、または読み出し動作のいずれかである。データ部分は、トランザクション内で転送されるデータである。データは、トランザクションタイプによって、ＰＣ１１０からキーチェーン記憶デバイス１５０へ、またはキーチェーン記憶デバイス１５０からＰＣ１１０へ転送されてもよい。
【００５６】
図４Ｂの実装内での非管理モードプライベートコマンド２１３は、特定のディスクセクタへのデータアクセスコマンド２１２を使用して、ＵＳＢ記憶デバイス２１０'を経由して通信される。マイクロコントローラ１５８は、ＵＳＢ記憶デバイス２１０インタフェースからアクセス要求を受信し、要求されたアクセスが、プライベートコマンド位置として指定された位置（例えば、ディスクセクタ）に属すると識別された場合は、コマンドのデータ部分がマイクロコントローラ１５８によって処理される。それ以外の場合は、アクセスは通常のデータアクセス２１２として扱われ、データは、記憶１５９へ転送されるか、または記憶１５９から転送される。ＰＣ１１０から図４Ｂのキーチェーン記憶デバイス１５０へのプライベートコマンドを実装するには、書き込みトランザクションが使用される。図４Ｂのキーチェーン記憶デバイス１５０から結果を読み戻すには、読み出し動作がＰＣ１１０により使用される。
【００５７】
非管理モードでのプライベートコマンド通信２１３のために割り当てられるディスクセクタは、ＰＣ１１０上の非特権ユーザにとってアクセス可能でなければならない。非特権ユーザは、ディスクセクタへの直接アクセスを実行することはできず、ＯＳ１１２のファイルシステムを介して記憶デバイス１５０にアクセスできるのみである。したがって、プライベートコマンド２１３のために使用される特別な通信セクタは、ＵＳＢ記憶デバイス２１０の内部のファイルシステム上のファイルにマッピングされていなければならない。これは、２つの方法のうちの１つで実現されてもよい。
【００５８】
第１の方法は、静的に予約されるセクタを使用する。ＵＳＢ記憶デバイス２１０'がフォーマットされる際に、既知のディスクセクタ内に記憶される、デバイスのファイルシステム内のファイルが作成される。マイクロコントローラ１５８は、すべてのディスクアクセス２１２を構文解析して、そのセクタへのアクセスを探す。そのようなアクセスがマイクロコントローラ１５８によって検出された場合は、トランザクションタイプに従った動作が実行される。トランザクションが書き込みトランザクションである場合は、トランザクション内のデータがプライベートコマンド２１３として構文解析される。トランザクションが読み出しトランザクションである場合は、マイクロコントローラ１５８が、要求されたデータを、データアクセス２１２のデータフィールド内に返し、それにより、プライベートコマンド２１３を使用してＰＣ１１０に応答する。予約されたセクタはファイルに属するため、予約されたセクタはファイルシステム内で「使用済み」として印付けられ、ＯＳ１１２はそのセクタを他のいかなるファイルのためにも使用することを試みない。
【００５９】
第２の方法は、動的に予約されるセクタを使用する。特定のセクタが、プライベートコマンド２１３のために使用されるセクタとして、データアクセスコマンド２１２によってアクセス可能であるとして、動的に印付けられる。トランザクションが終了したら、動的に印付けられたセクタは解放される。プライベートコマンドチャネル２１３を作成するために、ＰＣ１１０上の機能１１１は、ＵＳＢ記憶デバイス２１０'上に新しいファイルを作成し、特定の初期化データをそのファイルに書き込む。図４Ｂのキーチェーン記憶デバイス１５０は、この情報を、ＵＳＢ記憶デバイス２１０'のデータアクセスコマンド２１２を経由して受信する。マイクロコントローラ１５８は、コマンド内のデータを構文解析して、データフィールド内の固有の初期化データを検出する。マイクロコントローラ１５８は、次に、動的に予約されたセクタを、プライベートコマンド２１３のための通信セクタとして印付ける。任意のさらなるアクセスは、静的に予約されたセクタの使用における場合と同様に、プライベートコマンド２１３として構文解析される。これにより、ＰＣ１１０の機能１１１は、プライベートコマンドデータを使用して、ＰＣ１１０が作成した特別なファイルを上書きすることにより、予約されたセクタに再びアクセスすることが可能になる。このファイルの使用を終了するには、通信の終了を通知するプライベートコマンド２１３が送信され、マイクロコントローラ１５８は、予約されたセクタへのアクセスの監視を停止する。
【００６０】
図５Ａおよび図５Ｂは、それぞれ、図４Ａおよび図４Ｂに示した実装オプションの一般的な動作のフローチャートである。図４Ａのキーチェーン記憶デバイス１５０の動作モードを提示する、図５Ａをここで参照する。手順はステップ４０１において開始され、ここでは、キーチェーン記憶デバイス１５０とＰＣ１１０とは切り離されている。ステップ４０２で、キーチェーン記憶デバイス１５０は、ＰＣ１１０に接続され、ＵＳＢ  ＣＤデバイス２２０およびＵＳＢ記憶デバイス２１０を含むマルチＬＵＮ記憶デバイス２０１として識別される。ステップ４０３で、オートランアプリケーションがＵＳＢ  ＣＤデバイス２２０から実行される。登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）プラットフォーム上では、これは、ＵＳＢ  ＣＤデバイス２２０からファイル「ａｕｔｏｒｕｎ．ｉｎｆ」を読み出して、そのファイル内にリストされたアプリケーションを実行することを意味している。ステップ４０４で、自動的に実行されたアプリケーション（または任意のその他の機能１１１）は、ＰＣ１１０のユーザが管理者権限を有しているかどうかを検査する。ユーザが管理者権限を有していない場合、フローはステップ４０５に進み、そこで、ＰＣ１１０のアプリケーションは、キーチェーン記憶デバイス１５０に、スイッチ２０２を閉じることによってＨＩＤインタフェース２３０をオンにするように信号で伝える。スイッチ２０２が閉じられた後で、キーチェーン記憶デバイス１５０は、それ自身をＰＣ１１０から論理的に切り離し、ＨＩＤデバイス２３０をアクティブにして、それ自身を再接続する。ＰＣ１１０は、ＵＳＢインタフェース１５７を列挙し、ＵＳＢ  ＨＩＤデバイス２３０と、ＵＳＢ  ＣＤデバイス２２０およびＵＳＢ記憶デバイス２１０を備えたマルチＬＵＮ記憶デバイス２０１とを検出する。ステップ４０６で、プライベートコマンド２３１のためのＨＩＤインタフェース２３０が、いくつかの初期化プライベートコマンドをキーチェーン記憶デバイス１５０に送信するために使用される。例えば、プライベートコマンドは、パスワード保護されたキーチェーン記憶デバイス１５０にパスワードを送信するために使用されうる。ステップ４０７で、ＰＣ１１０の機能１１１は、いくつかのコマンドをキーチェーン記憶デバイス１５０に送信することを決定する。ステップ４０８で、機能１１１は、キーチェーン記憶デバイス１５０に、プライベートコマンド２３１を送信するべきか、またはデータアクセスコマンド２１２を送信するべきかを検査する。データアクセスコマンド２１２が要求される場合、ステップ４１０で、ＵＳＢ記憶デバイス２１０にコマンドが送信される。プライベートコマンド２３１が要求される場合、ステップ４０９で、ＨＩＤデバイス２３０にコマンドが送信される。コマンドの転送後は、必要とされる任意のさらなるコマンドのために、フローはステップ４０７に戻る。ステップ４０４に戻って、ユーザが、ＰＣ１１０上の管理者である場合、フローはステップ４１１に進み、そこで、ＵＳＢマスストレージクラスプライベートコマンドインタフェース２１１を経由してプライベートコマンド２１１が送信される。ステップ４１２で、ＰＣ１１０上の機能１１１は、キー��ェーン記憶デバイス１５０にいくつかのコマンドを送信することを決定する。ステップ４１３で、機能１１１は、キーチェーン記憶デバイス１５０に、プライベートコマンド２１１を送信するべきか、またはデータアクセスコマンド２１２を送信するべきかを検査する。データアクセスコマンド２１２が要求される場合、ステップ４１５で、ＵＳＢ記憶デバイス２１０にコマンドが送信される。プライベートコマンド２１１が要求される場合、ステップ４１４で、ＵＳＢ記憶デバイス２１０にコマンドが送信される。コマンドの転送後は、必要とされる任意のさらなるコマンドのために、フローはステップ４１２に戻る。
【００６１】
登録商標ウィンドウズ（登録商標Ｗｉｎｄｏｗｓ）オペレーティングシステム内のバグにより、現在のところ、管理者特権を有するユーザでさえも、データアクセスコマンドおよびプライベートコマンドの両方を、図４Ａに示す物理実装を有するキーチェーン記憶デバイス１５０に送信することは妨げられる。このバグが修正されるまでの間は、管理者特権を有するユーザでさえも、図５Ａの「非管理」分岐を使用しなければならない。対応する、本発明のあまり好ましくない実施形態では、ＵＳＢ記憶デバイス２１０はプライベートコマンドインタフェース２１１を有さず、データアクセスコマンドインタフェース２１２のみを含む。このバグは、さらに、ＰＣ１１０がマルチＬＵＮサブインタフェース２０１とＨＩＤサブインタフェース２３０との両方をともに列挙することも妨げるため、ＨＩＤサブインタフェース２３０がアクティブである間はマルチＬＵＮサブインタフェース２０１を非アクティブにするという、上記の任意選択が使用されなければならない。
【００６２】
図５Ｂをここで参照する。図５Ａとの違いのみについて説明する。ステップ４０４で、ユーザがＰＣ１１０上の管理者権限を有していない場合、フローはステップ５０５に進む。ステップ５０５で、プライベートコマンドインタフェース２１３が初期化される。プライベートコマンド２１３の通信に使用される特別なファイルが実装に含まれる場合、このファイルが、この段階で開かれる。プライベートコマンド２１３のための動的セクタ割り当てが実装に含まれる場合、セクタのためのファイルが作成され、そして、固有の初期化シーケンスを新しいファイルに書き込んでからファイルポインタを巻き戻すことにより、そのファイルがプライベートコマンドインタフェース２１３と関連付けられる。ステップ５０６で、プライベートコマンドがコマンドファイルインタフェース２１３に送信される。ステップ４０８まで、図５Ａと同様にフローが継続される。プライベートコマンドが要求される場合、ステップ５０９で、特別なファイルインタフェース２１３を経由してこのコマンドが送信される。
【００６３】
上述のように、本発明の範囲は、さらに、データアクセスコマンドを受け入れるための（および特権ユーザからのプライベートコマンドも受け入れるための）仮想ＵＳＢデバイス１５１などの、仮想ＵＳＢデバイスと、オートランをサポートするための仮想ＵＳＢデバイス１５５などの、独立した仮想ＵＳＢデバイスとを有し、しかし、任意のユーザからのプライベートコマンドを受け入れるための仮想ＵＳＢデバイス１５３などの、仮想ＵＳＢデバイスは有さない、周辺記憶デバイスも含む。図４ＡからＵＳＢ  ＨＩＤデバイス２３０およびスイッチ２０２が削除された場合、図４Ａは、１つのそのようなデバイスの物理実装を示す。
【００６４】
本発明を、限定された数の実施形態に関して説明したが、本発明の多くの変形形態、修正形態、およびその他の応用例が作成されてもよいことが理解されるであろう。
【図面の簡単な説明】
【００６５】
【図１】本発明に関連する従来技術のシステムの単純化されたブロック図である。
【図２】本発明に関連する従来技術のＵＳＢキーチェーン記憶デバイスの単純化されたブロック図である。
【図３】本発明の好ましい実施形態によるＵＳＢキーチェーン記憶デバイスの単純化された一般的なブロック図である。
【図４Ａ】図３のデバイスの２つの物理実装の単純化されたブロック図である。
【図４Ｂ】図３のデバイスの２つの物理実装の単純化されたブロック図である。
【図５Ａ】図４Ａおよび図４Ｂに示す実装の好ましい動作モードを説明する概略フローチャートである。
【図５Ｂ】図４Ａおよび図４Ｂに示す実装の好ましい動作モードを説明する概略フローチャートである。
【符号の説明】
【００６６】
１００  システム
１１０  パーソナルコンピュータ（ＰＣ）
１１１  ＰＣ１１０の機能
１１２  オペレーティングシステム（ＯＳ）
１１３  ＵＳＢホストインタフェース
１２０  ＵＳＢキーチェーン記憶デバイス
１２１  デバイスの不揮発性メモリ
１２２  追加機能
１２３  マイクロコントローラ
１２４  ＵＳＢマスストレージクラス（ＭＳＣ）インタフェース
１３１  ＵＳＢマスストレージクライアント
１３２  アクセスコマンド
１３３  プライベートコマンド
１３４  オートラン
１３５  ＵＳＢインタフェース
１４１  ＵＳＢ接続
１５０  キーチェーン記憶デバイス
１５１、１５３、および１５５  仮想ＵＳＢデバイス
１５２  記憶データアクセス
１５４  プライベートコマンド
１５６  オートラン機能
１５７  ＵＳＢインタフェース
１５８  マイクロコントローラ
１５９  メモリ
２０１  マルチＬＵＮ記憶デバイスサブインタフェース
２１０  ＵＳＢ記憶デバイス
２１１  ＵＳＢ記憶クラスプライベートコマンドインタフェース
２１２  データアクセスコマンド
２２０  ＵＳＢ  ＣＤデバイス
２２１  オートラン機能
２３０  ＵＳＢヒューマンインタフェースデバイス（ＨＩＤ）
２３１  非特権モードプライベートコマンド
２１０'  ＵＳＢ記憶デバイス
２２０'  ＵＳＢ  ＣＤデバイス
【図１】
2006202339.tif 000003
【図２】
2006202339.tif 000004
【図３】
2006202339.tif 000005
【図４Ａ】
2006202339.tif 000006
【図４Ｂ】
2006202339.tif 000007
【図５Ａ】
2006202339.tif 000008
【図５Ｂ】
2006202339.tif 000009