(57)【特許請求の範囲】
【請求項１】
周辺装置と接続する接続手段と、その接続手段により接続された周辺装置の記憶ユニットを管理するためのＯＳ（オペレーティングシステム）とを備えた情報処理装置において実行されるドライブ構成設定プログラムであって、
前記周辺装置は、データを記憶可能なメディアを複数種類装着可能であって、前記複数種類のメディアのいずれかがそれぞれ割り当てられた複数の記憶ユニットと、前記複数の記憶ユニットのいずれかを指定したコマンドを受信するコマンド受信手段と、そのコマンド受信手段により受信したコマンドで指定される記憶ユニットに割り当てられたメディアとコマンド送信元装置との間のデータ通信を可能にするアクセス手段とを備えるものであって、
前記ドライブ構成設定プログラムは、
前記ＯＳから、前記周辺装置における記憶ユニットの総数の問い合わせを受けた場合、前記記憶ユニットの少なくとも１以上が対応付けられると共に前記周辺装置の記憶ユニットの総数よりも少ない数に設定された仮想ユニットの総数を、前記ＯＳに返却する返却ステップと、
前記返却ステップにより返却した前記仮想ユニットの総数に基づいて、前記ＯＳから前記仮想ユニットのいずれかを指定したコマンドが発行されると、そのコマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットをアクセス可能記憶ユニットとして登録するアクセス可能記憶ユニット登録ステップと、
前記ＯＳから発行されたコマンドにおける仮想ユニットの指定を、前記アクセス可能記憶ユニット登録ステップにより登録されたアクセス可能記憶ユニットの指定に変更して前記周辺装置に出力するコマンド変更ステップとを前記情報処理装置に実行させることを特徴とするドライブ構成設定プログラム。
【請求項２】
前記ＯＳからコマンドが発行されると、そのコマンドで指定された仮想ユニットに対応付けられるアクセス可能記憶ユニットが、前記アクセス可能記憶ユニット登録ステップにより既に登録されているかを判断する登録判断ステップと、
その登録判断ステップにより前記アクセス可能記憶ユニットが登録されていないと判断された場合、前記コマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットを検出する記憶ユニット検出ステップとを備え、
前記アクセス可能記憶ユニット登録ステップは、前記記憶ユニット検出ステップにより検出された記憶ユニットを、アクセス可能記憶ユニットとして登録することを特徴とする請求項１記載のドライブ構成設定プログラム。
【請求項３】
前記アクセス手段は前記コマンド受信手段により受信したコマンドで指定される記憶ユニットに割り当てられたメディアと前記コマンド送信元装置との間でデータ通信を可能にするものであって、
前記記憶ユニット検出ステップは、前記コマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットを、実際に前記情報処理装置との間でデータ通信可能な記憶ユニットとして検出するものであることを特徴とする請求項２記載のドライブ構成設定プログラム。
【請求項４】
前記周辺装置は、取り外し不可能に装着される内蔵メディアと、メディアが着脱可能に装着されるスロットとを備えるものであって、
前記記憶ユニット検出ステップは、前記記憶ユニットのうち、スロットに着脱可能に装着されるメディアが割り当てられた記憶ユニットを優先的に検出するものであることを特徴とする請求項３記載のドライブ構成設定プログラム。
【請求項５】
前記アクセス可能記憶ユニット登録ステップにより、前記内蔵メディアが割り当てられた記憶ユニットがアクセス可能記憶ユニットとして登録された後、所定時間以上経過することに基づいて、前記記憶ユニット検出ステップは、実際に前記情報処理装置との間でデータ通信可能な記憶ユニットを検出するものであり、
前記アクセス可能記憶ユニット登録ステップは、前記記憶ユニット検出ステップにより、スロットに装着中のメディアが割り当てられた記憶ユニットが検出された場合、その検出された記憶ユニットを、アクセス可能記憶ユニットとして登録することを特徴とする請求項４記載のドライブ構成設定プログラム。
【請求項６】
前記アクセス可能記憶ユニットとして登録された記憶ユニットに割り当てられたメディアが前記スロットから取り外されると、その記憶ユニットを前記アクセス可能記憶ユニットとしての登録から解除する解除ステップを備えることを特徴とする請求項４または５に記載のドライブ構成設定プログラム。
【請求項７】
前記情報処理装置は、ユーザが所望する仮想ユニットの数を入力するための操作手段を備え、
前記ＯＳから前記周辺装置における記憶ユニットの総数の問い合わせを受けた場合、前記操作手段により入力された数を、前記問い合わせに対する応答として出力するユニット数応答ステップとを備えることを特徴とする請求項１から６のいずれかに記載のドライブ構成設定プログラム。
【請求項８】
前記ＯＳは、前記仮想ユニットを表示する仮想ユニット表示手段として前記情報処理装置を機能させるものであり、
前記ＯＳは、前記仮想ユニット表示手段により表示された仮想ユニットのいずれかがユーザにより指定されると、その仮想ユニットを指定したコマンドを発行するものであることを特徴とする請求項１から７のいずれかに記載のドライブ構成設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はドライブ構成設定プログラムに関し、特に、周辺装置側における特別な変更を要さずに、情報処理装置に接続された周辺装置がユーザにとって認識し易く、ユーザの使い勝手を良好にすることができるドライブ構成設定プログラムを提供することに関するものである。
【背景技術】
【０００２】
近年、フラッシュメモリ等を搭載したカード型の記憶メディア（以下単に「メディア」という）が普及している。この種のメディアとしては、例えばコンパクトフラッシュ（登録商標。以下同様。以下「ＣＦ」という。）、スマートメディア（登録商標。以下同様。以下「ＳＭ」という。）、メモリースティック（登録商標。以下同様。以下「ＭＳ」という。）、ＳＤメモリーカード（登録商標。以下同様。以下「ＳＤ」という。）、マイクロドライブ（登録商標。以下同様。）、マルチメディアカード（登録商標。以下同様。）、ＸＤピクチャカード（登録商標。以下同様。）、メモリースティックＤＵＯ、ミニＳＤ（登録商標。以下同様。）など、様々な種類のものがある。このようなメディアは、駆動装置が必要ないこと等の利点から、消費電力や携帯性が重視されるデジタルカメラ、ノートＰＣ、携帯電話などを中心に利用されている。
【０００３】
そして、ＰＣ等からこれらのメディアに対してデータのリード／ライトを行うための周辺装置であるメモリカードリーダ／ライタも種々のものが知られており、メディアを装着するスロットを一つ備えたシングルスロットタイプ、複数のスロットを備えて複数のメディアに対するデータのリード／ライトが可能なマルチスロットタイプ、更には、スロットに加えて内部にフラッシュメモリを備えたフラッシュメモリ内蔵タイプなどがある。
【０００４】
図１６は、従来のマルチスロットタイプの一例であるマルチリーダ／ライタ２００の斜視図である。図１６（ａ）に示すように、マルチリーダ／ライタ２００は、その前面に、ＣＦ挿入用の第１スロット２１１と、ＳＭ挿入用の第２スロット２１２と、ＭＳ挿入用の第３スロット２１３と、ＳＤ挿入用の第４スロット２１４とを備えている。そして背面には、図１６（ｂ）に示すように、ＵＳＢケーブルを接続するためのＵＳＢ端子が設けられている。
【０００５】
一方、こうしたマルチリーダ／ライタ２００を例えばＰＣに接続して、ＰＣからそのメモリカードリーダ／ライタが備えるスロットにアクセス（換言すれば、そのスロットに装着されるメディアにアクセス）するためには、そのアクセスするためのソフトウェア（いわゆるドライバソフト）をＰＣが備えている必要があるが、ＰＣが備えるＯＳ（Ｏｐｅｒａｔｉｎｇ
Ｓｙｓｔｅｍ）の種類によって、アクセス可能なスロットの数の制限を受ける。
【０００６】
例えばＷｉｎｄｏｗｓ９８ＳＥ（Ｗｉｎｄｏｗｓは登録商標。以下同様。）やＷｉｎｄｏｗｓ２０００などの比較的古いバージョンのＯＳ（以下「下位ＯＳ」という）では、シングルスロットタイプのメモリカードリーダ／ライタに対応可能なドライバソフトのみ標準でインストールされているのに対し、例えばＷｉｎｄｏｗｓＭｅやＷｉｎｄｏｗｓＸＰなどのＯＳ（以下「上位ＯＳ」という）では、シングルスロットタイプに加え、マルチスロットタイプにも対応可能なドライバソフトが標準でインストールされている。
【０００７】
そのため、下位ＯＳを備えたＰＣにマルチリーダ／ライタ２００を接続しても、下位ＯＳにインストールされたドライバソフトでは、複数のスロットを同時に認識することができないので、各スロットにアクセスするために、２つのスロット、及び各スロット相互間における優先度を設定する優先度選択スイッチを備え、この優先度選択スイッチによって選択されたいずれか一方のスロットにのみアクセス可能となるよう構成されたマルチリーダ／ライタが知られている。
【０００８】
このマルチリーダ／ライタは、ＰＣのＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ
Ｂｕｓ）端子に接続されると、ＰＣのＯＳが備えるＰＬＵＧ ＡＮＤ ＰＬＡＹ機能によって必要な設定が自動的に行われる。このとき、マルチリーダ／ライタ内のファームウェアは、優先度選択スイッチの設定に基づいて、ＰＣのＯＳに対してスロットの優先順位を報知する。
【０００９】
このとき、ＰＣに下位ＯＳがインストールされている場合は、シングルスロットタイプのメモリカードリーダ／ライタ（以下「シングルスロットリーダ／ライタ」という）に対応するドライバソフトが標準でインストールされている。そのため、その場合は、優先度選択スイッチにおいて優先度が高く設定されているスロットのみが認識され、そのスロットに装着されているメディアに対してのみ、ＰＣからリード／ライトが可能となる。
【００１０】
一方、ＰＣに上位ＯＳがインストールされている場合は、マルチリーダ／ライタに対応するドライバソフトが標準でインストールされている。このドライバソフトは、複数のスロットに対してそれぞれドライブの割り当てを行い、各スロットに装着されている各メディアに対してそれぞれ個別（独立）にリード／ライトを可能とするためのドライバソフトであり、これが標準でインストールされている上位ＯＳの場合は、優先度選択スイッチにより設定した優先順位に従い、複数のスロットに各々ドライブの割り当てを行う。
【００１１】
例えば、ＳＭ用のスロットとＣＦ用のスロットとがあり、優先度選択スイッチにおいてＳＭ用のスロットを優先とすると、ＯＳにおいて、ＡドライブがＦＤＤ（フロッピー（登録商標）ディスクドライブ）に、ＣドライブがＨＤＤ（ハードディスクドライブ）にそれぞれ既に割り当てられている場合には、ＳＭ用のスロットにＤドライブが割り当てられ、ＣＦ用のスロットにＥドライブが割り当てられる。逆に、優先度選択スイッチにおいてＣＦ用のスロットを優先とすると、そのＣＦ用のスロットにＤドライブが割り当てられ、ＳＭ用のスロットにＥドライブが割り当てられる。
【００１２】
そして、下位ＯＳの場合、優先度選択スイッチを切り替えてからＰＬＵＧ
ＡＮＤ ＰＬＡＹ機能を再度動作させることにより、ドライブ割り当てを変更することができる。ここで、ＰＬＵＧ ＡＮＤ ＰＬＡＹ機能を再度動作させるとは、具体的にはＰＣのＯＳの再起動又はＵＳＢケーブルをＰＣのＵＳＢ端子から一旦抜き取った後、再度ＰＣのＵＳＢ端子に装着して装着するという再度の挿抜を意味する。
【００１３】
また、上位ＯＳの場合も、優先度選択スイッチを切り替えてからＰＬＵＧ
ＡＮＤ ＰＬＡＹ機能を再度動作させることにより、各スロットに対するドライブ割り当て（ドライブレター）を変更することができる。
【００１４】
尚、上記のドライバソフト（マルチリーダ／ライタに対応）は、複数のスロットに加えてフラッシュメモリが内蔵されたマルチリーダ／ライタ、更には、シングルスロットタイプではあるものの内部にフラッシュメモリが内蔵されたメモリカードリーダ／ライタ、などを使用する際も、各スロット及び内蔵フラッシュメモリに対してそれぞれドライブを割り当て、各スロットに装着されている各メディア及び内蔵フラッシュメモリに対してそれぞれ個別（独立）にリード／ライトを可能とするためるために必要となるものである。
【００１５】
そのため、以下の説明では、上記のように内蔵フラッシュメモリを備えたものを含む、マルチリーダ／ライタに対応したドライバソフトが必要なメモリカードリーダ／ライタを総称して「マルチリーダ／ライタ」ともいうこととし、また、そのドライバソフトを「マルチ対応ドライバ」という。
【００１６】
昨今、上述した多種多様のメモリ（メディア）が製品化されており、これらのメディアをアダプタ無しで直接スロットに装着してデータを読み書きできるマルチリーダ／ライタを製品化しようとすると、例えば下位ＯＳに対応するために、優先度選択スイッチも更に多段切り替え可能なものが必要となり、装置構成が非常に複雑になる。
【００１７】
また、上位ＯＳを備えたＰＣに接続して使用する場合は、全てのスロットに対して個々にドライブの割り当てが行われる。そして、優先度選択スイッチを備えた上記マルチスロットリーダ／ライタを含め、従来から知られている一般的なマルチリーダ／ライタでは、上記のように各スロットそれぞれにドライブが割り当てられることに起因して、種々の問題が生じる。
【００１８】
具体的には、例えばＣＦ用、ＳＭ用、ＭＳ用、ＳＤ用の各スロット、及び内蔵フラッシュメモリを備えたマルチリーダ／ライタと、上位ＯＳを備えたＰＣとをＵＳＢ接続すると、ＰＣのＯＳにおいて、例えば、ＡドライブがＦＤＤに、ＣドライブがＨＤＤに、ＤドライブがＣＤＤ（ＣＤ−ＲＯＭ用ドライブ）に、Ｅドライブが内蔵フラッシュメモリに、ＦドライブがＣＦ用のスロットに、ＧドライブがＳＭ用のスロットに、ＨドライブがＭＳ用のスロットに、ＩドライブがＳＤ用のスロットに、それぞれ割り当てられる。
【００１９】
図１７は、従来のマルチリーダ／ライタがＵＳＢ接続されたＰＣに表示される、ドライブ構成を表示する画面の一例を示す図である。マルチリーダ／ライタの内蔵フラッシュメモリ及び各スロットに対応した各ドライブＥ，Ｆ，Ｇ，Ｈ，Ｉは、一般に、ＰＣでは全て個別のリムーバブルディスクとして認識される。そして、ドライブ構成を表示する画面（Ｗｉｎｄｏｗｓでは「マイコンピュータ」）で全て「リムーバブルディスク」として表示される。
【００２０】
これにより、以下の（１）〜（４）のような問題が生じてユーザの使い勝手を悪化させるおそれがある。
（１）多数のリムーバブルディスクがディスプレイ上に表示されると、スロットにメディアを装着したとき、今入れたメディアがどのドライブなのか判らず対応に苦慮する。
（２）例えば企業内における規則等でネットワークドライブのアサインを多数要求されている場合、リムーバブルディスク用のドライブレター（上記例ではＥ，Ｆ，Ｇ，Ｈ，Ｉ）を確保するのが困難な場合がある。
（３）ＨＤＤを多数搭載している場合、或いは多数のパーティションを切って使用している場合などは、それだけでも既に多くのドライブレターが割り振られるため、それに加えて更にリムーバブルディスク用のドライブレターを多数確保するのは困難となる場合がある。Ｗｉｎｄｏｗｓでは、ＡからＺまでの２６ドライブしかドライブレターを割り振ることができないためである。
（４）「マイコンピュータ」内にリムーバブルディスク用のドライブが多数表示されること自体、邪魔に感じられる場合がある。
【００２１】
そして、例えば、上記例示した８種類のメディア及びＰＣカードをアダプタ無しで装着可能なスロットを備えると共にフラッシュメモリも内蔵したマルチリーダ／ライタ（即ち合計１０種類のメディアに対するデータ読み書きが可能）の場合、ＰＣでは８つの独立したリムーバブルディスクが設定（表示）されることになり、メディアの種類が多いほど上記問題は顕著となる。なお、合計１０種類のメディアに対してＰＣで設定されるリムーバブルディスクが８つになるのは、ＣＦとマイクロドライブ、及び、ＳＤとマルチメディアカードは、夫々互換性のある規格であって共通のスロットで対応できるからである。
【００２２】
そこで、このような問題点を解決するための１つの方法として、例えば使用頻度が高いメディアについてはＰＣから独立ドライブとして認識させ、使用頻度の低いメディアについては例えば１つのドライブレターを共有させる（或いはＰＣから認識すらさせない）ように構成されたマルチリーダ／ライタとパーソナルコンピュータ（以下、ＰＣという）とからなる情報処理システムが提案されている（例えば、特許文献１参照）。
【００２３】
図１８は、特許文献１に記載の発明が適用されたマルチリーダ／ライタが接続されたＰＣにおいて表示される、ドライブ構成を表示する画面の一例を示す図である。図１８に示すように、例えば、ＣＦとＳＤとで１つのドライブレター（Ｆ）を共有させ、ＳＭとＭＳとで１つのドライブレター（Ｇ）を供給させる。
【００２４】
さらに、メディアの種類に対するドライブレターの割り当てを、ユーザの好みに応じて任意に設定するためのアプリケーションソフトをＰＣに設け、一方、マルチリーダ／ライタは、ＰＣにおいてされた設定を読み込み、その設定に従って動作する。このようにすれば、ユーザは、例えば、使用頻度の低いメディアを１つのドライブにまとめてドライブレターを節約することにより、「マイコンピュータ」の表示をすっきりさせたり、頻繁に使うメディアについては独立して１つのドライブレターを割り当てるようにするといったことが可能になり、ユーザの使い勝手の良好な情報処理システムの提供が可能となる。
【特許文献１】特開２００５−２１６１４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、上述した情報処理システムでは、ＰＣにおいて設定されたドライブレターの割り当てに従って動作するために、マルチリーダ／ライタ側のハードウェアまたはファームウェアに変更が必要である。その結果、ハードウェアやファームウェアの変更はソフトウェアの変更に比べて困難であるため製品のコストが高くなるという問題点、また、既に販売済みであり現在ユーザにより使用中のマルチリーダ／ライタには適用できないという問題点があった。
【００２６】
本発明は上記課題に鑑みなされたものであり、周辺装置側における特別な変更を要さずに、情報処理装置に接続された周辺装置がユーザにとって認識し易く、ユーザの使い勝手を良好にすることができるドライブ構成設定プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
請求項１記載のドライブ構成設定プログラムは、周辺装置と接続する接続手段と、その接続手段により接続された周辺装置の記憶ユニットを管理するためのＯＳ（オペレーティングシステム）とを備えた情報処理装置において実行されるプログラムであって、前記周辺装置は、データを記憶可能なメディアを複数種類装着可能であって、前記複数種類のメディアのいずれかがそれぞれ割り当てられた複数の記憶ユニットと、前記複数の記憶ユニットのいずれかを指定したコマンドを受信するコマンド受信手段と、そのコマンド受信手段により受信したコマンドで指定される記憶ユニットに割り当てられたメディアとコマンド送信元装置との間のデータ通信を可能にするアクセス手段とを備えるものであって、前記ドライブ構成設定プログラムは、前記ＯＳから、前記周辺装置における記憶ユニットの総数の問い合わせを受けた場合、前記記憶ユニットの少なくとも１以上が対応付けられると共に前記周辺装置の記憶ユニットの総数よりも少ない数に設定された仮想ユニットの総数を、前記ＯＳに返却する返却ステップと、前記返却ステップにより返却した前記仮想ユニットの総数に基づいて、前記ＯＳから前記仮想ユニットのいずれかを指定したコマンドが発行されると、そのコマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットをアクセス可能記憶ユニットとして登録するアクセス可能記憶ユニット登録ステップと、前記ＯＳから発行されたコマンドにおける仮想ユニットの指定を、前記アクセス可能記憶ユニット登録ステップにより登録されたアクセス可能記憶ユニットの指定に変更して前記周辺装置に出力するコマンド変更ステップとを前記情報処理装置に実行させる。
【００２８】
請求項２記載のドライブ構成設定プログラムは、請求項１記載のドライブ構成設定プログラムにおいて、前記ＯＳからコマンドが発行されると、そのコマンドで指定された仮想ユニットに対応付けられるアクセス可能記憶ユニットが、前記アクセス可能記憶ユニット登録ステップにより既に登録されているかを判断する登録判断ステップと、その登録判断ステップにより前記アクセス可能記憶ユニットが登録されていないと判断された場合、前記コマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットを検出する記憶ユニット検出ステップとを備え、前記アクセス可能記憶ユニット登録ステップは、前記記憶ユニット検出ステップにより検出された記憶ユニットを、アクセス可能記憶ユニットとして登録することを特徴とする。
【００２９】
請求項３記載のドライブ構成設定プログラムは、請求項２記載のドライブ構成設定プログラムにおいて、前記アクセス手段は前記コマンド受信手段により受信したコマンドで指定される記憶ユニットに割り当てられたメディアと前記コマンド送信元装置との間でデータ通信を可能にするものであって、前記記憶ユニット検出ステップは、前記コマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、割り当てられたメディアが前記周辺装置に装着中である記憶ユニットを、実際に前記情報処理装置との間でデータ通信可能な記憶ユニットとして検出するものである。
【００３０】
請求項４記載のドライブ構成設定プログラムは、請求項３記載のドライブ構成設定プログラムにおいて、前記周辺装置は、取り外し不可能に装着される内蔵メディアと、メディアが着脱可能に装着されるスロットとを備えるものであって、前記記憶ユニット検出ステップは、前記記憶ユニットのうち、スロットに着脱可能に装着されるメディアが割り当てられた記憶ユニットを優先的に検出するものである。
【００３１】
請求項５記載のドライブ構成設定プログラムは、請求項４記載のドライブ構成設定プログラムにおいて、前記アクセス可能記憶ユニット登録ステップにより、前記内蔵メディアが割り当てられた記憶ユニットがアクセス可能記憶ユニットとして登録された後、所定時間以上経過することに基づいて、前記記憶ユニット検出ステップは、実際に前記情報処理装置との間でデータ通信可能な記憶ユニットを検出するものであり、前記アクセス可能記憶ユニット登録ステップは、前記記憶ユニット検出ステップにより、スロットに装着中のメディアが割り当てられた記憶ユニットが検出された場合、その検出された記憶ユニットを、アクセス可能記憶ユニットとして登録することを特徴とする。
【００３２】
請求項６記載のドライブ構成設定プログラムは、請求項４または５に記載のドライブ構成設定プログラムにおいて、前記アクセス可能記憶ユニットとして登録された記憶ユニットに割り当てられたメディアが前記スロットから取り外されると、その記憶ユニットを前記アクセス可能記憶ユニットとしての登録から解除する解除ステップを備えることを特徴とする。
【００３３】
請求項７記載のドライブ構成設定プログラムは、請求項１から６のいずれかに記載のドライブ構成設定プログラムにおいて、前記情報処理装置は、ユーザが所望する仮想ユニットの数を入力するための操作手段を備え、前記ＯＳから前記周辺装置における記憶ユニットの総数の問い合わせを受けた場合、前記操作手段により入力された数を、前記問い合わせに対する応答として出力するユニット数応答ステップとを備える。
【００３４】
請求項８記載のドライブ構成設定プログラムは、請求項１から７のいずれかに記載のドライブ構成設定プログラムにおいて、前記ＯＳは、前記仮想ユニットを表示する仮想ユニット表示手段として前記情報処理装置を機能させるものであり、前記ＯＳは、前記仮想ユニット表示手段により表示された仮想ユニットのいずれかがユーザにより指定されると、その仮想ユニットを指定したコマンドを発行するものである。
【発明の効果】
【００３５】
請求項１記載のドライブ構成プログラムによれば、ＯＳにより、仮想ユニットのいずれかを指定したコマンドが発行されると、情報処理装置は、アクセス可能記憶ユニット登録ステップにより、そのコマンドで指定された仮想ユニットに対応付けられる記憶ユニットのうち、実際に情報処理装置との間でデータ通信が可能な記憶ユニットをアクセス可能記憶ユニットとして登録し、コマンド変更ステップにより、コマンドにおける仮想ユニットの指定を、アクセス可能記憶ユニットの指定に変更して周辺装置に出力する。一方、このコマンドを受信した周辺装置では、コマンドにおいて指定された記憶ユニットと情報処理装置との間のデータ通信を可能とする。よって、情報処理装置を操作するユーザは、情報処理装置に接続された周辺装置を、実際の記憶ユニットの数よりも少ない数に設定された仮想ユニットとして認識することができ、周辺装置の認識が容易であるという効果がある。また、仮想ユニットのそれぞれにドライブレターを付与する場合であっても、周辺装置の記憶ユニットのそれぞれにドライブレターを付与する場合に比較して、ドライブレターの使用数を節約することができるという効果がある。
【００３６】
さらに、これらの処理がドライブ構成プログラムにより情報処理装置で実行されるので、周辺装置側の変更が不要である。よって、ユーザから見ると、情報処理装置にドライブ構成プログラムをインストールするだけで、手持ちの周辺装置をそのまま使用することができるという効果がある。
【００３７】
請求項２記載のドライブ構成設定プログラムによれば、請求項１記載のドライブ構成設定プログラムの奏する効果に加え、コマンドで指定された仮想ユニットに対応付けられるアクセス可能記憶ユニットが登録されていない場合、情報処理装置は、実際の情報処理装置との間でデータ通信可能な記憶ユニットを検出し、アクセス可能記憶ユニットとして登録するので、データ通信可能な記憶ユニットが存在すれば、確実にアクセス可能記憶ユニットとして登録されるという効果がある。
【００３８】
請求項３記載のドライブ構成設定プログラムによれば、請求項２記載のドライブ構成設定プログラムの奏する効果に加え、割り当てられたメディアが周辺装置において装着中である記憶ユニットが実際に情報処理装置との間でデータ通信可能な記憶ユニットとして検出されるので、実際に装着中のメディアが割り当て有られた記憶ユニットと情報処理装置との間のデータ通信が可能とされるという効果がある。
【００３９】
請求項４記載のドライブ構成設定プログラムによれば、請求項３記載のドライブ構成設定プログラムの奏する効果に加え、記憶ユニット検出ステップは、記憶ユニットのうち、スロットに着脱可能に装着されるメディアが割り当てられた記憶ユニットを優先的に検出するので、着脱可能に装着されるメディアが割り当てられた記憶ユニットと情報処理装置との間のデータ通信も、確実に可能とすることができるという効果がある。すなわち、内蔵メディアは、常に装着中の状態であるため、内蔵メディアが割り当てられた記憶ユニットを優先的に検出することとすると、常に、その記憶ユニットがアクセス可能記憶ユニットとして登録されてしまい、他のメディアが割り当てられた記憶ユニットが、アクセス可能記憶ユニットとして登録される場合がなくなってしまうのである。
【００４０】
請求項５記載のドライブ構成設定プログラムによれば、請求項４記載のドライブ構成設定プログラムの奏する効果に加え、内蔵メディアが割り当てられた記憶ユニットがアクセス可能記憶ユニットとして登録された後、所定時間以上経過することに基づいて、記憶ユニット検出ステップは、情報処理装置との間でデータ通信可能な記憶ユニットを検出するものであるので、スロットに新たにメディアが装着された場合には、その新たに装着されたメディアが割り当てられた記憶ユニットをアクセス可能記憶ユニットとして登録し、情報処理装置との間でデータ通信可能とすることができるという効果がある。
【００４１】
請求項６記載のドライブ構成設定プログラムによれば、請求項４または５に記載のドライブ構成設定プログラムの奏する効果に加え、アクセス可能記憶ユニットとして登録された記憶ユニットに割り当てられたメディアがスロットから取り外されると、その記憶ユニットがアクセス可能ユニットとしての登録から解除されるので、メディアが取り外されたにも拘わらず、その記憶ユニットがアクセス可能記憶ユニットとして継続して登録されることを抑制し、実際にデータ通信が可能な記憶ユニットがアクセス可能記憶ユニットとして登録されるという効果がある。
【００４２】
請求項７記載のドライブ構成設定プログラムによれば、請求項１から６のいずれかに記載のドライブ構成設定プログラムの奏する効果に加え、周辺装置の記憶ユニットの数に拘わらず、ユーザの好みに応じた数の仮想ユニットを設定することができるという効果がある。
【００４３】
請求項８記載のドライブ構成設定プログラムによれば、請求項１から７のいずれかに記載のドライブ構成設定プログラムの奏する効果に加え、前記ＯＳは、仮想ユニットを表示し、その表示された仮想ユニットのいずれかがユーザにより指定されると、その仮想ユニットを指定したコマンドを発行するものであるので、情報処理装置のユーザは、その情報処理装置に接続された周辺装置を、１以上の仮想ユニットとして視覚的に認識することができると共に、仮想ユニットの数を少なく設定することにより、その認識がより容易となるという効果がある。また、少なく設定された仮想ユニットのいずれかを指定すればよいので、周辺装置との間のデータ通信のための操作がユーザにとってより容易なものとなるという効果がある。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の好ましい実施例について、添付図面を参照して説明する。図１は、本発明のドライブ構成設定プログラムの第１実施例であるフィルタドライバを実行するＰＣ３０と、ＰＣ３０との間でデータ送受信可能に接続されるマルチリーダ／ライタ１（マルチスロットタイプのメモリカードリーダ／ライタ）とを模式的に示す図である。図１に示すように、周辺装置としてのマルチリーダ／ライタ１は、第１外部メモリ（本実施例ではＣＦ）２１装着用の第１スロット１１と、第２外部メモリ（本実施例ではＳＭ）２２装着用の第２スロット１２と、第３外部メモリ（本実施例ではＭＳ）２３装着用の第３スロット１３と、第４外部メモリ（本実施例ではＳＤ）２４装着用の第４スロット１４とを備えている。
【００４５】
このように、マルチリーダ／ライタ１は、４種類の外部メモリ２１，２２，２３，２４を装着可能に４つのスロット１１，１２，１３，１４を備えるため、物理的には１台の装置でありながら、各々互いに異なる種類のメモリとの間でデータの読み込み又は書き込みを行う４つの論理ユニットとして機能する。なお、本明細書では、この論理ユニットを、実論理ユニットＰＵと称する。マルチリーダ／ライタ１では、これら４つの実論理ユニットＰＵの各々を識別するために、各々の実論理ユニットＰＵに、論理ユニット番号を付与する。本明細書では、実論理ユニットＰＵの各々に付与される論理ユニット番号を、実論理ユニット番号（Ｐ−ＬＵＮ）と称する。
【００４６】
本実施例では、外部メモリ２１との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ０が付与される。そして、外部メモリ２２との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ１が付与される。そして、外部メモリ２３との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ２が付与される。そして、外部メモリ２４との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ３が付与される。
【００４７】
そして、ＰＣ３０から、例えば、Ｐ−ＬＵＮ０を記述したＳＣＳＩコマンド、すなわち実論理ユニット（Ｐ−ＬＵＮ０）を指定したコマンドを送信することにより、その指定した実論理ユニット（Ｐ−ＬＵＮ０）とＰＣ３０との間でデータ通信が可能となるように処理が実行される。このようにして、ＰＣ３０からマルチリーダ／ライタ１の各スロット１１，１２，１３，１４に装着された各外部メモリ２１，２２，２３，２４にアクセス可能な情報処理システムが構築されている。
【００４８】
図２を参照して、情報処理装置としてのＰＣ３０について説明する。図２は、ＰＣ３０の電気的構成を示すブロック図である。図２に示すように、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ハードディスクドライブ（ＨＤＤ）３４、フレキシブルディスクドライブ（ＦＤＤ）３５、ＣＤ−ＲＯＭドライブ３６、キーボード３７、マウス３８、ディスプレイ３９等を備え、これらがバス３０ａを介して相互に接続された一般的な構成となっている。さらに、ＵＳＢＩ／Ｆ４０を備え、このＵＳＢＩ／Ｆ４０及びＵＳＢケーブル２６を介してマルチリーダ／ライタ１に接続されている。
【００４９】
ＣＰＵ３１は、ＲＯＭ３２内の各種プログラム、ＨＤＤ３４にインストールされたＯＳや各種アプリケーションソフトなどに従って各種処理を実行するが、本実施形態では特に、ＨＤＤ３４にインストールされているＯＳにより、ＯＳカーネル６０（図６参照）としての機能とファイルシステム６１（図６参照）としての機能が実現され、さらに、ＨＤＤ３４にインストールされているアプリケーションソフトであるフィルタドライバ６２（図６参照）により図８にフローチャートで示す処理を実行するものである。
【００５０】
ＲＡＭ３３は、Ｐ−ＬＵＮ最大値メモリ３３ａと、ＯＳ種類メモリ３３ｂとを備えている。Ｐ−ＬＵＮ最大値メモリ３３ａは、マルチリーダ／ライタ１から取得したＰ−ＬＵＮ（実論理ユニット番号）の最大値（ＭＡＸ−Ｐ−ＬＵＮ）が格納されるメモリである。ＯＳ種類メモリ３３ｂは、ＯＳメモリ３４ａに格納されたＯＳが、上位ＯＳであるか下位ＯＳであるかを示す情報を格納するメモリである。ここで、上位ＯＳとは、ＵＳＢ接続された１台の周辺装置（例えば、マルチリーダ／ライタ１）を複数の論理ユニットとして同時に認識し、各々の論理ユニットに独立にアクセスすることが可能なドライバソフトが標準でインストールされているＯＳのことをいう。一方、下位ＯＳとは、ＵＳＢ接続された１台の周辺装置については１つの論理ユニットのみ認識可能なドライバソフトが標準でインストールされているＯＳである。
【００５１】
ＨＤＤ３４は、ＯＳメモリ３４ａと、フィルタドライバメモリ３４ｂと、ＬＵＮレイアウトツールメモリ３４ｃと、レジストリ３４ｄとを備えている。本第１実施例では、ＯＳメモリ３４ａに上位ＯＳが格納されているものとして説明する。なお、ＯＳメモリ３４ａに下位ＯＳが格納されている場合については、第２実施例において説明する。
【００５２】
フィルタドライバメモリ３４ｂは、フィルタドライバ６２（図５参照）が格納されるメモリである。ここで、本実施例のフィルタドライバ６２は、ＯＳの下層において動作するものであり、ＯＳとマルチリーダ／ライタ１との間において送受信されるデータは、全てフィルタドライバ６２を通過する。
【００５３】
ＬＵＮレイアウトツールメモリ３４ｃは、ＬＵＮレイアウトツール６４（図６参照）が格納されるメモリである。ＬＵＮレイアウトツール６４は、マルチリーダ／ライタ１をどのようなドライブ（論理ユニット）構成で認識するかを示す「ＬＵＮレイアウト」を任意に設定するためのアプリケーションである。ＬＵＮレイアウトについては後述する。
【００５４】
レジストリ３４ｄは、ＯＳやアプリケーションの設定情報を一元管理するためのファイルである。レジストリ３４ｄには、ＬＵＮレイアウトを管理するための情報であるＬＵＮマップ６３（図５参照）も記述される。なお、ＬＵＮマップ６３については後述する。ＬＵＮレイアウトツール６４により、ＬＵＮマップ６３が変更されると、レジストリ３４ｄに記述されたＬＵＮマップ６３も自動的に更新される。
【００５５】
図３は、マルチリーダ／ライタ１の電気的構成を示すブロック図である。図３に示すように、マルチリーダ／ライタ１は、その内部に、各構成部を制御するためのマイクロコンピュータ（以下「マイコン」という）２と、各スロット１１，１２，１３，１４にそれぞれ装着される各外部メモリ２１，２２，２３，２４に対するデータの入出力を制御するための入出力制御ＬＳＩ６と、ＵＳＢ規格に基づくデータ通信の制御用コントローラであるＵＳＢチップ８とを備え、これらがバス７を介して相互に接続されている。
【００５６】
マイコン２は、ＣＰＵ３と、ＲＯＭ４と、ＲＡＭ５とを備えた一般的な構成となっており、ＣＰＵ３は、ＲＯＭ４に格納された各種プログラムや各種データに従って各種処理を行う。このＲＯＭ４には、ＰＣ３０からの各種コマンド（ＵＳＢコマンドやＳＣＳＩコマンドなど）に対して応答するためのプログラムも格納されているが、これら各コマンドについては後述する。
【００５７】
第１スロット１１、第２スロット１２、第３スロット１３、及び第４スロット１４は、それぞれ、外部メモリ２１，２２，２３，２４が装着されると物理的にＯＮとなるメモリ検出スイッチ（図示略）を備えており、メモリ検出スイッチがＯＮとなると、その検出信号は、入出力制御ＬＳＩ６を介してＣＰＵ３に割り込みを行う。従って、第１スロット１１、第２スロット１２、第３スロット１３、第４スロット１４に外部メモリ２１，２２，２３，２４が装着されると、ＣＰＵ３はどのスロットに外部メモリが装着されたかを認識することができる。なお、本実施例のマルチリーダ／ライタ１は、ＰＣ３０からＵＳＢケーブル２６を介して供給される電源（バスパワー）によって動作するよう構成されている。
【００５８】
ＵＳＢケーブル２６によりマルチリーダ／ライタ１が接続されると、ＰＣ３０のＯＳがマルチリーダ／ライタ１を認識する。ＰＣ３０にインストールされているＯＳが上位ＯＳである場合、マルチリーダ／ライタ１の実論理ユニットＰＵを個別に認識することが可能であるので、従来のＰＣ３０であれば、例えば、マルチリーダ／ライタ１を、４つの論理ユニットとして認識していた。またＰＣ３０において、接続中の装置または論理ユニットをアイコンで一覧表示するドライブ構成画面（例えば、Ｗｉｎｄｏｗｓでは、「マイコンピュータ」の画面）では、例えば、接続された１台のマルチリーダ／ライタ１が、４つの論理ユニットとして表示されていた（図１７参照）。しかしながら、このように、マルチリーダ／ライタ１における実論理ユニットＰＵの全てを個別に認識させることとすると、実論理ユニットＰＵの数と等しい数のドライブレターが必要となり、ドライブレターの確保が困難となる場合が生じる。また、ドライブ構成画面に数多くの論理ユニットが表示されると、その画面自体がユーザにとって煩わしいものとなるおそれがある。
【００５９】
よって、本実施例では、マルチリーダ／ライタ１を、実論理ユニットＰＵの数よりも少ない数の論理ユニットとして、ユーザに認識させることとした。ＰＣ３０においてユーザに認識させる論理ユニットを、本明細書では、仮想論理ユニットＶＵと称する。また、各仮想論理ユニットＶＵには、互いを識別するための仮想論理ユニット番号（Ｖ−ＬＵＮ）が付与される。
【００６０】
図４を参照して、ＰＣ３０において設定される仮想論理ユニットＶＵについて説明する。図４（ａ）は、ＬＵＮレイアウト設定画面の一例を示す図である。ＬＵＮレイアウト設定画面は、仮想論理ユニットＶＵと実論理ユニットＰＵとの対応関係（以下、ＬＵＮレイアウトという）をユーザの操作に従って任意に設定するための画面である。
【００６１】
図４（ａ）に示すように、マルチリーダ／ライタ１の４つの実論理ユニット（Ｐ−ＬＵＮ０，Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）は、仮想論理ユニットＶＵのいずれかに対応付けられる。本実施例では、４つの実論理ユニット（Ｐ−ＬＵＮ０，Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）の全てが１つの仮想論理ユニット（Ｖ−ＬＵＮ０）に対応付けられているものとして説明する。
【００６２】
図４（ｂ）は、図４（ａ）に示すＬＵＮレイアウトに従って表示されるドライブ構成画面の一例を示す図である。このドライブ構成画面は、ＰＣ３０から、それぞれ独立にアクセス可能な装置または論理ユニットをアイコンで一覧表示する画面である。図４（ａ）を参照して説明したＬＵＮレイアウトでは、１つの仮想論理ユニット（Ｖ−ＬＵＮ０）に全ての実論理ユニット（Ｐ−ＬＵＮ０，Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）が対応付けられていた。よって、ディスプレイ３９にドライブ構成画面を表示させると、図４（ｂ）に例示するように、マルチリーダ／ライタ１は、リムーバブルディスクを示す１つのアイコン（ドライブレターＥが付されている）で表示される。このようにすれば、使用するドライブレターの数を節約することができると共に、マルチリーダ／ライタ１をユーザが認識しやすいように表示することができる。
【００６３】
図４（ａ）に戻り説明する。図４（ａ）に示すＬＵＮレイアウト設定画面は、ＬＵＮレイアウトツール６４を起動すると、ＰＣ３０のディスプレイ３９に表示される画面であり、現在設定されているＬＵＮレイアウトが表示される。
【００６４】
図４（ａ）に示すように、ＬＵＮレイアウト設定画面は、仮想論理ユニットＶＵと、その仮想論理ユニットＶＵに対応付けられた実論理ユニットＰＵが表示されると共に、設定ボタン５１、設定中止ボタン５２、前詰め確認ボタン５３、ヘルプボタン５４を表示する構成である。
【００６５】
ＬＵＮレイアウト設定画面においてユーザは、例えばマウス３８を操作して各実論理ユニットＰＵを示すアイコンをそれぞれドラッグ＆ドロップすることにより、各実論理ユニットＰＵを各仮想論理ユニットＶＵのいずれかに自由に移動させることができる。従って、ユーザの所望するレイアウトを自由に設定することができる。
【００６６】
そして、ユーザが好みに応じて各アイコンの配置を行ったときに、ユーザが設定ボタン５１をクリックすると、現在配置されているＬＵＮレイアウトが確定される。但し、一つのアイコンも配置されていない枠が前方に存在した場合に設定ボタン５１をクリックすると、自動的に各アイコンが前詰めされた状態に再配置された後、ＬＵＮレイアウトが確定される。設定ボタン５１をクリックしてＬＵＮレイアウトが確定すると、ＬＵＮレイアウトツール６４は、後述するＬＵＮマップ６３を書き換えるのである。
【００６７】
一方、ユーザが設定中止ボタン５２をクリックすると、どこまで設定準備が進んでいようとも、このＬＵＮレイアウトツール６４は強制的に終了される。また、ＬＵＮレイアウト設定画面において、一つのアイコンも配置されていない枠が前方（Ｖ−ＬＵＮ番号が小さい側）に存在した場合、前詰め確認ボタン５３をクリックすると、自動的に各アイコンが前詰めされ、前方に空白の枠が無くなる。なお、後方（ＬＵＮ番号が大きい側）に空白の枠があること（例えば図４（ａ）の場合は仮想論理ユニット（Ｖ−ＬＵＮ０）の枠の後方は全て空白である）については問題ない。また、ヘルプボタン５４をクリックすると、このＬＵＮレイアウトツール６４の使用方法などが表示される。
【００６８】
ＬＵＮレイアウトツールを起動すると、ＬＵＮレイアウト設定画面にはまず現在設定されているレイアウトが表示されるため、ユーザは、既に設定されているレイアウトを確認した上で、必要に応じてそのレイアウト内容を変更することができ、しかもアイコンをドラッグ＆ドロップするだけの簡単な操作によって視覚的に確認しながら設定を行うよう構成されているため、確実かつ効率的にＬＵＮレイアウトの設定を行うことができる。
【００６９】
図５は、レジストリ３４ｄ（図２参照）に記述されるＬＵＮマップ６３を模式的に示す図である。図５に示すようにＬＵＮマップ６３は、Ｖ−ＬＵＮと、Ｐ−ＬＵＮとの対応関係とを記述する。また、ＬＵＮマップ６３には、同一のＶ−ＬＵＮに対応付けられたＰ−ＬＵＮ間の優先順位が併せて記述される。この優先順位は、ＬＵＮレイアウト設定画面における表示位置が高い順に付された順位である。
【００７０】
図５に示すＬＵＮマップ６３において、対応するＰ−ＬＵＮがない場合、そのＶ−ＬＵＮに対応するＰ−ＬＵＮの欄は空欄とされる。ここで、少なくとも１つのＰ−ＬＵＮが対応付けられているＶ−ＬＵＮのうち、最大値を仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）と称する。仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）は、ＬＵＮマップ６３と共にレジストリ３４ｄ（図２参照）に記述される。なお、図５に示すＬＵＮマップ６３では、全てのＰ−ＬＵＮがＶ−ＬＵＮ０に対応付けられているので、仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）は、「０」である。
【００７１】
図６を参照して、上述したＰＣ３０とマルチリーダ／ライタ１との間の各種データのやりとりについて説明する。図６は、ＰＣ３０とマルチリーダ／ライタ１との間におけるデータ送受信を模式的に示す図である。図６に示すように、まず、ＯＳカーネル６０は、マルチリーダ／ライタ１の接続の有無を定期的にチェックする［１］。そして、ＵＳＢケーブル２６がＰＣ３０に装着されることでマルチリーダ／ライタ１とＰＣ３０が接続され、ＰＣ３０からマルチリーダ／ライタ１へバスパワーが供給されると、マルチリーダ／ライタ１は電源ＯＮとなってその動作を開始する［２］。
【００７２】
マルチリーダ／ライタ１は、動作開始時に、まず、初期化処理を実行する。この初期化処理は、マルチリーダ／ライタ１の起動時にＲＯＭ４内のプログラムに従ってＣＰＵ３が実行するものであり、起動後、必要なパラメータを、実働作用のＲＡＭ５にコピーする。なお、マルチリーダ／ライタ１における初期化処理が終了するまでは準備中であるので、ＰＣ３０からの定期チェックに対して応答しない。
【００７３】
そして、ＲＡＭ５へのコピーが行われ、動作準備が完了すると、ＰＣ３０からの定期チェックに対して準備ＯＫである旨を返答する［３］。これを受けたＰＣ３０では、ＯＳカーネル６０がマルチリーダ／ライタ１に対してクラス取得を行い［４］、マルチリーダ／ライタ１は「ストレージクラス」である旨を返答する［５］。これにより、ＰＣ３０は、マルチリーダ／ライタ１が大容量記憶装置デバイスであることを認識することになる。
【００７４】
次に、ＯＳカーネル６０がマルチリーダ／ライタ１に対して、ベンダー名、製品名、シリアル番号の取得を行い［６］、マルチリーダ／ライタ１は、ベンダー名と製品名とシリアル番号とを返答する［７］。
【００７５】
次に、ＯＳカーネル６０は、フィルタドライバ６２をロードする［８］。フィルタドライバ６２は、レジストリ３４ｄからＬＵＮマップ６３（図５参照）、仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）等の必要なパラメータをリードする［９］。
【００７６】
そして、ＯＳカーネル６０は、マルチリーダ／ライタ１に対してＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を発行し、マルチリーダ／ライタ１における論理ユニットの数を問い合わせる［１０］。この「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」コマンドは、ＯＳが認識すべき論理ユニットの総数を尋ねるコマンドであり、換言すれば、ＰＣ３０が備えるＯＳに、マルチ対応ドライバがインストールされている上位ＯＳであることを示すコマンドである。
【００７７】
フィルタドライバ６２は、このＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を受信すると、ＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理を実行する。ＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理については、図８を参照して後に詳述するため、ここでは簡単に説明する。まず、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を発行する［１１］。マルチリーダ／ライタ１は、このＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を受けると、ＧＥＴ＿ＭＡＸ＿ＬＵＮ応答処理を実行する。この処理は、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」の受信時にＲＯＭ４内のプログラムに従ってＣＰＵ３が実行するものであり、受信後、Ｐ−ＬＵＮの最大値（ＭＡＸ−Ｐ−ＬＵＮ）を返答する［１２］。ここでは、マルチリーダ／ライタ１においては、図１に示すようにＰ−ＬＵＮの最大値は「３」であるので、「３」を返答する。
【００７８】
フィルタドライバ６２は、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」に対する返答を受け取ると、その受け取った値をＰ−ＬＵＮ最大値メモリ３３ａ（図２参照）に格納する。これにより、Ｐ−ＬＵＮが「０」から「３」までである（すなわち、実論理ユニットＰＵが４つある）ことを認識できるので、次に、各実論理ユニットＰＵを順番に指定して、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行し、その返答を受信する［１３］。このＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」は、各実論理ユニット（ここではＰ−ＬＵＮ０，Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）について、ＳＣＳＩレベルでデバイスの種類を問い合わせるコマンドである。
【００７９】
マルチリーダ／ライタ１は、このＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を受信すると、Ｉｎｑｕｉｒｙコマンド応答処理を実行する。このＩｎｑｕｉｒｙコマンド応答処理は、Ｉｎｑｕｉｒｙコマンドの受信時にＲＯＭ４内のプログラムに従ってＣＰＵ３が実行するものであり、「ダイレクトアクセスデバイス」であること、「リムーバブル」であること、そして「製品名」及び「プロダクト名」など、デバイスの種類を示すデータを、各実論理ユニットＰＵについて返答する。
【００８０】
この返答を受けると、フィルタドライバ６２は、受信したデータをＲＡＭ３３に格納する。そして、レジストリ３４ｄから読み込んだ仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）をＯＳカーネル６０に返却する［１４］。ここで、仮想論理ユニット番号最大値（ＭＡＸ−Ｖ−ＬＵＮ）として、「０」を返却したものとして説明する。
【００８１】
次に、ＯＳカーネル６０は、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ（Ｖ−ＬＵＮ＝０）」を発行する［１５］。すなわち、ＯＳカーネル６０が認識する論理ユニット（仮想論理ユニット（Ｖ−ＬＵＮ０））について、デバイスの種類を問い合わせる。これに対し、フィルタドライバ６２はＩｎｑｕｉｒｙ情報を返却する［１６］。
【００８２】
本実施例では、フィルタドライバ６２は、フィルタドライバ６２自身のベンダーＩＤとプロダクト名、マルチリーダ／ライタ１から受信したＰ−ＬＵＮ最大値（ＭＡＸ−Ｐ−ＬＵＮ）、およびＯＳが上位ＯＳであることなどを記述したＩｎｑｕｉｒｙ情報を返却する。なお、本実施例において、フィルタドライバ６２からＯＳに返却されるＩｎｑｕｉｒｙ情報は、常に同一の情報である。
【００８３】
次に、ＯＳカーネル６０はファイルシステム６１に対してドライブレターを確定する［１７］。これにより仮想論理ユニット（Ｖ−ＬＵＮ０）についてのドライブレターが割り当てられる。ここでは、全ての実論理ユニットＰＵが１つの仮想論理ユニット（Ｖ−ＬＵＮ０）に対応付けられている。よって、マルチリーダ／ライタ１は、ドライブレターＥが付された１つの論理ユニットとして、ドライブ構成画面（図４（ｂ）参照）に表示され、ユーザに認識されることとなる。
【００８４】
次に、ドライブレターが割り当てられた仮想論理ユニット（Ｖ−ＬＵＮ０）を指定したＳＣＳＩコマンドがファイルシステム６１から発行される［１８］。ここでは、ファイルシステム６１からＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行されたものとして説明する。
【００８５】
フィルタドライバ６２は、ファイルシステム６１からのＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を受信すると、ＬＵＮマップ６３においてＶ−ＬＵＮ０に対応するＰ−ＬＵＮのそれぞれについて、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を順番に発行する。このＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」の発行の順序は、ＬＵＮマップ６３において、各Ｐ−ＬＵＮに付された優先順位に従う。そして、このコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」に対し、「Ｒｅａｄｙ」との応答が得られるまで、Ｖ−ＬＵＮ０に対応するＰ−ＬＵＮに順番に発行される。
【００８６】
図４（ｂ）にて図示したように、ＬＵＮマップ６３において、Ｖ−ＬＵＮ０に対応付けられたＰ−ＬＵＮは、「０」，「１」，「２」，「３」であり、優先順位もこの順番であるから、まずＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝０）」をマルチリーダ／ライタ１に発行する［１９］。このＳＣＳコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝０）」は、実論理ユニット（Ｐ−ＬＵＮ０）に対応するメモリ（本実施例では、第１外部メモリ（ＣＦ）２１）がスロット１１に装着中であるか否かを問い合わせるコマンドである。マルチリーダ／ライタ１は、第１外部メモリ２１がスロット１１に装着中である場合は、その旨を示すコマンド「Ｒｅａｄｙ」を返答するが、ここでは、第１外部メモリ２１がスロット１１に装着中でなく、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［２０］。
【００８７】
次に、フィルタドライバ６２は、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝１）」をマルチリーダ／ライタ１に発行する［２１］。これにより、実論理ユニット（Ｐ−ＬＵＮ１）に対応付けられたメモリ（本実施例では、第２外部メモリ（ＳＭ）２２）がスロット１２に装着中であるか否かを問い合わせる。ここでは、第２外部メモリ２２がスロット１２に装着中でなく、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［２２］。
【００８８】
次に、フィルタドライバ６２は、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝２）」をマルチリーダ／ライタ１に発行する［２３］。これにより、実論理ユニット（Ｐ−ＬＵＮ２）に対応付けられたメモリ（本実施例では、第３外部メモリ（ＭＳ）２３）がスロット１３に装着中であるか否かを問い合わせる。ここでは、第３外部メモリ２３がスロット１３に装着中でなく、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［２４］。
【００８９】
次に、フィルタドライバ６２は、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝３）」をマルチリーダ／ライタ１に発行する［２５］。これにより、実論理ユニット（Ｐ−ＬＵＮ３）に対応付けられたメモリ（本実施例では、第４外部メモリ（ＳＤ）２４）がスロット１４に装着中であるか否かを問い合わせる。ここでは、第４外部メモリ２４がスロット１４に装着中であるものとして、その旨を示すコマンド「Ｒｅａｄｙ」を返答したものとして説明する［２６］。これにより、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応する実論理ユニットＰＵのうち、仮想論理ユニット（Ｖ−ＬＵＮ０）の指定によりアクセス可能な実論理ユニットＰＵとして、実論理ユニット（Ｐ−ＬＵＮ３）を決定し、登録することができる。
【００９０】
なお、優先順位の高い実論理ユニットＰＵから順に問い合わせると共に、「Ｒｅａｄｙ」の返答がいずれかの実論理ユニットＰＵについて得られた場合、そこで問い合わせを終了するので、スロットに装着中の外部メモリが２以上あった場合であっても、ＬＵＮマップ６３（図５参照）において最も高い優先順位が付されている実論理ユニットＰＵが、アクセス可能な実論理ユニットＰＵとして登録される。
【００９１】
その後、ファイルシステム６１から、データが出力された場合［２７］、その出力データはフィルタドライバ６２により読み捨てられ、マルチリーダ／ライタ１には送信されない。また、フィルタドライバ６２からファイルシステム６１へは、データ通信がＮＧである旨を示すステータスが発行される［２８］。このステータスを受信すると、ファイルシステム６１は、センスデータを要求するＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」を発行する［２８ａ］。これに応じて、フィルタドライバ６２により、メモリ交換発生を示すセンスデータが発行される［２８ｂ］。
【００９２】
メモリ交換発生を示すセンスデータを受信したファイルシステム６１では、前回使用されたメモリ管理情報を破棄する。また、ファイルシステム６１は、再度、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を発行する［２９］。今度は、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応するアクセス可能実論理ユニットとして、実論理ユニット（Ｐ−ＬＵＮ３）が登録済みである。
【００９３】
よって、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を受信したフィルタドライバ６２は、受信したＳＣＳＩコマンドを、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｐ−ＬＵＮ３）」に変更する。すなわち、アクセス可能な実論理ユニットＰＵとして登録された実論理ユニット（Ｐ−ＬＵＮ３）を指定するコマンドに変更し、マルチリーダ／ライタ１に発行する［３０］。
【００９４】
これにより、ファイルシステム６１とマルチリーダ／ライタ１との間でデータの読み書きが行えるようになる。具体的には、ファイルシステム６１からのＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ」に対してマルチリーダ／ライタ１がデータ及びステータスを送信する、というやりとりになる［３１］，［３２］。
【００９５】
次に、このような処理を繰り返すうちに、実論理ユニット（Ｐ−ＬＵＮ３）に対応付けられたメモリ（ここでは、第４外部メモリ２４）がスロット１４から取り外された場合について説明する。
【００９６】
ファイルシステム６１からＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行されると［３３］、上述したように、そのＳＣＳＩコマンドは、フィルタドライバ６２により、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｐ−ＬＵＮ３）」に変更して発行される［３４］。
【００９７】
しかし、実論理ユニット（Ｐ−ＬＵＮ３）に対応付けられたメモリ２４はスロット１４から取り外されると、マルチリーダ／ライタ１は、データ通信がＮＧであった旨を示すステータス、およびスロット内にメモリが無い旨を示すステータスを発行する［３５］。このステータスを受信するとフィルタドライバ６２により、仮想論理ユニット（Ｖ−ＬＵＮ０）のアクセス可能論理ユニットとして登録されていた実論理ユニット（Ｐ−ＬＵＮ３）の登録が解除される。すなわち、仮想論理ユニット（Ｖ−ＬＵＮ０）を再び未登録状態に戻す。
【００９８】
また、フィルタドライバ６２からファイルシステム６１へは、データ通信がＮＧである旨を示すステータスが発行される［３６］。このステータスを受信すると、ファイルシステム６１は、センスデータを要求するコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」を発行する［３６ａ］。これに応じて、フィルタドライバ６２により、メモリ無しを示すセンスデータが発行される［３６ｂ］。
【００９９】
よって、次回以降にＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行されたときには、仮想論理ユニット（Ｖ−ＬＵＮ０）の指定によりアクセス可能な実論理ユニットＰＵは未登録の状態であるから、［１９］に戻り、アクセス可能な実論理ユニットＰＵを決定する。これにより、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応付けられた実論理ユニットＰＵのうち、次に新たに装着された外部メモリに対応する実論理ユニットＰＵが、新たなアクセス可能実論理ユニットとして登録される。
【０１００】
図７を参照して、ユーザにより、ＬＵＮレイアウトの変更操作が行われる場合について説明する。図７は、ユーザによりＬＵＮレイアウトツール６４が起動された場合における、ＰＣ３０とマルチリーダ／ライタ１との間のデータ送受信を模式的に示す図である。
【０１０１】
まず、ＬＵＮレイアウトツール６４は起動後、まず、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行する［４０］。フィルタドライバ６２は、図６における［１６］の処理において説明したものと同一のＩｎｑｕｉｒｙ情報をＬＵＮレイアウトツール６４に返却する［４１］。
【０１０２】
次に、ＬＵＮレイアウトツール６４は、ＬＵＮマップ６３（図５参照）を読み込む［４２］。そして、読み込んだＬＵＮマップ６３に従って、ＬＵＮレイアウト設定画面（図４（ａ）参照）をＰＣ３０のディスプレイ３９に表示し、現在設定されているＬＵＮレイアウトをユーザに対し示す。
【０１０３】
そして、図４（ａ）を参照して説明したレイアウト作業がユーザにより行われ、ユーザが好みに応じて各アイコンの配置を行い、ＬＵＮレイアウトが確定すると［４３］、ＬＵＮレイアウトツール６４は、ＬＵＮマップ６３を書き換え［４４］、処理を終了する。
【０１０４】
ＬＵＮレイアウトツール６４によりＬＵＮレイアウトを変更したユーザは、取扱説明書やディスプレイ３９における表示に従って、ＵＳＢケーブル２６を抜くか、またはマルチリーダ／ライタ１の電源をオフする［４５］。
【０１０５】
よって、その後、ＯＳカーネル６０から定期チェックが送信された場合［４６］、マルチリーダ／ライタ１は応答しない［４７］。これに基づいて、ＰＣ３０において、マルチリーダ／ライタ１のＵＳＢケーブル２６が抜かれたことを検出することができるので、ＯＳカーネル６０は、フィルタドライバ６２をアンロードする［４８］。
【０１０６】
そして、その後、ＵＳＢケーブル２６によりＰＣ３０とマルチリーダ／ライタ１とが接続され、マルチリーダ／ライタ１に電源が供給されて電源オンとなると［２］、図６を参照して説明した［１］から［９］の処理が繰り返される。ここで、ＬＵＮマップ６３からＬＵＮマップ６３から必要なパラメータをリードする［９］が、これは変更後のＬＵＮマップ６３から読み込まれるパラメータであるため、以降の処理は、変更後のＬＵＮマップ６３に基づいて行われる。
【０１０７】
図８を参照して、ＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理について説明する。図８は、ＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理を示すフローチャートである。このＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理は、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」がＯＳカーネル６０により発行されると開始する処理であり、図６に示す［１０］から［１４］に対応する処理である。
【０１０８】
まず、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」が発行されると、ＯＳメモリ３４ａに格納されたＯＳが上位ＯＳで有ることがＯＳ種類メモリ３３ｂに記憶されているか否かを判断する（Ｓ２）。未だ記憶されていない場合（Ｓ２：Ｎｏ）、ＯＳメモリ３４ａに格納されたＯＳが上位ＯＳで有ることをＯＳ種類メモリ３３ｂに格納する（Ｓ４）。上述したように、ＯＳによりＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」が発行される場合、そのＯＳは上位ＯＳだからである。
【０１０９】
次に、マルチリーダ／ライタ１に対し、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を発行し、そのＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」に応じて、マルチリーダ／ライタ１から返答されるＰ−ＬＵＮの最大値（ＭＡＸ−Ｐ−ＬＵＮ）を、Ｐ−ＬＵＮ最大値メモリ３３ａに記憶する（Ｓ６）。そして、変数「Ｐ−ＬＵＮ」を「０」とする（Ｓ８）。
【０１１０】
次に、変数「Ｐ−ＬＵＮ」で示される現Ｐ−ＬＵＮを記述したＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行し、その返答としてマルチリーダ／ライタ１から返却されるＩｎｑｕｉｒｙ情報を取得し、ＲＡＭ３３に記憶する（Ｓ１０）。最初は、変数「Ｐ−ＬＵＮ」が「０」であるから、実論理ユニット（Ｐ−ＬＵＮ０）についてのＩｎｑｕｉｒｙ情報がＲＡＭ３３に格納される。
【０１１１】
次に、変数「Ｐ−ＬＵＮ」に「１」を加算する（Ｓ１２）。そして、変数「Ｐ−ＬＵＮ」の値が、ＭＡＸ−Ｐ−ＬＵＮ（Ｐ−ＬＵＮの最大値）以下であるか否かを判断する（Ｓ１４）。
【０１１２】
変数「Ｐ−ＬＵＮ」の値がＭＡＸ−Ｐ−ＬＵＮ以下である間は（Ｓ１４：Ｙｅｓ）、Ｓ１０に戻り処理を繰り返す。そして処理を繰り返すうちに、変数「Ｐ−ＬＵＮ」の値がＭＡＸ−Ｐ−ＬＵＮより大となると（Ｓ１４：Ｎｏ）、全ての実論理ユニットＰＵについて、Ｉｎｑｕｉｒｙ情報を取得したこととなるので、次に、レジストリ３４ｄから読み込んだＭＡＸ−Ｖ−ＬＵＮをＯＳカーネル６０に返す（Ｓ１６）。これにより、ＯＳカーネル６０から見ると、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」（接続した装置の論理ユニット数を問い合わせるコマンド）の返答として、ＭＡＸ−Ｖ−ＬＵＮ（すなわち、仮想論理ユニット番号Ｖ−ＬＵＮの最大値）を受けることとなる。
【０１１３】
なお、ＯＳメモリ３４ａに格納されたＯＳが上位ＯＳであることがＯＳ種類メモリ３３ｂに既に記憶されている場合（Ｓ２：Ｙｅｓ）、Ｓ４からＳ１４の処理をスキップし、ＬＵＮマップ６３内のＭＡＸ−Ｖ−ＬＵＮを返す（Ｓ１６）。
【０１１４】
以上説明したように、第１実施例のフィルタドライバ６２により、ＰＣ３０において、マルチリーダ／ライタ１の実論理ユニットＰＵの数よりも少ない数に設定された仮想論理ユニットＶＵに、マルチリーダ／ライタ１の実論理ユニットＰＵを対応付けるので、ユーザが認識する論理ユニット数を少なくすることができ、ドライブ構成画面における表示を単純明快にできると共に、使用するドライブレター数を節約することができる。また、同一の仮想論理ユニットＶＵに複数の実論理ユニットＰＵが対応付けられていても、その実論理ユニットＰＵのうち、実際にスロットに装着中の外部メモリが存在する実論理ユニットＰＵが、アクセス可能論理ユニットとして決定され、そのアクセス可能論理ユニットに対応付けられた外部メモリにアクセスできる。また、途中で外部メモリの入れ替えが行われた場合には、実際に外部メモリが装着中の実論理ユニットＰＵが自動的に検出され、アクセス可能論理ユニットとして登録されるので、使用する実論理ユニットＰＵの切換のために、ＰＣ３０を再起動したり、ＵＳＢケーブル２６を一旦抜くなどの面倒な作業をしなくてもよい。
【０１１５】
また、仮想論理ユニットＶＵに対し実論理ユニットＰＵを対応付けるための処理がフィルタドライバ６２により実行されるので、マルチリーダ／ライタ１側の変更が不要である。よって、ユーザから見ると、ＰＣ３０にフィルタドライバ６２をインストールするだけでよく、手持ちのマルチリーダ／ライタ１をそのまま使用することができる。
【０１１６】
さらに、ＬＵＮレイアウトツール６４により、各仮想論理ユニットＶＵ対する各実論理ユニットＰＵの対応付けをユーザの好みに応じて自由に設定できる。そのため、例えば使用頻度の低いメモリを一つのドライブ（仮想論理ユニットＶＵ）にまとめてドライブレターを節約することによりドライブ構成画面の表示をすっきりさせたり、頻繁に使う実論理ユニットＰＵについては独立して一つのドライブレターを割り当てるようにするといったことが可能となり、ユーザの使い勝手の良好な情報処理システムの提供が可能となる。
【０１１７】
次に、図９を参照して、フィルタドライバ６２によりＰＣ３０において実行される処理の第２実施例について説明する。上記した第１実施例では、ＯＳメモリ３４ａに格納されたＯＳが、上位ＯＳであったが、第２実施例では、ＰＣ３０のＯＳメモリ３４ａに下位ＯＳが格納されているものとして説明する。なお、この第２実施例において、上記した第１実施例と同一の部分には同一の符号を付して、その説明を省略する。
【０１１８】
図９は、第２実施例におけるＰＣ３０とマルチリーダ／ライタ１との間の各種データのやりとりを示す図である。上述したように、第２実施例では、ＰＣ３０のＯＳメモリ３４ａに下位ＯＳが格納されているため、ＯＳカーネル６５の動作は、第１実施例のＯＳカーネル６１とは異なる。なお、図９に示すデータの送受信のうち、図６を参照して説明したデータ送受信と同一のものについては、同一の番号を付して説明を省略する。
【０１１９】
ＯＳメモリ３４ａに下位ＯＳが格納されている場合、ＯＳカーネル６５は、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ（Ｖ−ＬＵＮ＝０）」を発行する［６０］。すなわち、上記第１実施例では、ＯＳメモリ３４ａに上位ＯＳが格納されていたため、１の周辺装置について複数の論理ユニットを取り扱うこと可能であった。そのためＯＳカーネル６０（図６参照）からは、設定された論理ユニットの総数（ここでは、論理ユニット番号の最大値）を問い合わせるためのＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」が発行されていた。これに対し、第２実施例において、ＯＳメモリ３４ａに格納されている下位ＯＳに標準でインストールされているドライバソフトは、１の周辺装置は、１の論理ユニットとして取り扱うため、論理ユニットの総数を問い合わせることなく、デバイスの種類を問い合わせるＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ（Ｖ−ＬＵＮ＝０）」を発行するのである。
【０１２０】
フィルタドライバ６２は、このＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ（Ｖ−ＬＵＮ＝０）」を受信すると、Ｉｎｑｕｉｒｙ受信処理を実行する。Ｉｎｑｕｉｒｙ受信処理については、図１０を参照して後に詳述するため、ここでは簡単に説明する。まず、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を発行する［６１」。マルチリーダ／ライタ１は、このＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を受けると、Ｐ−ＬＵＮの最大値（ＭＡＸ−Ｐ−ＬＵＮ）を返答する［６２］。
【０１２１】
フィルタドライバ６２は、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」に対する返答を受け取ると、その受け取った値をＰ−ＬＵＮ最大値メモリ３３ａ（図２参照）に格納する。そして、マルチリーダ／ライタ１に対し、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行し、その返答を受信する［６３］。
【０１２２】
この返答を受けると、フィルタドライバ６２は、Ｐ−ＬＵＮ毎に受信したデータをＲＡＭ３３に格納する。そして、フィルタドライバ６２は、Ｉｎｑｕｉｒｙ情報を返却する［６４］。本実施例では、フィルタドライバ６２は、フィルタドライバ６２自身のベンダーＩＤとプロダクト名、マルチリーダ／ライタ１から受信したＰ−ＬＵＮ最大値（ＭＡＸ−Ｐ−ＬＵＮ）、およびＯＳが下位ＯＳであることなどを記述したＩｎｑｕｉｒｙ情報を返却する。なお、本実施例において、フィルタドライバ６２からＯＳに返却されるＩｎｑｕｉｒｙ情報は、常に同一の情報である。
【０１２３】
次に、ＯＳカーネル６５はファイルシステム６１に対してドライブレターを確定する［１７］。本実施例では、マルチリーダ／ライタ１に対応したドライブレターとして「Ｅ」が割り当てられる。
【０１２４】
次に、第２実施例におけるＬＵＮレイアウトの変更操作について説明する。上述した第１実施例は、上位ＯＳがインストールされている場合であったため、複数の仮想論理ユニットＶＵを設定可能であり、且つ仮想論理ユニットＶＵと実論理ユニットＰＵとの対応関係をＬＵＮレイアウトツール６４により任意に変更可能であった。これに対し、第２実施例は、下位ＯＳがインストールされている場合についてであるため、１つの仮想論理ユニットＶＵのみしか設定できず、全ての実論理ユニットＰＵは、１つの仮想論理ユニット（Ｖ−ＬＵＮ０）に対応付けられる。よって、第２実施例におけるＬＵＮレイアウトの変更では、仮想論理ユニット（Ｖ−ＬＵＮ０）内における各実論理ユニットＰＵ優先順位を変更することのみが可能である。
【０１２５】
ＬＵＮレイアウトツール６４は起動後、まず、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行する［４０］。フィルタドライバ６２は、仮想論理ユニット（Ｖ−ＬＵＮ０）のＩｎｑｕｉｒｙ情報をＬＵＮレイアウトツール６４に返却する［４１］。
【０１２６】
次に、ＬＵＮレイアウトツール６４は、ＬＵＮマップ６３（図５参照）を読み込む［４２］。そして、読み込んだＬＵＮマップ６３に従って、ＬＵＮレイアウト設定画面（図４（ａ）参照）をＰＣ３０のディスプレイ３９に表示し、現在設定されているＬＵＮレイアウトをユーザに対し示す。
【０１２７】
そして、図４（ａ）を参照して説明したレイアウト作業がユーザにより行われ、ユーザが好みに応じて各アイコンの配置を行うレイアウト作業をする［４３］。なお、ここで、ＬＵＮレイアウトツール６４は、下位ＯＳであることを示すＩｎｑｕｉｒｙ情報に基づいて、仮想論理ユニット（Ｖ−ＬＵＮ０）以外の仮想論理ユニットＶＵに対し、実論理ユニットＰＵを対応付ける操作を無効とする。そして、ＬＵＮレイアウトが確定すると、ＬＵＮレイアウトツール６４は、ＬＵＮマップ６３を書き換え［４４］、処理を終了する。
【０１２８】
図１０を参照して、Ｉｎｑｕｉｒｙ受信処理について説明する。図１０は、Ｉｎｑｕｉｒｙ受信処理を示すフローチャートである。このＩｎｑｕｉｒｙ受信処理は、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」がＯＳカーネル６５により発行されると開始する処理である。
【０１２９】
まず、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」が発行されると、ＯＳメモリ３４ａに格納されたＯＳが下位ＯＳで有ることがＯＳ種類メモリ３３ｂに記憶されているか否かを判断する（Ｓ２２）。未だ記憶されていない場合（Ｓ２２：Ｎｏ）、ＯＳメモリ３４ａに格納されたＯＳが下位ＯＳで有ることをＯＳ種類メモリ３３ｂに格納する（Ｓ２４）。上述したように、最初にＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」が発行されることなく、Ｉｎｑｕｉｒｙコマンドが発行される場合、そのＯＳは下位ＯＳだからである。
【０１３０】
次に、マルチリーダ／ライタ１に対し、ＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」を発行し、そのＵＳＢコマンド「ＧＥＴ＿ＭＡＸ＿ＬＵＮ」に応じて、マルチリーダ／ライタ１から返答されるＰ−ＬＵＮの最大値（ＭＡＸ−Ｐ−ＬＵＮ）を、Ｐ−ＬＵＮ最大値メモリ３３ａに記憶する（Ｓ２６）。そして、変数「Ｐ−ＬＵＮ」を「０」とする（Ｓ２８）。
【０１３１】
次に、変数「Ｐ−ＬＵＮ」で示される現Ｐ−ＬＵＮを記述したＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」を発行し、その返答としてマルチリーダ／ライタ１から返却されるＩｎｑｕｉｒｙ情報を取得し、ＲＡＭ３３に記憶する（Ｓ３０）。最初は、変数「Ｐ−ＬＵＮ」が「０」であるから、実論理ユニット（Ｐ−ＬＵＮ０）についてのＩｎｑｕｉｒｙ情報がＲＡＭ３３に格納される。
【０１３２】
次に、変数「Ｐ−ＬＵＮ」に「１」を加算する（Ｓ３２）。そして、変数「Ｐ−ＬＵＮ」の値が、ＭＡＸ−Ｐ−ＬＵＮ（Ｐ−ＬＵＮの最大値）以下であるか否かを判断する（Ｓ３４）。
【０１３３】
変数「Ｐ−ＬＵＮ」の値がＭＡＸ−Ｐ−ＬＵＮ以下である間は（Ｓ３４：Ｙｅｓ）、Ｓ１０に戻り処理を繰り返す。そして、変数「Ｐ−ＬＵＮ」の値がＭＡＸ−Ｐ−ＬＵＮより大となると（Ｓ３４：Ｎｏ）、全ての実論理ユニットについて、Ｉｎｑｕｉｒｙ情報を取得したこととなるので、次に、Ｉｎｑｕｉｒｙ情報をＯＳカーネル６５に返す（Ｓ３６）。これにより、ＯＳカーネル６０から見ると、ＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」の返答として、Ｉｎｑｕｉｒｙ情報を受けることとなる。
【０１３４】
一方、ＯＳメモリ３４ａに格納されたＯＳが下位ＯＳであることがＯＳ種類メモリ３３ｂに既に記憶されている場合（Ｓ３２：Ｙｅｓ）、Ｓ２４からＳ３４の処理をスキップし、Ｉｎｑｕｉｒｙ情報を返す（Ｓ３６）。
【０１３５】
以上説明したように、第２実施例によれば、１つの仮想論理ユニットＶＵに複数の実論理ユニットＰＵが対応付けられるが、その実論理ユニットＰＵのうち、実際にスロットに装着中の外部メモリが存在する実論理ユニットＰＵが、アクセス可能論理ユニットとして決定され、そのアクセス可能論理ユニットとの間でデータ通信が可能となる。また、途中で外部メモリの入れ替えが行われた場合には、実際に外部メモリが装着中の実論理ユニットＰＵが自動的に検出され、アクセス可能論理ユニットとして登録されるので、ＰＣにインストールされているＯＳが下位ＯＳであっても、異なる実論理ユニットＰＵを認識させるために、ＰＣ３０を再起動したり、ＵＳＢケーブル２６をＰＣ３０側の端子から一旦抜き取り再度挿入するなどの面倒な作業が不要である。
【０１３６】
次に、図１１を参照して、第３実施例のフィルタドライバ６６について説明する。上記した第１実施例および第２実施例では、ＰＣ３０に接続されたマルチリーダ／ライタ１が内蔵メモリを備えないものであった。これに対し、第３実施例は、ＰＣ３０に接続されたマルチリーダ／ライタ１００が、外部メモリ２１，２２，２３を脱着可能な第１スロット１１、第２スロット１２、第３スロット１３を備えると共に、脱着不可能な内蔵フラッシュメモリ１５を備えている点が、上述した第１実施例および第２実施例と異なる。なお、この第３実施例において、上記した第１実施例と同一の部分には同一の符号を付して、その説明を省略する。
【０１３７】
図１１は、第３実施例において用いられるマルチリーダ／ライタ１００の電気的構成を示すブロック図である。図１１に示すように、マルチリーダ／ライタ１００は、ＰＣ３０からのファイル操作によってデータの読み書きが可能な内蔵フラッシュメモリ１５を備え、この内蔵フラッシュメモリ１５はバス７に接続されている。
【０１３８】
すなわち、第３実施例において用いられるマルチリーダ／ライタ１００は、ＰＣ３０からアクセス可能なメモリとして、外部メモリ２１，２２，２３に加えて、内蔵フラッシュメモリ１５の合計４種類を備えているので、合計で、４つの実論理ユニットＰＵとして機能可能である。そして、マルチリーダ／ライタ１００をＵＳＢケーブル２６にてＰＣ３０と接続することにより、ＰＣ３０からマルチリーダ／ライタ１００の各外部メモリ２１，２２，２３及び内蔵フラッシュメモリ１５にアクセス可能な情報処理システムが構築される。
【０１３９】
なお、ＰＣ３０のフィルタドライバメモリ３４ｂには、第１実施例および第２実施例において説明したフィルタドライバ６２に替えて、フィルタドライバ６６（図１３参照）がインストールされている。このフィルタドライバ６６は、第１実施例および第２実施例において説明したフィルタドライバ６２と同様に、ＯＳの下層において動作するものであり、ＯＳとマルチリーダ／ライタ１００との間において送受信されるデータを制御するためのものであるが、内蔵フラッシュメモリ１５を備えたマルチリーダ／ライタ１００用のフィルタドライバ６６である点において、第１実施例および第２実施例のフィルタドライバ６６と異なる。
【０１４０】
図１２は、マルチリーダ／ライタ１００とＰＣ３０とを模式的に示した図である。図１２に示すように、マルチリーダ／ライタ１は、３種類の外部メモリ２１，２２，２３を挿入可能なスロット１１，１２，１３と内蔵フラッシュメモリ１５とを備えているから、マルチリーダ／ライタ１００は、物理的には１台の装置でありながら、互いに異なる種類のメモリにアクセス可能な４つの実論理ユニットＰＵとして機能する。
【０１４１】
図１２に示すように、本実施例では、内蔵フラッシュメモリ１５との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ０が付与される。また、外部メモリ２１との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ１が付与される。そして、外部メモリ２２との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ２が付与される。そして、外部メモリ２３との間でデータの書き込みまたは読み込みを行う実論理ユニットＰＵにはＰ−ＬＵＮ３が付与される。
【０１４２】
そして、ＰＣ３０から例えば、Ｐ−ＬＵＮ０が記述されたコマンドを受信すると、Ｐ−ＬＵＮ０で指定される実論理ユニットＰＵとＰＣ３０との間でデータ通信が実行される。このようにして、ＰＣ３０からマルチリーダ／ライタ１００の内蔵フラッシュメモリ１５または各スロット１１，１２，１３に装着された各外部メモリ２１，２２，２３にアクセス可能な情報処理システムが構築されている。
【０１４３】
図１３を参照して、上述したＰＣ３０とマルチリーダ／ライタ１００との間の各種データのやりとりについて説明する。図１３は、ＰＣ３０とマルチリーダ／ライタ１００との間におけるデータ送受信を模式的に示す図である。なお、ドライブレター決定までの処理は、図６を参照して説明した第１実施例と同様であるため説明を省略し、ここでは、ドライブレター決定後におけるデータの送受信について説明する。また、仮想論理ユニットＶＵと実論理ユニットＰＵとの対応関係については、第１実施例と同様に、全ての実論理ユニットＰＵが仮想論理ユニットＶＵに対応付けられているものとして説明する。
【０１４４】
まず、仮想論理ユニット（Ｖ−ＬＵＮ０）を指定したＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が、ファイルシステム６１から発行される［７０］。ここでは、Ｖ−ＬＵＮ０に対応するアクセス可能な実論理ユニットＰＵが未登録であるものとして説明する。
【０１４５】
フィルタドライバ６６は、アクセス可能な実論理ユニットＰＵが未登録である場合、ＬＵＮマップ６３（図５参照）において、そのＳＣＳＩコマンドに記述されたＶ−ＬＵＮ（ここでは０）に対応付けられたＰ−ＬＵＮを取得し、そのＰ−ＬＵＮについて、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を順番に発行する。ここでは、Ｖ−ＬＵＮ０には、Ｐ−ＬＵＮ０、Ｐ−ＬＵＮ１、Ｐ−ＬＵＮ２、Ｐ−ＬＵＮ３、Ｐ−ＬＵＮ４が対応付けられているものとして説明する。
【０１４６】
ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を各実論理ユニット（Ｐ−ＬＵＮ０，Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）について発行する場合、上述した第１実施例では、フィルタドライバ６６は、ＬＵＮマップ６３における優先順位に従って、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を順番に発行していた（図６［１３］参照）。
【０１４７】
これに対し、本実施例では、基本的には、ＬＵＮマップ６３における優先順位に従って、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行するが、内蔵フラッシュメモリ１５が割り当てられた実論理ユニット（Ｐ−ＬＵＮ０）については、最後にＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行する点が第１実施例と異なる。すなわち、外部メモリ２１，２２，２３が割り当てられた実論理ユニット（Ｐ−ＬＵＮ１，Ｐ−ＬＵＮ２，Ｐ−ＬＵＮ３）について優先的に上記コマンドを発行することにより、外部メモリ２１，２２，２３が装着されていればその実論理ユニットＰＵを優先的に検出する。
【０１４８】
まず「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝１）」をマルチリーダ／ライタ１００に発行する［７１］。マルチリーダ／ライタ１００は、第１外部メモリ２１がスロットに装着中である場合は、その旨を示すコマンド「Ｒｅａｄｙ」を返答するが、ここでは、第１外部メモリ２１がスロットに装着中でないものとして、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［７２］。
【０１４９】
次に、フィルタドライバ６６は、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝２）」をマルチリーダ／ライタ１００に発行する［７３］。ここでは、第２外部メモリ２２がスロットに挿入中でないものとして、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［７４］。
【０１５０】
次に、フィルタドライバ６６は、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ（Ｐ−ＬＵＮ＝３）」をマルチリーダ／ライタ１に発行する［７５］。ここでは、第３外部メモリ２３がスロットに挿入中でないものとして、その旨を示すコマンド「Ｎｏｔ  Ｒｅａｄｙ」を返答したものとして説明する［７６］。
【０１５１】
このように、内蔵フラッシュメモリ１５が対応付けられた実論理ユニット（Ｐ−ＬＵＮ０）以外の実論理ユニットについてＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行し、そのいずれもが「Ｎｏｔ  Ｒｅａｄｙ」を返答した場合、最後に、内蔵フラッシュメモリ１５が対応付けられた実論理ユニット（Ｐ−ＬＵＮ０）について、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行する［７７］。内蔵フラッシュメモリ１５は、常に装着中であるので、「Ｒｅａｄｙ」が返答される［７８］。
【０１５２】
その後、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」に続いて、ファイルシステム６１から、データが出力された場合であっても［７９］、その出力データはフィルタドライバ６６により読み捨てられ、マルチリーダ／ライタ１００には送信されない。また、フィルタドライバ６６からファイルシステム６１へは、ファイルシステム６１からマルチリーダ／ライタ１００へのデータの出力がＮＧである旨を示すステータスが発行される［８０］。このステータスが発行されると、ファイルシステム６１によりＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行される［８０ａ］。このＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行されると、フィルタドライバ６６は、メモリ交換発生を示すセンスデータを転送する［８０ｂ］。
【０１５３】
このメモリ交換発生を示すセンスデータを受信したファイルシステム６１では、前回使用されたメモリ管理情報を破棄する。そして、ファイルシステム６１は、再度、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を発行する［８１］。なお、今度は、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応するアクセス可能実論理ユニットとして、実論理ユニット（Ｐ−ＬＵＮ０）が登録済みである。
【０１５４】
よって、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を受信したフィルタドライバ６６は、受信したＳＣＳＩコマンドを、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｐ−ＬＵＮ０）」に変更する。すなわち、実論理ユニット（Ｐ−ＬＵＮ０）を指定するコマンドに変更し、マルチリーダ／ライタ１００に発行する［８２］。
【０１５５】
これにより、ファイルシステム６１とマルチリーダ／ライタ１００との間でデータの読み書きが行えるようになる。具体的には、ファイルシステム６１からのＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ」に対してマルチリーダ／ライタ１がデータ及びステータスを送信する、というやりとりになる［８３］，［８４］。すなわち、スロットのいずれかに、外部メモリ２１，２２，２３が装着されている間は、仮想論理ユニット（Ｖ−ＬＵＮ０）の指定により、その外部メモリ２１，２２，２３にアクセスできる一方、いずれの外部メモリ２１，２２，２３も装着されていない場合には、仮想論理ユニット（Ｖ−ＬＵＮ０）の指定により、内蔵フラッシュメモリ１５にアクセスすることができる。
【０１５６】
次に、仮想論理ユニットに対応するアクセス可能実論理ユニットとして、内蔵フラッシュメモリ１５に対応する実論理ユニット（Ｐ−ＬＵＮ０）が登録されている間における処理について説明する。
【０１５７】
まず、フィルタドライバ６６は、ファイルシステム６１からＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行されると［８５］、まず、仮想論理ユニット（Ｖ−ＬＵＮ０）のアクセス可能実論理ユニットＰＵとして登録されているのが、内蔵フラッシュメモリ１５に対応する実論理ユニット（Ｐ−ＬＵＮ０）であることを確認する。そして、ＯＳによる前回のＳＣＳＩコマンド（さらに詳細には、「ＴｅｓｔＵｎｉｔＲｅａｄｙ」以外のＳＣＳＩコマンド）の発行から所定期間（本実施例では２０秒）以上経過しているか否かを判断し、２０秒以上経過している場合には、ＬＵＮマップ６３（図５参照）において、Ｖ−ＬＵＮ０に対応付けられたＰ−ＬＵＮのうち、現在登録中の実論理ユニット（Ｐ−ＬＵＮ０）以外のＰ−ＬＵＮを指定して、順番に、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行し、その返答を受け取る［８６］。この処理を定期的に実行することにより、スロットに外部メモリ２１，２２，２３のいずれかが新たに装着されたか否かを検出することができる。
【０１５８】
ここでは、まず、スロット１１，１２，１３のいずれにも新たな外部メモリ２１，２２，２３が装着されなかったものとして説明する。その場合、発行したＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」に対する返答は、全て「Ｎｏｔ  Ｒｅａｄｙ」であるので、ファイルシステム６１から受信したＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｐ−ＬＵＮ０）」に変更する。すなわち、実論理ユニット（Ｐ−ＬＵＮ０）を指定するコマンドに変更し、マルチリーダ／ライタ１に発行する［８７］。
【０１５９】
これにより、ファイルシステム６１とマルチリーダ／ライタ１００の実論理ユニット（Ｐ−ＬＵＮ０）との間でデータの読み書きが引き続き行なわれる。［８８］，［８９］。
【０１６０】
次に、内蔵フラッシュメモリ１５が対応付けられた実論理ユニット（Ｐ−ＬＵＮ０）がアクセス可能な実論理ユニットＰＵとして登録されている間に、スロット１１，１２，１３のいずれかに新たな外部メモリ２１，２２，２３が装着された場合について説明する。まず、フィルタドライバ６６は、ファイルシステム６１からＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行され［９０］、前回のＳＣＳＩコマンドの発行から２０秒以上経過している場合には、上述したように、Ｖ−ＬＵＮ０に対応付けられたＰ−ＬＵＮのうち、現在登録中の実論理ユニット（Ｐ−ＬＵＮ０）以外の実論理ユニットＰＵを指定して、順番に、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行し、その返答を受け取る［９１］。ここでは、実論理ユニットＰ−ＬＵＮ２について「Ｒｅａｄｙ」の返答が得られたものとして説明する。
【０１６１】
実論理ユニットＰ−ＬＵＮ２について「Ｒｅａｄｙ」の返答が得られた場合、すなわち、実論理ユニット（Ｐ−ＬＵＮ２）に対応付けられたメモリ（本実施例では、第２外部メモリ（ＳＭ）２２）が新たにスロット１２に挿入された場合、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応する実論理ユニットＰＵとして、内蔵フラッシュメモリ１５に対応付けられた実論理ユニット（Ｐ−ＬＵＮ０）をアクセス可能な実論理ユニットとしての登録から解除する。
【０１６２】
次に、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」に続いて、ファイルシステム６１から、データが出力された場合であっても［９４］、アクセス可能な実論理ユニットが未登録であるため、その出力データはフィルタドライバ６６により読み捨てられ、マルチリーダ／ライタ１には送信されない。
【０１６３】
そして、フィルタドライバ６６からファイルシステム６１へは、ファイルシステム６１からマルチリーダ／ライタ１へのデータの出力がＮＧである旨を示すステータスが発行される［９５］。
【０１６４】
このステータスが発行されると、ファイルシステム６１によりＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行される［９５ａ］。このＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行されると、ファイルドライバ６２は、メモリ無しを示すセンスデータを転送する［９５ｂ］。
【０１６５】
そのセンスデータを受信したファイルシステム６１は、再度ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を発行する［９６］。これを受信したフィルタドライバ６６は、Ｖ−ＬＵＮ０に対応するＰ−ＬＵＮを指定して、順番に、ＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行し、その返答を受け取る［９７］。ここでは、第２外部メモリ２２がスロット１２に挿入されたままであって、実論理ユニット（Ｐ−ＬＵＮ２）について「Ｒｅａｄｙ」の返答が得られたものとして説明する。
【０１６６】
実論理ユニット（Ｐ−ＬＵＮ２）について「Ｒｅａｄｙ」の返答が得られた場合、実論理ユニット（Ｐ−ＬＵＮ２）を、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応する実論理ユニットＰＵとして新たに登録する。
【０１６７】
次に、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」に続いて、ファイルシステム６１から、データが出力された場合であっても［１０１］、その出力データはフィルタドライバ６６により読み捨てられ、マルチリーダ／ライタ１には送信されない。
【０１６８】
そして、フィルタドライバ６６からファイルシステム６１へは、ファイルシステム６１からマルチリーダ／ライタ１へのデータの出力がＮＧである旨を示すステータスが発行される［１０２］。
【０１６９】
このステータスが発行されると、ファイルシステム６１によりＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行される［１０２ａ］。このＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行されると、ファイルシステム６１は、メモリ交換発生を示すセンスデータを転送する［１０２ｂ］。
【０１７０】
このセンスデータを受信したファイルシステム６１では、前回使用されたメモリ管理情報を破棄する。また、ファイルシステム６１は、再度、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」を発行する［１０３］。なお、今度は、仮想論理ユニット（Ｖ−ＬＵＮ０）に対応するアクセス可能実論理ユニットとして、新たに装着された外部メモリ２２に対応する実論理ユニット（Ｐ−ＬＵＮ２）が登録済みである。
【０１７１】
よって、ファイルシステム６１からＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｖ−ＬＵＮ＝０）」が発行されると、フィルタドライバ６６は、発行されたＳＣＳＩコマンドを、ＳＣＳＩコマンド「Ｒｅａｄ／Ｗｒｉｔｅ（Ｐ−ＬＵＮ２）」に変更し、マルチリーダ／ライタ１００に発行する［１０４］。
【０１７２】
これにより、ファイルシステム６１とマルチリーダ／ライタ１との間でデータの読み書きが行えるようになる。［１０５］，［１０６］。
【０１７３】
図１４を参照して、フィルタドライバ６６によりＰＣ３０で実行されるＳＣＳＩコマンド受信処理について説明する。図１４は、フィルタドライバ６６によりＰＣ３０で実行されるＳＣＳＩコマンド受信処理を示すフローチャートである。このＳＣＳＩコマンド受信処理は、ＯＳからＳＣＳＩコマンドが発行される場合に実行される。
【０１７４】
まず、ＯＳが発行したＳＣＳＩコマンドが、「Ｉｎｑｕｉｒｙ」であるか否かを判断する（Ｓ４０）。ＳＣＳＩコマンドが「Ｉｎｑｕｉｒｙ」である場合（Ｓ４０：Ｙｅｓ）、Ｉｎｑｕｉｒｙ処理を実行する（Ｓ４２）。このＩｎｑｕｉｒｙ処理により、フィルタドライバ６６は、所定のＩｎｑｕｉｒｙ情報をＯＳに返却し、本処理を終了する。
【０１７５】
一方、ＯＳが発行したＳＣＳＩコマンドが「Ｉｎｑｕｉｒｙ」ではない場合（Ｓ４０：Ｎｏ）、次に、そのＳＣＳＩコマンドが、「ＲｅｑｕｅｓｔＳｅｎｓｅ」であるか否かを判断する（Ｓ４４）。ここではまず、ＯＳが発行したＳＣＳＩコマンドが「ＲｅｑｕｅｓｔＳｅｎｓｅ」ではなく（Ｓ４４：Ｎｏ）、また、センスデータが無い（Ｓ４６：Ｎｏ）ものとして説明する。
【０１７６】
次にＯＳが発行したＳＣＳＩコマンドに記述されたＶ−ＬＵＮについて、アクセス可能な実論理ユニットＰＵが登録済みであるか否かを判断する（Ｓ４８）。アクセス可能な実論理ユニットＰＵが未登録の場合（Ｓ４８：Ｎｏ）、ＳＣＳＩコマンドに記述されたＶ−ＬＵＮに対応するＰ−ＬＵＮを記述したＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」をマルチリーダ／ライタ１００に発行し、Ｒｅａｄｙの返答が得られる実論理ユニットを検出する（Ｓ５２）。なお、この処理については、図１３における［７１］から［７８］を参照して説明したので、これ以上の詳細な説明は省略する。そして、Ｒｅａｄｙの返答が得られたＰ−ＬＵＮがあった場合（Ｓ５２：Ｙｅｓ）、そのＰ−ＬＵＮの実論理ユニットＰＵをアクセス可能な実論理ユニットとして登録する（Ｓ５４）。そして、タイマーをリセットし（Ｓ５６）、「メモリ交換」をセンスデータに格納し（Ｓ５８）、処理を終了する。
【０１７７】
一方、Ｒｅａｄｙの返答が得られる実論理ユニットＰＵが存在しなかった場合（Ｓ５２：Ｎｏ）、すなわち、外部メモリのいずれも装着されておらず、また、「メモリ無し」をセンスデータに格納し（Ｓ６０）、処理を終了する。
【０１７８】
なお、センスデータ有りの状態でこのＳＣＳＩコマンド受信処理を終了した場合、フィルタドライバ６６からＯＳへは、データ通信がＮＧであることを示すステータスが発行される。そして、データ通信がＮＧであることを示すステータスがフィルタドライバ６６から発行されると、ＯＳからは、センスデータを要求するＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行される。ＯＳからＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」が発行されると（Ｓ４４：Ｙｅｓ）、フィルタドライバ６６は、センスデータを転送すると共に、転送後はそのセンスデータをクリアし（Ｓ６２）、ＳＣＳＩコマンド受信処理を正常に終了する。なお、図１４に示すフローチャートに示すように、センスデータが有る間は（Ｓ４６：Ｙｅｓ）、もし、ＯＳからＳＣＳＩコマンド「Ｉｎｑｕｉｒｙ」、または「ＲｅｑｕｅｓｔＳｅｎｓｅ」以外のコマンドが発行された場合は全てエラー終了し、フィルタドライバ６６からＯＳへは、データ通信がＮＧであることを示すステータスが再発行される。
【０１７９】
一方、ＯＳが発行したＳＣＳＩコマンドに記述されたＶ−ＬＵＮについてのアクセス可能な実論理ユニットＰＵが登録済みであり（Ｓ４８：Ｙｅｓ）、且つ、その登録済みの実論理ユニットＰＵに対応付けられたメモリが外部メモリであって、内蔵フラッシュメモリ１５ではない場合（Ｓ６４：Ｎｏ）、ＳＣＳＩコマンドに記述されたＶ−ＬＵＮをアクセス可能実論理ユニットとして登録されたＰ−ＬＵＮに変更してマルチリーダ／ライタ１００に発行する（Ｓ６６）。そして、マルチリーダ／ライタ１００からエラー（ＮＧ）の返答を受信しない場合（Ｓ６８：Ｎｏ）はＳ７４の処理に進む。
【０１８０】
一方、マルチリーダ／ライタ１００からエラーの返答を受信した場合（Ｓ６８：Ｙｅｓ）、ＳＣＳＩコマンド「ＲｅｑｕｅｓｔＳｅｎｓｅ」を、マルチリーダ／ライタ１００に発行し、その結果をＶ−ＬＵＮのセンスデータに格納する（Ｓ７０）。次に、スロットに外部メモリが入っていないかを判断する（Ｓ７２）。スロットに外部メモリが入っていない場合（Ｓ７２：Ｙｅｓ）、これは、前回アクセスした外部メモリがスロットから抜き取られたことを意味しているから、Ｓ７８の処理に進み、アクセス可能な実論理ユニットとして登録されていたＰ−ＬＵＮを解除する処理を行う。一方、スロットに外部メモリが入っている場合（Ｓ７２：Ｎｏ）、Ｓ７４の処理に進む。
【０１８１】
次に、ＯＳから発行されたＳＣＳＩコマンドが、「ＴｅｓｔＵｎｉｔＲｅａｄｙ」であるか否かを判断する（Ｓ７４）。ＯＳから発行されたＳＣＳＩコマンドが「ＴｅｓｔＵｎｉｔＲｅａｄｙ」以外であった場合（Ｓ７４：Ｎｏ）、タイマーをリセットし（Ｓ７６）、処理を終了する。一方、ＯＳから発行されたＳＣＳＩコマンドが、「ＴｅｓｔＵｎｉｔＲｅａｄｙである場合（Ｓ７４）、タイマーをリセットせずに処理を終了する。
【０１８２】
アクセス可能実論理ユニットとして登録されている実論理ユニットＰＵが、内蔵フラッシュメモリ１５が対応付けられたものであり（Ｓ６４：Ｙｅｓ）、かつ、タイマーの値が２０秒以上となると（Ｓ８０）、次に、ＳＣＳＩコマンドに記述されたＶ−ＬＵＮに対応付けられるＰ−ＬＵＮであって、内蔵フラッシュメモリ１５が対応付けられたＰ−ＬＵＮ以外のものを記述したＳＣＳＩコマンド「ＴｅｓｔＵｎｉｔＲｅａｄｙ」を発行する（Ｓ８２）。そして、Ｒｅａｄｙの返答が得られるＰ−ＬＵＮが有るか否かを判断する（Ｓ８４）。Ｒｅａｄｙの返答が得られるＰ−ＬＵＮが無かった場合（Ｓ８４）、すなわちスロットに新たに装着された外部メモリが存在しなかった場合、Ｓ６６の処理に移行する。
【０１８３】
一方、Ｒｅａｄｙの返答が得られるＰ−ＬＵＮが有った場合（Ｓ８４：Ｙｅｓ）、それまでアクセス可能な実論理ユニットＰＵとして登録されていた実論理ユニットを登録から解除し、Ｖ−ＬＵＮを未登録状態に戻す（Ｓ７８）。そして、「メモリ無し」をセンスデータに格納し（Ｓ６０）、処理を終了する。
【０１８４】
図１５を参照して、第３実施例におけるＬＵＮレイアウト設定画面について説明する。図１５は、第３実施例のＬＵＮレイアウト設定画面の一例を示す図である。なお、図１５に示すＬＵＮレイアウト設定画面において、第１実施例で説明したＬＵＮレイアウト設定画面と同一の構成については同一の符号を付して説明を省略する。
【０１８５】
図１５に示すように、第３実施例のＬＵＮレイアウトツール６４では、３種類のレイアウトが予め登録されており、ＬＵＮレイアウト設定画面において「１ドライブのみで自動切替」ボタン５５、「内蔵フラッシュのみ独立」ボタン５６、「全ドライブ独立」ボタン５７をクリックすることで、そのクリックしたボタンに対応したレイアウトが自動的に設定される。そのため、ユーザの操作負担を軽減することが可能となる。
【０１８６】
具体的には、「１ドライブのみで自動切替」ボタン５５をクリックすると、図１５（ａ）に示すように、全てのアイコンが仮想論理ユニット（Ｖ−ＬＵＮ０）の枠に自動的に配置される。また、「内蔵フラッシュのみ独立」ボタン５６をクリックすると、図１５（ｂ）に示すように、内蔵フラッシュメモリ１５に対応する実論理ユニット（Ｐ−ＬＵＮ０）のアイコンが仮想論理ユニット（Ｖ−ＬＵＮ０）の枠に自動的に配置されると共に、その他のアイコンが全て仮想論理ユニット（Ｖ−ＬＵＮ１）の枠に自動的に配置される。また、「全ドライブ独立」ボタン５７をクリックすると、図１５（ｃ）に示すように、各アイコンが各仮想論理ユニット（Ｖ−ＬＵＮ０，Ｖ−ＬＵＮ１，Ｖ−ＬＵＮ２，Ｖ−ＬＵＮ３）の枠に自動的に一つずつ配置される。
【０１８７】
しかしながら、ユーザが各自動設定ボタン５５〜５７をクリックすることで自動的にレイアウトが行われた後でも、ユーザが設定ボタン５１をクリックするまでは、ユーザはレイアウトを自由に変更することができる。このため、既定のレイアウトを一部だけ変更したい場合等、ユーザは自由にレイアウトを設定することができる。
【０１８８】
なお、内蔵フラッシュメモリ１５に対応する実論理ユニット番号が、Ｐ−ＬＵＮ０であることは、例えば、以下のような方法で自動判断することができる。まず、全てのスロットのメモリカードを抜いてＰＣ３０を再起動（もしくはＵＳＢケーブル抜き差し）する。このときフィルタドライバロード時に１つだけＲｅａｄｙの実論理ユニットが有れば、それが内蔵フラッシュ１５に対応する実論理ユニットであると判断できる。
【０１８９】
以上、実施例に基づき本発明を説明したが、本発明は上述した実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
【０１９０】
例えば、本実施例では、マルチリーダ／ライタ１の実論理ユニットＰＵを全ていずれかの仮想論理ユニットＶＵに対応付けていたが、必ずしも、全ての実論理ユニットＰＵを、仮想論理ユニットＶＵに対応付けなくてもよい。特に使用頻度の低い実論理ユニットＰＵについては、ＬＵＮレイアウト設定画面（図４（ａ）、図１５参照）において、いずれの仮想論理ユニットＶＵにも対応付けないようにＬＵＮレイアウトを設定することにより、ＰＣ３０からアクセスできないように設定することができる。このようにすれば、例えば「絶対に使用しないメディアについてはＰＣからも認識されないようにしたい」と厳格に決めておきたいという場合などに有効となる。
【０１９１】
また、上記５種類のメディア（ＣＦ，ＳＭ，ＭＳ，ＳＤ，内蔵フラッシュメモリ１５）に限らず、マイクロドライブ、マルチメディアカード、ＸＤピクチャカード、メモリースティックＤＵＯ、さらにはＰＣカード等の種々のメディアを挿入可能なマルチリーダ／ライタに対しても、上記各実施例で説明したように、本発明を適用できることはいうまでもない。
【図面の簡単な説明】
【０１９２】
【図１】本発明の第１実施例であるフィルタドライバを実行するＰＣとマルチリーダ／ライタとＰＣとを模式的に示した図である。
【図２】ＰＣの電気的構成を示すブロック図である。
【図３】マルチリーダ／ライタの電気的構成を示すブロック図である。
【図４】（ａ）は、ＬＵＮレイアウト設定画面の一例を示す図であり、（ｂ）は、（ａ）に示すＬＵＮレイアウトに従って表示されるドライブ構成画面の一例を示す図である。
【図５】ＬＵＮマップを模式的に示す図である。
【図６】ＰＣとマルチリーダ／ライタとの間におけるデータ送受信を模式的に示す図である。
【図７】ユーザによりＬＵＮレイアウトツールが起動された場合における、ＰＣとマルチリーダ／ライタとの間のデータ送受信を模式的に示す図である。
【図８】ＧＥＴ＿ＭＡＸ＿ＬＵＮ受信処理を示すフローチャートである。
【図９】第２実施例におけるＰＣとマルチリーダ／ライタとの間の各種データのやりとりを示す図である。
【図１０】Ｉｎｑｕｉｒｙ受信処理を示すフローチャートである。
【図１１】第３実施例において用いられるマルチリーダ／ライタの電気的構成を示すブロック図である。
【図１２】マルチリーダ／ライタとＰＣとを模式的に示した図である。
【図１３】ＰＣとマルチリーダ／ライタとの間におけるデータ送受信を模式的に示す図である。
【図１４】フィルタドライバによりＰＣで実行されるＳＣＳＩコマンド受信処理を示すフローチャートである。
【図１５】ＬＵＮレイアウト設定画面の一例を示す図である。
【図１６】従来のマルチリーダ／ライタの斜視図である。
【図１７】従来のマルチリーダ／ライタがＵＳＢ接続されたＰＣに表示される、ドライブ構成を表示する画面の一例を示す図である。
【図１８】従来のマルチリーダ／ライタが接続されたＰＣにおいて表示される、ドライブ構成を表示する画面の一例を示す図である。
【符号の説明】
【０１９３】
１，１００          マルチリーダ／ライタ（周辺装置）
２                  マイコン（アクセス手段）
９                  ＵＳＢ端子（コマンド受信手段）
１１                第１スロット（スロット）
１２                第２スロット（スロット）
１３                第３スロット（スロット）
１４                第４スロット（スロット）
１５                内蔵フラッシュメモリ（内蔵メディア、メディア）
２１                第１外部メモリ（メディア）
２２                第２外部メモリ（メディア）
２３                第３外部メモリ（メディア）
２４                第４外部メモリ（メディア）
３０                情報処理装置（ＰＣ）
３７                キーボード（操作手段の一部）
３８                マウス（操作手段の一部）
３９                ディスプレイ（仮想ユニット表示手段）
４０                ＵＳＢＩ／Ｆ（接続手段）
６０                ＯＳカーネル
６１                ファイルシステム
６２，６６          フィルタドライバ（ドライブ構成設定プログラム）
ＰＵ                実論理ユニット（記憶ユニット）
ＶＵ                仮想論理ユニット（仮想ユニット）
Ｓ４８              登録判断ステップ
Ｓ５０              記憶ユニット検出ステップ
Ｓ５４              アクセス可能記憶ユニット登録ステップ
Ｓ６６              コマンド変更ステップ
Ｓ７８              解除ステップ
Ｓ８２              記憶ユニット検出ステップ
【図１】
0004544188.tif 000002
【図２】
0004544188.tif 000003
【図３】
0004544188.tif 000004
【図４】
0004544188.tif 000005
【図５】
0004544188.tif 000006
【図６】
0004544188.tif 000007
【図７】
0004544188.tif 000008
【図８】
0004544188.tif 000009
【図９】
0004544188.tif 000010
【図１０】
0004544188.tif 000011
【図１１】
0004544188.tif 000012
【図１２】
0004544188.tif 000013
【図１３】
0004544188.tif 000014
【図１４】
0004544188.tif 000015
【図１５】
0004544188.tif 000016
【図１６】
0004544188.tif 000017
【図１７】
0004544188.tif 000018
【図１８】
0004544188.tif 000019