(57)【特許請求の範囲】
【請求項１】
ＳＣＳＩ（Small Computer System Interface）規格に準拠した方式でデータ列を伝送可能な通信インターフェースを介してコンピュータと接続可能で、ＳＣＳＩ規格で規定されたＳＣＳＩコマンドを利用して前記コンピュータから制御可能なストレージデバイスとして機能するデバイスであって、
データを記憶可能な物理的記憶領域を指定する情報が伝達されて、当該指定された物理的記憶領域へのアクセスが指令された場合に、当該指定された物理的記憶領域にアクセスして、前記物理的記憶領域に記憶されたデータの読み出しまたは前記物理的記憶領域へのデータの書き込みを実行可能なデータ記憶手段と、
前記データ記憶手段の前記物理的記憶領域に記憶されるデータをファイルとして管理するとともに、当該ファイルにアクセスするためのインターフェースを提供しており、当該インターフェースを利用して、ファイルを指定する情報が伝達されて、当該指定されたファイルへのアクセスが指令された場合に、当該指定されたファイルに対応する物理的記憶領域へのアクセスを前記データ記憶手段へ指令することたアクセスにより、前記ファイルに記憶されたデータの読み出しまたは前記ファイルへのデータの書き込みを実行するデバイス側のファイルシステムと、
所定のデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスするデータ処理手段と、
前記ＳＣＳＩコマンドの内、あらかじめ選定された数種類のコマンドを特殊ＳＣＳＩコマンド、前記特殊ＳＣＳＩコマンド以外のコマンドを標準ＳＣＳＩコマンドとして、前記標準ＳＣＳＩコマンドを利用して前記ストレージデバイスへアクセスすることを許可する第１のモードと、前記標準ＳＣＳＩコマンドを利用して前記ストレージデバイスへアクセスすることを禁止する第２のモードとを、いずれかに切り替え可能で、利用者が所定の操作を行うことによって前記デバイスに対し前記第１，第２のモードいずれかへの切り替えが指示された際に、当該切り替えを行うモード切り替え手段と、
前記コンピュータによって前記ストレージデバイスが認識されるのに伴って前記コンピュータと前記ストレージデバイスとの間に論理的なデータ伝送路が構成された後、その論理的なデータ伝送路を介して前記コンピュータ側からＳＣＳＩコマンドが伝送された場合に、当該ＳＣＳＩコマンドが、「前記コンピュータが前記コンピュータ側のファイルシステム経由で、前記ストレージデバイスへのアクセスを要求した場合に、前記コンピュータ側から伝送されてくることになる前記標準ＳＣＳＩコマンド」か、「前記コンピュータが前記デバイス側のファイルシステム経由で前記デバイス側のファイルシステムが管理するファイルへのアクセスを要求する場合に、前記コンピュータ側から伝送されてくることになる前記特殊ＳＣＳＩコマンド」かを解析するデータ解析手段と、
前記モード切り替え手段によって前記第１のモードまたは前記第２のモードのいずれに切り替えられているのかを判定するモード判定手段と、
前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記標準ＳＣＳＩコマンドであると解析され、且つ、前記モード判定手段によって前記第１のモードに切り替えられていると判定された場合に、前記標準ＳＣＳＩコマンド中に含まれる「前記コンピュータ側のファイルシステムから伝達された、アクセス対象となる物理的記憶領域を指定する情報」を前記データ記憶手段に伝達して、当該情報によって指定された物理的記憶領域へのアクセスを前記データ記憶手段に指令するとともに、当該アクセスに伴って前記データ記憶手段から返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送する物理領域単位アクセス手段と、
前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記標準ＳＣＳＩコマンドであると解析され、且つ、前記モード判定手段によって前記第２のモードに切り替えられていると判定された場合に、前記データ記憶手段に記憶媒体がセットされていない旨の擬似的な応答を、前記データ伝送路を介して前記コンピュータ側へと伝送する疑似応答手段と、
前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記特殊ＳＣＳＩコマンドであると解析された場合に、前記特殊ＳＣＳＩコマンド中に含まれる「前記コンピュータ側から伝達された、アクセス対象となるファイルを指定する情報」を前記デバイス側のファイルシステムに伝達して、当該情報によって指定されたファイルへのアクセスを前記デバイス側のファイルシステムに指令するとともに、当該アクセスに伴って前記デバイス側のファイルシステムから返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送するファイル単位アクセス手段と
を備え、
前記物理領域単位アクセス手段および前記デバイス側のファイルシステムは、互いに排他的に前記データ記憶手段の使用権を取得可能で、前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記使用権の取得中であるか取得に成功すれば、前記データ記憶手段に対し物理的記憶領域へのアクセスを指令する一方、前記使用権の取得に失敗すれば、前記データ記憶手段に対し物理的記憶領域へのアクセスを指令しない構成とされており、
しかも、前記物理領域単位アクセス手段は、前記物理的記憶領域へのアクセス終了後、あらかじめ定められた時間が経過した場合に、取得していた前記使用権を解放する手段として構成され、
前記デバイス側のファイルシステムは、前記ファイルへのアクセス終了が指令された場合または前記ファイルへのアクセス終了と自ら判断できた場合に、前記デバイス側のファイルシステム経由でアクセス中のファイルが他に残っていなければ、取得していた前記使用権を解放する手段として構成されている
ことを特徴とするデバイス。
【請求項２】
前記通信インターフェースは、ＵＳＢ（Universal Serial Bus）インターフェースである
ことを特徴とする請求項１に記載のデバイス。
【請求項３】
前記ＵＳＢインターフェースを介して前記コンピュータと接続した際に、前記コンピュータに、「ＵＳＢストレージデバイスを少なくとも含む複数種のデバイスとして機能可能なＵＳＢ複合デバイス」または「ＵＳＢストレージデバイス」として認識されるデバイスである
ことを特徴とする請求項２に記載のデバイス。
【請求項４】
前記データ解析手段は、前記特殊ＳＣＳＩコマンドが「前記ファイルに対するアクセスを指令するＳＣＳＩコマンド」であるか否かを判定するファイルアクセス要求判定手段
を備え、
前記ファイル単位アクセス手段は、前記ファイルアクセス要求判定手段により、前記特殊ＳＣＳＩコマンドが「前記ファイルに対するアクセスを指令するＳＣＳＩコマンド」である旨の判定がなされた場合に、前記特殊ＳＣＳＩコマンド中に含まれる「前記コンピュータ側から伝達された、アクセス対象となるファイルを指定する情報」を前記デバイス側のファイルシステムに伝達して、当該情報によって指定されたファイルへのアクセスを前記デバイス側のファイルシステムに指令するとともに、当該アクセスに伴って前記デバイス側のファイルシステムから返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送する
ことを特徴とする請求項１〜請求項３のいずれか一項に記載のデバイス。
【請求項５】
前記ファイルアクセス要求判定手段は、前記コンピュータ側から前記データ伝送路を介して伝送されてくるＳＣＳＩコマンドが、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、または「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドのいずれかである場合に、「前記ファイルに対するアクセスを要求するＳＣＳＩコマンド」であると判定する
ことを特徴とする請求項４に記載のデバイス。
【請求項６】
前記データ解析手段は、前記特殊ＳＣＳＩコマンドが「前記モード切り替え手段によるモードの切り替えを要求するＳＣＳＩコマンド」であるか否かを判定するモード切り替え要求判定手段
を備え、
前記モード切り替え手段は、前記モード切り替え要求判定手段により、「前記モードの切り替えを要求するＳＣＳＩコマンド」である旨の判定がなされた場合に、前記特殊ＳＣＳＩコマンドを構成するデータ列中にある情報に基づいて、前記第１，第２のモードをいずれかに切り替える
ことを特徴とする請求項４または請求項５に記載のデバイス。
【請求項７】
前記モード切り替え要求判定手段は、前記コンピュータ側から前記データ伝送路を介して伝送されてくるＳＣＳＩコマンドが、「Ｉｎｑｕｉｒｙ」コマンドで、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ＥＶＰＤ（Enable Vital Product Data）」領域の値が「１」とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ページ・コード」領域の値があらかじめ定められた値とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「アローケーション長」領域内のあらかじめ定められたビットが「１」とされている場合に、「前記モードの切り替えを要求するＳＣＳＩコマンド」であると判定する
ことを特徴とする請求項６に記載のデバイス。
【請求項８】
少なくともプリンタ機能およびメモリカードリーダ機能を有する複合機として構成されたデバイスであって、
前記データ処理手段は、メモリカード上のファイルから読み込んだ画像データに基づいて画像を印刷するデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されている
ことを特徴とする請求項１〜請求項７のいずれか一項に記載のデバイス。
【請求項９】
少なくとも静止画撮影機能を有するデジタルカメラとして構成されたデバイスであって、
前記データ処理手段は、撮影された静止画をメモリ上のファイルに書き込むデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されている
ことを特徴とする請求項１〜請求項７のいずれか一項に記載のデバイス。
【請求項１０】
少なくとも音楽再生機能を有するポータブルオーディオプレーヤーとして構成されたデバイスであって、
前記データ処理手段は、メモリ上のファイルから読み込んだオーディオデータに基づいて音楽を再生するデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されている
ことを特徴とする請求項１〜請求項７のいずれか一項に記載のデバイス。
【請求項１１】
コンピュータと請求項１〜請求項１０のいずれか一項に記載のデバイスとを、ＵＳＢインターフェースを介して接続することによって構成され、
前記コンピュータは、クライアント機能を有するクライアントコンピュータとの間でファイルを伝送可能なサーバー機能を有するサーバーコンピュータであり、
前記クライアントコンピュータからのアクセス要求に応じて、前記データ伝送路を介して前記デバイスが備える前記ファイル単位アクセス手段へとアクセス要求を伝達するとともに、当該アクセス要求に応じた前記デバイスから返される前記応答データを、前記クライアントコンピュータへと伝送可能に構成されている
ことを特徴とするファイル伝送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＣＳＩ規格で規定されたＳＣＳＩコマンドを利用してコンピュータから制御可能なストレージデバイスとしての機能を有するデバイス、および当該デバイスとコンピュータとによって構成されるファイル伝送システムに関する。
【背景技術】
【０００２】
従来、ＵＳＢ（Universal Serial Bus）接続型のフラッシュメモリカードリーダー／ライターは、ＵＳＢストレージ型のもの（＝ＵＳＢマスストレージクラスに準拠したもの）が圧倒的に主流であり、その他の方式は皆無に近い。
【０００３】
また、この種のカードリーダー／ライター機能に加えて、他の機能をも有するＵＳＢ接続型の多機能デバイス（例えば、プリンタ機能やスキャナ機能等を有する複合機等）に関しても、上記カードリーダー／ライター単体機に倣うかたちになっている。
【０００４】
そのため、ほとんどの機種において、ＰＣ（パーソナルコンピュータ）からは、カードリーダー／ライター機能がＵＳＢストレージ型のデバイスとして認識されるようになっている。
【０００５】
ところで、この種のカードリーダー／ライター機能を有する多機能デバイスにおいて、多機能デバイス内蔵の制御部と多機能デバイスに接続されるＰＣとの両方から、同時にメモリカードがアクセスされると、様々な問題が生じる可能性がある。
【０００６】
そのため、このような問題を回避するための技術として、多機能デバイス内蔵の制御部と多機能デバイスに接続されるＰＣが、互いに排他的にメモリカードへのアクセスを実行する技術が、既に提案されている（例えば、特許文献１参照。）。
【特許文献１】特開２００４−９４４９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記従来技術の如く、メモリカードへのアクセスを単に排他的に実行するだけでは、メモリカードが比較的長期にわたってＰＣに占有されやすくなる傾向があった。そのため、多機能デバイス内蔵の制御部は、メモリカードにアクセスできない状況に陥りやすく、多機能デバイス単体で作動する機能を利用する機会が多い利用者にとっては、多機能デバイスの使い勝手が悪くなってしまう、という問題があった。
【０００８】
このような問題は、ＰＣと多機能デバイス内蔵の制御部とで、メモリカードへのアクセス方式に違いがあるために発生する。すなわち、まず、ＰＣ側からのアクセスについて説明すると、ＰＣは、ＵＳＢストレージデバイス上のファイルに対するアクセスを行う際、ＰＣ側にあるデバイス側のファイルシステム経由でメモリカードにアクセスする。
【０００９】
このとき、ＰＣ側から多機能デバイスへは、メモリカードが有する物理的記憶領域に対するアクセス要求（＝例えば、物理的記憶領域からのデータ読み出し要求、あるいは、物理的記憶領域へのデータ書き込み要求）が到来する。しかし、ＰＣ側にあるファイルシステムからは、ＰＣからメモリカードへのアクセスが完全に終了した旨の明示的な通知等は到来しない。
【００１０】
そのため、デバイス側では「所定の待機時間が経過するまでＰＣからのアクセスがなければ、ＰＣからのアクセスが終了したものと認識する」といった対処しかできない。その結果、上記待機時間の経過を待つ分だけ、メモリカードへのアクセス権はＰＣ側に無駄に占有されることになる。
【００１１】
一方、多機能デバイス内蔵の制御部からのアクセスについて説明すると、多機能デバイス内蔵の制御部は、デバイス側にあるファイルシステム経由でメモリカードにアクセスする。
【００１２】
このとき、デバイス側にあるファイルシステムによるメモリカードへのアクセスが終了すれば、多機能デバイス内蔵の制御部は、直ちにメモリカードへのアクセス終了を認識できる。したがって、この場合は、ＰＣ側からのアクセスとは異なり、デバイスは、上述の如き待機時間が経過するのを待つ必要が無く、多機能デバイス内蔵の制御部は、メモリカードへのアクセス権を無駄に占有することがない。
【００１３】
以上のようなアクセス方式の違いがあるため、ＰＣ側からのアクセス要求を意図的に優先処理している訳ではないものの、結果的に、ＰＣによる占有期間は長くなりやすく、多機能デバイス内蔵の制御部は、メモリカードにアクセスできない状況に陥りがちであった。
【００１４】
本発明は、上記のような問題を解決するためになされたものであり、その目的は、ＰＣ側からアクセス要求が到来する場合でも、デバイス内蔵の制御部からのアクセス要求を迅速に処理可能なデバイスを提供することにある。また、そのようなデバイスを利用して構成されたファイル伝送システムを提供することにある。
【課題を解決するための手段】
【００１５】
以下、本発明において採用した構成について説明する。
請求項１に記載のデバイスは、ＳＣＳＩ（Small Computer System Interface）規格に準拠した方式でデータ列を伝送可能な通信インターフェースを介してコンピュータと接続可能で、ＳＣＳＩ規格で規定されたＳＣＳＩコマンドを利用して前記コンピュータから制御可能なストレージデバイスとして機能するデバイスであって、データを記憶可能な物理的記憶領域を指定する情報が伝達されて、当該指定された物理的記憶領域へのアクセスが指令された場合に、当該指定された物理的記憶領域にアクセスして、前記物理的記憶領域に記憶されたデータの読み出しまたは前記物理的記憶領域へのデータの書き込みを実行可能なデータ記憶手段と、前記データ記憶手段の前記物理的記憶領域に記憶されるデータをファイルとして管理するとともに、当該ファイルにアクセスするためのインターフェースを提供しており、当該インターフェースを利用して、ファイルを指定する情報が伝達されて、当該指定されたファイルへのアクセスが指令された場合に、当該指定されたファイルに対応する物理的記憶領域へのアクセスを前記データ記憶手段へ指令することたアクセスにより、前記ファイルに記憶されたデータの読み出しまたは前記ファイルへのデータの書き込みを実行するデバイス側のファイルシステムと、所定のデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスするデータ処理手段と、前記ＳＣＳＩコマンドの内、あらかじめ選定された数種類のコマンドを特殊ＳＣＳＩコマンド、前記特殊ＳＣＳＩコマンド以外のコマンドを標準ＳＣＳＩコマンドとして、前記標準ＳＣＳＩコマンドを利用して前記ストレージデバイスへアクセスすることを許可する第１のモードと、前記標準ＳＣＳＩコマンドを利用して前記ストレージデバイスへアクセスすることを禁止する第２のモードとを、いずれかに切り替え可能で、利用者が所定の操作を行うことによって前記デバイスに対し前記第１，第２のモードいずれかへの切り替えが指示された際に、当該切り替えを行うモード切り替え手段と、前記コンピュータによって前記ストレージデバイスが認識されるのに伴って前記コンピュータと前記ストレージデバイスとの間に論理的なデータ伝送路が構成された後、その論理的なデータ伝送路を介して前記コンピュータ側からＳＣＳＩコマンドが伝送された場合に、当該ＳＣＳＩコマンドが、「前記コンピュータが前記コンピュータ側のファイルシステム経由で、前記ストレージデバイスへのアクセスを要求した場合に、前記コンピュータ側から伝送されてくることになる前記標準ＳＣＳＩコマンド」か、「前記コンピュータが前記デバイス側のファイルシステム経由で前記デバイス側のファイルシステムが管理するファイルへのアクセスを要求する場合に、前記コンピュータ側から伝送されてくることになる前記特殊ＳＣＳＩコマンド」かを解析するデータ解析手段と、前記モード切り替え手段によって前記第１のモードまたは前記第２のモードのいずれに切り替えられているのかを判定するモード判定手段と、前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記標準ＳＣＳＩコマンドであると解析され、且つ、前記モード判定手段によって��記第１のモードに切り替えられていると判定された場合に、前記標準ＳＣＳＩコマンド中に含まれる「前記コンピュータ側のファイルシステムから伝達された、アクセス対象となる物理的記憶領域を指定する情報」を前記データ記憶手段に伝達して、当該情報によって指定された物理的記憶領域へのアクセスを前記データ記憶手段に指令するとともに、当該アクセスに伴って前記データ記憶手段から返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送する物理領域単位アクセス手段と、前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記標準ＳＣＳＩコマンドであると解析され、且つ、前記モード判定手段によって前記第２のモードに切り替えられていると判定された場合に、前記データ記憶手段に記憶媒体がセットされていない旨の擬似的な応答を、前記データ伝送路を介して前記コンピュータ側へと伝送する疑似応答手段と、前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記データ解析手段によって前記特殊ＳＣＳＩコマンドであると解析された場合に、前記特殊ＳＣＳＩコマンド中に含まれる「前記コンピュータ側から伝達された、アクセス対象となるファイルを指定する情報」を前記デバイス側のファイルシステムに伝達して、当該情報によって指定されたファイルへのアクセスを前記デバイス側のファイルシステムに指令するとともに、当該アクセスに伴って前記デバイス側のファイルシステムから返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送するファイル単位アクセス手段とを備え、前記物理領域単位アクセス手段および前記デバイス側のファイルシステムは、互いに排他的に前記データ記憶手段の使用権を取得可能で、前記コンピュータ側から前記ＳＣＳＩコマンドが伝送された際、前記使用権の取得中であるか取得に成功すれば、前記データ記憶手段に対し物理的記憶領域へのアクセスを指令する一方、前記使用権の取得に失敗すれば、前記データ記憶手段に対し物理的記憶領域へのアクセスを指令しない構成とされており、しかも、前記物理領域単位アクセス手段は、前記物理的記憶領域へのアクセス終了後、あらかじめ定められた時間が経過した場合に、取得していた前記使用権を解放する手段として構成され、前記デバイス側のファイルシステムは、前記ファイルへのアクセス終了が指令された場合または前記ファイルへのアクセス終了と自ら判断できた場合に、前記デバイス側のファイルシステム経由でアクセス中のファイルが他に残っていなければ、取得していた前記使用権を解放する手段として構成されていることを特徴とする。
【００１６】
このデバイスにおいて、「ＳＣＳＩ規格に準拠した方式でデータ列を伝送可能な通信インターフェース」としては、ＳＣＳＩインターフェースはもちろんのこと、内部的にＳＣＳＩ規格に準拠した方式でデータ列を伝送する各種通信インターフェースが含まれる。
【００１７】
具体的な例としては、例えば、請求項２に記載の通り、ＵＳＢインターフェースを挙げることができる。すなわち、ＵＳＢインターフェースは、ＵＳＢストレージデバイスとの接続時に、内部的にはＳＣＳＩ規格に準拠した方式でデータ列を伝送する構成となっている。
【００１８】
また、ＵＳＢインターフェース以外にも、例えば、ＩＤＥ（Integrated Drive Electronics）コントローラにＡＴＡＰＩ（AT Attachment Packet Interface）対応デバイスを接続した際には、内部的にＳＣＳＩ規格に準拠した方式でデータ列が伝送される。
【００１９】
あるいは、ＩＥＥＥ１３９４（Institute of Electrical and Electronic Engineers 1394）などの通信インターフェースも、内部的にＳＣＳＩ規格に準拠した方式でデータ列を伝送するように構成されている。
【００２０】
これらの通信インターフェースは、いずれも本発明でいう「ＳＣＳＩ規格に準拠した方式でデータ列を伝送可能な通信インターフェース」に相当する。なお、以下の説明では、これらの通信インターフェースを介してＳＣＳＩ規格に準拠した方式でコンピュータとの通信を行うストレージデバイスのことを、ＳＣＳＩ系ストレージデバイスと総称する。
【００２１】
また、そのようなＳＣＳＩ系ストレージデバイスとしての機能と、別デバイスとしての機能を兼ね備えた複合型のデバイスについても、特に区別する必要がない限り、以下の説明では、ＳＣＳＩ系ストレージデバイスに含まれるものとして扱う。
【００２２】
具体例を挙げれば、請求項３に記載のように、前記ＵＳＢインターフェースを介して前記コンピュータと接続した際に、前記コンピュータに、「ＵＳＢストレージデバイスを少なくとも含む複数種のデバイスとして機能可能なＵＳＢ複合デバイス」または「ＵＳＢストレージデバイス」として認識されるデバイスは、いずれも本発明でいうＳＣＳＩ系ストレージデバイスに含まれるものである。
【００２３】
以上のような通信インターフェースを介して本発明のデバイスをコンピュータに接続し、コンピュータ側においてデバイスとのデータ通信を行うために必要なドライバ等がロードされると、コンピュータとデバイスとの間には、論理的なデータ伝送路が構成される。そして、このようなデータ伝送路が構成されたら、以後、コンピュータは、ＳＣＳＩ規格に準拠した通信手順にて、ＳＣＳＩ規格で規定されたＳＣＳＩコマンドを伝送可能となる。
【００２４】
このような前提の下、本発明のデバイスにおいては、コンピュータがＳＣＳＩ規格で規定されたＳＣＳＩコマンドを利用して、ＳＣＳＩ系ストレージデバイスに対するアクセスを行う際に、２通りのアクセス方式を利用できるように構成した。
【００２５】
具体的には、第１のアクセス方式として、コンピュータ側にあるファイルシステム経由でＳＣＳＩ系ストレージデバイスに対するアクセスを行う方式を利用可能とした。また、第２のアクセス方式として、デバイス内蔵のファイルシステム経由でＳＣＳＩ系ストレージデバイスに対するアクセスを行う方式を利用可能とした。
【００２６】
第１のアクセス方式は、ＳＣＳＩ系ストレージデバイスにおいて一般的に採用されているアクセス方式で、この場合、コンピュータ側からは、デバイスが備えるデータ記憶手段の物理的記憶領域にアクセスするためのＳＣＳＩコマンド（本発明でいう標準ＳＣＳＩコマンド）が伝送されてくる。
【００２７】
一方、第２のアクセス方式は、本発明のデバイスにおいて独自に採用したアクセス方式で、この場合、コンピュータ側からは、第１のアクセス方式では利用しないＳＣＳＩコマンド（本発明でいう特殊ＳＣＳＩコマンド）が伝送されてくる。この特殊ＳＣＳＩコマンドは、本発明のデバイスにおいて、ＳＣＳＩ規格に準拠した範囲内で機能を独自に定義したコマンドとなっている。
【００２８】
そこで、デバイス側では、上記特殊ＳＣＳＩコマンドが伝送されてきたか否かに基づき、２通りのアクセス方式のいずれを利用するアクセスなのかを判別するようにした。具体的には、標準ＳＣＳＩコマンドが伝送されてきた場合は、ＳＣＳＩ規格で規定された通りの方式でＳＣＳＩ系ストレージデバイスにアクセスするためのデータとして扱うように構成した。
【００２９】
また、特殊ＳＣＳＩコマンドが伝送されてきた場合は、独自に規定した処理を実行する構成とし、独自に規定した処理の一つとして、デバイス内蔵のファイルシステム経由でファイルにアクセスする処理を実行するように構成した。
【００３０】
このような構成を採用すれば、コンピュータからデバイスへ特殊ＳＣＳＩコマンドを伝送することにより、標準ＳＣＳＩコマンドを伝送した場合とは異なり、デバイス内蔵のファイルシステム経由でファイルにアクセスすることができる。また、デバイス内蔵のデータ処理手段も、所定のデータ処理を実行した際には、デバイス内蔵のファイルシステム経由でファイルにアクセスする。
【００３１】
つまり、コンピュータからのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求が、双方ともにデバイス内蔵のファイルシステム経由で処理される。
しかも、物理領域単位アクセス手段とデバイス側のファイルシステムは、互いに排他的にデータ記憶手段の使用権を取得可能で、コンピュータ側からＳＣＳＩコマンドが伝送された際、使用権の取得中であるか取得に成功すれば、データ記憶手段に対し物理的記憶領域へのアクセスを指令し、使用権の取得に失敗すれば、データ記憶手段に対し物理的記憶領域へのアクセスを指令しない。
そして、物理領域単位アクセス手段は、物理的記憶領域へのアクセス終了後、あらかじめ定められた時間が経過した場合に、取得していた使用権を解放する一方、デバイス側のファイルシステムは、ファイルへのアクセス終了が指令された場合またはファイルへのアクセス終了と自ら判断できた場合に、デバイス側のファイルシステム経由でアクセス中のファイルが他に残っていなければ、取得していた使用権を解放する。
したがって、コンピュータがコンピュータ側のファイルシステム経由でストレージデバイスを利用した場合には、ＳＣＳＩ規格に準拠した手順でアクセスを行う結果、デバイス側では物理領域単位アクセス手段を利用したアクセスを行うことになるので、この場合、物理領域単位アクセス手段は、あらかじめ定められた時間が経過するまで使用権を解放しないことになるが、これに対し、コンピュータやデバイス内蔵のデータ処理手段が、デバイス内蔵のファイルシステム経由でファイルにアクセスする場合は、デバイス側のファイルシステム経由でアクセス中のファイルが残っていなければ、デバイス内蔵のファイルシステムが直ちに使用権を解放するので、通常のＳＣＳＩ系ストレージデバイスとは異なり、コンピュータからのアクセス完了を判断するために所定の待機時間が経過するのを待つ必要はなく、データ記憶手段へのアクセス権がコンピュータ側に無駄に占有されることがない。
【００３２】
よって、コンピュータからのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求について、いずれか一方の処理が完了すれば直ちに他方の処理に移ることができ、どちらも迅速な処理が可能となる。
【００３３】
また、上記のようなコンピュータからのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求が同時に発生するような状況下でも、それらの要求すべてがデバイス内蔵ファイルシステムによって適切に管理・処理される。
【００３４】
したがって、コンピュータ側にあるファイルシステム経由でのストレージデバイスに対するアクセス要求とデバイス内蔵のデータ処理手段からのアクセス要求が同時に発生する場合とは異なり、複数のアクセス要求が同時に発生しても何ら問題はなく、各要求に対する処理については、デバイス内蔵ファイルシステムの管理下で、見かけ上同時処理ないし並列処理することも可能となる。
【００３５】
また、以上のような構成に加え、本発明のデバイスは、標準ＳＣＳＩコマンドを利用してストレージデバイスへアクセスすることを許可する第１のモードと、標準ＳＣＳＩコマンドを利用してストレージデバイスへアクセスすることを禁止する第２のモードとを切り替え可能となっている。
【００３６】
そのため、コンピュータがデバイスにアクセスし、コンピュータから上述の標準ＳＣＳＩコマンドが伝送されてきた場合、デバイスのモードが第１のモードに切り替えられていれば、コンピュータによるデバイスへのアクセスが許可される。この場合、デバイスは通常のＳＣＳＩデバイスと同様に機能する。
【００３７】
一方、コンピュータがデバイスにアクセスし、コンピュータから上述の標準ＳＣＳＩコマンドが伝送されてきた場合、デバイスのモードが第２のモードに切り替えられていれば、コンピュータによるデバイスへのアクセスが禁止される。この場合、データ記憶手段に記憶媒体がセットされていない旨の擬似的な応答が、コンピュータ側へと伝送される。
【００３８】
このような応答を返すことにより、コンピュータとデバイスとの接続を維持ししたまま、標準ＳＣＳＩコマンドによるデバイスへのアクセスを阻止することができる。そして、この状態でコンピュータからデバイスへのアクセスを行うために、上述の特殊ＳＣＳＩコマンドが利用され、これにより、コンピュータがデバイス側にあるファイルシステム経由でデバイス側のファイルにアクセス可能となる。
【００３９】
すなわち、デバイスが第１，第２のモードいずれに切り替わった場合でも、コンピュータとデバイスとの接続は維持され、これにより、ＳＣＳＩデータを伝送可能な論理的なデータ伝送路も維持される。
【００４０】
その上で、第１のモードであれば、通常のＳＣＳＩ系ストレージデバイスとして機能し、第２のモードであれば、通常のＳＣＳＩ系ストレージデバイスの機能としては、記憶媒体がセットされていない旨の応答を返す機能以外は無効化される。そして、第２のモードであれば、上述の特殊ＳＣＳＩコマンドが利用可能となるのである。
【００４１】
このような構成を採用すれば、第１のモードに切り替えることにより、通常のＳＣＳＩデバイスとして機能させることができるので、ＳＣＳＩ系ストレージデバイスに対応した数多くの市販アプリケーションをそのまま問題なく利用できる。
【００４２】
また、第２のモードに切り替えることにより、コンピュータからのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求について、双方を迅速に処理することも可能となる。
【００４３】
よって、たとえば、利用者の希望に応じて、ＳＣＳＩデバイスとしての機能を重視する場合は第１のモードに切り替えたり、デバイス内蔵のデータ処理手段による機能を迅速に処理したい場合は第２のモードに切り替えたりすることができる。
【００４４】
さらに、デバイスが第１，第２のモードいずれに切り替わった場合でも、コンピュータとの間のデータ伝送路は、ＳＣＳＩ規格に準拠した単一のデータ伝送路だけで対応できる。したがって、第１，第２のモードそれぞれで別々の通信インタフェースが必要となることはなく、その分だけデバイスの構成（特にハードウェア）を簡素化することができる。よって、第１，第２のモードそれぞれ専用に通信インターフェースを設ける場合に比べ、デバイスを安価に提供可能となる。
【００４５】
次に、請求項４に記載のデバイスは、請求項１〜請求項３のいずれか一項に記載のデバイスにおいて、前記データ解析手段は、前記特殊ＳＣＳＩコマンドが「前記ファイルに対するアクセスを指令するＳＣＳＩコマンド」であるか否かを判定するファイルアクセス要求判定手段を備え、前記ファイル単位アクセス手段は、前記ファイルアクセス要求判定手段により、前記特殊ＳＣＳＩコマンドが「前記ファイルに対するアクセスを指令するＳＣＳＩコマンド」である旨の判定がなされた場合に、前記特殊ＳＣＳＩコマンド中に含まれる「前記コンピュータ側から伝達された、アクセス対象となるファイルを指定する情報」を前記デバイス側のファイルシステムに伝達して、当該情報によって指定されたファイルへのアクセスを前記デバイス側のファイルシステムに指令するとともに、当該アクセスに伴って前記デバイス側のファイルシステムから返される応答データを、前記データ伝送路を介して前記コンピュータ側へと伝送することを特徴とする。
【００４６】
このような構成を採用すれば、特殊ＳＣＳＩコマンドとして、ファイルに対するアクセスを要求するコマンドと、それ以外のコマンドを利用することができるようになる。したがって、ファイルに対するアクセスを要求する場合はもちろんのこと、他の制御をデバイスに指令したい場合にも特殊ＳＣＳＩコマンドを利用できるようになる。
【００４７】
次に、請求項５に記載のデバイスは、請求項４に記載のデバイスにおいて、前記ファイルアクセス要求判定手段は、前記コンピュータ側から前記データ伝送路を介して伝送されてくるＳＣＳＩコマンドが、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、または「Ｒｅａｄ
Ｂｕｆｆｅｒ」コマンドのいずれかである場合に、「前記ファイルに対するアクセスを要求するＳＣＳＩコマンド」であると判定することを特徴とする。
【００４８】
このような構成を採用すれば、コンピュータ側にあるファイルシステム経由でのアクセスを行うのか、デバイス側にあるファイルシステム経由でのアクセスを行うのかを、コンピュータ側で指定する際に、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、または「Ｒｅａｄ
Ｂｕｆｆｅｒ」コマンドのいずれかを使用するか否かによって指定できる。
【００４９】
次に、請求項６に記載のデバイスは、請求項４または請求項５に記載のデバイスにおいて、前記データ解析手段は、前記特殊ＳＣＳＩコマンドが「前記モード切り替え手段によるモードの切り替えを要求するＳＣＳＩコマンド」であるか否かを判定するモード切り替え要求判定手段を備え、前記モード切り替え手段は、前記モード切り替え要求判定手段により、「前記モードの切り替えを要求するＳＣＳＩコマンド」である旨の判定がなされた場合に、前記特殊ＳＣＳＩコマンドを構成するデータ列中にある情報に基づいて、前記第１，第２のモードをいずれかに切り替えることを特徴とする。
【００５０】
このような構成を採用すれば、特殊ＳＣＳＩコマンドとして、ファイルに対するアクセスを要求するＳＣＳＩコマンドと、モード切り替えを要求するＳＣＳＩコマンドを利用することができるようになる。したがって、ファイルに対するアクセスを要求する場合はもちろんのこと、コンピュータ側からデバイスに対してモード切り替えを要求したい場合にも特殊ＳＣＳＩコマンドを利用できるようになる。
【００５１】
次に、請求項７に記載のデバイスは、請求項６に記載のデバイスにおいて、前記モード切り替え要求判定手段は、前記コンピュータ側から前記データ伝送路を介して伝送されてくるＳＣＳＩコマンドが、「Ｉｎｑｕｉｒｙ」コマンドで、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ＥＶＰＤ（Enable Vital Product Data）」領域の値が「１」とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ページ・コード」領域の値があらかじめ定められた値とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「アローケーション長」領域内のあらかじめ定められたビットが「１」とされている場合に、「前記モードの切り替えを要求するＳＣＳＩコマンド」であると判定することを特徴とする。
【００５２】
「Ｉｎｑｕｉｒｙ」コマンドは、本来は、コンピュータがＳＣＳＩデバイスから情報を取得するために用意されたコマンドである。具体的には、「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ＥＶＰＤ（Enable Vital Product Data）」領域の値が「１」とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ページ・コード」領域の値があらかじめ定められた値とされている場合、コンピュータは、ＳＣＳＩデバイスから「ページ・コード」領域の値に対応するＶＰＤ（Vital Product Data）情報を取得することができる。
【００５３】
このＶＰＤ情報のデータ長（以下、データ長Ｓ１と称する。）は、最大２５５バイトで、あらかじめ任意に取り決めておくことができる。また、コンピュータ側では、ＶＰＤ情報を取得する際に、「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「アローケーション長」領域において、ＶＰＤ情報を取得するためのバッファサイズ（以下、バッファサイズＳ２と称する。）を、１バイト（８ビット）のデータで指定することになっている。
【００５４】
ここで、バッファサイズＳ２がデータ長Ｓ１以上となっていれば、ＶＰＤ情報を欠落無く取得することができるので、バッファサイズＳ２がデータ長Ｓ１よりも大きい値となっていることは、ＶＰＤ情報を取得する上では特に問題はない。
【００５５】
そのため、例えば、データ長Ｓ１を下位ｎビット（ただし、ｎ＜８）で表現可能な値とした場合であれば、バッファサイズＳ２については、上位（８−ｎ）ビットすべてが「０」とならない限り、各ビットにどのような値がセットされたとしても、データ長Ｓ１よりも大きい値とすることが可能であり、ＶＰＤ情報を取得する上では特に問題はないことになる。また、上位（８−ｎ）ビットすべてが「０」となる場合でも、下位ｎビットがデータ長Ｓ１以上となっていれば、ＶＰＤ情報を取得する上では特に問題はないことになる。
【００５６】
そこで、このような特徴を利用して、請求項７に記載のデバイスにおいては、バッファサイズＳ２がデータ長Ｓ１よりも大きい値となる範囲内で、「アローケーション長」領域の各ビットに意味を持たせて、コンピュータからデバイスへの情報伝達領域として利用することにした。
【００５７】
これにより、「アローケーション長」領域内のあらかじめ定められたビットが「１」とされている場合に、「Ｉｎｑｕｉｒｙ」コマンドが、「Ｉｎｑｕｉｒｙ」コマンド本来の機能以外に、「前記モードの切り替えを要求するＳＣＳＩコマンド」としても機能するようにした。
【００５８】
すなわち、デバイス側では、コンピュータから「Ｉｎｑｕｉｒｙ」コマンドが到来すれば、「Ｉｎｑｕｉｒｙ」コマンド本来の機能を実現するために、コンピュータに対してＶＰＤ情報を返すが、さらに、「アローケーション長」領域内のあらかじめ定められたビットが「１」とされているか否かをも判断するようにした。
【００５９】
そして、「アローケーション長」領域内のあらかじめ定められたビットが「１」とされている場合には、そのビットに対して割り当てられた意味に従って、第１，第２のモードをいずれかに切り替えるようにした。
【００６０】
このような構成を採用すれば、第１，第２のモードをいずれかに切り替えるのかを、「Ｉｎｑｕｉｒｙ」コマンドを利用して、コンピュータ側からデバイスへ指令できるようになる。
【００６１】
次に、請求項８に記載のデバイスは、請求項１〜請求項７のいずれか一項に記載のデバイスにおいて、少なくともプリンタ機能およびメモリカードリーダ機能を有する複合機として構成されたデバイスであって、前記データ処理手段は、メモリカード上のファイルから読み込んだ画像データに基づいて画像を印刷するデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されていることを特徴とする。
【００６２】
このように構成されたデバイスによれば、第１のモードに切り替えることにより、複合機であるデバイスをＵＳＢストレージデバイスとして機能させることができる。また、第２モードに切り替えることにより、コンピュータからのファイルアクセスを許容したまま（すなわち、カードリーダー機能が利用できる状態のまま）、デバイス内蔵のデータ処理手段による「メモリーカード上のファイルを印刷する機能」をも利用可能とすることができる。
【００６３】
次に、請求項９に記載のデバイスは、請求項１〜請求項７のいずれか一項に記載のデバイスにおいて、少なくとも静止画撮影機能を有するデジタルカメラとして構成されたデバイスであって、前記データ処理手段は、撮影された静止画をメモリ上のファイルに書き込むデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されていることを特徴とする。
【００６４】
このように構成されたデバイスによれば、第１のモードに切り替えることにより、デジタルカメラであるデバイスをＵＳＢストレージデバイスとして機能させることができる。また、第２モードに切り替えることにより、コンピュータからのファイルアクセスを許容したまま（すなわち、カードリーダー機能が利用できる状態のまま）、デバイス内蔵のデータ処理手段による静止画撮影機能をも利用可能とすることができる。
【００６５】
次に、請求項１０に記載のデバイスは、請求項１〜請求項７のいずれか一項に記載のデバイスにおいて、少なくとも音楽再生機能を有するポータブルオーディオプレーヤーとして構成されたデバイスであって、前記データ処理手段は、メモリ上のファイルから読み込んだオーディオデータに基づいて音楽を再生するデータ処理を実行可能で、当該データ処理の際に、前記デバイス側のファイルシステム経由で前記ファイルにアクセスする手段として構成されていることを特徴とする。
【００６６】
このように構成されたデバイスによれば、第１のモードに切り替えることにより、ポータブルオーディオプレーヤーであるデバイスをＵＳＢストレージデバイスとして機能させることができる。また、第２モードに切り替えることにより、コンピュータからのファイルアクセスを許容したまま（すなわち、カードリーダー機能が利用できる状態のまま）、デバイス内蔵のデータ処理手段による音楽再生機能をも利用可能とすることができる。
【００６７】
次に、請求項１１に記載のファイル伝送システムは、コンピュータと請求項１〜請求項１０のいずれか一項に記載のデバイスとを、ＵＳＢインターフェースを介して接続することによって構成され、前記コンピュータは、クライアント機能を有するクライアントコンピュータとの間でファイルを伝送可能なサーバー機能を有するサーバーコンピュータであり、前記クライアントコンピュータからのアクセス要求に応じて、前記データ伝送路を介して前記デバイスが備える前記ファイル単位アクセス手段へとアクセス要求を伝達するとともに、当該アクセス要求に応じた前記デバイスから返される前記応答データを、前記クライアントコンピュータへと伝送可能に構成されていることを特徴とする。
【００６８】
このように構成されたファイル伝送システムによれば、クライアントコンピュータは、サーバーコンピュータ経由でデバイス上のファイルにアクセスすることができる。したがって、複数のクライアントコンピュータが、デバイス上のファイルにアクセスすることも可能となる。
【発明を実施するための最良の形態】
【００６９】
次に、本発明の実施形態について、いくつかの具体的な例を挙げて説明する。
（１）第１実施形態
まず、第１実施形態について説明する。
【００７０】
［ファイル伝送システムの構成］
図１は、本発明の実施形態の一例として例示するファイル伝送システム全体のブロック図である。
【００７１】
このファイル伝送システムは、複合機１およびＰＣ（Personal Computer）２を中心に構成されたものである。複合機１およびＰＣ２は、双方ともＵＳＢインターフェースを有するもので、ＵＳＢ−ＨＵＢ３を介して接続されて相互間でデータ伝送ができるようになっている。また、ＵＳＢ−ＨＵＢ３には、他のＵＳＢデバイス４なども接続されている。
【００７２】
また、複合機１およびＰＣ２は、双方ともＬＡＮインターフェースを有し、複合機１は、ＬＡＮ５に接続された機器（例えば、ＰＣ６）との間でデータ伝送可能、ＰＣ２は、ＬＡＮ７に接続された機器（例えば、ＰＣ８）との間でデータ伝送可能となっている。
【００７３】
本実施形態において、複合機１は、プリンタ機能、スキャナ機能、ＰＣ−ＦＡＸ機能、カードリーダ機能などを備える多機能デバイスで、これらの機能をＰＣ２から制御できるようになっている。
【００７４】
［複合機の内部構成］
図２は、複合機１の内部構成を示すブロック図である。
複合機１は、ＵＳＢインターフェースを構成するためのハードウェアとして、ＵＳＢプロトコルエンジン１０１、共通制御回路１０２、プリンタ系データ入出力回路１０３、スキャナ系データ入出力回路１０４、ＰＣ−ＦＡＸ系データ入出力回路１０５、およびカードリーダ系データ入出力回路１０６などを備えている。
【００７５】
ＰＣ２との間でデータ伝送を行う際には、上記ＵＳＢプロトコルエンジン１０１による制御下で、ＵＳＢ規格の通信プロトコルにてデータが伝送される。これらのハードウェアは、エンドポイントを介してＰＣ２との間でデータを伝送するように構成されている。
【００７６】
具体的には、共通制御回路１０２は、コントロール転送用のエンドポイント（以下、ＥＰ０と称する。）を介して、ＰＣ２との間で各種制御データの入出力（双方向通信）を行う。
【００７７】
また、プリンタ系データ入出力回路１０３、スキャナ系データ入出力回路１０４、ＰＣ−ＦＡＸ系データ入出力回路１０５、およびカードリーダ系データ入出力回路１０６は、それぞれが入力データ用のエンドポイントおよび出力データ用のエンドポイント（以下、ＥＰ１〜８と称する。）を介して、ＰＣ２との間でデータを伝送する。
【００７８】
プリンタ系データ入出力回路１０３へデータが伝送された場合、そのデータはプリンタ入出力タスク１１１へと伝送される。プリンタ入出力タスク１１１へ伝送されたデータは、さらに印字制御タスク１１３へと伝送されて、印字制御タスク１１３によってプリンタハードウェア１１５が制御される。
【００７９】
また、スキャナ系データ入出力回路１０４へデータが伝送された場合、そのデータはスキャナ入出力タスク１２１へと伝送される。スキャナ入出力タスク１２１へ伝送されたデータは、さらにスキャナ制御タスク１２３へと伝送されて、スキャナ制御タスク１２３によってスキャナハードウェア１２５が制御される。
【００８０】
また、ＰＣ−ＦＡＸ系データ入出力回路１０５へデータが伝送された場合、そのデータはＰＣ−ＦＡＸ入出力タスク１３１へと伝送される。ＰＣ−ＦＡＸ入出力タスク１３１へ伝送されたデータは、さらにモデム制御タスク１３３へと伝送されて、モデム制御タスク１３３によってモデムハードウェア１３５が制御される。
【００８１】
また、カードリーダ系データ入出力回路１０６へデータが伝送された場合、そのデータはＳＣＳＩコマンド解析タスク１４１へと伝送される。
ＳＣＳＩコマンド解析タスク１４１は、ＰＣ２側から伝送されてくるＳＣＳＩコマンドが、あらかじめ選定された特殊ＳＣＳＩコマンドか当該特殊ＳＣＳＩコマンド以外の標準ＳＣＳＩコマンドかを解析する。そして、その解析結果に応じて、２系統あるデータ処理系のいずれかへＳＣＳＩコマンドを振り分ける。このＳＣＳＩコマンド解析タスク１４１は、本発明でいうデータ解析手段の一例に相当するものである。なお、ＳＣＳＩコマンド解析タスク１４１において実行される具体的な処理や、特殊ＳＣＳＩコマンドと標準ＳＣＳＩコマンドとの違いについては、後で詳しく説明する。
【００８２】
ＰＣ２側から伝送されてくるＳＣＳＩコマンドが標準ＳＣＳＩコマンド（詳しくは後述）であった場合、ＳＣＳＩコマンド解析タスク１４１は、物理セクタ単位入出力タスク１４３へデータを振り分ける。この物理セクタ単位入出力タスク１４３は、本発明でいう物理領域単位アクセス手段の一例に相当する。
【００８３】
物理セクタ単位入出力タスク１４３は、受け取ったデータをメモリスロット制御タスク１４５へと伝送する処理などを実行するが、この処理の詳細については後述する。そして、メモリスロット制御タスク１４５は、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４に対する制御を実行する。
【００８４】
第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、第４メモリスロット１５４は、いずれもメモリカードが装着されるスロットで、それぞれが他のスロットとは異なる規格のメモリカードを装着できる構造になっている。これら第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、第４メモリスロット１５４は、本発明でいうデータ記憶手段の一例に相当する。
【００８５】
なお、本実施形態において、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４は、それぞれが排他的に利用可能となるものである。例えば、第１メモリスロット１５１にメモリカードが装着された場合、そのメモリカードが取り外されるまで、他のスロットは利用不能となる。
【００８６】
一方、ＰＣ２側から伝送されてくるＳＣＳＩコマンドが、ファイルアクセス関連の特殊ＳＣＳＩコマンド（詳しくは後述）であった場合、ＳＣＳＩコマンド解析タスク１４１は、ファイル単位入出力タスク１６１へデータを振り分ける。このファイル単位入出力タスク１６１は、本発明でいうファイル単位アクセス手段の一例に相当する。
【００８７】
ファイル単位入出力タスク１６１は、受け取ったデータをファイルシステムタスク１６３経由でメモリスロット制御タスク１４５へと伝送する処理を実行する。この処理の詳細については後述する。なお、ファイルシステムタスク１６３は、本発明でいうファイルシステムの一例に相当する。
【００８８】
ファイル単位入出力タスク１６１からファイルシステムタスク１６３経由でメモリスロット制御タスク１４５へデータが伝送されたら、この場合も、メモリスロット制御タスク１４５は、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４に対する制御を実行する。
【００８９】
さらに一方、ＳＣＳＩコマンド解析タスク１４１は、ＰＣ２側から伝送されてくるＳＣＳＩコマンドが、モード関連の特殊ＳＣＳＩコマンド（詳しくは後述）であった場合、物理セクタ単位入出力タスク１４３に対してモードチェンジを要求する処理や現在のモードを取得する処理なども実行する。この処理の詳細も後述する。
【００９０】
さらに、複合機１は、メディアプリント機能１７１およびＦＴＰ（File Transfer Protocol）サーバータスク１７３を備えている。これらメディアプリント機能１７１およびＦＴＰサーバータスク１７３は、本発明でいうデータ処理手段の一例に相当し、ＰＣ２とは独立に複合機１単体で実行可能な機能を制御するものである。
【００９１】
具体的には、メディアプリント機能１７１は、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４の内、いずれかに装着されたメモリカードから画像ファイルを読み込んで、その画像ファイルを印刷する機能を制御するものである。
【００９２】
このメディアプリント機能１７１が画像ファイルを読み込む際には、ファイル単位入出力タスク１６１同様、ファイルシステムタスク１６３経由でデータをメモリスロット制御タスク１４５へと伝送する。これにより、画像ファイルへのアクセスが実行されることになる。
【００９３】
また、ＦＴＰサーバータスク１７３は、複合機１が接続されたＬＡＮ５上に存在する機器（例えば、ＰＣ６）から、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４の内、いずれかに装着されたメモリカード上のファイルに対するアクセス要求があった場合に、そのアクセス要求を処理するものである。
【００９４】
このＦＴＰサーバータスク１７３がファイルにアクセスする際にも、ファイル単位入出力タスク１６１同様、ファイルシステムタスク１６３経由でデータをメモリスロット制御タスク１４５へと伝送することにより、ファイルへのアクセスが実行されることになる。
【００９５】
［ＰＣの内部構成］
図３は、ＰＣ２の内部構成を示すブロック図である。
ＰＣ２においては、ＯＳによる標準機能として、ＵＳＢプロトコルスタック２０１、ＵＳＢ複合デバイスドライバ２０２、ＵＳＢストレージドライバ２０３、ＳＣＳＩコマンド処理部２１１、リムーバブルディスクドライバ２２１、ファイルシステム２３１などが機能する。
【００９６】
また、ＰＣ２においては、複合機１に対応する専用ソフトウェアとして、プリントポートドライバ２２３、スキャナドライバ２２５、ＣＯＭポートドライバ２２７、プリンタドライバ２６１などが機能する。
【００９７】
また、ＰＣ２においては、これらの機能を利用するアプリケーションソフトウェアとして、印刷可能アプリケーション２７１、スキャン可能アプリケーション２７３、ＰＣ−ＦＡＸアプリケーション２７５などが機能する。
【００９８】
さらに、本実施形態において、ＰＣ２が備えるＯＳとしては、Ｗｉｎｄｏｗｓ（登録商標）が利用されており、ＰＣ２においては、Ｗｉｎｄｏｗｓ（登録商標）付属のソフトウェアであるエクスプローラ２７７なども機能する。ただし、ＰＣ２が備えるＯＳは、同等な機能を実現できるものであれば、Ｗｉｎｄｏｗｓ（登録商標）以外のＯＳであってもよい。
【００９９】
加えて、ＰＣ２では、ＦＴＰサーバーアプリケーション２８１、ＴＣＰ／ＩＰプロトコル２８３などが機能する。ＦＴＰサーバーアプリケーション２８１は、ＦＴＰクライアントとして機能するＷＥＢブラウザ２８５からのアクセス要求を受けて、複合機１に対してファイルアクセス要求を発行するソフトウェアである。
【０１００】
なお、ＰＣ２においては、他のＵＳＢデバイス４に対応する他のＵＳＢデバイスのドライバ２８７なども機能する。
［複合機およびＰＣの機能概要］
複合機１は、ＰＣ２側で利用者が所定の操作を行うことにより、２つのモードをいずれかに切り替えることができる。
【０１０１】
一方のモードは、ＵＳＢストレージモード（本発明でいう第１のモードに相当；以下、ＵＳＢモードとも称する。）で、このモードに切り替えた場合、ＰＣ２によるＵＳＢストレージデバイスへのアクセスが許可される。
【０１０２】
この場合、複合機１が備える第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４は、通常のＵＳＢストレージデバイスと同様に機能する。
【０１０３】
もう一方のモードは、ＦＴＰサーバーモード（本発明でいう第２のモードに相当；以下、ＦＴＰモードとも称する。）で、このモードに切り替えた場合、ＰＣ２によるＵＳＢストレージデバイスへのアクセスが禁止される。
【０１０４】
この場合、複合機１が備える第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４は、通常のＵＳＢストレージデバイスと同様には機能しない状態となる。具体的には、各スロットにメディアを装着して、そのメディアにＰＣ２からアクセスしようとしても、複合機１からはメディアが装着されていない旨の応答が返る状態になる。
【０１０５】
ただし、ＦＴＰモードに切り替えた場合でも、ＦＴＰモードに対応したアプリケーションは、複合機１が備える第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４にアクセスすることができる。
【０１０６】
なお、ＦＴＰモードに対応したアプリケーションは、通常のＵＳＢストレージデバイス対応アプリケーション側から複合機１に対して発行されるＳＣＳＩコマンド（本発明でいう標準ＳＣＳＩコマンド）とは異なるＳＣＳＩコマンド（本発明でいう特殊ＳＣＳＩコマンド）を複合機１に対して発行する。これについては、後でさらに詳しく説明する。
【０１０７】
複合機１は、ＰＣ２側から伝送されてくるＳＣＳＩコマンドが、標準ＳＣＳＩコマンドか特殊ＳＣＳＩコマンドかを解析し、標準ＳＣＳＩコマンドであれば、ＵＳＢストレージデバイスに対するＳＣＳＩコマンドとしての処理を実行する。具体的には、標準ＳＣＳＩコマンドは、物理セクタ単位入出力タスク１４３へと伝送されて、メディアに対するアクセスは、物理セクタ単位で実行されることになる。
【０１０８】
これに対し、特殊ＳＣＳＩコマンドであれば、ＵＳＢストレージデバイスに対するＳＣＳＩコマンドとは別の処理を実行し、これにより、各スロットへのアクセスを実現する。具体的には、ＳＣＳＩコマンドが、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、または「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドのいずれかであれば、ＳＣＳＩコマンドは、ファイル単位入出力タスク１６１へと伝送されて、メディアに対するアクセスは、ファイルシステムタスク１６３経由にてファイル単位で実行される。
【０１０９】
なお、複合機１において、以上のようなモードをいずれかに切り替えるための構成が、本発明でいうモード切り替え手段の一例に相当する。
［標準ＳＣＳＩコマンドおよび特殊ＳＣＳＩコマンドの仕様と伝送方法］
次に、上述の標準ＳＣＳＩコマンドおよび特殊ＳＣＳＩコマンドの仕様と伝送方法について説明する。
【０１１０】
複合機１においては、ＳＣＳＩコマンドが、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、または「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドのいずれかである場合に、ファイルに対するアクセスを要求する特殊ＳＣＳＩコマンドであると判定する。
【０１１１】
また、ＳＣＳＩコマンドが、「Ｉｎｑｕｉｒｙ」コマンドで、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ＥＶＰＤ」領域の値が「１」とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ページ・コード」領域の値があらかじめ定められた値とされていて、且つ「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「アローケーション長」領域内のあらかじめ定められたビットが「１」とされている場合に、モードの切り替えや現在のモードの取得を要求する特殊ＳＣＳＩコマンドであると判定する。
【０１１２】
なお、上記特殊ＳＣＳＩコマンド以外のＳＣＳＩコマンドについては、標準ＳＣＳＩコマンドであると判定する。
以上のような特殊ＳＣＳＩコマンドの内、まず「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドについて説明する。
【０１１３】
本実施形態において、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドは、これらを２つ〜３つ組み合わせることにより、１回分のファイルアクセスが実行される仕組みを採用している。
【０１１４】
具体的には、まず、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドを利用するに当たっては、各コマンドを構成するデータ列中にある「バッファＩＤ」領域に、以下の値をセットして使用する。
【０１１５】
０ｘ８０：ファイルアクセスコマンド出力（アスキー転送）
０ｘ８１：ファイルアクセスデータ出力（バイナリ転送）
０ｘ８２：ファイルアクセスデータ入力（バイナリ転送）
０ｘ８３：ファイルアクセスステータス入力（アスキー転送）
そして、ファイルアクセスデータ出力、ファイルアクセスデータ入力は、バイナリデータをそのまま転送するものとし、ファイルアクセスコマンド出力、ファイルアクセスステータス入力は、１または複数の文字列を転送するものとする。ファイルアクセスコマンド出力、ファイルアクセスステータス入力において数値を転送したい場合は、その数値を文字列化する。
【０１１６】
また、１または複数の文字列を転送する際には、そのデータ構造を、以下の通りに定義する。
（第１文字列）[0x00]（第２文字列）[0x00]（第３文字列）[0x00]
すなわち、各文字列は、ヌル[0x00]でターミネートされる。また、文字列をターミネートするためのヌル[0x00]に続いて、もう１つヌル[0x00]があった場合は、すべての文字列の終了を表す。
【０１１７】
１または複数の文字列を転送する際、文字列の数は、ファイルアクセスコマンドまたはファイルアクセスステータス毎に異なるものの、少なくとも第１文字列は常に存在する。
ファイルアクセスコマンド出力の場合、第１文字列はファイルアクセスコマンドを表す文字列となっており、例えば、ｆｏｐｅｎ、ｆｒｅａｄ、ｆｗｒｉｔｅ、ｆｓｅｅｋ、ｆｃｌｏｓｅなどの文字列が利用される。
【０１１８】
また、ファイルアクセスコマンド出力の場合、第２文字列以降はパラメータを表し、例えば、ｆｏｐｅｎの場合は、第２文字列がファイル名、第３文字列がオープンモードとなっている。また、ｆｃｌｏｓｅの場合は、第２文字列がハンドル番号（＝文字列化された数値）となっている。なお、これらのパラメータは、Ｃ言語の標準関数に準じた仕様としてある。
【０１１９】
一方、ファイルアクセスステータス入力の場合、第１文字列は「０」か「１」で、「０」は失敗、「１」は成功を表している。また、ファイルアクセスステータス入力の場合、第２文字列以降は第１文字列以外のリターンデータが格納される。
【０１２０】
例えば、ｆｏｐｅｎの場合、第１文字列が「０（失敗）」なら、第２文字列は無し、第１文字列が「１（成功）」なら、第２文字列はハンドル番号（＝文字列化された数値）とされる。また、ｆｃｌｏｓｅの場合は、第２文字列はなしとされる。
【０１２１】
さらに、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドは、これらを２つ〜３つ組み合わせて利用され、これにより、ＰＣ２から複合機１へのコマンド送信と、そのコマンドに対する複合機１からＰＣ２への応答伝送が実現される。
【０１２２】
具体的には、例えば、大量のデータ転送がないファイルアクセス（ｆｏｐｅｎ、ｆｓｅｅｋ、ｆｃｌｏｓｅなど）は、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０：ファイルアクセスコマンド出力」、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８３：ファイルアクセスステータス入力」、以上２つのＳＣＳＩコマンドによって構成される。
【０１２３】
また、大量のデータ出力を伴うファイルアクセスコマンド（ｆｗｒｉｔｅなど）は、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０：ファイルアクセスコマンド出力」、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８１：ファイルアクセスデータ出力」、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８３：ファイルアクセスステータス入力」、以上３つのＳＣＳＩコマンドによって構成される。
【０１２４】
また、大量のデータ入力を伴うファイルアクセスコマンド（ｆｒｅａｄなど）は、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０：ファイルアクセスコマンド出力」、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８２：ファイルアクセスデータ入力」、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８３：ファイルアクセスステータス入力」、以上３つのＳＣＳＩコマンドによって構成される。
【０１２５】
これら「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンド、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドを組み合わせて利用するときの具体的な手順については、さらに後述する処理の中でも説明する。
【０１２６】
さて次に、本実施形態において、特殊ＳＣＳＩコマンドとして扱われる「Ｉｎｑｕｉｒｙ」コマンドの仕様について説明する。
ＳＣＳＩデバイスは、その仕様上、「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「ＥＶＰＤ」領域の値が「１」とされている場合、「ページ・コード」領域の値に対応するＶＰＤ情報を返すことになっている。このＶＰＤ情報の内容は、ＳＣＳＩデバイス毎に定義されたものである。
【０１２７】
本実施形態の場合、複合機１は、ページ・コード０ｘｃ８に対応するＶＰＤ情報として、６３バイトの情報を返すように構成されている。なお、以下の説明においては、この６３バイトのＶＰＤ情報を要求するコマンドのことを、便宜的に「ＶＰＤ−Ｉｎｑｕｉｒｙ
ページコード０ｘｃ８」とも称する。
【０１２８】
この「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行する際、ＰＣ２は、「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中にある「アロケーション長」領域に、ＰＣ２側で受け取り可能なデータサイズ（最大２５５バイト）をセットすることができる。このデータサイズをＶＰＤ情報のサイズ以上の値とすれば、ＶＰＤ情報を欠落無く取得することができる。
【０１２９】
したがって、本実施形態の場合であれば、「アロケーション長」領域にセットする値については、６３〜２５５の範囲内であれば、どのような値をセットしても６３バイトのＶＰＤ情報を欠落無く取得できることになる。
【０１３０】
そこで、本実施形態においては、「アロケーション長」領域にセットする値が６３であった場合、ＰＣ２から複合機１への情報伝達が無く、「アロケーション長」領域にセットする値が６４以上であった場合に、ＰＣ２から複合機１への情報伝達が有るものと見なすことにした。
【０１３１】
すなわち、２進数で表記すると、「アロケーション長」領域にセットする値が００１１１１１１であった場合に、ＰＣ２から複合機１への情報伝達が無く、「アロケーション長」領域にセットする値が０１ｘｘｘｘｘｘまたは１ｘｘｘｘｘｘｘ（ただし、ｘは０または１）であった場合に、ＰＣ２から複合機１への情報伝達が有るものと見なすことにした。
【０１３２】
これは、８ビットの「アロケーション長」領域の最下位のビットをｂｉｔ０、最上位のビットをｂｉｔ７として、上位２ビット（ｂｉｔ７−６）の少なくとも一方が「１」である場合に、情報伝達が有ることを意味する。
【０１３３】
また、上位２ビット（ｂｉｔ７−６）の少なくとも一方が「１」である場合、その値は必ず６４（１０進数）以上となるので、下位６ビット（ｂｉｔ５−０）の各ビットがどのような値をとっても、ＶＰＤ情報を欠落無く取得する上では何ら問題が無い。
【０１３４】
したがって、「アロケーション長」領域にセットする値が０１ｘｘｘｘｘｘまたは１ｘｘｘｘｘｘｘの場合、ｘは０または１のいずれであっても、ＶＰＤ情報を欠落無く取得する上では何ら問題が無く、ＰＣ２側で任意に所望の値をセットできることになる。そこで、本実施形態においては、各ビットが以下のような意味を持つことを規定し、ＰＣ２側で任意に各ビットの値を設定し、その値を複合機１へと伝達する構成を採用した。
【０１３５】
まず、上位２ビット（ｂｉｔ７−６）が「００（２進数）」の場合は、ＰＣ２から複合機１への伝達情報が無いことを意味し、上位２ビット（ｂｉｔ７−６）が「０１（２進数）」、「１ｘ（２進数；ただし、ｘは０または１）」の場合は、ＰＣ２から複合機１への伝達情報が有ることを意味する、と規定した。
【０１３６】
その上で、上位２ビット（ｂｉｔ７−６）が「０１（２進数）」の場合は、下位６ビット（ｂｉｔ５−０）の各ビットに以下のような意味を持たせた。
ｂｉｔ５−３：常に０（ベンダー仕様上の予約）
ｂｉｔ２    ：０＝ハンドルクローズ指示無し
１＝全てのハンドルクローズ指示
ｂｉｔ１    ：０＝モードチェンジ指示無し
１＝モードチェンジ指示有り
ｂｉｔ０    ：（ｂｉｔ１＝１の時のみ有効）
０＝ＵＳＢストレージモード
１＝ＦＴＰサーバーモード
すなわち、アロケーション長「０１０００１００（２進数）／０ｘ４４（１６進数）」の場合、「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行すると、複合機１に対して「全てのハンドルクローズ指示」を指令することになる。
【０１３７】
また、アロケーション長「０１００００１０（２進数）／０ｘ４２（１６進数）」の場合、「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行すると、複合機１に対して「ＵＳＢストレージモードへのモードチェンジ指示（以下、この指示を「ｍｏｄｅｓｅｔ」とも称する）」を指令することになる。
【０１３８】
また、アロケーション長「０１００００１１（２進数）／０ｘ４３（１６進数）」の場合、「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行すると、複合機１に対して「ＦＴＰサーバーモードへのモードチェンジ指示」を指令することになる。
【０１３９】
なお、上位２ビット（ｂｉｔ７−６）が「１ｘ（２進数）」の場合は、下位７ビット（ｂｉｔ６−０）に任意に意味を持たせることができるが、本実施形態では特に利用しないので、常に０（ベンダー仕様上の予約）とした。
【０１４０】
また、上位２ビット（ｂｉｔ７−６）が「００（２進数）」の場合、下位６ビット（ｂｉｔ５−０）の各ビットは具体的な意味を持たないが、６３バイトのＶＰＤ情報を欠落無く取得する都合上、アロケーション長＝６３を指定するには、下位６ビットをすべて１とすることになる。
【０１４１】
さて、以上説明したようなアロケーション長をセットして、「ＶＰＤ−Ｉｎｑｕｉｒｙ
ページコード０ｘｃ８」を発行すると、ＰＣ２は、複合機１から６３バイトのＶＰＤ情報を取得することができる。
【０１４２】
このＶＰＤ情報は、ＳＣＳＩ規格で規定されたヘッダ部分と、実データ部分とで構成され、実データ部分には、以下の３種の情報（それぞれ１バイトの情報；合計３バイト）が格納されている。
【０１４３】
＜１．現在のモード＞
０ｘ００：ＵＳＢストレージモード
０ｘ０１：ＦＴＰサーバーモード）
＜２．モードチェンジ指示の有無とその結果＞
０ｘ００：指示無し
０ｘ０２：指示有り・失敗
０ｘ０３：指示有り・成功
＜３．全ハンドルクローズ指示の有無とその結果＞
０ｘ００：指示無し
０ｘ０２：指示有り・失敗
０ｘ０３：指示有り・成功
すなわち、ＶＰＤ情報としては、常に現在のモードが返されるとともに、上述の「アロケーション長」領域にセットしたビットによって指示した事項がある場合には、その指示に対応する結果が返される。
【０１４４】
以上のような仕組みを利用すれば、例えば、アロケーション長「００１１１１１１（２進数）／０ｘ３ｆ（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行した場合、ＶＰＤ情報としては、現在のモードを取得することができる。
【０１４５】
また、アロケーション長「０１０００１００（２進数）／０ｘ４４（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行した場合、ＶＰＤ情報としては、現在のモード、全ハンドルクローズ指示に対する結果を取得することができる。
【０１４６】
また、アロケーション長「０１００００１０（２進数）／０ｘ４２（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行した場合、ＶＰＤ情報としては、現在のモード、ＵＳＢストレージモードへのモードチェンジ指示に対する結果を取得することができる。
【０１４７】
また、アロケーション長「０１００００１１（２進数）／０ｘ４３（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行した場合、ＶＰＤ情報としては、現在のモード、ＦＴＰサーバーモードへのモードチェンジ指示に対する結果を取得することができる。
【０１４８】
［ＳＣＳＩコマンド解析タスクにおいて実行される処理］
次に、複合機１各部で実行される処理の内、複合機１が備えるＳＣＳＩコマンド解析タスク１４１において実行される処理について、図４に基づいて説明する。
【０１４９】
この処理を開始すると、複合機１は、まず、ＰＣ２からＳＣＳＩコマンドが来たか否かを判断する（Ｓ１０５）。ここで、ＰＣ２からＳＣＳＩコマンドが来なければ（Ｓ１０５：来ない）、Ｓ１０５の処理へ戻る。
【０１５０】
一方、ＰＣ２からＳＣＳＩコマンドが来たら（Ｓ１０５：来た）、そのＳＣＳＩコマンドが「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」か否かを判断する（Ｓ１１０）。ＳＣＳＩコマンドが「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」ではなかった場合（Ｓ１１０：いいえ）、続いて、複合機１は、現在ＦＴＰサーバーモードであるか否かを判断する（Ｓ１１５）。
【０１５１】
ＦＴＰサーバーモードである場合（Ｓ１１５：はい）、複合機１は、ＳＣＳＩコマンドを判断する（Ｓ１２０）。このＳ１１０の処理による判断の結果、ＳＣＳＩコマンドが「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」または「Ｒｅａｄ  Ｂｕｆｆｅｒ」のいずれかである場合（Ｓ１２０：Ｗｒｉｔｅ  ＢｕｆｆｅｒまたはＲｅａｄ  Ｂｕｆｆｅｒ）、複合機１は、ＳＣＳＩコマンドをファイル単位入出力タスク１６１へ伝送し、ファイル単位入出力タスク１６１側での処理終了を待つ（Ｓ１２５）。
【０１５２】
このＳ１２５の処理においては、ＰＣ２から伝送されてきたＳＣＳＩコマンドは、ＳＣＳＩコマンド解析タスク１４１からファイル単位入出力タスク１６１へと伝送される。また、Ｓ１２５の処理において、ＳＣＳＩコマンドをファイル単位入出力タスク１６１へ伝送した後は、ファイル単位入出力タスク１６１側での処理が終了するのを待つ。
【０１５３】
ファイル単位入出力タスク１６１側での処理が終了した場合、ファイル単位入出力タスク１６１側から応答が返るので、Ｓ１２５の処理では、ファイル単位入出力タスク１６１からの応答をＰＣ２側へと伝送し、Ｓ１２５の処理を終了する。なお、Ｓ１２５の処理を終了したら、Ｓ１０５の処理へと戻る。
【０１５４】
一方、Ｓ１１０の処理による判断の結果、ＳＣＳＩコマンドが「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」および「Ｒｅａｄ  Ｂｕｆｆｅｒ」のいずれかでもない場合は（Ｓ１２０：Ｗｒｉｔｅ  ＢｕｆｆｅｒおよびＲｅａｄ  Ｂｕｆｆｅｒ以外）、Ｓ１３０の処理へと進む。また、上記Ｓ１１５の処理において、ＦＴＰサーバーモードでない場合も（Ｓ１１５：いいえ）、Ｓ１３０の処理へと進む。
【０１５５】
Ｓ１３０の処理へと進んだ場合、複合機１は、ＳＣＳＩコマンドを物理セクタ単位入出力タスク１４３へ伝送し、物理セクタ単位入出力タスク１４３側での処理終了を待つ（Ｓ１３０）。
【０１５６】
このＳ１３０の処理においては、ＰＣ２から伝送されてきたＳＣＳＩコマンドは、ＳＣＳＩコマンド解析タスク１４１から物理セクタ単位入出力タスク１４３へと伝送される。また、Ｓ１３０の処理において、ＳＣＳＩコマンドを物理セクタ単位入出力タスク１４３へ伝送した後は、物理セクタ単位入出力タスク１４３側での処理が終了するのを待つ。
【０１５７】
物理セクタ単位入出力タスク１４３側での処理が終了した場合、物理セクタ単位入出力タスク１４３側から応答が返るので、Ｓ１３０の処理では、物理セクタ単位入出力タスク１４３からの応答を、ＰＣ２側へと伝送し、Ｓ１３０の処理を終了する。なお、Ｓ１３０の処理を終了したら、Ｓ１０５の処理へと戻る。
【０１５８】
以上のようなＳ１３０の処理について、より具体的な例を交えて説明すると、例えば、ＰＣ２側からは、メディア（本実施形態の場合、メモリカード）へのデータ書き込みを要求するＳＣＳＩコマンドが伝送されてくる場合がある。この場合、Ｓ１３０の処理では、ＳＣＳＩコマンド解析タスク１４１が受け取ったＳＣＳＩコマンドを物理セクタ単位入出力タスク１４３へと伝送する。
【０１５９】
このとき、物理セクタ単位入出力タスク１４３では、所定の処理（詳しくは後述）が実行される。そして、その所定の処理を実行した結果に関する情報が、応答として物理セクタ単位入出力タスク１４３からＳＣＳＩコマンド解析タスク１４１へ返される。
【０１６０】
ＳＣＳＩコマンド解析タスク１４１は、上記Ｓ１３０の処理の中で、物理セクタ単位入出力タスク１４３の処理終了を待つ。そして、物理セクタ単位入出力タスク１４３から応答を受け取ったら、その応答をＳＣＳＩコマンドに対する応答としてＰＣ２側へ返して、Ｓ１３０の処理を終了する。
【０１６１】
また、例えば、ＰＣ２側からは、メディアからのデータ読み込みを要求するＳＣＳＩコマンドが伝送されてくる場合がある。この場合も、Ｓ１３０の処理では、ＳＣＳＩコマンド解析タスク１４１が受け取ったＳＣＳＩコマンドを物理セクタ単位入出力タスク１４３へと伝送する。
【０１６２】
このとき、物理セクタ単位入出力タスク１４３では、所定の処理（詳しくは後述）が実行される。そして、その所定の処理を実行した結果に関する情報や読み出されたデータが、応答として物理セクタ単位入出力タスク１４３からＳＣＳＩコマンド解析タスク１４１へ返される。
【０１６３】
ＳＣＳＩコマンド解析タスク１４１は、上記Ｓ１３０の処理の中で、物理セクタ単位入出力タスク１４３の処理終了を待つ。そして、物理セクタ単位入出力タスク１４３から応答を受け取ったら、その応答をＳＣＳＩコマンドに対する応答としてＰＣ２側へ返して、Ｓ１３０の処理を終了する。
【０１６４】
この他にも、様々なＳＣＳＩコマンドがあるが、いずれのＳＣＳＩコマンドが伝送されてきた場合でも、Ｓ１３０の処理では、ＳＣＳＩコマンドがＳＣＳＩコマンド解析タスク１４１からコマンドを物理セクタ単位入出力タスク１４３へと伝送される。そして、物理セクタ単位入出力タスク１４３からＳＣＳＩコマンド解析タスク１４１へと返される応答が、ＰＣ２側へと伝送されるのである。
【０１６５】
なお、上述の通り、ＰＣ２から物理セクタ単位入出力タスク１４３へ伝送されるＳＣＳＩコマンドには様々なものがあるので、物理セクタ単位入出力タスク１４３側で実行される処理の内容は、ＳＣＳＩコマンドに応じた様々な処理内容となる。
【０１６６】
さて、以上がＳ１１０の処理で否定判断がなされた場合の処理となるが、Ｓ１１０の処理で肯定判断がなされた場合、すなわち、ＳＣＳＩコマンドが「ＶＰＤ−Ｉｎｑｕｉｒｙ
ページコード０ｘｃ８」であった場合は（Ｓ１１０：はい）、Ｓ１３５の処理へと進む。
【０１６７】
Ｓ１３５の処理へと進んだ場合、複合機１は、「Ｉｎｑｕｉｒｙ」コマンドを構成するデータ列中の「アロケーション長」領域に格納された値ｎｎについて、ｎｎ≦０ｘ３ｆか否かを判断する（Ｓ１３５）。
【０１６８】
ここで、ｎｎ≦０ｘ３ｆであれば、ＰＣ２からの伝達情報が存在しないことを意味するので（Ｓ１３５：はい）、この場合は、ページコード０ｘｃ８に対応するＶＰＤ情報（ＶＰＤ−Ｉｎｑｕｉｒｙ  ＤＡＴＡ）をＰＣ２に返し（Ｓ１４０）、Ｓ１０５の処理へ戻る。なお、この場合、ＶＰＤ情報としては、現在のモードを示す情報のみが返される。
【０１６９】
一方、ｎｎ＞０ｘ３ｆであれば、ＰＣ２からの伝達情報が存在することを意味するので（Ｓ１３５：いいえ）、この場合は、「アロケーション長」領域に格納された値ｎｎのｂｉｔ１に基づいて、モードチェンジ指示ありか否かを判断する（Ｓ１４５）。このＳ１４５の処理では、「アロケーション長」領域に格納された値ｎｎのｂｉｔ１が０であればモードチェンジ指示無し、１であればモードチェンジ指示有りと判断される。
【０１７０】
モードチェンジ指示有りの場合（Ｓ１４５：あり）、物理セクタ単位入出力タスク１４３にモードチェンジを要求する（Ｓ１５０）。このＳ１５０の処理では、「アロケーション長」領域に格納された値ｎｎのｂｉｔ０が０であればＵＳＢストレージモードへのチェンジを要求する。また、「アロケーション長」領域に格納された値ｎｎのｂｉｔ０が１であればＦＴＰサーバーモードへのチェンジを要求する。
【０１７１】
そして、Ｓ１５０の処理を終えたら、Ｓ１５５の処理へと進む。一方、Ｓ１４５の処理において、モードチェンジ指示無しの場合（Ｓ１４５：なし）、上記Ｓ１５０の処理はスキップし、Ｓ１５５の処理へと進む。
【０１７２】
こうしてＳ１５５の処理へと進んだら、複合機２は、全ハンドルクローズ指示有りか否かを判断する（Ｓ１５５）。このＳ１４５の処理では、「アロケーション長」領域に格納された値ｎｎのｂｉｔ２が０であればハンドルクローズ指示無し、１であれば全ハンドルクローズ指示有りと判断される。
【０１７３】
全ハンドルクローズ指示有りの場合（Ｓ１５５：あり）、ファイル単位入出力タスク１６１に全ハンドルクローズを指示して（Ｓ１６０）、Ｓ１４０の処理へと進む。一方、Ｓ１５５の処理において、全ハンドルクローズ指示無しの場合（Ｓ１５５：なし）、Ｓ１６０の処理はスキップして、Ｓ１４０の処理へと進む。
【０１７４】
なお、こうしてＳ１４０の処理へと進んだ場合、Ｓ１５０の処理を実行していれば、ＶＰＤ情報としては、現在のモードを示す情報に加え、モードチェンジ指示の有無とその結果に関する情報が返される。また、Ｓ１６０の処理を実行していれば、ＶＰＤ情報としては、現在のモードを示す情報に加え、全ハンドルクローズ指示の有無とその結果に関する情報が返される。そして、Ｓ１４０の処理を終えたら、Ｓ１０５の処理へと戻る。
【０１７５】
［物理セクタ単位入出力タスクで実行される処理］
次に、複合機１が備える物理セクタ単位入出力タスク１４３において実行される処理について、図５および図６に基づいて説明する。
【０１７６】
この処理を開始すると、複合機１は、まず、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来たか否かを判断する（Ｓ２０５）。ここで、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来たら（Ｓ２０５：来た）、メディアへのアクセスが必要なコマンドか否かを判断する（Ｓ２１０）。
【０１７７】
メディアへのアクセスが必要なコマンドであった場合（Ｓ２１０：はい）、現在メモリスロット制御タスク１４５の使用権を取得中か否かの判断を行う（Ｓ２１５）。このメモリスロット制御タスク１４５の使用権は、物理セクタ単位入出力タスク１４３またはファイルシステムタスク１６３が排他的に取得できる権利である。物理セクタ単位入出力タスク１４３とファイルシステムタスク１６３は、使用権を取得した場合にのみ、メモリスロット制御タスク１４５へのアクセスができる。これにより、両者が同時にメモリスロット制御タスク１４５に対してデータ伝送を行わないようにすることができる。
【０１７８】
Ｓ２１５の処理で、メモリスロット制御タスク１４５の使用権を取得中ではないと判断した場合（Ｓ２１５：いいえ）、続いて、ＵＳＢモードか否かを判断する（Ｓ２２０）。このＳ２２０の処理を実行する手段が、本発明でいうモード判定手段の一例に相当する。
【０１７９】
Ｓ２２０の処理において、ＵＳＢモードであった場合（Ｓ２２０：はい）、メモリスロット制御タスク１４５の使用権を取得する（Ｓ２２５）。メモリスロット制御タスク１４５の使用権は、状況により取得できる場合もあれば取得に失敗する場合もあるので、Ｓ２２５の処理を終えたら、メモリスロット制御タスク１４５の使用権取得に成功したか否かを判断する（Ｓ２３０）。
【０１８０】
取得に失敗していた場合（Ｓ２３０：いいえ）、メモリスロット制御タスク１４５の使用権はファイルシステムタスク１６３が取得しているものと考えられる。そこで、この場合は、ＳＣＳＩコマンド解析タスク１４１から受け取ったＳＣＳＩコマンドに対応した処理として、擬似的にメディアが入っていない時に相当する応答のみを返す処理を実行し（Ｓ２３５）、Ｓ２０５の処理へと戻る。なお、Ｓ２３５の処理を実行する手段が、本発明でいう疑似応答手段の一例に相当する。
【０１８１】
また、Ｓ２２０の処理において、ＵＳＢモードでなかった場合（Ｓ２２０：はい）、ＵＳＢストレージデバイスへのアクセスが禁止されるモードなので、この場合は、Ｓ２２５、Ｓ２３０の処理を実行することなく、直ちに上記Ｓ２３５の処理へと進む。
【０１８２】
すなわち、この場合も、ＳＣＳＩコマンド解析タスク１４１から受け取ったＳＣＳＩコマンドに対応した処理として、擬似的にメディアが入っていない時に相当する応答のみを返す処理を実行し（Ｓ２３５）、Ｓ２０５の処理へと戻る。
【０１８３】
なお、メディアが入っていない時に相当する応答がＰＣ２側に返されると、ＰＣ２は、図７に示すようなダイヤログを表示する。これにより、利用者は、ＵＳＢストレージデバイスへのアクセスができない状態にあると理解することができる。
【０１８４】
さて一方、上記Ｓ２３０の処理において、メモリスロット制御タスク１４５の使用権取得に成功した場合は（Ｓ２３０：はい）、Ｓ２４０処理へと進む。また、上記Ｓ２１５の処理において、メモリスロット制御タスク１４５の使用権を既に取得中であると判断した場合（Ｓ２１５：はい）も、Ｓ２４０処理へと進む。
【０１８５】
Ｓ２４０の処理へと進んだ場合、権利解放までのタイマーをクリアして（Ｓ２４０）、ＳＣＳＩコマンドを実行する（Ｓ２４５）。Ｓ２４５の処理では、ＳＣＳＩコマンド解析タスク１４１から受け取ったＳＣＳＩコマンドに対応した処理が実行される。
【０１８６】
より具体的には、例えば、ＳＣＳＩコマンドがメディアからのデータ読み込みを要求するものであれば、Ｓ２４５の処理では、物理セクタ単位入出力タスク１４３からメモリスロット制御タスク１４５に対してメディアからのデータ読み込み指令が伝送される。
【０１８７】
この指令を受けたメモリスロット制御タスク１４５では、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、または第４メモリスロット１５４のいずれかに装着されたメディアから、物理セクタ単位でデータが読み出される。
【０１８８】
そして、そのデータがメモリスロット制御タスク１４５から物理セクタ単位入出力タスク１４３へと返されるので、物理セクタ単位入出力タスク１４３では、メモリスロット制御タスク１４５から受け取ったデータを、ＳＣＳＩコマンド解析タスク１４１へ返す。
【０１８９】
また、例えば、ＳＣＳＩコマンドがメディアへのデータ書き込みを要求するものであれば、Ｓ２４５の処理では、物理セクタ単位入出力タスク１４３からメモリスロット制御タスク１４５に対してメディアからのデータ書き込み指令が伝送される。
【０１９０】
この指令を受けたメモリスロット制御タスク１４５では、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、または第４メモリスロット１５４のいずれかに装着されたメディアに対して、物理セクタ単位でデータが書き込まれる。
【０１９１】
その書き込み結果を示すデータは、メモリスロット制御タスク１４５から物理セクタ単位入出力タスク１４３へと返される。そこで、物理セクタ単位入出力タスク１４３は、メモリスロット制御タスク１４５から受け取ったデータを、ＳＣＳＩコマンド解析タスク１４１へ返す。
【０１９２】
こうしてＳ２４５の処理を終えたら、続いて、図６に示すように、現在メディアロック中か否かを判断し（Ｓ２５０）、メディアロック中でない場合は（Ｓ２５０：いいえ）、権利解放の所定時間を過ぎたか否かを判断する（Ｓ２５５）。そして、権利解放の所定時間を過ぎていれば（Ｓ２５５：過ぎた）、メモリスロット制御タスク１４５の使用権を解放する（Ｓ２６０）。
【０１９３】
これらＳ２５０〜Ｓ２６０の処理において、メディアロックは、ＰＣ２側から伝送されてくる指示に基づいて設定されるもので、メディアロック中である場合、ＰＣ２はメディアが取り出されないことを前提とした処理を実行する可能性がある。
【０１９４】
また、権利解放の所定時間は、ＰＣ２側から最後のアクセス要求が到来した後、所定時間が経過するまでは、メモリスロット制御タスク１４５の使用権を保持するために設定されている。これは、メディアロックが解除された場合でも、ＰＣ２側での遅延書き込み制御等に起因して、ＰＣ２側からメディアへのアクセス要求が到来する可能性があるために設けられたものである。
【０１９５】
したがって、Ｓ２５０〜Ｓ２６０の処理では、メディアロック中でなく、且つ、権利解放の所定時間が経過している場合にのみ、メモリスロット制御タスク１４５の使用権を解放することになる。
【０１９６】
逆に、現在メディアロック中である場合（Ｓ２５０：はい）、または、権利解放の所定時間を過ぎていない場合は（Ｓ２５５：まだ）、Ｓ２６０の処理はスキップされて、メモリスロット制御タスク１４５の使用権を保持したままとなる。
【０１９７】
そして、以上のようなＳ２５０〜Ｓ２６０の処理を終えたら、Ｓ２０５の処理（図５参照）へと戻る。
さて、以上が、Ｓ２０５の処理においてＳＣＳＩコマンドが来たと判断された場合の処理となるが、Ｓ２０５の処理では、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来ないと判断されることもある（Ｓ２０５：来ない）。
【０１９８】
この場合は、図６に示すＳ２６５の処理へと進み、ＳＣＳＩコマンド解析タスク１４１からモードチェンジ要求が来たかどうかを判断する（Ｓ２６５）。モードチェンジ要求は、ＳＣＳＩコマンド解析タスク１４１が実行するＳ１５０の処理によって発行されたものである。
【０１９９】
Ｓ２６５の処理において、モードチェンジ要求が来たと判断した場合（Ｓ２６５：来た）、ＵＳＢモードへのチェンジか否かを判断する（Ｓ２７０）。Ｓ２７０の処理において、ＵＳＢモードへのチェンジではなかった場合は（Ｓ２７０：いいえ）、ＦＴＰモードへのチェンジであったことを意味する。
【０２００】
そこで、物理セクタ単位入出力タスク１４３では、現在メモリスロット制御タスク１４５の使用権を取得中か否かの判断を行う（Ｓ２７５）。
Ｓ２７５の処理において、メモリスロット制御タスク１４５の使用権を取得中でない場合（Ｓ２７５：いいえ）、ＦＴＰモードへのチェンジが可能である。また、Ｓ２７０の処理において、ＵＳＢモードへのチェンジであった場合も（Ｓ２７０：はい）、ＵＳＢモードへのチェンジが可能である。
【０２０１】
そこで、これらの場合は、モードチェンジを受け入れて（Ｓ２８０）、Ｓ２０５の処理（図５参照）へと戻る。これにより、ＦＴＰモードまたはＵＳＢモードへのチェンジが実行されることになる。
【０２０２】
一方、Ｓ２７５の処理において、メモリスロット制御タスク１４５の使用権を取得中であった場合（Ｓ２７５：いいえ）、引き続きＰＣ２からのアクセスを受ける可能性があるため、ＦＴＰモードへのチェンジができない。
【０２０３】
そこで、この場合は、モードチェンジを拒否する（Ｓ２８５）。なお、Ｓ２８５の処理を終えたら、Ｓ２５０の処理へと進むが、Ｓ２５０以降の処理については既に説明したので、ここでの説明は省略する。
【０２０４】
［ファイル単位入出力タスクで実行される処理］
次に、複合機１が備えるファイル単位入出力タスク１６１において実行される処理について、図８および図９に基づいて説明する。
【０２０５】
この処理を開始すると、複合機１は、まず、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来たか否かを判断する（Ｓ３０５）。ここで、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来ない場合は（Ｓ３０５：来ない）、Ｓ３０５の処理へと戻る。
【０２０６】
一方、ＳＣＳＩコマンド解析タスク１４１からＳＣＳＩコマンドが来たら（Ｓ３０５：来た）、ＳＣＳＩコマンドが「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０」か否かを判断する（Ｓ３１０）。ここで、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０」でない場合（Ｓ３１０：いいえ）、Ｓ３０５の処理へ戻る。
【０２０７】
一方、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８０」であった場合は（Ｓ３１０：はい）、ＳＣＳＩコマンド解析タスク１４１から伝送されてきたコマンド文字列群を受け取る（Ｓ３１５）。そして、その中の第１文字列に基づいて、引き続いてファイルアクセスデータ出力が到来するファイルアクセスコマンドか否かを判断する（Ｓ３２０）。
【０２０８】
Ｓ３２０の処理において、ファイルアクセスデータ出力があるコマンドであると判断した場合（Ｓ３２０：はい）、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８１」が到来するまで待つ（Ｓ３２５：待ち）。そして、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８１」が到来したら（Ｓ３２５：来た）、データを受け取って（Ｓ３３０）、Ｓ３３５の処理へと進む。
【０２０９】
なお、Ｓ３２０の処理において、ファイルアクセスデータ出力があるコマンドではないと判断した場合（Ｓ３２０：いいえ）、上記Ｓ３２５およびＳ３３０の処理はスキップして、Ｓ３３５の処理へと進む。
【０２１０】
こうしてＳ３３５の処理へと進んだ場合、コマンド文字列群中の、第１文字列のコマンドを実行する（Ｓ３３５）。このＳ３３５の処理は、詳しくは図９に示す処理となる。
すなわち、複合機１は、まず第１文字列を判断する（Ｓ４０５）。このＳ４０５の処理を実行する手段が、本発明でいうファイルアクセス要求判定手段ないしモード切り替え要求判定手段の一例に相当する。
【０２１１】
Ｓ４０５の処理において、第１文字列がｆｏｐｅｎまたはｆｃｌｏｓｅであった場合（Ｓ４０５：ｆｏｐｅｎ／ｆｃｌｏｓｅ）、関数ｆｏｐｅｎ（）または関数ｆｃｌｏｓｅ（）をコールする（Ｓ４１０）。これにより、ファイル単位入出力タスク１６１では、ファイルシステムタスク１６３を経由してファイルをオープンまたはクローズすることができる。
【０２１２】
また、Ｓ４０５の処理において、第１文字列がｆｒｅａｄまたはｆｗｒｉｔｅであった場合（Ｓ４０５：ｆｒｅａｄ／ｆｗｒｉｔｅ）、関数ｆｒｅａｄ（）または関数ｆｗｒｉｔｅ（）をコールする（Ｓ４１５）。これにより、ファイル単位入出力タスク１６１では、ファイルシステムタスク１６３を経由してファイルを読み書きすることができる。
【０２１３】
また、Ｓ４０５の処理において、第１文字列がｍｏｄｅｇｅｔであった場合（Ｓ４０５：ｍｏｄｅｇｅｔ）、現在のモードを取得する（Ｓ４２０）。このＳ４２０の処理によって取得されるモードは、ＵＳＢモードまたはＦＴＰモードのいずれかとなる。
【０２１４】
また、Ｓ４０５の処理において、第１文字列がｍｏｄｅｓｅｔであった場合（Ｓ４０５：ｍｏｄｅｓｅｔ）、物理セクタ単位入出力タスク１４３にモードチェンジを要求する（Ｓ４２５）。このＳ４２５の処理によって物理セクタ単位入出力タスク１４３に対して発行される要求が、上述のＳ２６５の処理における判断対象になるものとなる。
【０２１５】
そして、上記Ｓ４１０〜Ｓ４２５いずれかの処理を終えたら、その処理結果となるデータやステータスをＲｅａｄ  Ｂｕｆｆｅｒ用のバッファにセットする（Ｓ４３０）。これにより、バッファにセットしたデータがＰＣ２から取り出されるのを待つ状態になる。
【０２１６】
以上のようなＳ４０５〜Ｓ４３０の処理を終えると、図８に示したＳ３３５の処理を終えたことになるので、引き続いて、第１文字列に基づいて、ファイルアクセスデータ入力のあるファイルアクセスコマンドか否かを判断する（Ｓ３４０）。
【０２１７】
Ｓ３４０の処理において、ファイルアクセスデータ入力があるコマンドであると判断した場合（Ｓ３４０：はい）、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８２」が到来するまで待つ（Ｓ３４５：待ち）。そして、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８２」が到来したら（Ｓ３４５：来た）、複合機１からＰＣ２へデータを転送し（Ｓ３５０）、Ｓ３５５の処理へと進む。
【０２１８】
なお、Ｓ３４０の処理において、ファイルアクセスデータ入力があるコマンドではないと判断した場合（Ｓ３４０：いいえ）、上記Ｓ３４５およびＳ３５０の処理はスキップして、Ｓ３５５の処理へと進む。
【０２１９】
こうしてＳ３５５の処理へと進んだら、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８３」が到来するまで待つ（Ｓ３５５：待ち）。そして、「Ｒｅａｄ  Ｂｕｆｆｅｒ／バッファＩＤ＝０ｘ８３」が到来したら（Ｓ３５５：来た）、複合機１からＰＣ２へステータス文字列群を転送し（Ｓ３６０）、Ｓ３０５の処理へと戻る。
【０２２０】
［複合機内部ファイルシステムタスクで実行される処理］
次に、複合機１が備えるファイルシステムタスク１６３において実行される処理について、図１０に基づいて説明する。
【０２２１】
この処理を開始すると、複合機１は、まず、別タスクからファイルアクセス関連のリクエストが来たか否かを判断する（Ｓ５０５）。別タスクの具体例としては、例えば、ファイル単位入出力タスク１６１、メディアプリント機能１７１、ＦＴＰサーバータスク１７３などを挙げることができる。
【０２２２】
ただし、複合機１に実装された機能によっては、具体例として列挙した上記のもの以外にも、ファイルシステムタスク１６３へのリクエストを発行するタスクが存在する場合がある。
【０２２３】
Ｓ５０５の処理において、別タスクからリクエストが来ない場合は（Ｓ５０５：来ない）、Ｓ５０５の処理へと戻る。一方、別タスクからリクエストが来た場合（Ｓ５０５：はい）、そのリクエストがｆｏｐｅｎであれば（Ｓ５０５：ｆｏｐｅｎ）、現在メモリスロット制御タスク１４５の使用権を取得中か否かの判断を行う（Ｓ５１０）。
【０２２４】
このメモリスロット制御タスク１４５の使用権は、既に説明したとおり、物理セクタ単位入出力タスク１４３またはファイルシステムタスク１６３が排他的に取得できる権利である。
【０２２５】
Ｓ５１０の処理で、メモリスロット制御タスク１４５の使用権を取得中ではないと判断した場合（Ｓ５１０：いいえ）、メモリスロット制御タスク１４５の使用権を取得する（Ｓ５１５）。メモリスロット制御タスク１４５の使用権は、状況により取得できる場合もあれば取得に失敗する場合もある。
【０２２６】
ここで、使用権取得に成功した場合（Ｓ５１５：成功）、あるいは、既に使用権を取得済みであった場合は（Ｓ５１０：はい）、該当ファイルのオープン処理（ハンドル作成）を実行して（Ｓ５２０）、Ｓ５０５の処理へと戻る。
【０２２７】
一方、使用権取得に失敗した場合（Ｓ５１５：失敗）、メモリスロット制御タスク１４５の使用権は物理セクタ単位入出力タスク１４３が取得しているものと考えられるので、該当ファイルのオープンに失敗する（Ｓ５２５）。この場合、ハンドルは作成せず、Ｓ５０５の処理へと戻る。
【０２２８】
また、Ｓ５０５の処理において、別タスクからのリクエストがｆｒｅａｄまたはｆｗｒｉｔｅであった場合（Ｓ５０５：ｆｒｅａｄ／ｆｗｒｉｔｅ）、ハンドルファイルに対して読み書きを行って（Ｓ５３０）、Ｓ５０５の処理へと戻る。
【０２２９】
また、Ｓ５０５の処理において、別タスクからのリクエストがｆｃｌｏｓｅであった場合（Ｓ５０５：ｆｃｌｏｓｅ）、ハンドルのクローズ処理（ハンドル破棄）を行う（Ｓ５３５）。そして、すべてのハンドルが破棄されたか否かを判断する（Ｓ５４０）。
【０２３０】
Ｓ５４０の処理において、すべてのハンドルが破棄されたと判断された場合は（Ｓ５４０：はい）、メモリスロット制御タスク１４５の使用権を解放して（Ｓ５４５）、Ｓ５０５の処理へと戻る。また、破棄されていないハンドルが残っていると判断された場合は（Ｓ５４０：いいえ）、Ｓ５４５の処理をスキップして、Ｓ５０５の処理へと戻る。
【０２３１】
また、Ｓ５０５の処理において、別タスクからのリクエストがｆｌｉｓｔであった場合（Ｓ５０５：ｆｌｉｓｔ）、現在メモリスロット制御タスク１４５の使用権を取得中か否かの判断を行う（Ｓ５５０）。
【０２３２】
Ｓ５５０の処理で、メモリスロット制御タスク１４５の使用権を取得中ではないと判断した場合（Ｓ５５０：いいえ）、メモリスロット制御タスク１４５の使用権を取得する（Ｓ５５５）。メモリスロット制御タスク１４５の使用権は、状況により取得できる場合もあれば取得に失敗する場合もある。
【０２３３】
ここで、使用権取得に成功した場合（Ｓ５５５：成功）、あるいは、既に使用権を取得済みであった場合は（Ｓ５５０：はい）、該当ファイルのオープン処理（ハンドル作成）を実行する（Ｓ５６０）。
【０２３４】
そして、ハンドルフォルダからファイル一覧を作成し（Ｓ５６５）、ハンドルのクローズ処理（ハンドル破棄）を行う（Ｓ５３５）。なお、Ｓ５７０の処理を終えたら、Ｓ５４０の処理へと進むが、Ｓ５４０以降の処理については既に説明したので、ここでの説明は省略する。
【０２３５】
さらに、上記Ｓ５５５の処理において、使用権取得に失敗した場合（Ｓ５５５：失敗）、ファイルは１つもないというファイル一覧を作成し（Ｓ５７５）、Ｓ５０５の処理へと戻る。
【０２３６】
［複合機内部メディアプリント機能で実行される処理］
次に、複合機１が備えるメディアプリント機能１７１において実行される処理について、図１１に基づいて説明する。
【０２３７】
この処理を開始すると、複合機１は、まず、カードのルートディレクトリのファイル一覧を作成する（Ｓ６０５）。このＳ６０５の処理では、関数ｆｌｉｓｔ（）がコールされることにより、メディアプリント機能１７１経由でメモリカード上のファイルに対するアクセスが実行されることになる。
【０２３８】
続いて、ルートディレクトリのファイル一覧に基づいて、サブディレクトリがあるかどうかを判断し、サブディレクトリがある場合は、さらに、サブディレクトリについてもファイル一覧を作成する（Ｓ６１０）。このＳ６１０の処理でも、関数ｆｌｉｓｔ（）がコールされることにより、メディアプリント機能１７１経由でメモリカード上のファイルに対するアクセスが実行される。なお、Ｓ６１０の処理は、すべてのサブディレクトリを対象にして実行される。
【０２３９】
そして、Ｓ６０５およびＳ６１０の処理によって得られたファイル一覧から、画像ファイルを抽出して（Ｓ６１５）、画像ファイルが１個以上あるか否かを判断する（Ｓ６２０）。ここで、画像ファイルがない場合は（Ｓ６２０：ない）、複合機１が備える表示部に「カードに画像ファイルがありません」とのメッセージを表示して（Ｓ６２５）、図１１に示す処理を終了する。
【０２４０】
一方、Ｓ６２０の処理で、画像ファイルが１個以上あると判断された場合は（Ｓ６２０：ある）、画像ファイルのサムネイルを作成する（Ｓ６３０）。Ｓ６３０の処理では、関数ｆｏｐｅｎ（）、ｆｒｅａｄ（）、ｆｃｌｏｓｅ（）などがコールされることにより、メディアプリント機能１７１経由でメモリカード上のファイルに対するアクセス（画像ファイルの読み込み）が実行され、読み込まれた画像ファイルがサムネイル化される。
【０２４１】
続いて、複合機１の表示部に、カード内の画像ファイルを表示する（Ｓ６３５）。Ｓ６３５の処理では、画像ファイルのファイル名とＳ６３０の処理で作成されたサムネイルとを対にして、複合機１の表示部に表示する処理を実行する。
【０２４２】
この後、複合機１は、ユーザーからの入力待ち状態となり、ユーザーが印刷する画像ファイルを選択可能な状態になる（Ｓ６４０）。この状態において、ユーザーがキャンセル操作を行った場合（Ｓ６４０：キャンセル）、図１１に示した処理を終了する。
【０２４３】
一方、Ｓ６４０の処理において、ユーザーが画像ファイルを選択して、印刷開始を指示する入力操作を行った場合（Ｓ６４０：選択、印刷開始）、複合機１は、印刷する画像ファイルをリードする（Ｓ６４５）。Ｓ６４５の処理では、関数ｆｏｐｅｎ（）、ｆｒｅａｄ（）、ｆｃｌｏｓｅ（）などがコールされることにより、メディアプリント機能１７１経由でメモリカード上のファイルに対するアクセス（画像ファイルの読み込み）が実行される。
【０２４４】
そして、カードから読み込まれた画像ファイルを印刷して（Ｓ６５０）、図１１に示す処理を終了する。
［ＰＣで機能するＦＴＰサーバーアプリケーションを起動したときに実行される処理］
次に、ＰＣ２で機能するＦＴＰサーバーアプリケーション２８１を起動したときに実行される処理について、図１２に基づいて説明する。
【０２４５】
ＦＴＰサーバーアプリケーション２８１は、どのようなタイミングで起動されてもよいが、この機能を常時利用する可能性がある場合は、ＰＣ２の起動に連動して起動されるように設定しておくと好ましい。
【０２４６】
ＦＴＰサーバーアプリケーション２８１が起動されて、この処理を開始すると、ＰＣ２は、ｍｏｄｅｇｅｔを実行する（Ｓ７０５）。具体的には、アロケーション長「００１１１１１１（２進数）／０ｘ３ｆ（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行することにより、ｍｏｄｅｇｅｔコマンドの実行を複合機１に要求する。
【０２４７】
このｍｏｄｅｇｅｔコマンドの実行要求が複合機１側に伝送されると、ＳＣＳＩコマンド解析タスク１４１は、図４に示したＳ１４０の処理により、ページコード０ｘｃ８に対応するＶＰＤ情報（ＶＰＤ−Ｉｎｑｕｉｒｙ  ＤＡＴＡ）をＰＣ２に返す。これにより、ＰＣ２は、現在のモードを示す情報を含むＶＰＤ情報を取得することになる。
【０２４８】
こうして複合機１のモードを取得したら、そのモードを記憶し（Ｓ７１０）、ＦＴＰサーバーアプリケーション起動時にＦＴＰモードに切り替える設定か否かを判断する（Ｓ７１５）。ＦＴＰサーバーアプリケーション起動時にＦＴＰモードに切り替えるか否かは、ユーザーが任意に設定可能で、どのような設定がなされたかは、ＦＴＰサーバーアプリケーション用の設定ファイル等に記憶されている。
【０２４９】
ＦＴＰモードに切り替える設定であった場合（Ｓ７１５：はい）、現在の複合機１のモード（Ｓ７０５の処理で取得し、Ｓ７１０の処理で記憶したモード）がＦＴＰモードか否かを判断する（Ｓ７２０）。
【０２５０】
ここで、ＦＴＰモードでなかった場合（Ｓ７２０：いいえ）、ＰＣ２は、ｍｏｄｅｓｅｔを実行する（Ｓ７２５）。具体的には、アロケーション長「０１００００１１（２進数）／０ｘ４３（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行することにより、ｍｏｄｅｓｅｔコマンドの実行を複合機１に要求する。
【０２５１】
このｍｏｄｅｓｅｔコマンドの実行要求が複合機１側に伝送されると、ＳＣＳＩコマンド解析タスク１４１は、図４に示したＳ１４５およびＳ１５０の処理により、物理セクタ単位入出力タスク１４３にモードチェンジを要求する。そして、物理セクタ単位入出力タスク１４３では、Ｓ２７０〜２８５の処理が実行される。
【０２５２】
モードチェンジに成功したか否かは、図４に示したＳ１４０の処理により、ページコード０ｘｃ８に対応するＶＰＤ情報としてＰＣ２に返される。その結果、ＰＣ２は、モードの切り替えに成功したか否かの情報を取得することになる。
【０２５３】
そこで、ＰＣ２は、モードの移行に成功したか否かを判断する（Ｓ７３０）。ここで、モードの移行に成功した場合は（Ｓ７３０：はい）、現在の複合機１のモードをＦＴＰモードと記憶して（Ｓ７３５）、Ｓ７４０の処理へと進む。
【０２５４】
なお、Ｓ７１５の処理において、ＦＴＰモードに切り替える設定ではないと判断した場合（Ｓ７１５：いいえ）、あるいは、Ｓ７２０の処理において、既にＦＴＰモードであった場合は（Ｓ７２０：はい）、モード切り替えの必要がない。したがって、この場合は、Ｓ７２５〜Ｓ７３５の処理をスキップして、Ｓ７４０の処理へと進む。
【０２５５】
また、Ｓ７３０の処理において、モードの移行に失敗した場合は（Ｓ７３０：はい）、移行失敗を一定時間表示して（Ｓ７３７）、Ｓ７４０の処理へと進む。
そして、Ｓ７４０の処理へと進んだら、現在の複合機１のモードに従いタスクトレイアイコンを決定し（Ｓ７４０）、ＦＴＰサーバースレッドの起動、およびＴＣＰ／ＩＰのＦＴＰサーバーポートのオープンを行い（Ｓ７４５）、図１２に示した処理を終了する。
【０２５６】
以上のようにして図１２に示した処理を終えると、ＰＣ２の表示部にあるタスクトレイ（ＯＳであるＷｉｎｄｏｗｓ（登録商標）が標準で備える情報通知領域）には、図１３（ａ）および同図（ｂ）に示すようなアイコンで、現在の複合機１のモードが表示される。
【０２５７】
また、このアイコンをポインティングデバイスでクリック操作すると、図１３（ｃ）に示すように、ポップアップウィンドウが表示される。ポップアップウィンドウ中には、モードの一覧とアプリケーションの終了を指示するための項目が表示される。ここで、これらのいずれかをポインティングデバイスでクリック操作すると、モード変更やアプリケーションの終了を、利用者がＦＴＰサーバーアプリケーション２８１に対して指令できる。
【０２５８】
なお、利用者がモード変更を指示した場合に、ＦＴＰサーバーアプリケーション２８１が実行する処理については、以下に引き続いて説明する。
［ＦＴＰサーバーアプリケーションによるＦＴＰモードへの切り替え処理］
次に、利用者がＦＴＰサーバーアプリケーション２８１に対して、ＦＴＰモードへの切り替えを指示した際に、ＦＴＰサーバーアプリケーション２８１によって実行される処理について、図１４に基づいて説明する。
【０２５９】
この処理を開始すると、ＰＣ２は、まず、現在の複合機１のモードがＦＴＰモードか否かを判断する（Ｓ８０５）。ここで、ＦＴＰモードであった場合は（Ｓ８０５：はい）、モードの切り替えを行う必要がないので、そのまま図１４に示した処理を終了する。
【０２６０】
一方、Ｓ８０５の処理で、ＦＴＰモードではなかった場合（Ｓ８０５：いいえ）、ＰＣ２は、ｍｏｄｅｓｅｔを実行する（Ｓ８１０）。具体的には、アロケーション長「０１００００１１（２進数）／０ｘ４３（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行することにより、ｍｏｄｅｓｅｔコマンドの実行を複合機１に要求する。なお、この処理は、先に説明したＳ７２５と同等な処理なので、これ以上の説明は省略する。
【０２６１】
Ｓ８１０の処理を終えたら、ＰＣ２は、モードの移行に成功したか否かを判断する（Ｓ８１５）。ここで、モードの移行に成功した場合は（Ｓ８１５：はい）、現在の複合機１のモードをＦＴＰモードと記憶して（Ｓ８２０）、現在の複合機１のモードに従いタスクトレイアイコンを変更し（Ｓ８２５）、図１４に示した処理を終了する。
【０２６２】
一方、Ｓ８１５の処理で、モードの移行に失敗したと判断された場合（Ｓ８１５：いいえ）、ＰＣ２は、移行失敗のダイヤログを表示して（Ｓ８３０）、図１４に示した処理を終了する。
【０２６３】
［ＦＴＰサーバーアプリケーションによるＵＳＢモードへの切り替え処理］
次に、利用者がＦＴＰサーバーアプリケーション２８１に対して、ＵＳＢモードへの切り替えを指示した際に、ＦＴＰサーバーアプリケーション２８１によって実行される処理について、図１５に基づいて説明する。
【０２６４】
この処理を開始すると、ＰＣ２は、まず、現在の複合機１のモードがＵＳＢモードか否かを判断する（Ｓ９０５）。ここで、ＵＳＢモードであった場合は（Ｓ９０５：はい）、モードの切り替えを行う必要がないので、そのまま図１５に示した処理を終了する。
【０２６５】
一方、Ｓ９０５の処理で、ＵＳＢモードではなかった場合（Ｓ９０５：いいえ）、現在ＦＴＰサーバー経由でファイル転送中か否かを判断する（Ｓ９１０）。ここで、ＦＴＰサーバー経由でファイル転送中であった場合（Ｓ９１０：はい）、ダイヤログを表示する（Ｓ９１５）。
【０２６６】
このダイヤログには、「現在ＦＴＰサーバー経由でファイル転送中です。モードを切り替えると転送がエラーで中断します。それでもモードを切り替えますか？」とのメッセージが表示され、このメッセージに対し、利用者は「はい」「いいえ」いずれかを選択することができる。
【０２６７】
利用者が「いいえ」を選択した場合（Ｓ９１５：いいえ）、そのまま図１５に示した処理を終了する。一方、利用者が「はい」を選択した場合（Ｓ９１５：はい）、Ｓ９２０の処理へと進む。また、Ｓ９１０の処理において、ＦＴＰサーバー経由でファイル転送中ではないと判断された場合は（Ｓ９１０：いいえ）、Ｓ９１５の処理はスキップされて、Ｓ９２０の処理へと進む。
【０２６８】
こうしてＳ９２０の処理へと進むと、ＰＣ２は、ｍｏｄｅｓｅｔを実行する（Ｓ９２０）。具体的には、アロケーション長「０１００００１０（２進数）／０ｘ４２（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行することにより、ｍｏｄｅｓｅｔコマンドの実行を複合機１に要求する。なお、この処理は、ＵＳＢモードへの切り替えである点（すなわち、アロケーション長のｂｉｔ０＝０である点）を除き、先に説明したＳ７２５やＳ８１０と同等な処理なので、これ以上の説明は省略する。
【０２６９】
Ｓ９２０の処理を終えたら、ＰＣ２は、モードの移行に成功したか否かを判断する（Ｓ９２５）。ここで、モードの移行に成功した場合は（Ｓ９２５：はい）、現在の複合機１のモードをＵＳＢモードと記憶して（Ｓ９３０）、現在の複合機１のモードに従いタスクトレイアイコンを変更する（Ｓ９３５）。
【０２７０】
そして、複合機１に対して全ハンドルクローズを指示して（Ｓ９３７）、図１５に示した処理を終了する。Ｓ９３７の処理は、具体的には、アロケーション長「０１０００１００（２進数）／０ｘ４４（１６進数）」を指定して「ＶＰＤ−Ｉｎｑｕｉｒｙ  ページコード０ｘｃ８」を発行することにより、全ハンドルクローズの実行を複合機１に要求する処理となる。
【０２７１】
この要求が複合機１側に伝送されると、ＳＣＳＩコマンド解析タスク１４１は、図４に示したＳ１５５およびＳ１６０の処理により、ファイル単位入出力タスク１６１に全ハンドルクローズを要求する。そして、ファイル単位入出力タスク１６１では、オープン中の全ハンドルをクローズする処理が実行される。
【０２７２】
全ハンドルクローズに成功したか否かは、図４に示したＳ１４０の処理により、ページコード０ｘｃ８に対応するＶＰＤ情報としてＰＣ２に返される。その結果、ＰＣ２は、全ハンドルクローズに成功したか否かの情報を取得することになる。
【０２７３】
一方、Ｓ９２５の処理で、モードの移行に失敗したと判断された場合（Ｓ９２５：いいえ）、ＰＣ２は、移行失敗のダイヤログを表示して（Ｓ９４０）、図１５に示した処理を終了する。
【０２７４】
［ＦＴＰサーバーアプリケーション内ｆｏｐｅｎ（）関数］
次に、ＦＴＰサーバーアプリケーション２８１内でｆｏｐｅｎ（）関数がコールされた場合にＰＣ２が実行する処理について、図１６のフローチャートに基づいて説明する。
【０２７５】
ＰＣ２上で稼働する一般的なアプリケーションの場合、ｆｏｐｅｎ（）関数をコールすると、ファイルアクセスに関する指令はファイルシステム２３１へと渡されることになるが、ＦＴＰサーバーアプリケーション２８１の場合は、以下に説明する処理が実行される。
【０２７６】
すなわち、ＦＴＰサーバーアプリケーション２８１内でｆｏｐｅｎ（）関数がコールされた場合、ＰＣ２は、まず、複合機１がＦＴＰサーバーモードか否かを判断する（Ｓ１００５）。
【０２７７】
ここで、ＦＴＰサーバーモードであれば（Ｓ１００５：はい）、ＳＣＳＩコマンド「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」および「Ｒｅａｄ  Ｂｕｆｆｅｒ」を使って、複合機１にｆｏｐｅｎを要求する（Ｓ１０１０）。
【０２７８】
具体的には、Ｓ１０１０の処理では、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンドにより、ｆｏｐｅｎを要求する旨が複合機１へと伝達される。これを受けた複合機１側では、ファイル単位入出力タスク１６１により、先に説明した図８および図９に示した通りの手順でｆｏｐｅｎ（）相当の処理が実行される。そして、Ｓ１０１０の処理では、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドにより、複合機１側での処理結果を取得することになる。
【０２７９】
Ｓ１０１０の処理を終えたら、ＰＣ２は、複合機１側での処理に成功したか否かを判断し（Ｓ１０１５）、成功した場合は（Ｓ１０１５：はい）、ハンドルをコール側に返却する設定を行い（Ｓ１０２０）、図１６に示す処理を終了する。なお、Ｓ１０２０の処理でコール側に返されるハンドルは、Ｓ１０１０の処理で「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドにより取得したハンドルに対応するものである。
【０２８０】
一方、Ｓ１０１５の処理で、複合機１側での処理に失敗したと判断した場合（Ｓ１０１５：いいえ）、あるいは、Ｓ１００５の処理で、ＦＴＰサーバーモードでないと判断した場合は（Ｓ１００５：はい）、オープンエラーをコール側に返却する設定を行い（Ｓ１０２５）、図１６に示す処理を終了する。
【０２８１】
以上のような処理により、ＰＣ２は、ファイルシステム２３１を経由することなく、複合機１側にあるファイルシステムタスク１６３経由で、複合機１側のファイルをオープンすることができる。
【０２８２】
［ＦＴＰサーバーアプリケーション内ｆｃｌｏｓｅ（）関数］
次に、ＦＴＰサーバーアプリケーション２８１内でｆｃｌｏｓｅ（）関数がコールされた場合にＰＣ２が実行する処理について、図１７のフローチャートに基づいて説明する。
【０２８３】
ＦＴＰサーバーアプリケーション２８１内でｆｃｌｏｓｅ（）関数がコールされた場合、ＰＣ２は、まず、複合機１がＦＴＰサーバーモードか否かを判断する（Ｓ１１０５）。
ここで、ＦＴＰサーバーモードであれば（Ｓ１１０５：はい）、ＳＣＳＩコマンド「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」および「Ｒｅａｄ  Ｂｕｆｆｅｒ」を使って、複合機１にｆｃｌｏｓｅを要求する（Ｓ１１１０）。
【０２８４】
具体的には、Ｓ１１１０の処理では、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンドにより、ｆｃｌｏｓｅを要求する旨が複合機１へと伝達される。これを受けた複合機１側では、ファイル単位入出力タスク１６１により、先に説明した図８および図９に示した通りの手順でｆｃｌｏｓｅ（）相当の処理が実行される。そして、Ｓ１１１０の処理では、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドにより、複合機１側での処理結果を取得することになる。
【０２８５】
Ｓ１１１０の処理を終えたら、ＰＣ２は、複合機１側での処理に成功したか否かを判断し（Ｓ１１１５）、成功した場合は（Ｓ１１１５：はい）、クローズ成功をコール側に返却する設定を行い（Ｓ１１２０）、図１７に示す処理を終了する。
【０２８６】
一方、Ｓ１１１５の処理で、複合機１側での処理に失敗したと判断した場合は（Ｓ１１１５：いいえ）、クローズエラーをコール側に返却する設定を行い（Ｓ１１２５）、図１７に示す処理を終了する。なお、Ｓ１１０５の処理で、ＦＴＰサーバーモードでないと判断した場合は（Ｓ１１０５：はい）、クローズ成功をコール側に返却する設定を行い（Ｓ１１２０）、図１７に示す処理を終了する。
【０２８７】
以上のような処理により、ＰＣ２は、ファイルシステム２３１を経由することなく、複合機１側にあるファイルシステムタスク１６３経由で、複合機１側のファイルをクローズすることができる。
【０２８８】
［ＦＴＰサーバーアプリケーション内ｆｒｅａｄ（）／ｆｗｒｉｔｅ（）／ｆｓｅｅｋ（）関数］
次に、ＦＴＰサーバーアプリケーション２８１内でｆｒｅａｄ（）／ｆｗｒｉｔｅ（）／ｆｓｅｅｋ（）関数がコールされた場合にＰＣ２が実行する処理について、図１８のフローチャートに基づいて説明する。
【０２８９】
ＦＴＰサーバーアプリケーション２８１内でｆｒｅａｄ（）／ｆｗｒｉｔｅ（）／ｆｓｅｅｋ（）関数がコールされた場合、ＰＣ２は、まず、複合機１がＦＴＰサーバーモードか否かを判断する（Ｓ１２０５）。
【０２９０】
ここで、ＦＴＰサーバーモードであれば（Ｓ１２０５：はい）、ＳＣＳＩコマンド「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」および「Ｒｅａｄ  Ｂｕｆｆｅｒ」を使って、複合機１にｆｒｅａｄ／ｆｗｒｉｔｅ／ｆｓｅｅｋを要求する（Ｓ１２１０）。
【０２９１】
具体的には、Ｓ１２１０の処理では、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンドにより、ｆｒｅａｄ／ｆｗｒｉｔｅ／ｆｓｅｅｋを要求する旨が複合機１へと伝達される。これを受けた複合機１側では、ファイル単位入出力タスク１６１により、先に説明した図８および図９に示した通りの手順でｆｒｅａｄ（）／ｆｗｒｉｔｅ（）／ｆｓｅｅｋ（）相当の処理が実行される。そして、Ｓ１２１０の処理では、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドにより、複合機１側での処理結果を取得することになる。
【０２９２】
Ｓ１２１０の処理を終えたら、ＰＣ２は、複合機１側での処理に成功したか否かを判断し（Ｓ１２１５）、成功した場合は（Ｓ１２１５：はい）、正常終了をコール側に通知する設定を行い（Ｓ１２２０）、図１８に示す処理を終了する。
【０２９３】
一方、Ｓ１２１５の処理で、複合機１側での処理に失敗したと判断した場合（Ｓ１２１５：いいえ）、あるいは、Ｓ１２０５の処理で、ＦＴＰサーバーモードでないと判断した場合は（Ｓ１２０５：はい）、エラーをコール側に通知する設定を行い（Ｓ１２２５）、図１８に示す処理を終了する。
【０２９４】
以上のような処理により、ＰＣ２は、ファイルシステム２３１を経由することなく、複合機１側にあるファイルシステムタスク１６３経由で、複合機１側のファイルに対するｆｒｅａｄ／ｆｗｒｉｔｅ／ｆｓｅｅｋを実行することができる。
【０２９５】
［ＦＴＰサーバーアプリケーション内ｆｌｉｓｔ（）関数］
次に、ＦＴＰサーバーアプリケーション２８１内でｆｌｉｓｔ（）関数がコールされた場合にＰＣ２が実行する処理について、図１９のフローチャートに基づいて説明する。
【０２９６】
ＦＴＰサーバーアプリケーション２８１内でｆｌｉｓｔ（）関数がコールされた場合、ＰＣ２は、まず、複合機１がＦＴＰサーバーモードか否かを判断する（Ｓ１３０５）。
ここで、ＦＴＰサーバーモードであれば（Ｓ１３０５：はい）、ＳＣＳＩコマンド「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」および「Ｒｅａｄ  Ｂｕｆｆｅｒ」を使って、複合機１にｆｌｉｓｔを要求する（Ｓ１３１０）。
【０２９７】
具体的には、Ｓ１３１０の処理では、「Ｗｒｉｔｅ  Ｂｕｆｆｅｒ」コマンドにより、ｆｌｉｓｔを要求する旨が複合機１へと伝達される。これを受けた複合機１側では、ファイル単位入出力タスク１６１により、先に説明した図８および図９に示した通りの手順でｆｌｉｓｔ（）相当の処理が実行される。そして、Ｓ１３１０の処理では、「Ｒｅａｄ  Ｂｕｆｆｅｒ」コマンドにより、複合機１側での処理結果を取得することになる。
【０２９８】
Ｓ１３１０の処理を終えたら、図１８に示す処理を終了、ファイル一覧をコール側に返却する。
一方、Ｓ１３０５の処理で、ＦＴＰサーバーモードでないと判断した場合（Ｓ１３０５：はい）、ファイルは１つも無いというファイル一覧を作成し（Ｓ１３１５）、図１８に示す処理を終了、ファイル一覧をコール側に返却する。
【０２９９】
以上のような処理により、ＰＣ２は、ファイルシステム２３１を経由することなく、複合機１側にあるファイルシステムタスク１６３経由で、複合機１側のファイルに対するｆｌｉｓｔを実行することができる。
【０３００】
［第１実施形態の効果］
以上説明した通り、上記複合機１によれば、ＰＣ１側からの指令により、ＵＳＢモードとＦＴＰモードとを切り替えることができる。そして、ＵＳＢモードに切り替えた際には、複合機１が備える第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４を、ＰＣ２側からＵＳＢストレージデバイスとして認識、利用することができる。
【０３０１】
したがって、ＵＳＢストレージデバイス対応の各種アプリケーションで、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４にセットされたカード上のファイルにアクセスすることができる。
【０３０２】
また、ＦＴＰモードに切り替えた際には、複合機１対応の専用アプリケーション（例えば、ＦＴＰサーバーアプリケーション２８１）で、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４にセットされたカード上のファイルにアクセスすることができる。
【０３０３】
しかも、複合機１対応の専用アプリケーション（例えば、ＦＴＰサーバーアプリケーション２８１）は、複合機１側にあるファイルシステムタスク１６３経由でカード上のファイルにアクセスすることにより、ファイル単位でのアクセスを実行する。
【０３０４】
すなわち、ＦＴＰサーバーアプリケーション２８１は、ＰＣ２側のファイルシステム２３１経由で、カード上のファイルに対してアクセスするＵＳＢストレージデバイス対応の各種アプリケーションとは異なり、カード上のファイルに対し、物理セクタ単位でのアクセスを実行することがない。
【０３０５】
このようなＦＴＰサーバーアプリケーション２８１であれば、ファイルへのアクセス開始（ｆｏｐｅｎ）、アクセス終了（ｆｃｌｏｓｅ）については、複合機１側で管理できる。そのため、先に説明したメディアプリント機能１７１等と全く対等にファイルシステムタスク１６３経由でファイルアクセスを行うことができる。そして、ファイルアクセスが終了すれば、ファイルシステムタスク１６３はメモリスロット制御タスク１４５の使用権を直ちに解放することもできる。
【０３０６】
そのため、物理セクタ単位入出力タスク１４３を利用することになるＵＳＢストレージデバイスとは異なり、Ｓ２５０およびＳ２５５の処理によってメモリスロット制御タスク１４５の使用権解放に時間を要することが多くなるといった問題は無く、メモリスロット制御タスク１４５が無駄に占有される期間を少なくすることができる。
【０３０７】
したがって、ＰＣ２からのアクセス要求、およびデバイス内蔵のデータ処理手段（メディアプリント機能１７１やＦＴＰサーバータスク１７３）からのアクセス要求について、いずれか一方の処理が完了すれば直ちに他方の処理に移ることができ、どちらも迅速な処理が可能となる。
【０３０８】
また、上記のようなＰＣ２からのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求が同時に発生するような状況下でも、それらの要求すべてがデバイス内蔵のファイルシステムタスク１６３によって適切に管理・処理される。
【０３０９】
そのため、物理セクタ単位の入出力とファイルシステムタスク経由の入出力が同時に発生する場合とは異なり、複数のアクセス要求が同時に発生しても何ら問題はなく、各要求に対する処理については、ファイルシステムタスク１６３の管理下で見かけ上同時処理ないし並列処理することも可能となる。
【０３１０】
よって、上記のように、ＰＣ２からのアクセス要求、およびデバイス内蔵のデータ処理手段からのアクセス要求すべてをファイルシステムタスク１６３が管理するように構成されていれば、メディアプリント機能１７１やＦＴＰサーバータスク１７３が、ＰＣ２からのアクセス要求に起因して待たされてしまうことがなく、第１メモリスロット１５１、第２メモリスロット１５２、第３メモリスロット１５３、および第４メモリスロット１５４にセットされたカード上のファイルにアクセスできる可能性を高めることができる。
【０３１１】
さらに、上記のようなＵＳＢモード、ＦＴＰモードのいずれに切り替えられている場合でも、ＰＣ２が複合機１にアクセスする際には、単一のＵＳＢインターフェースを介してアクセスができる。
【０３１２】
したがって、ＵＳＢモード、ＦＴＰモードの各モードで利用するために、それぞれ専用の通信インターフェースを設ける必要はない。よって、その分だけ複合機１やＰＣ２において必要となる通信インターフェース用のハードウェアを削減し、ハードウェアの簡素化を図ることができる。
（２）第２実施形態
次に、第２実施形態について説明する。
【０３１３】
第２実施形態は、上記第１実施形態で例示したＦＴＰサーバーに代えて、ＦＴＰサーバー以外のサーバーアプリケーションを採用した場合の構成を例示するものである。
すなわち、上記実施形態では、ＰＣ２側にＦＴＰサーバーアプリケーション２８１を設けてＦＴＰサーバーとして機能させ、ＦＴＰクライアントからの要求に応じて複合機１側のファイルにアクセスする例を示したが、ファイルを伝送可能なプロトコルであれば、ＦＴＰ以外を採用してもよい。
【０３１４】
具体例を挙げれば、ＦＴＰサーバーの代わりに、ＨＴＴＰ（HyperText Transfer Protocol）サーバーとしたり、ＣＩＦＳ（Common Internet File System）サーバーとしてもよい。以下、ＣＩＦＳサーバーを採用した場合の例について説明する。
【０３１５】
ＣＩＦＳサーバーを採用する場合は、図２０に例示するように、ＰＣ２側には、ＦＴＰサーバーアプリケーション２８１に代えてＣＩＦＳサーバーアプリケーション２９１を設ける。そして、クライアントコンピュータ上にあるＣＩＦＳクライアント（例えば、エクスプローラ２９３）を利用して、ファイルシステム２９５、マイクロソフト（登録商標）ネットワーククライアント２９７等を介して、ＴＣＰ／ＩＰプロトコル２８３経由で、ＣＩＦＳサーバーアプリケーション２９１にアクセスする。
【０３１６】
ＣＩＦＳサーバーアプリケーション２９１には、ＦＴＰサーバーアプリケーション２８１と同等な「複合機１に対するファイルアクセス機能」を設け、ＣＩＦＳクライアントからの要求に応じて複合機１側のファイルにアクセス可能とする。このように構成すれば、上述の第１実施形態と同等の効果を期待することができる。
【０３１７】
また、第２実施形態として上述した例は、ＦＴＰサーバーの代わりにＣＩＦＳサーバーを採用する例であったが、必要があれば、ＦＴＰサーバー、ＣＩＦＳサーバーの双方を利用可能な構成としてもよい。この場合、上記第１実施形態で例示したＵＳＢモード、およびＦＴＰモードに加え、ＣＩＦＳモードが加わることになる。
【０３１８】
これらのモードは、上記実施形態の場合と同様、ＰＣ２の表示部にアイコン表示するとよい。具体的には、ＣＩＦＳモードになっている場合についても、図２１（ａ）に示すように、ＰＣ２の表示部に現在の複合機１のモードを表示するとよい。
【０３１９】
また、このアイコンをポインティングデバイスでクリック操作すると、図２１（ｂ）に示すように、ポップアップウィンドウが表示される点も、上記実施形態と同等に構成すればよい。また、その中で、モード変更やアプリケーションの終了を、利用者がクリック操作で指令できる点も、上記実施形態と同等に構成すればよい。
（３）第３実施形態
次に、第３実施形態について説明する。
【０３２０】
先に説明した第１，第２実施形態では、ＰＣ２からＵＳＢストレージデバイスとして認識されるデバイスの例として、複合機１を例示したが、本発明は、ＵＳＢストレージデバイスとして認識されるデバイスであれば、複合機１以外のデバイスにおいても採用可能である。
【０３２１】
特に、上記複合機１の場合、ＰＣ２にはＵＳＢ複合デバイスとして認識され、ＵＳＢ複合デバイスが備える複数の論理ユニットの１つとして、ＵＳＢストレージデバイスを備えていたが、ＵＳＢ複合デバイスとして認識されるものか否かは任意である。
【０３２２】
すなわち、ＵＳＢ複合デバイスと認識されるもの以外にも、例えば、単一の論理ユニットで構成されるＵＳＢストレージデバイスとして認識されるものであっても、本発明の構成を採用することができる。あるいは、ＵＳＢストレージデバイスには、単一の論理ユニットで構成されるものの他、ＵＳＢ規格上のＬＵＮ（Logical Unit Number）で区別される複数論理ユニットを備えるものがある。そのようなデバイスにおいても本発明の構成を採用することができる。
【０３２３】
以下、第３実施形態では、単一論理ユニットで構成されたＵＳＢストレージデバイスとして認識されるデバイスの具体例として、デジタルカメラ（デジタルスチルカメラ）について説明する。
【０３２４】
図２２に示すデジタルカメラ３０の場合、上述した複合機１と同じく、ＵＳＢインターフェースを介してＰＣ２と接続可能となっている（図２２ではＵＳＢ−ＨＵＢ３を介して接続した状態を例示）。
【０３２５】
より具体的には、デジタルカメラ３０は、ＵＳＢプロトコルエンジン１０１、制御回路１０２、カードリーダ系データ入出力回路１０６、ＳＣＳＩコマンド解析タスク１４１、物理セクタ単位入出力タスク１４３、メモリスロット制御タスク１４５、第１メモリスロット１５１、第２メモリスロット１５２などを備えている。
【０３２６】
これらの構成は、上述の複合機１において同じ符号を付した各構成とほぼ同等に機能するものであり、これらの構成により、デジタルカメラ３０をＵＳＢストレージデバイスとして機能させることができる。
【０３２７】
また、デジタルカメラ３０は、撮影タスク３０１、ＣＣＤ制御タスク３０３、ＣＣＤ３０５、撮影用レンズ３０７、といった撮影系の構成、表示タスク３１１、ＬＣＤ制御タスク３１３、ＬＣＤコントローラＬＳＩ３１５、表示用ＬＣＤ３１７、といった表示系の構成、ボタン制御タスク３２１、ボタン類３２３、といった操作系の構成を備えている。
【０３２８】
そして、上記撮影系の構成によって撮影されたデータを第１メモリスロット１５１や第２メモリスロット１５２にセットされたメモリカードに書き込む場合には、ファイルシステムタスク１６３経由にてファイル単位でのアクセスが行われるようになっている。
【０３２９】
また、第１メモリスロット１５１や第２メモリスロット１５２にセットされたメモリカードから読み込んだデータを、上記表示系の構成によって表示する場合にも、ファイルシステムタスク１６３経由にてファイル単位でのアクセスが行われるようになっている。
【０３３０】
これら撮影系、表示系、および操作系の構成やデジタルカメラ内蔵のファイルシステムは、いずれも一般的なデジタルカメラにおいても採用されている周知の構成である。
以上のような構成に加え、デジタルカメラ３０は、さらに、ファイル単位入出力タスク１６１を備えている。このファイル単位入出力タスク１６１は、上述の複合機１において同じ符号を付したものと同等に機能し、これにより、デジタルカメラ３０を、上述の複合機１同様、ＦＴＰサーバーモードで作動させることができる。
【０３３１】
すなわち、これらデジタルカメラ３０が備える構成と上述の複合機１が備える構成とを対比すれば明らかなように、このデジタルカメラ３０も、上述の複合機１と全く同様に、ＵＳＢストレージモードとＦＴＰサーバーモードとを切り替えて利用可能なデバイスとして構成されている。
【０３３２】
このようなデジタルカメラ３０をＰＣ２に接続すると、ＰＣ２においては、ＵＳＢプロトコルスタック２０１、ＵＳＢストレージドライバ２０３、ＳＣＳＩコマンド処理部２１１、リムーバブルディスクドライバ２２１、ファイルシステム２３１などが機能する。
【０３３３】
これにより、デジタルカメラ３０がＵＳＢストレージモードに切り替えられた際には、上記複合機１の場合と同様に、デジタルカメラ３０をＵＳＢストレージデバイスとして利用することができる。具体的には、例えば、エクスプローラ２７７などのソフトウェアで、デジタルカメラ３０内のファイルにアクセスができるようになる。
【０３３４】
また、ＰＣ２では、ＦＴＰサーバーアプリケーション２８１、ＴＣＰ／ＩＰプロトコル２８３なども機能し、デジタルカメラ３０がＦＴＰサーバーモードに切り替えられた際にも、上記複合機１の場合と同様に機能する。
【０３３５】
すなわち、ＦＴＰクライアントとして機能するＷＥＢブラウザ２８５からのアクセス要求を受けて、ＦＴＰサーバーアプリケーション２８１からデジタルカメラ３０に対してファイルアクセス要求を発行することができる。
【０３３６】
一般に、ＰＣとの接続時にＵＳＢストレージデバイスとして認識されるデジタルカメラの場合、ＰＣに接続すると撮影機能や写真表示機能は使用不能になり、ＵＳＢストレージデバイスとしての機能（カードリーダー機能）のみが有効な状態になる。したがって、撮影機能や写真表示機能を利用したい場合は、必ずＰＣとの接続を解除せざるを得ない。
【０３３７】
これに対し、上記デジタルカメラ３０の場合は、ＦＴＰサーバーモードに切り替えれば、ＰＣ２との接続を解除せず、ＰＣ２からのファイルアクセスを許容したまま（すなわち、カードリーダー機能が利用できる状態のまま）、撮影機能や写真表示機能をも利用することができる。
（４）第４実施形態
第４実施形態では、単一論理ユニットで構成されたＵＳＢストレージデバイスとして認識されるデバイスの具体例として、ＭＰ３プレーヤー（ポータブルオーディオプレーヤー）について説明する。
【０３３８】
図２５は、ＭＰ３プレーヤー４０の内部構成を示すブロック図である。このＭＰ３プレーヤー４０も、上述した複合機１やデジタルカメラ３０と同じく、ＵＳＢプロトコルエンジン１０１、制御回路１０２、カードリーダ系データ入出力回路１０６、ＳＣＳＩコマンド解析タスク１４１、物理セクタ単位入出力タスク１４３などを備えている。これらの構成は、上述の複合機１やデジタルカメラ３０において同じ符号を付した各構成とほぼ同等に機能するものである。
【０３３９】
また、ＭＰ３プレーヤー４０は、再生タスク４０１、ＤＡ制御タスク４０３、ＤＡコンバータ４０５、ヘッドホンジャック４０７、といった再生系の構成、ボタン制御タスク４１１、ボタン類４１３、といった操作系の構成を備えている。
【０３４０】
さらに、ＭＰ３プレーヤー４０は、フラッシュメモリ制御タスク４２１、内蔵フラッシュメモリ４２３などを備えている。これらは、上述した複合機１やデジタルカメラ３０が備えていたメモリスロット制御タスク１４５や、第１メモリスロット１５１、第２メモリスロット１５２に相当する構成であるが、メモリーカードの装着／脱着をできない点でのみ、複合機１やデジタルカメラ３０とは相違する構成となっている。
【０３４１】
このように構成されたＭＰ３プレーヤー４０も、ＰＣ２と接続した際には、ＵＳＢストレージデバイスとして機能させることができる。また、内蔵フラッシュメモリ４２３から読み込んだデータを、上記再生系の構成によって再生する場合には、ファイルシステムタスク１６３経由にてファイル単位でのアクセスが行われるようになっている。
【０３４２】
以上のような構成に加え、ＭＰ３プレーヤー４０は、さらに、ファイル単位入出力タスク１６１を備えている。このファイル単位入出力タスク１６１は、上述の複合機１やデジタルカメラ３０において同じ符号を付したものと同等に機能し、これにより、ＭＰ３プレーヤー４０を、上述の複合機１同様、ＦＴＰサーバーモードで作動させることができる。
【０３４３】
すなわち、これらＭＰ３プレーヤー４０が備える構成と上述の複合機１が備える構成とを対比すれば明らかなように、このＭＰ３プレーヤー４０も、上述の複合機１やデジタルカメラ３０と全く同様に、ＵＳＢストレージモードとＦＴＰサーバーモードとを切り替えて利用可能なデバイスとなる。
【０３４４】
一般に、ＰＣとの接続時にＵＳＢストレージデバイスとして認識されるＭＰ３プレーヤーの場合、ＰＣに接続すると音楽再生機能は使用不能になり、ＵＳＢストレージデバイスとしての機能（カードリーダー機能）のみが有効な状態になる。したがって、音楽再生機能を利用したい場合は、必ずＰＣとの接続を解除せざるを得ない。
【０３４５】
これに対し、上記ＭＰ３プレーヤー４０の場合は、ＦＴＰサーバーモードに切り替えれば、ＰＣ２との接続を解除せず、ＰＣ２からのファイルアクセスを許容したまま（すなわち、カードリーダー機能が利用できる状態のまま）、音楽再生機能をも利用することができる。
（５）変形例等
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【０３４６】
例えば、上記第１，第２実施形態では、ＰＣとの接続時にＵＳＢ複合デバイスとして認識されるデバイスの具体例として複合機を例示し、上記第３，第４実施形態では、ＰＣとの接続時にＵＳＢストレージデバイスとして認識されるデバイスの具体例として、デジタルカメラおよびＭＰ３プレーヤーを例示したが、これら以外の機能を持つデバイスであっても、本発明の構成を採用できるのはもちろんである。例えば、ＩＣレコーダーや携帯電話機などにおいて、本発明の構成を採用してもよい。
【０３４７】
また、上記第１実施形態において、ＦＴＰサーバーアプリケーション２８１は、複合機１がＦＴＰモードのときにアクセス要求を発行し、複合機１がＵＳＢモードのときにはアクセス要求を発行しない構成としてあったが、これも他の構成を考え得る。
【０３４８】
例えば、ＦＴＰサーバーアプリケーション２８１がアクセス要求を発行し、複合機１がアクセスを拒否する応答を返す構成としてもよい。この場合、アクセスを拒否する応答の一例としては、メディアが入っていない旨の応答を返す、といったものを考えることができる。
【０３４９】
また、上記第１実施形態において、ＵＳＢストレージデバイスとして認識されるデバイスは、リムーバブルメディアを装着可能な複合機１であったが、本発明において、ＵＳＢストレージデバイスとして認識されるデバイスが、実際にリムーバブルメディアとしての構成を有するか否かは、特に限定されない。
【０３５０】
具体的には、上記第４実施形態で例示したＭＰ３プレーヤー４０のように、内蔵フラッシュメモリ４２３を備えるデバイスであってもよく、この場合、内蔵フラッシュメモリ４２３がＭＰ３プレーヤー４０に対して装着／脱着可能な構造となっているか否かは、本発明において任意である。
【０３５１】
さらに、上記第１実施形態においては、ＦＴＰクライアントであるＷＥＢブラウザ２８５と、ＦＴＰサーバーアプリケーション２８１が、同一のＰＣ２に搭載されている例を示したが、これらはＬＡＮ経由で通信可能な別のＰＣにそれぞれが搭載されていてもよい。
【０３５２】
すなわち、ＦＴＰクライアントであるＷＥＢブラウザ２８５を備えるクライアントコンピュータと、ＦＴＰサーバーアプリケーション２８１を備えるサーバーコンピュータは、ＴＣＰ／ＩＰによる論理的なデータ伝送路を介して通信可能なものであれば、物理的な実態が同一ＰＣなのか別ＰＣなのかについては問われない。これは、ＦＴＰに代えて、ＨＴＴＰやＣＩＦＳを採用した場合でも同じである。
【０３５３】
加えて、上記実施形態では、ＳＣＳＩ規格に準拠した方式でデータ列を伝送可能な通信インターフェースの具体的な例として、ＵＳＢインターフェースを例示したが、内部的にＳＣＳＩ規格に準拠した方式でデータ列を伝送する通信インタフェースを採用している場合、本発明の構成を採用すれば、上記実施形態で説明した通りの作用、効果を期待することができる。
【０３５４】
具体例を挙げれば、例えば、ＩＤＥコントローラにＡＴＡＰＩ対応デバイスを接続した際には、内部的にＳＣＳＩ規格に準拠した方式でデータ列が伝送されるので、上記実施形態と同様の構成を採用すると効果的である。また、ＩＥＥＥ１３９４インターフェースも、内部的にＳＣＳＩ規格に準拠した方式でデータ列を伝送するように構成されているので、上記実施形態と同様の構成を採用するとよい。
【図面の簡単な説明】
【０３５５】
【図１】第１実施形態として例示したファイル伝送システム全体のブロック図。
【図２】複合機の内部構成を示すブロック図。
【図３】ＰＣの内部構成を示すブロック図
【図４】ＳＣＳＩコマンド解析タスクにおいて実行される処理のフローチャート。
【図５】物理セクタ単位入出力タスクで実行される処理（その１）のフローチャート。
【図６】物理セクタ単位入出力タスクで実行される処理（その２）のフローチャート。
【図７】メディアが入っていない時にＰＣが表示するダイヤログの説明図。
【図８】ファイル単位入出力タスクで実行される処理（その１）のフローチャート。
【図９】ファイル単位入出力タスクで実行される処理（その２）のフローチャート。
【図１０】複合機内部ファイルシステムタスクで実行される処理のフローチャート。
【図１１】複合機内部メディアプリント機能で実行される処理のフローチャート。
【図１２】ＦＴＰサーバーアプリケーションを起動したときに実行される処理のフローチャート。
【図１３】ＰＣに表示されるアイコンの説明図。
【図１４】ＦＴＰサーバーアプリケーションによるＦＴＰモードへの切り替え処理のフローチャート。
【図１５】ＦＴＰサーバーアプリケーションによるＵＳＢモードへの切り替え処理のフローチャート。
【図１６】ＦＴＰサーバーアプリケーション内ｆｏｐｅｎ（）関数のフローチャート。
【図１７】ＦＴＰサーバーアプリケーション内ｆｃｌｏｓｅ（）関数のフローチャート。
【図１８】ＦＴＰサーバーアプリケーション内ｆｒｅａｄ（）／ｆｗｒｉｔｅ（）／ｆｓｅｅｋ（）関数のフローチャート。
【図１９】ＦＴＰサーバーアプリケーション内ｆｌｉｓｔ（）関数のフローチャート。
【図２０】第２実施形態として例示したＰＣの内部構成を示すブロック図。
【図２１】第２実施形態として例示したＰＣに表示されるアイコンの説明図。
【図２２】第３実施形態として例示したファイル伝送システム全体のブロック図。
【図２３】デジタルカメラの内部構成を示すブロック図。
【図２４】デジタルカメラ接続時のＰＣの内部構成を示すブロック図
【図２５】第４実施形態として例示したＭＰ３プレーヤーの内部構成を示すブロック図。
【符号の説明】
【０３５６】
１・・・複合機、２・・・ＰＣ、３・・・ＵＳＢ−ＨＵＢ、４・・・他のＵＳＢデバイス、５・・・ＬＡＮ、６・・・ＰＣ、７・・・ＬＡＮ、８・・・ＰＣ、３０・・・デジタルカメラ、４０・・・ＭＰ３プレーヤー、１０１・・・ＵＳＢプロトコルエンジン、１０２・・・共通制御回路（制御回路）、１０３・・・プリンタ系データ入出力回路、１０４・・・スキャナ系データ入出力回路、１０５・・・ＰＣ−ＦＡＸ系データ入出力回路、１０６・・・カードリーダ系データ入出力回路、１１１・・・プリンタ入出力タスク、１１３・・・印字制御タスク、１１５・・・プリンタハードウェア、１２１・・・スキャナ入出力タスク、１２３・・・スキャナ制御タスク、１２５・・・スキャナハードウェア、１３１・・・ＰＣ−ＦＡＸ入出力タスク、１３３・・・モデム制御タスク、１３５・・・モデムハードウェア、１４１・・・ＳＣＳＩコマンド解析タスク、１４３・・・物理セクタ単位入出力タスク、１４５・・・メモリスロット制御タスク、１５１・・・第１メモリスロット、１５２・・・第２メモリスロット、１５３・・・第３メモリスロット、１５４・・・第４メモリスロット、１６１・・・ファイル単位入出力タスク、１６３・・・ファイルシステムタスク、１７１・・・メディアプリント機能、１７３・・・ＦＴＰサーバータスク、１７３・・・サーバータスク、２０１・・・ＵＳＢプロトコルスタック、２０２・・・ＵＳＢ複合デバイスドライバ、２０３・・・ＵＳＢストレージドライバ、２１１・・・ＳＣＳＩコマンド処理部、２２１・・・リムーバブルディスクドライバ、２２３・・・プリントポートドライバ、２２５・・・スキャナドライバ、２２７・・・ＣＯＭポートドライバ、２３１，２９５・・・ファイルシステム、２６１・・・プリンタドライバ、２７１・・・印刷可能アプリケーション、２７３・・・スキャン可能アプリケーション、２７５・・・ＰＣ−ＦＡＸアプリケーション、２７７，２９３・・・エクスプローラ、２８１・・・ＦＴＰサーバーアプリケーション、２８３・・・ＴＣＰ／ＩＰプロトコル、２８５・・・ＷＥＢブラウザ、２８７・・・他のＵＳＢデバイスのドライバ、２９１・・・ＣＩＦＳサーバーアプリケーション、２９７・・・マイクロソフト（登録商標）ネットワーククライアント、３０１・・・撮影タスク、３０３・・・ＣＣＤ制御タスク、３０７・・・撮影用レンズ、３１１・・・表示タスク、３１３・・・ＬＣＤ制御タスク、３１５・・・ＬＣＤコントローラＬＳＩ、３１７・・・表示用ＬＣＤ、３２１，４１１・・・ボタン制御タスク、３２３，４１３・・・ボタン類、４０１・・・再生タスク、４０３・・・ＤＡ制御タスク、４０５・・・ＤＡコンバータ、４０７・・・ヘッドホンジャック、４２１・・・フラッシュメモリ制御タスク、４２３・・・内蔵フラッシュメモリ。
【図２】
0004424392.tif 000002
【図３】
0004424392.tif 000003
【図４】
0004424392.tif 000004
【図５】
0004424392.tif 000005
【図６】
0004424392.tif 000006
【図８】
0004424392.tif 000007
【図９】
0004424392.tif 000008
【図１０】
0004424392.tif 000009
【図１１】
0004424392.tif 000010
【図１２】
0004424392.tif 000011
【図１４】
0004424392.tif 000012
【図１５】
0004424392.tif 000013
【図１６】
0004424392.tif 000014
【図１７】
0004424392.tif 000015
【図１８】
0004424392.tif 000016
【図１９】
0004424392.tif 000017
【図２０】
0004424392.tif 000018
【図２２】
0004424392.tif 000019
【図２３】
0004424392.tif 000020
【図２４】
0004424392.tif 000021
【図２５】
0004424392.tif 000022
【図１】
0004424392.tif 000023
【図７】
0004424392.tif 000024
【図１３】
0004424392.tif 000025
【図２１】
0004424392.tif 000026