(57)【要約】  本発明のシステムは、アプリケーションからデバイスまで統一された通信チャネル（パイプ）とすることにより、簡潔な構成で遠隔のデバイスを制御する情報処理システムである。この情報処理システムは、デバイスと、デバイスを制御するデバイス制御部と、デバイス制御部とのインタフェースを行なうデバイスインタフェース部と、アプリケーションと、アプリケーションとのインタフェースを行なうアプリケーションインタフェース部とを有する情報処理装置と、アプリケーションインタフェース部と前記デバイスインタフェース部とを、通信部を介して接続し、アプリケーションとデバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立部と、を備える。
2016080426.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと、
前記デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有する情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段と接続した場合に、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備えた情報処理システム。
【請求項２】
前記デバイス制御手段と前記デバイスインタフェース手段とが、通信端末に含まれ、
前記通信端末と前記デバイスとが、シリアルバスで接続された請求項１に記載の情報処理システム。
【請求項３】
前記デバイスと前記デバイス制御手段と前記デバイスインタフェース手段とが、１つの筐体に含まれた請求項１に記載の情報処理システム。
【請求項４】
前記情報処理装置が、前記デバイスインタフェース手段を前記通信端末に配信する配信手段をさらに有する請求項２に記載の情報処理システム。
【請求項５】
前記アプリケーションインタフェース手段は、前記アプリケーションからファイルの入出力操作を受け付け、前記入出力操作に従い、前記デバイス制御手段の制御情報の通信に応じる前記制御チャネルの確立を開始し、データの通信に応じる前記データチャネルの確立を開始する請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記デバイスインタフェース手段は、前記制御チャネルの情報を前記デバイス制御手段における制御情報と対応付けて前記制御チャネルを確立させ、前記データチャネルの情報を前記デバイス制御手段におけるデータと対応付けて前記データチャネルを確立させる請求項５に記載の情報処理システム。
【請求項７】
前記デバイスと前記デバイス制御手段とは、ＵＳＢ(Universal Serial Bus)、ＨＤＭＩ（登録商標）(High-Definition Multimedia Interface)、ＳＣＳＩ(Small Computer System Interface)、ＳＤメモリカード(SD Memory Card)へのインタフェース、または、近距離無線により接続される請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
情報処理装置が、アプリケーションを開始する開始ステップと、
前記情報処理装置が、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段と、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
を含む情報処理方法。
【請求項９】
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える情報処理装置。
【請求項１０】
アプリケーションを開始する開始ステップと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項１１】
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える通信端末。
【請求項１２】
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる通信端末の制御プログラム。
【請求項１３】
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備えるデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、デバイス、情報処理装置、通信端末およびそれらの制御方法と制御プログラムに関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、デバイスドライバを構成する機能ドライバとハブドライバとの間を、ネットワークを介した通信で接続し、ＵＳＢデバイスを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０１６１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術では、ネットワーク通信とＵＳＢ通信とが直接に関連付けられてなく、通信チャネル（パイプ）が分断されているため余分な構成を必要とする。【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る情報処理システムは、
デバイスと、
前記デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有する情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。【０００７】
上記目的を達成するため、本発明に係る情報処理方法は、
情報処理装置が、アプリケーションを開始する開始ステップと、
前記情報処理装置が、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段と、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
を含む。【０００８】
上記目的を達成するため、本発明に係る情報処理装置は、
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。【０００９】
上記目的を達成するため、本発明に係る情報処理装置の制御プログラムは、
アプリケーションを開始する開始ステップと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる。【００１０】
上記目的を達成するため、本発明に係る通信端末は、
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。【００１１】
上記目的を達成するため、本発明に係る通信端末の制御プログラムは、
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
をコンピュータに実行させる。【００１２】
上記目的を達成するため、本発明に係るデバイスは、
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
を備える。
【発明の効果】
【００１３】
本発明によれば、アプリケーションからデバイスまで統一された通信チャネル（パイプ）とすることにより、簡潔な構成で遠隔のデバイスを制御することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ｂ】本発明の第２実施形態に係る情報処理システムの概念を示す図である。
【図２Ｃ】本発明の第２実施形態に係る情報処理システムのネットワークによる遠隔接続を示す図である。
【図２Ｄ】本発明の第２実施形態に係る通信メッセージの構成を示す図である。
【図２Ｅ】本発明の第２実施形態に係るＵＳＢの転送データのフォーマットを示す図である。
【図２Ｆ】本発明の第２実施形態に係るＵＳＢの論理プロトコルを示す図である。
【図３Ａ】前提技術に係る情報処理システムの概念を示す図である。
【図３Ｂ】前提技術に係るデバイスドライバのソフトウェア構成を示す図である。
【図４】本発明の第２実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図５】本発明の第２実施形態に係る通信端末の機能構成を示すブロック図である。
【図６Ａ】本発明の第２実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図６Ｂ】本発明の第２実施形態に係る情報処理システムにおける通信データ構成を示す図である。
【図６Ｃ】本発明の第２実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図７Ａ】本発明の第２実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図７Ｂ】本発明の第２実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図７Ｃ】本発明の第２実施形態に係る情報処理システムの詳細な通信手順を示すシーケンス図である。
【図８】本発明の第２実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図９Ａ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図９Ｂ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図１０】本発明の第２実施形態に係る通信端末のハードウェア構成を示すブロック図である。
【図１１Ａ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１１Ｂ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１２】本発明の第３実施形態に係る情報処理システムの概念を示す図である。
【図１３】本発明の第３実施形態に係るＵＳＢデバイスの機能構成を示すブロック図である。
【図１４】本発明の第３実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図１５】本発明の第３実施形態に係るＵＳＢデバイスのハードウェア構成を示すブロック図である。
【図１６】本発明の第３実施形態に係るＵＳＢデバイスの処理手順を示すフローチャートである。
【図１７】本発明の第４実施形態に係る情報処理システムの概念を示す図である。
【図１８】本発明の第４実施形態に係るＵＳＢハブの機能構成を示すブロック図である。
【図１９】本発明の第４実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図２０】本発明の第４実施形態に係るＵＳＢハブのハードウェア構成を示すブロック図である。
【図２１】本発明の第４実施形態に係るＵＳＢハブの処理手順を示すフローチャートである。
【図２２】本発明の第５実施形態に係る情報処理システムの概念を示す図である。
【図２３】本発明の第５実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図２４】本発明の第６実施形態に係る情報処理システムの概念を示す図である。
【図２５】本発明の第６実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図２６】本発明の第７実施形態に係る情報処理システムの概念を示す図である。
【図２７】本発明の第７実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図２８】本発明の第８実施形態に係る情報処理システムの概念を示す図である。
【図２９】本発明の第８実施形態に係る他の情報処理システムの概念を示す図である。
【図３０】本発明の第９実施形態に係る情報処理システムの概念を示す図である。
【図３１】本発明の第１０実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図３２】本発明の第１０実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。
【発明を実施するための形態】
【００１５】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１６】
［第１実施形態］
本発明の第１実施形態としての情報処理システム１００について、図１を用いて説明する。情報処理システム１００は、接続されたデバイスを制御するシステムである。
【００１７】
図１に示すように、情報処理システム１００は、デバイス１１０と、デバイス制御部１２０と、デバイスインタフェース部１３０と、情報処理装置１４０と、チャネル確立部１５０と、を含む。デバイス制御部１２０は、デバイス１１０を制御する。デバイスインタフェース部１３０は、デバイス制御部１２０とのインタフェースを行なう。情報処理装置１４０は、アプリケーション１４１と、アプリケーション１４１とのインタフェースを行なうアプリケーションインタフェース部１４２とを有する。チャネル確立部１５０は、アプリケーションインタフェース部１４２とデバイスインタフェース部１３０とを、通信部１５１を介して接続し、アプリケーション１４１とデバイス１１０との間に制御チャネル１５２とデータチャネル１５３とを確立する。
【００１８】
本実施形態によれば、アプリケーションからデバイスまで統一された通信チャネル（パイプ）とすることにより、簡潔な構成で遠隔のデバイスを制御することができる。
【００１９】
［第２実施形態］
次に、本発明の第２実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、遠隔の通信端末にＵＳＢ(Universal Serial Bus)ケーブルで接続された遠隔のＵＳＢデバイスを、情報処理装置としてのホストからネットワークを介して制御し、自装置に接続されたデバイスと同じように操作する。
【００２０】
《情報処理システム》
本実施形態の情報処理システムを説明する前に、本実施形態の特徴を明瞭にするために前提技術に係る情報処理システムについて説明する。
【００２１】
（前提技術）
図３Ａは、前提技術に係る情報処理システム３００の概念を示す図である。
【００２２】
情報処理システム３００は、情報処理装置としてのホスト３３０と、そのＵＳＢコネクタに物理的通信線であるＵＳＢケーブル３６０により接続されたＵＳＢデバイス３１０と、を備える。
【００２３】
ホスト３３０は、ソフトウェアとして、アプリケーションソフトウェア３３１と、デバイスドライバとしてのシステムソフトウェア３３２と、ＵＳＢバスインタフェース３３３と、を有する。アプリケーションソフトウェア３３１は、あらかじめホスト３３０が提供するサービス、あるいは、ユーザが開発したサービスを提供するためのソフトウェアである。アプリケーションソフトウェア３３１が実行する入出力ファイル操作の対象デバイスやそのプロトコル、データフォーマットなどに従って、デバイスドライバとしてのシステムソフトウェア３３２がロードされ起動される。システムソフトウェア３３２は、入出力ファイルのコマンドを解釈し、本例ではＵＳＢデバイス３１０での入出力ファイルのアクセスなので、ＵＳＢのプロトコルに応じたコマンドやデータフォーマットを準備して、ＵＳＢバスインタフェース３３３を制御する。ＵＳＢバスインタフェース３３３は、ＵＳＢケーブル３６０上のメッセージのやり取りを制御するホストコントローラと、ＵＳＢケーブル３６０上の信号を制御するＳＩＥ（Serial Interface Engine）とを含む。なお、ＵＳＢバスインタフェース３３３は、ハードウェアチップとして提供されてもよい。
【００２４】
ＵＳＢデバイス３１０は、ソフトウェアとして、ホスト３３０のＵＳＢバスインタフェース３３３とＵＳＢケーブル３６０を介して接続して、信号をやり取りするＵＳＢデバイス３１０のＵＳＢバスインタフェース３１６を有する。
【００２５】
かかる接続により、ホスト３３０とＵＳＢデバイス３１０とは、お互いのＵＳＢバスインタフェース３３３、３１６により物理レベルの通信を実行する。システムレベルのコントロール転送では、デフォルトパイプ３５１を介してシステムソフトウェア３３２がエンドポイント０を使った基本処理３１７としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、パイプ群３５２を介してアプリケーションソフトウェア３３１がエンドポイント１〜ｎを使ったデバイスクラスの各メソッド３１８としてのデータ通信を実現する。
【００２６】
図３Ｂは、前提技術に係るデバイスドライバ３３２のソフトウェア構成を示す図である。
【００２７】
デバイスドライバ３３２は、アプリケーションソフトウェア３３１からのファイル入出力の指示を受ける。そして、デバイスドライバ３３２は、クラスドライバと、バスドライバと、ホストコントローラドライバと、を有する。クラスドライバは、対象デバイスの種類によって異なるプロトコルを実装する。バスドライバは、ＵＳＢ固有のプロトコルを実装する。ホストコントローラドライバは、ＵＳＢデバイス３１０と物理接続するＵＳＢホストコントローラ３３５のハードウェアチップを抽象化する。
【００２８】
《本実施形態の情報処理システム》
図２Ａ乃至図２Ｆを参照して、本実施形態の情報処理システム２００の基本的な構成および動作を説明する。
【００２９】
（システム構成）
図２Ａは、本実施形態に係る情報処理システム２００の構成を示すブロック図である。
【００３０】
情報処理システム２００は、情報処理装置としてのホスト２３０にネットワーク２４０を介して接続された通信端末２２１〜２２３を備える。通信端末２２１〜２２３には、それぞれシリアルバス２６１〜２６５によりデバイス２１２〜２１５が接続されている。なお、デバイス２１３と２１４とは、ハブを介して接続される。また、ホスト２３０には、デバイス２１１が接続されている。ここで、デバイス２１１、２１２はＤＶＤユニット、デバイス２１３は体温計、デバイス２１４は血圧計、デバイス２１５は工作機器である。
【００３１】
このように接続されたデバイスは、ホスト２３０から操作可能なデバイスを示すデバイスマネージャの表示画面上において、次のように表示されている。ホスト２３０のＵＳＢコネクタに接続されたデバイス２１１は、内部のユニバーサル＿シリアル＿バス＿コントローラの欄に“ＵＳＢ＿ＤＶＤ”２３１と表示される。ネットワーク２４０を介して外部に接続されたデバイス２１２〜２１５は、それぞれ、リモート＿ユニバーサル＿シリアル＿バスの欄に“ＵＳＢ＿ＤＶＤ”２３２、“ＵＳＢ＿体温計”２３３、“ＵＳＢ＿血圧計”２３４、“ＵＳＢ＿工作機器”２３５と表示される。ホスト２３０からは、自装置に接続したデバイスもネットワーク２４０を介して遠隔に接続したデバイスも、同じ接続デバイスとして操作される。
【００３２】
（システム概念）
図２Ｂは、本実施形態に係る情報処理システム２００の概念を示す図である。なお、図２Ｂにおいては、常備のソフトウェアであるＯＳ(Operating System)やＢＩＯＳ(Basic Input/Output System)などの図示を省略している。
【００３３】
図２Ｂの情報処理システム２００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２２０と、通信端末２２０のＵＳＢコネクタに接続されたＵＳＢデバイス２１０と、を備える。
【００３４】
ホスト２３０は、ソフトウェアとして、アプリケーションソフトウェア２３１と、デバイスドライバの一部としてのアプリケーションインタフェース（図中、アプリケーションＩＦ）２３２とを有する。アプリケーションソフトウェア２３１は、あらかじめホスト２３０が提供するサービス、あるいは、ユーザが開発したサービスを提供するためのソフトウェアである。アプリケーションインタフェース２３２は、アプリケーションソフトウェア２３１が要求した入出力ファイル操作の構造体を解釈して、入出力ファイル操作の対象デバイスやそのプロトコル、データフォーマットなどに従って、ネットワーク２４０を介して送受信する制御情報やデータを定義する構造体を生成する。本例ではＵＳＢデバイス２１０に対する入出力ファイルのアクセスなので、ＵＳＢのプロトコルに応じたコマンドやデータフォーマットに従うデータの送受信を準備する。
【００３５】
通信端末２２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース（図中、ホストコントローラＩＦ）２２５と、ホストコントローラおよびＳＩＥを有するＵＳＢバスインタフェース２２６とを有する。ホストコントローラインタフェース２２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＵＳＢのプロトコルに応じたコマンドやデータなどを、ＵＳＢバスインタフェース２２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２２５は、ネットワーク２４０を介して、ＵＳＢバスインタフェース２２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＵＳＢバスインタフェース２２６のホストコントローラは、ホストコントローラインタフェース２２５とコマンドやデータなどを交換しながら、ＵＳＢケーブル２６０を介したシリアル通信をＵＳＢプロトコルに従い実行する。ＵＳＢバスインタフェース２２６のＳＩＥは、ＵＳＢケーブル２６０上の信号をＵＳＢ通信の仕様に従い制御する。
【００３６】
ＵＳＢデバイス２１０は、ソフトウェアとして、通信端末２２０のＵＳＢバスインタフェース２２６とＵＳＢケーブル２６０を介して接続して、信号をやり取りするＵＳＢデバイス２１０のＵＳＢバスインタフェース２１６を有する。また、ＵＳＢデバイス２１０は、デバイス情報や制御情報を含むディスクリプタを記憶するＦＩＦＯ(First-in First-out)０からなるエンドポイント０２１７と、入出力データを記憶するＦＩＦＯ１〜ｎからなるエンドポイント１〜ｎ２１８とを有する。
【００３７】
かかる接続により、通信端末２２０とＵＳＢデバイス２１０とは、お互いのＵＳＢバスインタフェース２２６、２１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２２５を介したシステムレベルのコントロール転送により、デフォルトパイプ２５１を介してアプリケーションソフトウェア２３１とエンドポイント０２１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２５２を介してアプリケーションソフトウェア２３１とエンドポイント１〜ｎ２１８との間で、デバイスクラスの各メソッドとしてのデータ通信を実現する。
【００３８】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２２０のホストコントローラインタフェース２２５とのネットワーク通信と、ＵＳＢケーブルを介した、ＵＳＢバスインタフェース２２６と２１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【００３９】
（ネットワークによる遠隔接続）
図２Ｃは、本実施形態に係る情報処理システム２００のネットワークによる遠隔接続を示す図である。
【００４０】
図２Ｃに図示するように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２２０のホストコントローラインタフェース２２５とのネットワーク通信においては、ＵＳＢのデフォルトパイプ２５１である制御チャネルと、ＵＳＢのデータパイプ群２５２となるデータチャネルとが、対応して確立される。そして、アプリケーションインタフェース２３２とアプリケーションソフトウェア２３１とのインタフェース、および、通信端末２２０のホストコントローラインタフェース２２５とＵＳＢバスインタフェース２２６とのインタフェースも、ＵＳＢのデフォルトパイプ２５１およびデータパイプ群２５２に対応付けられている。
【００４１】
（通信メッセージ）
図２Ｄは、本実施形態に係る通信メッセージの構成を示す図である。なお、通信メッセージのフォーマットは、図２Ｄに限定されるものではない。
【００４２】
図２Ｄには、デフォルトパイプ２５１である制御チャネルで送受信される制御メッセージ２７０と、データパイプ群２５２となるデータチャネルで送受信されるデータメッセージ２８０とが図示されている。
【００４３】
制御メッセージ２７０の内、ホスト２３０から通信端末２２０に送信される制御メッセージは、ＩＰアドレス２７１と、伝送先エリア／伝送元エリア２７２と、通信データ２７３と、誤り訂正の例えばＣＲＣ２７４と、を有する。ＩＰアドレス２７１としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア／伝送元エリア２７２としては、伝送先エリアにＵＳＢデバイス２１０のＦＩＦＯ0が、伝送元エリアにホスト２３０のＵＳＢバッファ0が、指示される。また、通信データ２７３としては、ホスト２３０が割り当てたデバイスアドレスやＵＳＢデバイス２１０の制御コマンドが伝送される。
【００４４】
制御メッセージ２７０の内、通信端末２２０からホスト２３０に送信される制御メッセージは、ＩＰアドレス２７５と、伝送先エリア／伝送元エリア２７６と、通信データ２７７と、誤り訂正の例えばＣＲＣ２７８と、を有する。ＩＰアドレス２７５としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア／伝送元エリア２７６としては、伝送先エリアにホスト２３０のＵＳＢバッファ0が、伝送元エリアにＵＳＢデバイス２１０のＦＩＦＯ0が、指示される。また、通信データ２７７としては、ＵＳＢデバイス２１０のデバイスディスクリプタやデバイスステータスが伝送される。
【００４５】
データメッセージ２８０の内、ホスト２３０から通信端末２２０に送信されるデータメッセージは、ＩＰアドレス２８１と、伝送先エリア／伝送元エリア２８２と、通信データ２８３と、誤り訂正の例えばＣＲＣ２８４と、を有する。ＩＰアドレス２８１としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア／伝送元エリア２８２としては、伝送先エリアにＵＳＢデバイス２１０のＦＩＦＯ1〜nが、伝送元エリアにホスト２３０のＵＳＢバッファ1〜nが、対応付けられて指示される。また、通信データ２８３としては、１つまたは複数のバルクＯＵＴデータが伝送される。
【００４６】
データメッセージ２８０の内、通信端末２２０からホスト２３０に送信されるデータメッセージは、ＩＰアドレス２８５と、伝送先エリア／伝送元エリア２８６と、通信データ２８７と、誤り訂正の例えばＣＲＣ２８８と、を有する。ＩＰアドレス２８５としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア／伝送元エリア２８６としては、伝送先エリアにホスト２３０のＵＳＢバッファ1〜nが、伝送元エリアにＵＳＢデバイス２１０のＦＩＦＯ1〜nが、対応付けられて指示される。また、通信データ２８７としては、１つまたは複数のバルクＩＮデータが伝送される。
【００４７】
なお、コントロール転送、バルク転送の外に、インタラプト転送やアイソクロナス転送があるが、データメッセージの構成としては、“ＳＥＴＵＰ”ステージが省略されるが同様であるので、それらのメッセージの説明を省略する。
【００４８】
このように、カプセリングしたＩＰアドレスとしては、ホスト２３０と通信端末２２０との間のネットワーク通信であるが、データは、ホスト２３０にアプリケーションソフトウェア２３１が確保させたＵＳＢバッファと、ＵＳＢデバイス２１０のエンドポイントであるＦＩＦＯとの間で伝送される。
【００４９】
（ＵＳＢの転送フォーマットおよびプロトコル）
図２Ｅは、本実施形態に係るＵＳＢの転送データのフォーマットを示す図である。
【００５０】
全体の構成２９１は、ＳＯＦ(Start of Frame)から始まり、通常は１ｍｓ周期で通信される１つのまとまったトランザクション群を１フレームとする複数のフレームから構成される。なお、図２Ｄにおいて、通信データとして通信される内容は、上記１フレームあるいは複数フレームであってもよい。この場合には、ホストコンピュータ２３０では各ＵＳＢデバイス２１０に対応するマクロプログラム（関数）によりまとまったトランザクション群が生成されて通信端末２２０と通信される。一方、通信端末２２０においてはフレームからトランザクション、さらにパケットへの変換とＵＳＢデバイス２１０とのデータ交換が実行される。
【００５１】
各フレーム構成２９２は、ＳＯＦから始まる複数の１まとまりのトランザクション群からなる。トランザクション構成２９３は、“ＳＥＴＵＰ”、“ＯＵＴ”、“ＩＮ”の３つの送受信の単位である。そして、各トランザクションを構成する最小の通信単位であるパケットがＵＳＢケーブル２６０を介してシリアル通信される。なお、図２Ｅにおいて、網かけしたデータはデバイスからホストコンピュータへ伝送されるデータ、網かけの無いデータはホストコンピュータからデバイスへ伝送されるデータである。なお、図２Ｄにおいて、通信データとして通信される内容は、複数のトランザクションであっても、各トランザクション単位であってもよい。この場合には、ホストコンピュータ２３０では各ＵＳＢデバイス２１０に対応するトランザクション単位のプログラム（関数）によりトランザクションが生成されて通信端末２２０と通信される。通信端末２２０においてはトランザクションからパケットへの変換とＵＳＢデバイス２１０とのデータ交換が実行される。
【００５２】
図２Ｆは、本実施形態に係るＵＳＢの論理プロトコルを示す図である。
【００５３】
コントロール転送のプロトコル２９４は、図２Ｂの双方向のデフォルトパイプ２５１を生成するように、制御データとして制御コマンドやデバイスディスクリプタを転送するプロトコルである。コントロール転送のプロトコル２９４は、転送データを含まない“No-data Control”と、デバイスに制御コマンドを送信する “Control Write”と、デバイスからデバイスディスクリプタなどを受信する“Control Read”とを有する。
【００５４】
バルク転送のプロトコル２９５は、図２Ｂの片方向のデータパイプ群２５２を生成するように、非同期に大量のデータを転送するプロトコルである。バルク転送のプロトコル２９５は、デバイスにデータを送信する “Bulk Write”と、デバイスからデータを受信する“Bulk Read”とを有する。
【００５５】
インタラプト転送のプロトコル２９６は、図２Ｂの片方向のデータパイプ群２５２を生成するように、ホストコンピュータの周期的なポーリングに対して、デバイスが任意のタイミングで応答することによって見かけ上、デバイスからの通知が行われたかのように転送するプロトコルである。インタラプト転送では少量で、いつデータが発生するかタイミングが不定なデータの転送に用いられる。インタラプト転送のプロトコル２９６は、デバイスにデータを送信する“Interrupt Write”と、デバイスからデータを受信する“Interrupt Read”とを有する。
【００５６】
アイソクロナス転送のプロトコル２９７は、図２Ｂの片方向のデータパイプ群２５２を生成するように、周期的にデータ転送が行われるプロトコルである。アイソクロナス転送のプロトコル２９７は、データの信頼性よりも時間が重視されており、エラーによる再送が行われない。音声やＣＣＤカメラの映像などのデータ転送に用いられる。アイソクロナス転送のプロトコル２９７は、デバイスにデータを送信する“Isochronous Write”と、デバイスからデータを受信する“Isochronous Read”とを有する。
【００５７】
なお、図２Ｅのフレームとして、図２Ｆの各転送プロトコルを対応付けてもよいし、複数の転送プロトコルをまとめてフレームを形成してもよい。いずれにしても、ホストコンピュータ２３０側と通信端末２２０側とのフォーマットのネゴシエーションによって、デバイスドライバを構成するアプリケーションインタフェース２３２とホストコントローラインタフェースとの間の種々の論理層（Ｌ２）における通信が実現できる。
【００５８】
《情報処理装置の機能構成》
図４は、本実施形態に係る情報処理装置２３０の機能構成を示すブロック図である。なお、図４には、本実施形態の動作に関連の深い機能構成部を図示し、情報処理装置２３０が有する通常の機能構成部は図示していない。例えば、情報処理装置２３０がパーソナルコンピュータ（以下、ＰＣ）の場合の種々の処理機能については示していない。
【００５９】
情報処理装置２３０は、通信制御部４０１と、チャネル確立部４０２と、アプリケーションデータベース（図中、アプリケーションＤＢ）４１０と、を備える。通信制御部４０１は、ネットワーク２４０を介する通信端末２２０との通信を制御する。チャネル確立部４０２は、アプリケーション開始部４０３とアプリケーションインタフェース起動部４０４とを含み、情報処理装置２３０と通信端末２２０、さらに、ＵＳＢデバイス２１０へのチャネルを確立する。アプリケーションデータベース４１０は、複数のアプリケーション４１１、および、デバイスドライバの一部である複数のアプリケーションインタフェース４１２を格納する。
【００６０】
アプリケーション開始部４０３は、ユーザにサービスを提供するためにアプリケーションデータベース４１０からアプリケーションを選択して開始する。アプリケーションインタフェース起動部４０４は、アプリケーション開始部４０３が開始したアプリケーションにより指示された入出力ファイル操作を実現するためのアプリケーションインタフェースを、アプリケーションデータベース４１０から検索して起動させる。
【００６１】
《通信端末の機能構成》
図５は、本実施形態に係る通信端末２２０の機能構成を示すブロック図である。なお、図５には、本実施形態の動作に関連の深い機能構成部を図示し、通信端末２２０が有する通常の機能構成部は図示していない。例えば、通信端末２２０がスマートフォンやタブレットの場合の種々の処理機能については示していない。
【００６２】
通信端末２２０は、通信制御部５０１と、チャネル確立部５０２と、を備える。通信制御部５０１は、ネットワーク２４０を介する情報処理装置２３０との通信を制御する。チャネル確立部５０２は、ホストコントロールインタフェース起動部５０３と、デバイス制御部としてのＵＳＢホストコントローラ５０４と、ＳＩＥを含むＵＳＢコネクタ５０５と、を含む。ホストコントロールインタフェース起動部５０３は、入出力ファイル操作に対応して、デバイスドライバの一部である、ＵＳＢホストコントローラ５０４とインタフェースするホストコントローラインタフェースを起動する。ＵＳＢホストコントローラ５０４は、アプリケーション開始部４０３が開始したアプリケーションにより指示された入出力ファイル操作を実現するために、ＵＳＢバスインタフェース２２６のパケット交換を制御する。ＵＳＢコネクタ５０５は、ＵＳＢデバイス２１０とのパケット交換のためにＵＳＢケーブルが接続される。
【００６３】
（情報の流れ）
図６Ａは、本実施形態に係る情報処理システム２００における情報の流れを示す図である。なお、図６Ａには、主要な記憶領域を示し、細部の構成は省略している。なお、図６Ａにおいては、デバイスドライバにおいてホストコントローラドライバの処理を、ホストとしての情報処理装置２３０と遠隔の通信端末２２０とに通信を介して分離して、情報処理装置２３０からＵＳＢデバイス２１０を直接接続しているように制御する例を示す。しかしながら、デバイスドライバのどの階層で分離するかは、情報処理装置２３０および通信端末２２０の性能や、通信環境により選択するのが望ましい。
【００６４】
情報処理装置２３０には、入出力ファイル構造体６３１と、ＵＳＢバッファ６３２と、通信構造体６３３と、が確保される。入出力ファイル構造体６３１は、アプリケーションソフトウェア２３１が入出力ファイル操作を指示した時に確保され、例えば、ファイル格納先やデバイス種別、入出力プロトコルなどに対応して所定の処理を行なう関数群と、デバイス情報と、入出力バッファと、を含む。デバイス制御情報６３２は、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＵＳＢデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報６３２は、入出力ファイル構造体６３１のデバイス情報に一体化されていてもよい。ＵＳＢバッファ６３３は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１の関数群の処理に応じて、デバイス種別がＵＳＢデバイスの場合に確保される、エンドポイントにそれぞれ対応するバッファを有する。通信構造体６３４は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１の関数群の処理に応じて、デバイスがネットワークを介した遠隔にある場合に確保される構造体である。通信構造体６３３は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、送信する制御コマンドと、受信したステータスと、送信データを一時記憶する送信バッファと、受信データを一時記憶する受信バッファと、を含む。なお、ＵＳＢバッファ６３３は必須ではない。入出力ファイル構造体６３１の入出力バッファと、通信構造体６３３の送信バッファおよび受信バッファとの間で、直接、データ転送が行なわれてもよい。また、通信により分離されるデバイスドライバの階層が上位であれば、制御コマンドやステータスは独自に通信される必要はなく、送受信データの中に含まれていればよい。
【００６５】
通信端末２２０には、通信構造体６２１と、デバイス制御情報６２２と、ＵＳＢバッファ６２３と、が確保される。通信構造体６２１は、アプリケーションインタフェース２３２が確保した通信構造体６３４に対応付けられた構造体である。通信構造体６２１は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、受信した制御コマンドと、送信するステータスと、受信データを一時記憶する受信バッファと、送信データを一時記憶する送信バッファと、を含む。デバイス制御情報６２２は、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群のそれぞれは、その制御コマンドを実行するＵＳＢコマンド列に変換する制御フローに対応付けられる。また、制御コマンド群には、ＵＳＢデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。ＵＳＢバッファ６２３は、デバイス種別がＵＳＢデバイスの場合に確保される、ＵＳＢデバイス２１０のエンドポイントにそれぞれ対応するバッファを有する。
【００６６】
ＵＳＢデバイス２１０には、エンドポイント６１１として、デバイス種別に応じてＦＩＦＯ0〜ＦＩＦＯnが準備されている。
【００６７】
（通信データ構成例）
図６Ｂは、本実施形態に係る情報処理システム２００における通信データ構成を示す図である。図６Ｂにおいては、図２Ｄにおける、カブセル化のためのＩＰアドレスなどは省かれている。なお、図６Ｂには、本実施形態を実現する通信データ構成の一例を示すが、これに限定されるわけではない。例えば、デバイスドライバの上位層における通信データとして、関数のパラメータ（引数）を送受信することや、さらに、関数自体を送受信することなどもできる。
【００６８】
図６Ｂには、基本的な通信データ構成６５０と、ＵＳＢの場合の通信データ構成６６０と、他のＨＤＭＩ（登録商標）(High-Definition Multimedia Interface)やＳＣＳＩ(Small Computer System Interface)の場合の通信データ構成６７０が示されている。
【００６９】
通信データ構成６５０は、デバイス特定情報６５１を有する。デバイス特定情報６５１は、デバイス種類と、接続バス種類と、デバイス識別子と、を含む。通信データ構成６５０は、接続バスにおける転送モード６５２と、接続バスを介して転送すべき情報６５３と、を有する。転送すべき情報６５３には、コマンドやステータスやデータを含む。
【００７０】
ＵＳＢの場合の通信データ構成６６０は、デバイス特定情報６６１として、デバイス種類である産業機器と、接続バスであるＵＳＢと、デバイス識別子であるＩＥ００１と、を有する。ＵＳＢの場合の通信データ構成６６０は、転送モードとしてＵＳＢコントロール転送６６２と、転送情報６６３としてＵＳＢリクエストやデバイスディスクリプタを含む。かかる構成によれば、従来のＵＳＢ接続による最大１２７台という制限を考慮する必要はなくなる。
【００７１】
他のＨＤＭＩ（登録商標）やＳＣＳＩの場合の通信データ構成６７０は、デバイス特定情報６７１として、モニタ、ＨＤＭＩ（登録商標）、ＭＴ０００２や、ＣＤ、ＳＣＳＩ、ＣＤ０００５を有する。また、転送モード６７２としてＨＤＭＩ（登録商標）制御やＳＣＳＩ制御６７２、転送情報６７３としてＤＤＣ／ＣＥＤやコマンド／レスポンスを含む。
【００７２】
（データ伝送例）
図６Ｃは、本実施形態に係る情報処理システムにおけるデータ伝送を示す図である。なお、図６Ｃは、ＵＳＢデバイスにおけるＬ２レベルの通信を示すが、通信はさらに下位レベルであっても上位レベルであってもよい。図６Ｃは、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示す図である。
【００７３】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエスト６６３により取得される。ＵＳＢリクエスト６６３は、それぞれコントロール転送６６２によりデバイス２１０とやり取りされる。各コントロール転送６６２は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングして、携帯端末２２０から情報処理装置２３０に送信される。
【００７４】
ここで、情報処理装置２３０のアプリケーションインタフェース２３２は、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためコントロール転送６６２とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエスト６６３とを生成して、通信制御部４０１に渡す。
【００７５】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送６６２とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエスト６６３とは、通信端末２２０の通信制御部５０１で受信されてＩＰアンカプセリングされる。コントロール転送６６２とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエスト６６３とは、ホストコントローラインタフェース２２５に渡される。ホストコントローラインタフェース２２５は、コントロール転送６６２とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエスト６６３とに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを生成するようＵＳＢバスインタフェース２２６（不図示）に指示する。
【００７６】
ホストコントローラインタフェース２２５は、デバイス２１０から受信した、データ・ステージで受信したデータパケットをデバイスディスクリプタとして抽出し、コントロール転送６６２とデバイスディスクリプタ６６３として、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送６６２とデバイスディスクリプタ６６３とは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【００７７】
情報処理装置の通信制御部４０１は、アンカプセリングしたコントロール転送６６２とデバイスディスクリプタ６６３をアプリケーションインタフェース２３２に渡すと、アプリケーションインタフェース２３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【００７８】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース２２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【００７９】
（動作手順）
図７Ａ乃至図７Ｃは、本実施形態に係る情報処理システム２００の動作手順を示すシーケンス図である。なお、図７Ａ乃至図７Ｃのシーケンスにおいて実際にはＯＳが種々の処理に関与するが、その図示は最小限に限定されている。また、図７Ａ乃至図７Ｃにおいては、ホスト２３０から処理をイニシエートする（開始する）例を示したが、本実施形態においては、例えＵＳＢによるデバイス接続であっても、ＵＳＢデバイス側から処理をイニシエートすることができる。
【００８０】
図７Ａは、初期動作として、ホスト２３０がＵＳＢデバイス２１０のデバイスディスクリプタを取得し、ＵＳＢデバイス２１０に対応するデバイスドライバを検索して取得する動作手順である。なお、図７Ａでは、ホスト２３０が主動してデバイスディスクリプタを取得する例を示した。一方、ＵＳＢデバイス２１０を通信端末２２０のＵＳＢコネクタに接続したことをトリガとして、デバイスディスクリプタを取得する場合は、ＵＳＢデバイス２１０の接続をホスト２３０に通知することになる。
【００８１】
ステップＳ７０１において、アプリケーションがＩ／Ｏコマンドを発生したとする。このＩ／Ｏコマンドを受けたＯＳは、ステップＳ７０３において、入出力ファイル構造体であるＩ／Ｏファイルを作成する。そして、ステップＳ７０５において、デバイスドライバの上位層であるアプリケーションインタフェースが起動される。アプリケーションインタフェースは、ステップＳ７０７において、ＵＳＢファイルを確保する。そして、ホスト２３０の通信部を介して、ステップＳ７０９において、デバイスディスクリプタを要求する。
【００８２】
通信端末２２０の通信部は、ステップＳ７１１において、デバイスディスクリプタの要求を受信すると、ＯＳがステップＳ７１３において、デバイスドライバの下位層であるホストコントロールインタフェースを起動させる。通信端末２２０は、必要であればステップＳ７１５において、ホストコントローラインタフェースをダウンロードし、ステップＳ７１７において起動する。そして、ホストコントローラインタフェースは、ステップＳ７１９において、ＵＳＢファイルを確保する。起動したホストコントローラインタフェースは、ステップＳ７２１において、デバイス制御部としてのＵＳＢホストコントローラを起動させる。なお、ステップＳ７１５において、ホストコントローラインタフェースは、ホスト２３０から配信されても、他のサーバから配信されてもよい。
【００８３】
ＵＳＢデバイス２１０が、ステップＳ７２３において、ＵＳＢケーブルによって通信端末２２０に接続されると、ステップＳ７２５において、ＦＩＦＯ0に記憶されているデバイスディスクリプタが要求されてＵＳＢデバイス２１０が送信する。デバイスディスクリプタは、ステップＳ７２７において、通信端末２２０に確保されたＵＳＢバッファに一時記憶される。そして、ホストコントローラインタフェースは、ステップＳ７２９において、デバイスディスクリプタをホスト２３０に送信するように通信部に指示する。通信部は、ステップＳ７３１において、ＵＳＢデバイス２１０から取得したデバイスディスクリプタをホスト２３０に送信する。
【００８４】
ホスト２３０の通信部は、ステップＳ７３３において、デバイスディスクリプタを受信して、ステップＳ７３５において、アプリケーションインタフェースに渡す。アプリケーションインタフェースは、デバイスディスクリプタを取得して、ＵＳＢデバイス種別に従い対応するデバイスディスクリプタを取得する。
【００８５】
図７Ｂは、ホスト２３０からＵＳＢデバイス２１０にデータを出力する動作手順と、ホスト２３０がＵＳＢデバイス２１０からデータを入力する動作手順と、である。なお、既にアプリケーションソフトウェア２３１によって、ＵＳＢデバイス２１０へのデータ出力あるいはＵＳＢデバイス２１０からのデータ入力が操作指示されて、ホスト２３０、通信端末２２０およびＵＳＢデバイス２１０は準備が完了しているものとする。
【００８６】
ホスト２３０からＵＳＢデバイス２１０にデータを出力する動作手順において、ホスト２３０のＯＳは、ステップＳ７４１において、アプリケーションからの要求を受けてＵＳＢデバイス２１０に出力するデータを取得して、ＵＳＢバッファに一時記憶する。アプリケーションインタフェースは、ステップＳ７４３において、取得されたデータを遠隔のＵＳＢデバイス２１０に出力するため、ホスト２３０の通信部に出力を指示する。通信部は、ＵＳＢバッファのデータをカプセリングしてＵＳＢデバイス２１０が接続された通信端末２２０に送信する。なお、カプセリングする出力データの量は、バルク出力のデータ量に限定されず、複数単位のバルク出力データを１つのパケットで送信してもよい。
【００８７】
通信端末２２０の通信部は、ステップＳ７４７において、ホスト２３０の通信部から送信された出力データを受信する。ホストコントローラインタフェースは、ステップＳ７４９において、通信部が受信した出力データをアンカプセリングして、対応するＵＳＢバッファに一時記憶する。そして、ホストコントローラインタフェースは、デバイス制御部としてのＵＳＢバスインタフェース２２６に対して、ＵＳＢデバイス２１０への送信を指示する。ホストコントローラインタフェースからの出力指示を受けたＵＳＢバスインタフェース２２６は、ステップＳ７５１において、ＵＳＢバッファのデータをＵＳＢデバイス２１０の対応するＦＩＦＯ（エンドポイント）に対するバルク出力を実行する。このように、ホスト２３０のアプリケーションによる出力ファイル操作に従ったＵＳＢデバイス２１０への出力が実行される。
【００８８】
ＵＳＢデバイス２１０へのバルク出力中またはバルク出力完了時に、ＵＳＢバスインタフェース２２６は、ステップＳ７５３において、ＵＳＢデバイス２１０のステータスを取得する。ホストコントローラインタフェースは、ステップＳ７５５において、ＵＳＢデバイス２１０のステータスをＵＳＢバッファ0に一時記憶する。そして、ホストコントローラインタフェースは、ＵＳＢデバイス２１０のステータスをホスト２３０に送信するよう通信部に指示する。通信端末２２０の通信部は、ステップＳ７５７において、ＵＳＢバッファ0のステータスデータをホスト２３０にカプセリングして送信する。
【００８９】
ホスト２３０の通信部は、ステップＳ７５９において、通信端末２２０の通信部から送信されたステータスデータを受信する。アプリケーションインタフェースは、ステップＳ７６１において、通信部が受信したステータスデータをアンカプセリングして、ＵＳＢバッファ0に一時記憶する。そして、ホストコントローラインタフェースは、ＯＳに対してステータスデータを入出力ファイル構造体への書込を指示する。ＯＳは、ステップＳ７６３において、入出力バッファ構造体としてのＩ／Ｏファイルにステータスデータをセットする。アプリケーションソフトウェア２３１は、ステップＳ７６５において、入出力ファイル構造体を参照することにより出力操作の結果を取得する。
【００９０】
ホスト２３０にＵＳＢデバイス２１０からデータを入力する動作手順において、ホストコントローラインタフェースからの入力指示を受けたＵＳＢバスインタフェース２２６は、ステップＳ７７１において、ＵＳＢデバイス２１０の対応するＦＩＦＯ（エンドポイント）からのバルク入力を実行する。ホストコントローラインタフェースは、ステップＳ７７３において、ＵＳＢデバイス２１０からの入力データを対応するＵＳＢバッファに一時記憶する。そして、ホストコントローラインタフェースは、入力データをホスト２３０に送信するよう通信部に指示する。通信端末２２０の通信部は、ステップＳ７７５において、ＵＳＢバッファの入力データをホスト２３０にカプセリングして送信する。なお、カプセリングする入力データの量は、バルク入力のデータ量に限定されず、複数単位のバルク入力データを１つのパケットで送信してもよい。
【００９１】
ホスト２３０の通信部は、ステップＳ７７７において、通信端末２２０の通信部から送信された入力データを受信する。アプリケーションインタフェースは、ステップＳ７７９において、通信部が受信した入力データをアンカプセリングして、対応するＵＳＢバッファに一時記憶する。そして、ホストコントローラインタフェースは、ＯＳに対して入力データを入出力ファイル構造体への書込を指示する。ＯＳは、ステップＳ７８１において、入出力バッファ構造体としてのＩ／Ｏファイルに入力データをセットする。アプリケーションソフトウェア２３１は、ステップＳ７８３において、入出力ファイル構造体から入力指示した入力データを取得する。
【００９２】
ＵＳＢデバイス２１０へのバルク入力中またはバルク入力完了時に、ＵＳＢバスインタフェース２２６は、ステップＳ７８５において、ＵＳＢデバイス２１０のステータスを取得する。以降のステップＳ７９７までの、アプリケーションソフトウェア２３１が入出力ファイル構造体を参照することにより入力操作の結果を取得する処理は、出力操作時のステップＳ７５５〜Ｓ７６５と同様なので、詳細な説明を省略する。
【００９３】
図７Ｃは、図７Ａのデバイスディスクリプタの要求から取得間の詳細な通信手順を示すシーケンス図である。図７Ｃは、図７Ａの一部の手順を詳細に示したものであるが、図７Ａの他の処理や図７Ｂの処理も図７Ｃのように処理される。図７Ｃにおいては、通信部以外の制御は、ホスト側制御部および通信端末側制御部にまとめられている。
【００９４】
ホスト２３０のホスト側制御部は、ステップＳ７０１０において、ＵＳＢバッファ０を確保する。次に、ホスト側制御部は、ステップＳ７０２０において、ＵＳＢデバイスにデバイス情報を要求する。ステップＳ７０２０は、ＵＳＢリクエストとして“ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲ”を生成するステップＳ７０２１と、コントロール転送のプロトコルを設定するステップＳ７０２３と、を含む。通信部は、ステップＳ７０３０において、制御コマンドを含むメッセージを通信端末２２０に向けて送信する。このメッセージには、コントロール転送であること、ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲであること、が含まれている。
【００９５】
通信端末２２０の通信部は、ステップＳ７０４０において、ホスト２３０からの制御コマンドを含むメッセージを受信する。次に、通信端末側制御部は、ステップＳ７０５０において、ＵＳＢドライブ２１０からデバイスディスクリプタを取得する。ステップＳ７０５０は、ステップＳ７０５１〜Ｓ７０５９を含む。ステップＳ７０５１においては、受信したメッセージから制御コマンドの内容を抽出する。ステップＳ７０５３においては、制御コマンドの内容を実現するためのＵＳＢパケットを生成する。ステップＳ７０５５においては、デバイスディスクリプタを取得するためのＵＳＢバスコントロールを行なう。ステップＳ７０５７においては、デバイスディスクリプタを含むＵＳＢパケットを取得する。そして、ステップＳ７０５９においては、取得したデバイスディスクリプタを含む応答メッセージを生成する。通信端末２２０の通信部は、ステップＳ７０６０において、生成された応答メッセージをホスト２３０に送信する。
【００９６】
ホスト２３０の通信部は、ステップＳ７０７０において、通信端末２２０からの応答メッセージを受信する。なお、応答メッセージには、ＵＳＢデバイス２１０のデバイスディスクリプタが含まれている。ホスト側制御部は、ステップＳ７０８０において、デバイスディスクリプタを分析してＵＳＢドライブ２１０に対応する処理（入出力の準備）を行なう。ステップＳ７０８０は、ステップＳ７０８１と、Ｓ７０８３と、Ｓ７０８５と、を含む。ステップＳ７０８１においては、受信したデバイスディスクリプタを分析する。ステップＳ７０８３においては、ＵＳＢデバイス２１０に対応したデータ転送モードを設定する。ステップＳ７０８５においては、ＵＳＢデバイス２１０に対応したＵＳＢバッファ０以外の必要なＵＳＢバッファを確保する。
【００９７】
以下、ＵＳＢデバイス２１０への設定を経て、データ入出力を行なうことになる。なお、図７Ｃにおいては、デバイスドライバの内、ホストコントローラドライバの処理を、ホストとしての情報処理装置２３０と遠隔の通信端末２２０とに通信を介して分離して、情報処理装置２３０からＵＳＢデバイス２１０を直接接続しているように制御する例を示す。しかしながら、デバイスドライバのどの階層で分離するかは、情報処理装置２３０および通信端末２２０の性能や、通信環境により選択するのが望ましい。
【００９８】
《情報処理装置のハードウェア構成》
図８は、本実施形態に係る情報処理装置２３０のハードウェア構成を示すブロック図である。
【００９９】
図８で、ＣＰＵ(Central Processing Unit)８１０は演算制御用のプロセッサであり、プログラムを実行することで図４の情報処理装置２３０の機能構成部を実現する。ＲＯＭ(Read Only Memory)８２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部４０１は、ネットワーク２４０を介して通信端末２２０と通信する。なお、ＣＰＵ８１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵ(Graphic Processing Unit)を含んでもよい。また、通信制御部４０１は、ＣＰＵ８１０とは独立したＣＰＵを有して、ＲＡＭ(Random Access Memory)８４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ８４０とストレージ８５０との間でデータを転送するＤＭＡＣ(Direct Memory Access Controller)を設けるのが望ましい（図示なし）。さらに、入出力インタフェース８６０は、ＣＰＵ８１０とは独立したＣＰＵを有して、ＲＡＭ８４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ８１０は、ＲＡＭ８４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ８１０は、処理結果をＲＡＭ８４０に準備し、後の送信あるいは転送は通信制御部４０１やＤＭＡＣ、あるいは入出力インタフェース８６０に任せる。
【０１００】
ＲＡＭ８４０は、ＣＰＵ８１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ８４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。入出力ファイル構造体６３１は、アプリケーションソフトウェア２３１の入出力ファイル操作を受けてＯＳが作成する構造体である。入出力ファイル構造体６３１は、ファイル処理関数群と、入出力フラグと、入出力バッファとのエリアを含む。通信構造体６３４は、アプリケーションインタフェース２３２が通信制御プログラム８５８による通信制御を渡すための構造体である。通信構造体６３４は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報６３２は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。ＵＳＢバッファ６３３は、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス２１０の種別や入出力処理に対応して含む。なお、ＵＳＢバッファ６３３は必須な構成ではなく、入出力ファイル構造体６３１と通信構造体６３４との間で、直接、データ交換が行なわれてもよい。
【０１０１】
ストレージ８５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。アプリケーション格納部８５１は、情報処理装置２３０が提供するアプリケーションソフトウェアを検索可能に格納している。関数群格納部８５２は、情報処理装置２３０が使用する関数を検索可能に格納している。ドライバ格納部８５３は、デバイスドライバや、デバイスドライバの一部であるアプリケーションインタフェースなどを検索可能に格納している。
【０１０２】
ストレージ８５０には、以下のプログラムが格納される。ＯＳ８５４は、情報処理装置２３０の全体を制御する基礎プログラムである。ＢＩＯＳ８５５は、情報処理装置２３０の入出力操作を制御する基礎プログラムである。アプリケーションソフトウェア２３１は、現在、情報処理装置２３０が実行中のアプリケーションプログラムである。アプリケーションインタフェース２３２は、デバイスドライバの一部としてアプリケーションソフトウェア２３１とのインタフェースを実現するプログラムである。通信制御プログラム８５８は、通信制御部４０１により通信端末２２０との通信を実行するプログラムである。
【０１０３】
入出力インタフェース８６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース８６０には、表示部８６１、操作部８６２、が接続される。また、情報処理装置２３０に、直接、デバイスをシリアルバスケーブルで接続して使用可能な場合は、ＵＳＢコントローラ（コネクタ）８６３、ＳＣＳＩコントローラ（コネクタ）８６４、ＨＤＭＩ（登録商標）コントローラ（コネクタ）８６５、などが接続されてもよい。さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１０４】
なお、図８のＲＡＭ８４０やストレージ８５０には、情報処理装置２３０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１０５】
《情報処理装置の処理手順》
図９Ａおよび図９Ｂは、本実施形態に係る情報処理装置２３０の処理手順を示すフローチャートである。このフローチャートは、図８のＣＰＵ８１０がＲＡＭ８４０を使用しながら実行して、図４の機能構成部を実現する。なお、図９Ａおよび図９Ｂにおいては、アプリケーションインタフェース２３２による処理手順を説明する。
【０１０６】
情報処理装置２３０は、ステップＳ９０１において、アプリケーションソフトウェア２３１から渡された入出力ファイル構造体を取得する。情報処理装置２３０は、ステップＳ９０３において、入出力ファイル構造体を参照して、ＵＳＢバッファを確保する。情報処理装置２３０は、ステップＳ９０５において、入出力ファイル構造体を参照して、通信構造体を生成する。情報処理装置２３０は、ステップＳ９０７において、ＵＳＢデバイス２１０のデバイスディスクリプタを要求する。そして、情報処理装置２３０は、ステップＳ９０９において、ＵＳＢデバイス２１０のデバイスディスクリプタの受信を待つ。
【０１０７】
ＵＳＢデバイス２１０のデバイスディスクリプタを受信すると、情報処理装置２３０は、ステップＳ９１１において、受信したデバイスディスクリプタを確保されたＵＳＢバッファ0に設定する。そして、情報処理装置２３０は、ステップＳ９１３において、受信したデバイスディスクリプタを入出力ファイル構造体に転送する。受信したデバイスディスクリプタの解析は、ＯＳあるいはＢＩＯＳ、アプリケーションインタフェース２３２、アプリケーションソフトウェア２３１、あるいはその協働で行なわれる。次に、情報処理装置２３０は、ステップＳ９１５において、入出力ファイル構造体からＵＳＢデバイス２１０からの入力処理か、ＵＳＢデバイス２１０への出力処理かを判定する。
【０１０８】
ＵＳＢデバイス２１０からの入力処理の場合、情報処理装置２３０は、ステップＳ９２１において、ＵＳＢデバイス２１０からの入力処理を指示する。本例では、通信構造体が使用され、通信端末２２０のホストコントローラインタフェース２２５を介してＵＳＢデバイス２１０に対して指示を伝達する。情報処理装置２３０は、ステップＳ９２３において、ＵＳＢデバイス２１０からの入力データの受信を待つ。ＵＳＢデバイス２１０からの入力データの受信があれば、情報処理装置２３０は、ステップＳ９２５において、入力データを対応するＵＳＢバッファに格納する。情報処理装置２３０は、ステップＳ９２７において、入出力ファイル構造体が設定する所定量の入力データが受信されたか否かを判定する。所定量でなければ、情報処理装置２３０は、ステップＳ９２３に戻って、次の入力データを受信する。所定量になれば、情報処理装置２３０は、ステップＳ９２９において、ＵＳＢバッファの入力データを入出力ファイル構造体に転送する。そして、情報処理装置２３０は、ステップＳ９３１において、入力処理の完了か否かを判定する。入力処理の完了でなければ、情報処理装置２３０は、ステップＳ９２３に戻って、次の入力データを受信する。
【０１０９】
一方、ＵＳＢデバイス２１０への出力処理の場合、情報処理装置２３０は、ステップＳ９４１において、ＵＳＢデバイス２１０への出力処理を指示する。本例では、通信構造体が使用され、通信端末２２０のホストコントローラインタフェース２２５を介してＵＳＢデバイス２１０に対して指示を伝達する。情報処理装置２３０は、ステップＳ９４３において、入出力ファイル構造体を参照して出力データを取得して、対応するＵＳＢバッファに転送して格納する。そして、情報処理装置２３０は、ステップＳ９４５において、出力データを通信端末２２０に送信する。情報処理装置２３０は、ステップＳ９４７において、ＵＳＢデバイス２１０の種別に対応して所定量の出力データが送信されたか否かを判定する。所定量でなければ、情報処理装置２３０は、ステップＳ９４５に戻って、出力データの送信を繰り返す。所定量になれば、情報処理装置２３０は、ステップＳ９４９において、出力処理の完了か否かを判定する。出力処理の完了でなければ、情報処理装置２３０は、ステップＳ９４３に戻って、次の出力データを取得して送信する。
【０１１０】
入力処理の完了あるいは出力処理の完了と判定すれば、情報処理装置２３０は、ステップＳ９５１において、入出力処理のステータスを取得する。そして、情報処理装置２３０は、ステップＳ９５３において、入出力処理のステータスを入出力ファイル構造体に渡して、アプリケーションソフトウェア２３１に通知する。
【０１１１】
《通信端末のハードウェア構成》
図１０は、本実施形態に係る通信端末２２０のハードウェア構成を示すブロック図である。
【０１１２】
図１０で、ＣＰＵ１０１０は演算制御用のプロセッサであり、プログラムを実行することで図５の通信端末２２０の機能構成部を実現する。ＲＯＭ１０２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部５０１は、ネットワーク２４０を介して情報処理装置２３０と通信する。なお、ＣＰＵ１０１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部５０１は、ＣＰＵ１０１０とは独立したＣＰＵを有して、ＲＡＭ１０４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ１０４０とストレージ１０５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。さらに、入出力インタフェース１０６０は、ＣＰＵ１０１０とは独立したＣＰＵを有して、ＲＡＭ１０４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ１０１０は、ＲＡＭ１０４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ１０１０は、処理結果をＲＡＭ１０４０に準備し、後の送信あるいは転送は通信制御部５０１やＤＭＡＣ、あるいは入出力インタフェース１０６０に任せる。
【０１１３】
ＲＡＭ１０４０は、ＣＰＵ１０１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１０４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体６２１は、ホストコントローラインタフェース２２５が通信制御プログラム１０５７による通信制御を渡すための構造体である。通信構造体６２１は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報６２２は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。ＵＳＢバッファ６２３は、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス２１０の種別や入出力処理に対応して含む。
【０１１４】
ストレージ１０５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部１０５１は、通信端末２２０が使用する関数を検索可能に格納している。コアドライバ格納部１０５２は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【０１１５】
ストレージ１０５０には、以下のプログラムが格納される。ＯＳ１０５３は、本通信端末２２０の全体を制御する基礎プログラムである。ＢＩＯＳ１０５４は、本通信端末２２０の入出力操作を制御する基礎プログラムである。ホストコントローラインタフェース２２５は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。ホストコントローラを含むコアドライバ１０５６は、ＵＳＢシリアル通信を制御するためのプログラムである。通信制御プログラム１０５７は、通信制御部５０１により情報処理装置２３０との通信を実行するプログラムである。
【０１１６】
入出力インタフェース１０６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース１０６０には、表示部１０６１、操作部１０６２、ＵＳＢコントローラ（コネクタ）５０４と５０５、が接続される。また、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１１７】
なお、図１０のＲＡＭ１０４０やストレージ１０５０には、通信端末２２０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１１８】
《通信端末の処理手順》
図１１Ａおよび図１１Ｂは、本実施形態に係る通信端末２２０の処理手順を示すフローチャートである。このフローチャートは、図１０のＣＰＵ１０１０がＲＡＭ１０４０を使用しながら実行して、図５の機能構成部を実現する。なお、図１０Ａおよび図１０Ｂにおいては、ホストコントローラインタフェース２２５による処理手順を説明する。
【０１１９】
通信端末２２０は、ステップＳ１１０１において、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けて、ＵＳＢバッファを確保する。通信端末２２０は、ステップＳ１１０３において、通信構造体を生成する。通信端末２２０は、ステップＳ１１０５において、ＵＳＢデバイス２１０に対してデバイスディスクリプタを要求する。そして、通信端末２２０は、ステップＳ１１０７において、ＵＳＢデバイス２１０からのデバイスディスクリプタの取得を待つ。
【０１２０】
ＵＳＢデバイス２１０のデバイスディスクリプタを取得すると、通信端末２２０は、ステップＳ１１０９において、取得したデバイスディスクリプタを確保されたＵＳＢバッファ0に設定する。そして、通信端末２２０は、ステップＳ１１１１において、取得したデバイスディスクリプタを情報処理装置２３０に送信する。次に、通信端末２２０は、ステップＳ１１１３において、ＵＳＢデバイス２１０からの入力処理か、ＵＳＢデバイス２１０への出力処理かを判定する。
【０１２１】
ＵＳＢデバイス２１０からの入力処理の場合、通信端末２２０は、ステップＳ１１２１において、ＵＳＢデバイス２１０からのバルク入力をＵＳＢバスインタフェース２２６のホストコントローラに指示する。通信端末２２０は、ステップＳ１１２３において、ＵＳＢデバイス２１０からのバルク入力を待つ。ＵＳＢデバイス２１０からのバルク入力があれば、通信端末２２０は、ステップＳ１１２５において、入力データを対応するＵＳＢバッファに格納する。そして、通信端末２２０は、ステップＳ１１２７において、ＵＳＢバッファに格納した入力データを、通信部を介して情報処理装置２３０に送信する。通信端末２２０は、ステップＳ１１２９において、入力処理の完了か否かを判定する。入力処理の完了でなければ、通信端末２２０は、ステップＳ１１２３に戻って、次のバルク入力を待つ。
【０１２２】
一方、ＵＳＢデバイス２１０への出力処理の場合、通信端末は、ステップＳ１１４１において、情報処理装置２３０からの出力データの受信を待つ。出力データの受信があれば、通信端末２２０は、ステップＳ１１４３において、対応するＵＳＢバッファに転送して格納する。そして、通信端末２２０は、ステップＳ１１４５において、出力データのバルク出力をＵＳＢバスインタフェース２２６のホストコントローラに指示する。通信端末は、ステップＳ１１４７において、ＵＳＢバッファからＵＳＢデバイスの対応するＦＩＦＯ（エンドポイント）へのバルク出力の完了を待つ。バルク出力が完了すれば、通信端末２２０は、ステップＳ１１４９において、出力処理の完了か否かを判定する。出力処理の完了でなければ、通信端末は、ステップＳ１１４１に戻って、アプリケーションソフトウェア２３１が指示したＵＳＢデバイス２１０へのデータ出力を継続する。
【０１２３】
入力処理の完了あるいは出力処理の完了と判定すれば、通信端末２２０は、ステップＳ１１３１において、デバイスステータスを取得してＵＳＢバッファに格納する。そして、通信端末２２０は、ステップＳ１１３３において、デバイスステータスを情報処理装置２３０に送信して、アプリケーションソフトウェア２３１に通知する。
【０１２４】
本実施形態によれば、ＵＳＢデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【０１２５】
［第３実施形態］
次に、本発明の第３実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態と比べると、ネットワークを介して直接、遠隔のＵＳＢデバイスを接続して操作する点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１２６】
《情報処理システムの概念》
図１２は、本実施形態に係る情報処理システム１２００の概念を示す図である。なお、図１２において、図２Ｂと同様な機能構成要素には同じ参照番号を付して、説明を省略する。また、図１２においては、常備のソフトウェアであるＯＳやＢＩＯＳなどの図示を省略している。
【０１２７】
情報処理システム１２００は、情報処理装置としてのホスト２３０にネットワーク２４０を介して接続されたＵＳＢデバイス１２１０を備える。ＵＳＢデバイス１２１０は、ホストコントローラインタフェース１２２５を有し、ホスト２３０と直接通信を行ないデバイスの制御をする。また、ＵＳＢケーブルによる物理的な接続は無く、ホストコントローラインタフェース１２２５は、ＵＳＢバッファとＦＩＦＯ（エンドポイント）0〜nとのデータ交換を、ＵＳＢバスインタフェース２１６を介して、直接、実行する。
【０１２８】
このような構成とすることにより、遠隔に直接、ネットワーク接続されたＵＳＢデバイスに対し、情報処理装置に接続した場合と同じ操作ができる。
【０１２９】
《ＵＳＢデバイスの機能構成》
図１３は、本実施形態に係るＵＳＢデバイス１２１０の機能構成を示すブロック図である。なお、図１３には、本実施形態の動作に関連の深い機能構成部を図示し、ＵＳＢデバイス１２１０が有する通常の機能構成部は図示していない。
【０１３０】
ＵＳＢデバイス１２１０は、通信制御部１３０１と、チャネル確立部１３０２と、デバイス機能処理部１３０５と、を備える。通信制御部１３０１は、ネットワーク２４０を介して情報処理装置２３０との通信を制御する。チャネル確立部１３０２は、ホストコントローラとのインタフェースを行なう、デバイスドライバの一部であるホストコントローラインタフェース起動部１３０３とＵＳＢ通信のデータを保持するＦＩＦＯ（エンドポイント）１３０４とを有し、情報処理装置２３０のアプリケーションソフトウェア２３１からＵＳＢデバイス１２１０までの制御チャネルおよびデータチャネルを確立する。デバイス機能処理部１３０５は、エンドポイント１３０４を使用しながらデバイス機能を果たす。
【０１３１】
（情報の流れ）
図１４は、本実施形態に係る情報処理システム１２００における情報の流れを示す図である。なお、図１４において、図６と同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１３２】
ＵＳＢデバイス１２１０が、通信構造体６２１とデバイス制御情報６２２とエンドポイント１３０４とを確保する。エンドポイント１３０４は、デバイス種別に応じてＦＩＦＯ0〜ＦＩＦＯnを含む。
【０１３３】
《デバイスのハードウェア構成》
図１５は、本実施形態に係るＵＳＢデバイス１２１０のハードウェア構成を示すブロック図である。
【０１３４】
図１５で、ＣＰＵ１５１０は演算制御用のプロセッサであり、プログラムを実行することで図１３のＵＳＢデバイス１２１０の機能構成部を実現する。ＲＯＭ１５２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部１３０１は、ネットワーク２４０を介して情報処理装置２３０と通信する。なお、ＣＰＵ１５１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部１３０１は、ＣＰＵ１５１０とは独立したＣＰＵを有して、ＲＡＭ１５４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ１５４０とストレージ１５５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。さらに、入出力インタフェース１５６０は、ＣＰＵ１５１０とは独立したＣＰＵを有して、ＲＡＭ１５４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ１５１０は、ＲＡＭ１５４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ１５１０は、処理結果をＲＡＭ１５４０に準備し、後の送信あるいは転送は通信制御部１３０１やＤＭＡＣ、あるいは入出力インタフェース１５６０に任せる。
【０１３５】
ＲＡＭ１５４０は、ＣＰＵ１５１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１５４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体６２１は、ホストコントローラインタフェース起動部１３０３が通信制御プログラム１５５６による通信制御を渡すための構造体である。通信構造体６２１は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報６２２は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。エンドポイント１３０４は、ＵＳＢデバイス２１０の入出力バッファであり、ＵＳＢデバイス１２１０の種別に対応してＦＩＦＯ0〜nを有する。デバイス用バッファ１５４３は、ＵＳＢデバイス１２１０の処理でＣＰＵ１５１０が使用するバッファである。
【０１３６】
ストレージ１５５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部１５５１は、ＵＳＢデバイス１２１０が使用する関数を検索可能に格納している。コアドライバ格納部１５５２は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【０１３７】
ストレージ１５５０には、以下のプログラムが格納される。ＯＳ１５５３は、ＵＳＢデバイス１２１０の全体を制御する基礎プログラムである。ＢＩＯＳ１５５４は、ＵＳＢデバイス１２１０の入出力操作を制御する基礎プログラムである。ホストコントローラインタフェース１２２５は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。通信制御プログラム１５５６は、通信制御部１３０１により情報処理装置２３０との通信を実行するプログラムである。デバイス制御プログラム１５５７は、ＵＳＢデバイス１２１０の機能を実現するプログラムである。
【０１３８】
入出力インタフェース１５６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース１５６０には、表示部１５６１、操作部１５６２、ＵＳＢデバイス１２１０がセンサデバイスである場合の入出力センサ部１５６３と、が接続される。また、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１３９】
なお、図１５のＲＡＭ１５４０やストレージ１４５０には、ＵＳＢデバイス１２１０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１４０】
《デバイスの処理手順》
図１６は、本実施形態に係るＵＳＢデバイス１２１０の処理手順を示すフローチャートである。このフローチャートは、図１５のＣＰＵ１５１０がＲＡＭ１５４０を使用しながら実行して、図１３の機能構成部を実現する。なお、図１６においては、ホストコントローラインタフェース１２２５による処理手順を説明する。また、図１６において、図１１Ａまたは図１１Ｂと同様のステップには同じステップ番号を付して、説明を省略する。
【０１４１】
ＵＳＢデバイス１２１０は、ステップＳ１６１１において、ＦＩＦＯ0に格納されているデバイスディスクリプタを、情報処理装置２３０に送信する。
【０１４２】
ＵＳＢデバイス１２１０からの入力処理の場合、ＵＳＢデバイス１２１０は、ステップＳ１６２１において、例えば、入出力センサ部１５６３などから入力データを取得する。そして、ＵＳＢデバイス１２１０は、ステップＳ１６２５において、対応するＦＩＦＯに格納する。
【０１４３】
一方、ＵＳＢデバイス１２１０への出力処理の場合、ＵＳＢデバイス１２１０は、ステップＳ１６４３において、情報処理装置２３０から受信した出力データを対応するＦＩＦＯに格納する。そして、ＵＳＢデバイス１２１０は、ステップＳ１６４５において、ＦＩＦＯからデータを出力する。
【０１４４】
ＵＳＢデバイス１２１０は、ステップＳ１６３１において、取得された入出力処理のステータスをＦＩＦＯ0に格納する。
【０１４５】
本実施形態によれば、遠隔に直接、ネットワーク接続されたＵＳＢデバイスに対し、情報処理装置に接続した場合と同じ操作ができる。
【０１４６】
［第４実施形態］
次に、本発明の第４実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態および第３実施形態と比べると、遠隔のＵＳＢハブを接続する点で異なる。その他の構成および動作は、第２実施形態または第３実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１４７】
《情報処理システムの概念》
図１７は、本実施形態に係る情報処理システム１７００の概念を示す図である。なお、図１７において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１４８】
情報処理システム１７００は、ＵＳＢハブ１７６０と、複数のＵＳＢデバイス１７１１〜１７１ｎとを備える。ＵＳＢハブ１７６０は、ホストコントローラインタフェース１７２５と、複数のＳＩＥに分岐するＵＳＢバスインタフェース１７２６とを有する。ホストコントローラインタフェース１７２５は、複数のＵＳＢケーブルに分岐するための機能を有する。また、複数のＳＩＥは、それぞれ、複数のＵＳＢケーブル１７６１〜１７６ｎを介して、複数のＵＳＢデバイス１７１１〜１７１ｎの各ＳＩＥと接続される。
【０１４９】
《ＵＳＢハブの機能構成》
図１８は、本実施形態に係るＵＳＢハブ１７６０の機能構成を示すブロック図である。
【０１５０】
ＵＳＢハブ１７６０は、通信制御部１８０１と、チャネル確立部１８０２と、オプションとして給電部１８１０と、を備える。通信制御部１８０１は、ネットワーク２４０を介して情報処理装置２３０との通信を制御する。チャネル確立部１８０２は、ホストコントローラとのインタフェースを行なう、デバイスドライバの一部であるホストコントローラインタフェース機能部１８０３と、ＵＳＢハブ１７６０で分岐する数のハブ接続部とＵＳＢコネクタとのセット１８０４と、を有する。
【０１５１】
（情報の流れ）
図１９は、本実施形態に係る情報処理システム１７００における情報の流れを示す図である。なお、図１９において、図６と同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１５２】
ＵＳＢハブ１７６０は、通信構造体６２１と、デバイス制御情報６２２と、複数のＵＳＢバッファ１９２３〜１９２ｎと、が確保される。通信構造体６２２は、アプリケーションインタフェース２３２が確保した通信構造体６３３に対応付けられた構造体である。ＵＳＢバッファ１９２３〜１９２ｎは、デバイス種別がＵＳＢデバイスの場合に確保される、ＵＳＢデバイス１７１１〜１７１ｎのエンドポイントにそれぞれ対応するバッファを有する。
【０１５３】
ＵＳＢデバイス１７１１〜１７１ｎには、それぞれ、エンドポイント１９１１〜１９１ｎとして、デバイス種別に応じてＦＩＦＯ0〜ＦＩＦＯnが準備されている。
【０１５４】
《ＵＳＢハブのハードウェア構成》
図２０は、本実施形態に係るＵＳＢハブ１７６０のハードウェア構成を示すブロック図である。
【０１５５】
図２０で、ＣＰＵ２０１０は演算制御用のプロセッサであり、プログラムを実行することで図１８のＵＳＢハブ１７６０の機能構成部を実現する。ＲＯＭ２０２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部１８０１は、ネットワーク２４０を介して情報処理装置２３０と通信する。なお、ＣＰＵ２０１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部１８０１は、ＣＰＵ２０１０とは独立したＣＰＵを有して、ＲＡＭ２０４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ２０４０とストレージ２０５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。さらに、入出力インタフェース２０６０は、ＣＰＵ２０１０とは独立したＣＰＵを有して、ＲＡＭ１０４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ２０１０は、ＲＡＭ２０４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ２０１０は、処理結果をＲＡＭ２０４０に準備し、後の送信あるいは転送は通信制御部１８０１やＤＭＡＣ、あるいは入出力インタフェース２０６０に任せる。
【０１５６】
ＲＡＭ２０４０は、ＣＰＵ２０１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ２０４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体６２１は、ホストコントローラインタフェース１７２５が通信制御プログラム２０５７による通信制御を渡すための構造体である。通信構造体６２１は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。デバイス制御情報６２２は、デバイスを制御するための、制御コマンド群と転送モードとステータスを含む。ＵＳＢバッファ0（１９２３）は、ＵＳＢデバイス１７１１のＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス１７１１の種別や入出力処理に対応して含む。また、ＵＳＢバッファn（１９２ｎ）は、ＵＳＢデバイス１７１ｎのＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス１７１ｎの種別や入出力処理に対応して含む。
【０１５７】
ストレージ２０５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部２０５１は、ＵＳＢハブ１７６０が使用する関数を検索可能に格納している。コアドライバ格納部２０５２は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【０１５８】
ストレージ２０５０には、以下のプログラムが格納される。ＯＳ２０５３は、ＵＳＢハブ１７６０の全体を制御する基礎プログラムである。ＢＩＯＳ２０５４は、ＵＳＢハブ１７６０の入出力操作を制御する基礎プログラムである。なお、ＵＳＢハブ１７６０が入出力操作機能を有しない場合には、ＢＩＯＳ２０５４は必要ない。ホストコントローラインタフェース１７２５は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。ホストコントローラを含むコアドライバ２０５６は、ＵＳＢシリアル通信を制御するためのプログラムである。通信制御プログラム２０５７は、通信制御部１８０１により情報処理装置２３０との通信を実行するプログラムである。ＵＳＢハブ制御プログラム２０５８は、ＵＳＢハブ１７６０の機能を実現するプログラムである。
【０１５９】
入出力インタフェース２０６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース２０６０には、ＵＳＢコントローラ（コネクタ）２０６３〜２０６ｎが接続される。また、ＵＳＢハブ１７６０が入出力操作機能を有する場合は、表示部２０６１、操作部２０６２、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１６０】
なお、図２０のＲＡＭ２０４０やストレージ２０５０には、ＵＳＢハブ１７６０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１６１】
《ＵＳＢハブの処理手順》
図２１は、本実施形態に係るＵＳＢハブ１７６０の処理手順を示すフローチャートである。このフローチャートは、図２０のＣＰＵ２０１０がＲＡＭ２０４０を使用しながら実行して、図１８の機能構成部を実現する。
【０１６２】
ＵＳＢハブ１７６０は、ステップＳ２１０１において、分岐するＵＳＢコネクタ分のＵＳＢバッファ、あるいは、ＵＳＢケーブルが接続されたＵＳＢコネクタ分のＵＳＢバッファを確保する。ＵＳＢハブ１７６０は、ステップＳ２１０３において、ＵＳＢケーブルが接続されたＵＳＢコネクタを認識して、処理対象として選択する。そして、ＵＳＢハブ１７６０は、ステップＳ２１０５において、ホストコントロールインタフェース処理を実行する。なお、ステップＳ２１０５のホストコントロールインタフェース処理は、各ＵＳＢコネクタについて、図１１Ａおよび図１１Ｂを参照して前述した処理と類似であるので、説明を省略する。
【０１６３】
本実施形態によれば、遠隔にネットワークを介して接続されたＵＳＢハブにおいて、接続した複数のＵＳＢデバイスを、情報処理装置に接続した場合と同じ操作ができる。
【０１６４】
［第５実施形態］
次に、本発明の第５実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第４実施形態と比べると、デバイスが接続されるシリアルバスがＨＤＭＩ（登録商標）である点で異なる。その他の構成および動作は、第２実施形態から第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１６５】
《情報処理システムの概念》
図２２は、本実施形態に係る情報処理システム２２００の概念を示す図である。なお、図２２において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１６６】
図２２の情報処理システム２２００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２２２０と、通信端末２２２０のＨＤＭＩ（登録商標）コネクタに接続されたＨＤＭＩ（登録商標）デバイス２２１０と、を備える。
【０１６７】
通信端末２２２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２２２５と、ホストコントローラおよび通信用ＩＣを有するＨＤＭＩ（登録商標）バスインタフェース２２２６とを有する。ホストコントローラインタフェース２２２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＨＤＭＩ（登録商標）のプロトコルに応じたコマンドやデータなどを、ＨＤＭＩ（登録商標）バスインタフェース２２２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２２２５は、ネットワーク２４０を介して、ＨＤＭＩ（登録商標）バスインタフェース２２２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＨＤＭＩ（登録商標）バスインタフェース２２２６のホストコントローラは、ホストコントローラインタフェース２２２５とコマンドやデータなどを交換しながら、ＨＤＭＩ（登録商標）ケーブル２２６０を介したシリアル通信をＨＤＭＩ（登録商標）プロトコルに従い実行する。ＨＤＭＩ（登録商標）バスインタフェース２２２６の通信用ＩＣは、ＨＤＭＩ（登録商標）ケーブル２２６０上の信号をＨＤＭＩ（登録商標）通信の仕様に従い制御する。
【０１６８】
ＨＤＭＩ（登録商標）デバイス２２１０は、ソフトウェアとして、通信端末２２２０のＨＤＭＩ（登録商標）バスインタフェース２２２６とＨＤＭＩ（登録商標）ケーブル２２６０を介して接続して、信号をやり取りするＨＤＭＩ（登録商標）デバイス２２１０のＨＤＭＩ（登録商標）バスインタフェース２２１６を有する。また、ＨＤＭＩ（登録商標）デバイス２２１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント２２１７と、入出力データを記憶するエンドポイント２２１８とを有する。
【０１６９】
かかる接続により、通信端末２２２０とＨＤＭＩ（登録商標）デバイス２２１０とは、お互いのＨＤＭＩ（登録商標）バスインタフェース２２２６および２２１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２２２５を介したシステムレベルのコントロール転送により、制御パイプ（ＤＤＣ：ディスプレイ・データ・チャネル／ＣＥＣ：コンシューマエレクトロニクス・コントロール）２２５１を介してアプリケーションソフトウェア２３１とエンドポイント２２１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２２５２を介してアプリケーションソフトウェア２３１とエンドポイント２２１８との間で、デバイスクラスの各メソッドとしてのＴＭＤＳデータ通信を実現する。
【０１７０】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２２２０のホストコントローラインタフェース２２２５とのネットワーク通信と、ＨＤＭＩ（登録商標）ケーブルを介した、ＨＤＭＩ（登録商標）バスインタフェース２２２６と２２１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【０１７１】
（情報の流れ）
図２３は、本実施形態に係る情報処理システム２２００における情報の流れを示す図である。なお、図２３において、図６と同様の構成要素は同じ参照番号を付して、説明を省略する。
【０１７２】
情報処理装置２３０のデバイス制御情報２３３２は、ＨＤＭＩ（登録商標）における、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＨＤＭＩ（登録商標）デバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報２３３２は、入出力ファイル構造体６３１のデバイス情報に一体化されていてもよい。情報処理装置２３０のＨＤＭＩ（登録商標）バッファ２３３３は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１に定義されたＨＤＭＩ（登録商標）シリアルデータ通信に基づいて確保された、ＨＤＭＩ（登録商標）デバイス２２１０用のバッファである。ＨＤＭＩ（登録商標）バッファ２３３３は、制御信号を格納する制御バッファと、ＴＤＭＳ(Technical Data Management Streaming)ファイル形式のデータを格納するデータバッファと、を含む。なお、ＨＤＭＩ（登録商標）バッファ２３３３を設けずに、入出力ファイル構造体６３１と通信構造体６３４とで、直接、データを交換してもよい。
【０１７３】
通信端末２２２０のデバイス制御情報２３３２は、ＨＤＭＩ（登録商標）における、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＨＤＭＩ（登録商標）デバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末２２２０のＨＤＭＩ（登録商標）バッファ２３２３は、ＨＤＭＩ（登録商標）デバイス２２１０のエンドポイント２３１１に対応付けられて確保され、その構造はＨＤＭＩ（登録商標）バッファ２３３３と同様である。また、ＨＤＭＩ（登録商標）デバイス２２１０のエンドポイント２３１１は、ＨＤＭＩ（登録商標）デバイス２２１０の種別やデータフォーマットなどに対応して準備される。
【０１７４】
本実施形態によれば、シリアルバスとしてＨＤＭＩ（登録商標）を使用しても、上記実施形態同様に、ＨＤＭＩ（登録商標）デバイスを遠隔に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【０１７５】
［第６実施形態］
次に、本発明の第６実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第５実施形態と比べると、デバイスが接続されるシリアルバスがＳＣＳＩである点で異なる。その他の構成および動作は、第２実施形態から第５実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１７６】
《情報処理システムの概念》
図２４は、本実施形態に係る情報処理システム２４００の概念を示す図である。なお、図２４において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１７７】
図２４の情報処理システム２４００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２４２０と、通信端末２４２０のＳＣＳＩコネクタに接続されたＳＣＳＩデバイス２４１０と、を備える。
【０１７８】
通信端末２４２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２４２５と、ホストコントローラおよび通信用ＩＣを有するＳＣＳＩバスインタフェース２４２６とを有する。ホストコントローラインタフェース２４２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＳＣＳＩのプロトコルに応じたコマンドやデータなどを、ＳＣＳＩバスインタフェース２４２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２４２５は、ネットワーク２４０を介して、ＳＣＳＩバスインタフェース２４２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＳＣＳＩバスインタフェース２４２６のホストコントローラは、ホストコントローラインタフェース２４２５とコマンドやデータなどを交換しながら、ＳＣＳＩケーブル２４６０を介したシリアル通信をＳＣＳＩプロトコルに従い実行する。ＳＣＳＩバスインタフェース２４２６の通信用ＩＣは、ＳＣＳＩケーブル２４６０上の信号をＳＣＳＩ通信の仕様に従い制御する。
【０１７９】
ＳＣＳＩデバイス２４１０は、ソフトウェアとして、通信端末２４２０のＳＣＳＩバスインタフェース２４２６とＳＣＳＩケーブル２４６０を介して接続して、信号をやり取りするＳＣＳＩデバイス２４１０のＳＣＳＩバスインタフェース２４１６を有する。また、ＳＣＳＩデバイス２４１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント２４１７と、入出力データを記憶するエンドポイント２４１８とを有する。
【０１８０】
かかる接続により、通信端末２４２０とＳＣＳＩデバイス２４１０とは、お互いのＳＣＳＩバスインタフェース２４２６および２４１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２４２５を介したシステムレベルのコントロール転送により、制御パイプ（ＳＣＳＩコマンド／ＳＣＳＩレスポンス）２４５１を介してアプリケーションソフトウェア２３１とエンドポイント２４１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２４５２を介してアプリケーションソフトウェア２３１とエンドポイント２４１８との間で、デバイスクラスの各メソッドとしてのＳＣＳＩデータ通信を実現する。
【０１８１】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２４２０のホストコントローラインタフェース２４２５とのネットワーク通信と、ＳＣＳＩケーブルを介した、ＳＣＳＩバスインタフェース２４２６と２４１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【０１８２】
（情報の流れ）
図２５は、本実施形態に係る情報処理システム２４００における情報の流れを示す図である。なお、図２５において、図６と同様の構成要素は同じ参照番号を付して、説明を省略する。
【０１８３】
情報処理装置２３０のデバイス制御情報２５３２は、ＳＣＳＩにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＳＣＳＩデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報２５３２は、入出力ファイル構造体６３１のデバイス情報に一体化されていてもよい。情報処理装置２３０のＳＣＳＩバッファ２５３３は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１に定義されたＳＣＳＩシリアルデータ通信に基づいて確保された、ＳＣＳＩデバイス２４１０用のバッファである。ＳＣＳＩバッファ２５３３は、制御信号を格納する制御バッファと、データを格納するデータバッファと、を含む。なお、ＳＣＳＩバッファ２５３３を設けずに、入出力ファイル構造体６３１と通信構造体６３４とで、直接、データを交換してもよい。
【０１８４】
通信端末２４２０のデバイス制御情報２５２２は、ＳＣＳＩにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＳＣＳＩデバイスへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末２４２０のＳＣＳＩバッファ２５２３は、ＳＣＳＩデバイス２４１０のエンドポイント２５１１に対応付けられて確保され、その構造はＳＣＳＩバッファ２５３３と同様である。また、ＳＣＳＩデバイス２４１０のエンドポイント２５１１は、ＳＣＳＩデバイス２４１０の種別やデータフォーマットなどに対応して準備される。
【０１８５】
本実施形態によれば、シリアルバスとしてＳＣＳＩを使用しても、上記実施形態同様に、ＳＣＳＩデバイスを遠隔に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【０１８６】
［第７実施形態］
次に、本発明の第７実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第６実施形態と比べると、遠隔に接続するデバイスがＳＤカードである点で異なる。その他の構成および動作は、第２実施形態から第６実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１８７】
《情報処理システムの概念》
図２６は、本実施形態に係る情報処理システム２６００の概念を示す図である。なお、図２６において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１８８】
図２６の情報処理システム２６００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２６２０と、通信端末２６２０のコネクタに接続されたＳＤカード２６１０と、を備える。
【０１８９】
通信端末２６２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２６２５と、ホストコントローラおよびバス用アンプを有するＳＤカードバスインタフェース２６２６とを有する。ホストコントローラインタフェース２６２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＳＤカードのプロトコルに応じたコマンドやデータなどを、ＳＤカードバスインタフェース２６２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２６２５は、ネットワーク２４０を介して、ＳＤカードバスインタフェース２６２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＳＤカードバスインタフェース２６２６のホストコントローラは、ホストコントローラインタフェース２６２５とコマンドやデータなどを交換しながら、ＳＤカードコネクタ２６６０を介したシリアル通信をＳＤカードのプロトコルに従い実行する。ＳＤカードバスインタフェース２６２６のバス用アンプは、ＳＤカードコネクタ２６６０上の信号をＳＤカード用通信の仕様に従い制御する。
【０１９０】
ＳＤカード２６１０は、ソフトウェアとして、通信端末２６２０のＳＤカードバスインタフェース２６２６とＳＤカードコネクタ２６６０を介して接続して、信号をやり取りするＳＤカード２６１０のＳＤカードバスインタフェース２６１６を有する。また、ＳＤカード２６１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント２６１７と、入出力データを記憶するエンドポイント２６１８とを有する。
【０１９１】
かかる接続により、通信端末２６２０とＳＤカード２６１０とは、お互いのＳＤカードバスインタフェース２６２６および２６１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２６２５を介したシステムレベルのコントロール転送により、制御パイプ（ＳＤカードコマンド）２６５１を介してアプリケーションソフトウェア２３１とエンドポイント２６１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２６５２を介してアプリケーションソフトウェア２３１とエンドポイント２６１８との間で、デバイスクラスの各メソッドとしてのデータ通信を実現する。
【０１９２】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２６２０のホストコントローラインタフェース２６２５とのネットワーク通信と、ＳＤカードコネクタを介した、ＳＤカードバスインタフェース２６２６と２６１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【０１９３】
（情報の流れ）
図２７は、本実施形態に係る情報処理システム２６００における情報の流れを示す図である。なお、図２７において、図６と同様の構成要素は同じ参照番号を付して、説明を省略する。
【０１９４】
情報処理装置２３０のデバイス制御情報２７３２は、ＳＤカードにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＳＤカードへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。なお、デバイス制御情報２７３２は、入出力ファイル構造体６３１のデバイス情報に一体化されていてもよい。情報処理装置２３０のＳＤカードバッファ２７３３は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１に定義されたＳＤカードシリアルデータ通信に基づいて確保された、ＳＤカード２６１０用のバッファである。ＳＤカードバッファ２７３３は、制御信号を格納する制御バッファと、データを格納するデータバッファと、を含む。なお、ＳＤカードバッファ２７３３を設けずに、入出力ファイル構造体６３１と通信構造体６３４とで、直接、データを交換してもよい。
【０１９５】
通信端末２６２０のデバイス制御情報２７２２は、ＳＤカードにおける、送受信される制御コマンド群と、現在の転送モードと、ステータスと、を含む。ここで、制御コマンド群には、ＳＤカードへの入出力を制御するための制御コマンドの外に、通信に関わる設定や通信エラーへの対処などを制御する制御コマンドを含む。通信端末２６２０のＳＤカードバッファ２７２３は、ＳＤカード２６１０のエンドポイント２７１１に対応付けられて確保され、その構造はＳＤカードバッファ２７３３と同様である。また、ＳＤカード２６１０のエンドポイント２７１１は、ＳＤカード２６１０の種別やデータフォーマットなどに対応して準備される。
【０１９６】
本実施形態によれば、遠隔に接続するデバイスがＤＣカードであっても、上記実施形態同様に、情報処理装置に直接接続した場合と同じ操作ができる。
【０１９７】
［第８実施形態］
次に、本発明の第８実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第７実施形態と比べると、遠隔の通信端末から近距離無線（近接無線）によりデバイスを接続する点で異なる。その他の構成および動作は、第２実施形態から第７実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１９８】
《情報処理システム》
図２８は、本実施形態に係る情報処理システム２８００の概念を示す図である。図２８は、遠隔の通信端末がＷｉ−Ｆｉ通信でデバイスを接続する場合である。なお、図２８において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１９９】
図２８の情報処理システム２８００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２８２０と、通信端末２８２０とＷｉ−Ｆｉ無線で接続されたＷｉ−Ｆｉデバイス２８１０と、を備える。
【０２００】
通信端末２８２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２８２５と、ホストコントローラおよびＷｉ−Ｆｉ用ＩＣを有するＷｉ−Ｆｉバスインタフェース２８２６とを有する。ホストコントローラインタフェース２８２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＷｉ−Ｆｉのプロトコルに応じたコマンドやデータなどを、Ｗｉ−Ｆｉバスインタフェース２８２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２８２５は、ネットワーク２４０を介して、Ｗｉ−Ｆｉバスインタフェース２８２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。Ｗｉ−Ｆｉバスインタフェース２８２６のホストコントローラは、ホストコントローラインタフェース２８２５とコマンドやデータなどを交換しながら、Ｗｉ−Ｆｉ通信２８６０を介したシリアル通信をＦｉ−Ｆｉプロトコルに従い実行する。Ｗｉ−Ｆｉバスインタフェース２８２６のＷｉ−Ｆｉ用ＩＣは、Ｗｉ−Ｆｉ通信２８６０上の信号をＷｉ−Ｆｉ通信の仕様に従い制御する。
【０２０１】
Ｗｉ−Ｆｉデバイス２８１０は、ソフトウェアとして、通信端末２８２０のＷｉ−Ｆｉバスインタフェース２８２６とＷｉ−Ｆｉ通信２８６０を介して接続して、信号をやり取りするＷｉ−Ｆｉデバイス２８１０のＷｉ−Ｆｉバスインタフェース２８１６を有する。また、Ｗｉ−Ｆｉデバイス２８１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント２８１７と、入出力データを記憶するエンドポイント２８１８とを有する。
【０２０２】
かかる接続により、通信端末２８２０とＷｉ−Ｆｉデバイス２８１０とは、お互いのＷｉ−Ｆｉバスインタフェース２８２６および２８１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２８２５を介したシステムレベルのコントロール転送により、制御パイプ２８５１を介してアプリケーションソフトウェア２３１とエンドポイント２８１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２８５２を介してアプリケーションソフトウェア２３１とエンドポイント２８１８との間で、デバイスクラスの各メソッドとしてのＷｉ−Ｆｉデータ通信を実現する。
【０２０３】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２８２０のホストコントローラインタフェース２８２５とのネットワーク通信と、Ｗｉ−Ｆｉ通信を介した、Ｗｉ−Ｆｉバスインタフェース２８２６と２８１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【０２０４】
図２９は、本実施形態に係る他の情報処理システム２９００の概念を示す図である。図２９は、遠隔の通信端末がＢｌｕｅｔｏｏｔｈ（登録商標）通信でデバイスを接続する場合である。なお、図２９において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０２０５】
図２９の情報処理システム２９００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２９２０と、通信端末２９２０とＢｌｕｅｔｏｏｔｈ（登録商標）無線で接続されたＢｌｕｅｔｏｏｔｈ（登録商標）デバイス２９１０と、を備える。
【０２０６】
通信端末２９２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２９２５と、ホストコントローラおよびＢｌｕｅｔｏｏｔｈ（登録商標）用ＩＣを有するＢｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６とを有する。ホストコントローラインタフェース２９２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＢｌｕｅｔｏｏｔｈ（登録商標）のプロトコルに応じたコマンドやデータなどを、Ｂｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２９２５は、ネットワーク２４０を介して、Ｂｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。Ｂｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６のホストコントローラは、ホストコントローラインタフェース２９２５とコマンドやデータなどを交換しながら、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信２９６０を介したシリアル通信をＦｉ−Ｆｉプロトコルに従い実行する。Ｂｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６のＢｌｕｅｔｏｏｔｈ（登録商標）用ＩＣは、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信２９６０上の信号をＢｌｕｅｔｏｏｔｈ（登録商標）通信の仕様に従い制御する。
【０２０７】
Ｂｌｕｅｔｏｏｔｈ（登録商標）デバイス２９１０は、ソフトウェアとして、通信端末２９２０のＢｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６とＢｌｕｅｔｏｏｔｈ（登録商標）通信２９６０を介して接続して、信号をやり取りするＢｌｕｅｔｏｏｔｈ（登録商標）デバイス２９１０のＢｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９１６を有する。また、Ｂｌｕｅｔｏｏｔｈ（登録商標）デバイス２９１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報のエンドポイント２９１７と、入出力データを記憶するエンドポイント２７１８とを有する。
【０２０８】
かかる接続により、通信端末２９２０とＢｌｕｅｔｏｏｔｈ（登録商標）デバイス２９１０とは、お互いのＢｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６および２９１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２９２５を介したシステムレベルのコントロール転送により、制御パイプ２９５１を介してアプリケーションソフトウェア２３１とエンドポイント２９１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２９５２を介してアプリケーションソフトウェア２３１とエンドポイント２９１８との間で、デバイスクラスの各メソッドとしてのＢｌｕｅｔｏｏｔｈ（登録商標）データ通信を実現する。
【０２０９】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２９２０のホストコントローラインタフェース２９２５とのネットワーク通信と、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信を介した、Ｂｌｕｅｔｏｏｔｈ（登録商標）バスインタフェース２９２６と２９１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【０２１０】
なお、本実施形態においては、近距離無線（近接無線）としてＢｌｕｅｔｏｏｔｈ（登録商標）無線やＢｌｕｅｔｏｏｔｈ（登録商標）無線を例に示したが、他の赤外線通信などにおいても同様の構成で同様の効果が得られる。
【０２１１】
本実施形態によれば、遠隔に接続するデバイスが近距離無線（近接無線）による接続であっても、上記実施形態同様に、情報処理装置に直接接続した場合と同じ操作ができる。
【０２１２】
［第９実施形態］
次に、本発明の第９実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第７実施形態と比べると、情報処理装置に対してネットワークを介して異なる位置の複数のデバイスを接続する点で異なる。その他の構成および動作は、第２実施形態から第７実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０２１３】
《情報処理システムの概念》
図３０は、本実施形態に係る情報処理システム３０００の概念を示す図である。なお、図３０において、図２Ｂ、図１２、図１７、または、図２２と同様の構成要素には同じ参照番号を付している。また、図３０には、図２４、図２６の通信端末は示されていないが、これらも図３０においてネットワーク２４０を介して、情報処理装置２３０と接続されて、シリアルバス制御の遠隔への延長が可能である。
【０２１４】
図３０には、情報処理装置２３０とネットワークを介して、ＵＳＢ接続機能を有する図２Ｂの通信端末２２０、ＵＳＢ接続機能を有する図１２のデバイス１２１０、ＵＳＢハブ機能を有する図１７のＵＳＢハブ１７６０、ＨＤＭＩ（登録商標）接続機能を有する図２２の通信端末２２２０、Ｗｉ−Ｆｉ通信機能を有する図２８の通信端末２８２０が接続されて、複数のシリアルバス接続が可能である。
【０２１５】
本実施形態によれば、遠隔の異なる場所に複数のデバイスを自在に接続して、情報処理装置に直接接続した場合と同じ操作ができる。
【０２１６】
［第１０実施形態］
次に、本発明の第１０実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第９実施形態と比べると、情報処理装置２３０（仮想ＰＣ）とデバイスが接続された通信端末２２０との間で異なるデータが通信される点で異なる。すなわち、本実施形態においては、情報処理装置２３０のアプリケーションＩＦと通信端末２２０のホストコントローラＩＦとが、第２実施形態と異なる部分で分離されている。例えば、ホストコントローラチップ（ＨＣ）を含めて全体のデバイスドライバをソフトウェアで実現した場合に、特に、ホストコントローラドライバとホストコントローラチップとの組を種々の階層で通信効率や通信速度を考慮して分割する。そして、分割された階層間の情報を情報処理装置２３０と通信端末２２０間でネットワーク通信するよう設計する。その他の構成および動作は、第２実施形態から第９実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０２１７】
（データ伝送例）
図３１は、本実施形態に係る情報処理システムにおけるデータ伝送を示す図である。なお、図３１は、図６Ｃと同様に、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示す図である。したがって、図３１において、図６Ｃと同様の構成要素には同じ参照番号を付して、説明は省略する。
【０２１８】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。コントロール転送であるＵＳＢリクエストのＵＳＢプロトコルを含むフレームは、情報処理装置２３０とデバイス２１０間でやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたフレームに挿入されて、携帯端末２２０から情報処理装置２３０に送信される。
【０２１９】
ここで、情報処理装置２３０のアプリケーションインタフェース３１３２は、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むフレームを生成して、通信制御部４０１に渡す。
【０２２０】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストを含むフレームは、通信端末２２０の通信制御部５０１で受信されてＩＰアンカプセリングされる。ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストは、ホストコントローラインタフェース３１２５に渡される。ホストコントローラインタフェース３１２５は、ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むフレームに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを転送するようＵＳＢバスインタフェース２２６（不図示）に指示する。
【０２２１】
ホストコントローラインタフェース３１２５は、デバイス２１０からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ３１６３として含むフレームを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデバイスディスクリプタ３１６３を含むフレームは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２２２】
情報処理装置の通信制御部４０１は、アンカプセリングしたデバイスディスクリプタ３１６３を含むフレームをアプリケーションインタフェース３１３２に渡すと、アプリケーションインタフェース３１３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２２３】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース３１２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【０２２４】
図３２は、本実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。なお、図３２は、図６Ｃおよび図３１と同様に、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示す図である。したがって、図３２において、図６Ｃおよび図３１と同様の構成要素には同じ参照番号を付して、説明は省略する。
【０２２５】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。ＵＳＢリクエストのＵＳＢプロトコルを含むコントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。コントロール転送であるＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージと、データ・ステージと、ステータス・ステージとは、それぞれ、情報処理装置２３０とデバイス２１０間でやり取りされる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデータ・ステージに挿入されて、携帯端末２２０から情報処理装置２３０に送信される。
【０２２６】
ここで、情報処理装置２３０のアプリケーションインタフェース３２３２は、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージを生成して、通信制御部４０１に渡す。
【０２２７】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストを含むセット・ステージは、通信端末２２０の通信制御部５０１で受信されてＩＰアンカプセリングされる。ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストは、ホストコントローラインタフェース３２２５に渡される。ホストコントローラインタフェース３２２５は、ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを転送するようＵＳＢバスインタフェース２２６（不図示）に指示する。
【０２２８】
ホストコントローラインタフェース３２２５は、デバイス２１０からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ３２６３として含むデータ・ステージを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデバイスディスクリプタ３２６３を含むデータ・ステージは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２２９】
情報処理装置の通信制御部４０１は、アンカプセリングしたデバイスディスクリプタ３２６３を含むデータ・ステージをアプリケーションインタフェース３２３２に渡すと、アプリケーションインタフェース３２３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２３０】
また、ホストコントローラインタフェース３２２５は、デバイス２１０からステータス・ステージで受信したデータ・パケットをステータスデータ３２６４として含むステータス・ステージを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたステータスデータ３２６４を含むステータス・ステージは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２３１】
情報処理装置の通信制御部４０１は、アンカプセリングしたステータスデータ３２６４を含むステータス・ステージをアプリケーションインタフェース３２３２に渡すと、アプリケーションインタフェース３２３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２３２】
なお、上記説明では、アプリケーションインタフェース３２３２においては、ハンドシェイク・パケットについて判定していないが、アプリケーションインタフェース３２３２が各ステージにおけるハンドシェイク・パケットを確認する構成であってもよい。
【０２３３】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース３２２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【０２３４】
本実施形態によれば、情報処理装置（仮想ＰＣ）と通信端末間の通信が互いのドライバを分割したフレーム単位の通信であってもステージ単位の通信であっても、ＵＳＢデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【０２３５】
［他の実施形態］
なお、上記実施形態においては、情報処理装置としてのホストをスタンドアロンのＰＣとして説明したが、本実施形態のホストはクラウドサーバ内に構築された仮想ＰＣであってよい。本実施形態のホストが仮想ＰＣである場合、クラウドサーバに蓄積されたデバイス接続履歴をナレッジとして利用し、仮想ＰＣから遠隔デバイスへの好適な接続を構成することができる。
【０２３６】
また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０２３７】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【０２３８】
なお、この出願は、同日出願された日本国特許出願（特願２０１４−２３５１０９，特願２０１４−２３５１１０、特願２０１４−２３５１１１）と関連し、その開示の全てをここに取り込む。
【０２３９】
この出願は、２０１４年１１月１９日に出願された日本国特許出願  特願２０１４−２３５１０８号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2016080426.tif 000003
【図２Ａ】
2016080426.tif 000004
【図２Ｂ】
2016080426.tif 000005
【図２Ｃ】
2016080426.tif 000006
【図２Ｄ】
2016080426.tif 000007
【図２Ｅ】
2016080426.tif 000008
【図２Ｆ】
2016080426.tif 000009
【図３Ａ】
2016080426.tif 000010
【図３Ｂ】
2016080426.tif 000011
【図４】
2016080426.tif 000012
【図５】
2016080426.tif 000013
【図６Ａ】
2016080426.tif 000014
【図６Ｂ】
2016080426.tif 000015
【図６Ｃ】
2016080426.tif 000016
【図７Ａ】
2016080426.tif 000017
【図７Ｂ】
2016080426.tif 000018
【図７Ｃ】
2016080426.tif 000019
【図８】
2016080426.tif 000020
【図９Ａ】
2016080426.tif 000021
【図９Ｂ】
2016080426.tif 000022
【図１０】
2016080426.tif 000023
【図１１Ａ】
2016080426.tif 000024
【図１１Ｂ】
2016080426.tif 000025
【図１２】
2016080426.tif 000026
【図１３】
2016080426.tif 000027
【図１４】
2016080426.tif 000028
【図１５】
2016080426.tif 000029
【図１６】
2016080426.tif 000030
【図１７】
2016080426.tif 000031
【図１８】
2016080426.tif 000032
【図１９】
2016080426.tif 000033
【図２０】
2016080426.tif 000034
【図２１】
2016080426.tif 000035
【図２２】
2016080426.tif 000036
【図２３】
2016080426.tif 000037
【図２４】
2016080426.tif 000038
【図２５】
2016080426.tif 000039
【図２６】
2016080426.tif 000040
【図２７】
2016080426.tif 000041
【図２８】
2016080426.tif 000042
【図２９】
2016080426.tif 000043
【図３０】
2016080426.tif 000044
【図３１】
2016080426.tif 000045
【図３２】
2016080426.tif 000046
【国際調査報告】
2016080426.tif 000047
2016080426.tif 000048
2016080426.tif 000049