(57)【特許請求の範囲】
【請求項１】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置であって、
前記デバイスに対するデータ入力を指示する入力要求指示手段と、
前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、
前記入力要求指示手段から前記デバイスに対してアイソクロナス転送によるデータ入力要求が指示されると、アイソクロナス入力要求を生成して送出する入力要求生成手段と、
前記入力要求生成手段から送出される前記アイソクロナス入力要求を受信し、当該受信した最初のアイソクロナス入力要求を前記デバイス制御装置に対して送信し、前記最初のアイソクロナス入力要求の受信以後に受信するアイソクロナス入力要求を前記デバイス制御装置に送信しないように制御する入力要求制御手段と、
前記アイソクロナス入力要求に対する応答情報を受信し、当該受信した応答情報を格納して管理する応答情報受信手段と、
前記入力要求制御手段で前記アイソクロナス入力要求が受信されると、前記入力要求指示手段に対して、前記格納している応答情報を格納した順に送出する応答情報送信手段と、を備えること
を特徴とするクライアント装置。
【請求項２】
前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別手段を更に備え、
前記アイソクロナス入力要求は、
前記個体情報識別手段で識別された前記デバイスの個体情報を含むことを特徴とする請求項１に記載のクライアント装置。
【請求項３】
前記入力要求制御手段は、更に、前記デバイス制御装置に対して当該アイソクロナス入力要求の送信継続を指示する入力継続要求を前記アイソクロナス入力要求の送信周期より大きな送信周期で送信すること
を特徴とする請求項１又は２に記載のクライアント装置。
【請求項４】
前記応答情報送信手段は、前記格納した応答情報に圧縮処理されたデータが含まれている場合、当該圧縮処理されたデータを復元してから送出すること
を特徴とする請求項１又は２に記載のクライアント装置。
【請求項５】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置における制御方法であって、
入力要求指示手段が前記デバイスに対するデータ入力を指示する入力要求指示ステップと、
仮想化制御手段が前記デバイスを直接接続されているようにシミュレートする仮想化制御ステップと、
前記入力要求指示ステップにおいて、前記デバイスに対してアイソクロナス転送によるデータ入力要求が指示されると、入力要求生成手段がアイソクロナス入力要求を生成して送出する入力要求生成ステップと、
入力要求制御手段が前記入力要求生成ステップにおいて送出される前記アイソクロナス入力要求を受信する入力要求受信ステップと、
入力要求制御手段が、前記入力要求受信ステップで受信した最初のアイソクロナス入力要求を前記デバイス制御装置に対して送信し、前記最初のアイソクロナス入力要求の受信以後に受信するアイソクロナス入力要求を前記デバイス制御装置に送信しないように制御する入力要求送信ステップと、
応答情報受信手段が前記アイソクロナス入力要求に対する応答情報を受信し、当該受信した応答情報を格納して管理する応答情報受信ステップと、
前記入力要求受信ステップで前記アイソクロナス入力要求が受信されると、応答情報送信手段が、前記入力要求指示手段に対して、前記格納している応答情報を格納した順に送出する応答情報送信ステップと、を備えること
を特徴とする制御方法。
【請求項６】
個体情報識別手段が前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別ステップを更に備え、
前記アイソクロナス入力要求は、
前記個体情報識別ステップで識別された前記デバイスの個体情報を含むことを特徴とする請求項５に記載の制御方法。
【請求項７】
前記入力要求送信ステップにおいて、更に、前記デバイス制御装置に対して当該アイソクロナス入力要求の送信継続を指示する入力継続要求を前記アイソクロナス入力要求の送信周期より大きな送信周期で送信すること
を特徴とする請求項５又は６に記載の制御方法。
【請求項８】
前記応答情報送信ステップにおいて、前記格納した応答情報に圧縮処理されたデータが含まれている場合、当該圧縮処理されたデータを復元してから送出すること
を特徴とする請求項５又は６に記載の制御方法。
【請求項９】
ネットワークを介してクライアント装置に接続されるとともに、アイソクロナス転送可能なデバイスがローカル接続されたデバイス制御装置であって、
前記クライアント装置からアイソクロナス入力要求を受信する入力要求受信手段と、
前記入力要求受信手段で受信したアイソクロナス入力要求を記憶し、当該記憶したアイソクロナス入力要求を複製する入力要求複製手段と、
前記デバイスに対して、前記入力要求受信手段で受信したアイソクロナス入力要求または前記入力要求複製手段に従って前記複製されたアイソクロナス入力要求を所定の送信周期で送信する入力要求送信手段と、
前記アイソクロナス入力要求または前記複製されたアイソクロナス入力要求に対する応答情報を前記デバイスから受信し、当該受信した応答情報を前記クライアント装置に対して送信する応答情報送受信手段と、を備えること
を特徴とするデバイス制御装置。
【請求項１０】
前記入力要求受信手段は、デバイスを識別するための個体情報を含むアイソクロナス入力要求を受信し、
前記入力要求送信手段は、前記入力要求受信手段で受信したアイソクロナス入力要求に含まれる個体情報により識別したデバイスに対して、当該アイソクロナス入力要求を送信することを特徴とする請求項９に記載のデバイス制御装置。
【請求項１１】
前記入力要求送信手段は、前記入力要求受信手段によって前記クライアント装置からの入力継続要求が前記受信したアイソクロナス入力要求の送信周期より大きな送信周期で受信されている間、前記複製されたアイソクロナス入力要求を所定の送信周期で送信するように制御すること
を特徴とする請求項９又１０に記載のデバイス制御装置。
【請求項１２】
前記入力要求送信手段は、前記入力要求受信手段によって前記入力継続要求が一定期間受信されない場合、前記複製されたアイソクロナス入力要求の送信を停止すること
を特徴とする請求項１１に記載のデバイス制御装置。
【請求項１３】
前記入力要求受信手段が前記クライアント装置から送信される所定の切り替え要求を受信すると、前記入力要求送信手段は、前記複製されたアイソクロナス入力要求の送信を停止すること
を特徴とする請求項９又１０に記載のデバイス制御装置。
【請求項１４】
前記応答情報送受信手段は、更に、前記受信した応答情報のデータを圧縮して送信するデータ圧縮手段を備えること
を特徴とする請求項９又１０に記載のデバイス制御装置。
【請求項１５】
ネットワークを介してクライアント装置に接続されるとともに、アイソクロナス転送可能なデバイスがローカル接続されたデバイス制御装置における制御方法であって、
前記クライアント装置からアイソクロナス入力要求を受信する入力要求受信ステップと、
入力要求複製手段が前記入力要求受信ステップにおいて受信したアイソクロナス入力要求を記憶し、当該記憶したアイソクロナス入力要求を複製する入力要求複製ステップと、
入力要求送信手段が前記デバイスに対して、前記アイソクロナス入力要求または前記複製されたアイソクロナス入力要求を所定の送信周期で送信する入力要求送信ステップと、
応答情報送受信手段が前記アイソクロナス入力要求または前記複製されたアイソクロナス入力要求に対する応答情報を前記デバイスから受信し、当該受信した応答情報を前記クライアント装置に対して送信する応答情報送受信ステップと、を備えること
を特徴とするデバイス制御方法。
【請求項１６】
入力要求受信ステップは、デバイスを識別するための個体情報を含むアイソクロナス入力要求を受信し、
入力要求送信ステップは、前記入力要求受信ステップで受信したアイソクロナス入力要求に含まれる個体情報により識別したデバイスに対して、当該アイソクロナス入力要求を送信することを特徴とする請求項１５に記載のデバイス制御方法。
【請求項１７】
前記入力要求受信ステップで前記クライアント装置からの入力継続要求が前記受信したアイソクロナス入力要求の送信周期より大きな送信周期で受信されている間、前記入力要求送信ステップにおいて、前記複製されたアイソクロナス入力要求を所定の送信周期で送信するように制御すること
を特徴とする請求項１５又は１６に記載のデバイス制御方法。
【請求項１８】
前記入力要求受信ステップで前記入力継続要求が一定期間受信されない場合、前記入力要求送信ステップにおいて、前記複製されたアイソクロナス入力要求の送信を停止すること
を特徴とする請求項１７に記載のデバイス制御方法。
【請求項１９】
前記入力要求受信ステップが前記クライアント装置から送信される所定の切り替え要求を受信すると、前記入力要求送信ステップは、前記複製されたアイソクロナス入力要求の送信を停止すること
を特徴とする請求項１５又は１６に記載のデバイス制御方法。
【請求項２０】
前記応答情報送受信ステップは、更に、前記受信した応答情報のデータを圧縮して送信するデータ圧縮ステップを備えること
を特徴とする請求項１５又は１６に記載のデバイス制御方法。
【請求項２１】
請求項１乃至４のいずれか１項に記載のクライアント装置と、請求項９乃至１４のいずれか１項に記載のデバイス制御装置と、前記デバイス制御装置にローカル接続され、アイソクロナス転送可能なデバイスと、から構成されること
を特徴とするデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してデバイスを制御するための機能を備えたクライアント装置、デバイス制御装置、及びその制御方法、並びにデバイス制御システムに関するものである。
【背景技術】
【０００２】
ネットワークの普及により、従来、パーソナルコンピュータ（以下、クライアントＰＣ）などに直結（ローカル接続）して利用していたデバイス（周辺機器）を、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク上のクライアントＰＣから利用できるように工夫したデバイスサーバが発表されている。
【０００３】
例えば、クライアントＰＣとＵＳＢ（Ｕｎｉｖｅｒｓａｌ
Ｓｅｒｉａｌ  Ｂｕｓ）規格のインターフェースを介して直結（ローカル接続）して使用するプリンタ、ストレージ、スキャナなどのデバイス（以下、ＵＳＢデバイス）をデバイスサーバに接続することで、ネットワーク上のクライアントＰＣは、デバイスサーバを介してＵＳＢデバイスにアクセスし、直結（ローカル接続）したときと同様の状態で使用できるようになる。
【０００４】
先に本出願人においても、デバイスサーバが自身に接続されているデバイスを監視し、デバイスの状態変化を検知すると、この検知を示す情報（以下、トリガ通知）をネットワーク上のクライアントＰＣへ通知することで、クライアントＰＣとデバイスサーバ間でセッションを開始し、デバイスサーバを介してネットワーク上のクライアントＰＣとデバイス間でデータ送受信を可能とするデバイス制御システムを提案している（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特願２００９−２５３３９５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、クライアントＰＣからデバイスに対して音声や映像などリアルタイム性を必要とするストリーミングデータを転送する場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送（以下、アイソクロナス転送）を行うことで、全体の転送量が高くても、最低限のデータ転送量が保証される為、途切れることなくデータを転送することができる。
【０００７】
特許文献１のように、デバイスサーバを介してクライアントＰＣとデバイス間でデータ送受信を実行させるシステムにおいて、上述のアイソクロナス転送を実施する場合、クライアントＰＣとデバイスは直結（ローカル接続）ではなく、ＬＡＮなどのネットワーク経由で接続されているので、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下するため、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【０００８】
そこで、本発明は、デバイスサーバを介してネットワーク上のクライアントＰＣとデバイス間でデータ送受信を可能とするデバイス制御システムにおいて、アイソクロナス転送により、デバイスで処理されたデータをクライアントＰＣにデータ転送する場合（以下、アイソクロナス入力転送）、ネットワーク区間で生じるデータ転送速度低下の影響をできる限りなくして、アイソクロナス入力転送を維持できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、請求項１に記載のクライアント装置は、アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置であって、前記デバイスに対するデータ入力を指示する入力要求指示手段と、前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、前記入力要求指示手段から前記デバイスに対してアイソクロナス転送によるデータ入力要求が指示されると、アイソクロナス入力要求を生成して送出する入力要求生成手段と、前記入力要求生成手段から送出される前記アイソクロナス入力要求を受信し、当該受信した最初のアイソクロナス入力要求を前記デバイス制御装置に対して送信し、前記最初のアイソクロナス入力要求の受信以後に受信するアイソクロナス入力要求を前記デバイス制御装置に送信しないように制御する入力要求制御手段と、前記アイソクロナス入力要求に対する応答情報を受信し、当該受信した応答情報を格納して管理する応答情報受信手段と、前記入力要求制御手段で前記アイソクロナス入力要求が受信されると、前記入力要求指示手段に対して、前記格納している応答情報を格納した順に送出する応答情報送信手段と、を備えることを特徴とする。
【００１０】
また、上記の課題を解決するために、請求項９に記載のデバイス制御装置は、ネットワークを介してクライアント装置に接続されるとともに、アイソクロナス転送可能なデバイスがローカル接続されたデバイス制御装置であって、前記クライアント装置からアイソクロナス入力要求を受信する入力要求受信手段と、前記入力要求受信手段で受信したアイソクロナス入力要求を記憶し、当該記憶したアイソクロナス入力要求を複製する入力要求複製手段と、前記デバイスに対して、前記入力要求受信手段で受信したアイソクロナス入力要求または前記入力要求複製手段に従って前記複製されたアイソクロナス入力要求を所定の送信周期で送信する入力要求送信手段と、前記アイソクロナス入力要求または前記複製されたアイソクロナス入力要求に対する応答情報を前記デバイスから受信し、当該受信した応答情報を前記クライアント装置に対して送信する応答情報送受信手段と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、クライアントＰＣでは、入力要求手段からの指示に基づいて生成される最初のアイソクロナス入力要求のみをデバイスに対して送信し、これ以降のアイソクロナス入力要求はデバイスに送信せず、応答情報管理手段に一時格納しているデバイスからの応答情報を入力要求手段に対して返送するように制御し、デバイスサーバは、クライアントＰＣからの最初のアイソクロナス入力要求を記憶しておき、その複製を所定周期でデバイスに送信し、デバイスからの応答情報をクライアントＰＣに返送するよう制御するので、クライアントＰＣは、デバイスからの応答情報を待たずに、次のデータ入力要求の処理を実行させることが可能となるため、アイソクロナス入力転送で保証する最低限のデータ転送量を維持することができ、また、ネットワーク上にアイソクロナス入力要求を送信することがほとんどなくなる（最初だけである）ため、ネットワークトラフィックの低減にも寄与する。
【図面の簡単な説明】
【００１２】
【図１】実施例１に係るデバイス制御システムの概略構成を示す図である。
【図２】アイソクロナス入力要求のデータ構成を例示する図である。
【図３】アイソクロナス入力要求に対する入力応答情報のデータ構成を例示する図である。
【図４】実施例１に係るデバイス制御システムにおけるアイソクロナス入力転送の過程を示すシーケンス図である。
【図５】実施例２に係るデバイス制御システムの概略構成を示す図である。
【図６】図５のデバイス制御システムにおけるアイソクロナス入力転送の過程を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【実施例１】
【００１４】
＜１．デバイス制御システムの構成＞
図１は、本発明を実現するための「デバイス制御システム」の概略構成であり、クライアントＰＣ１００（１００Ａ，１００Ｂ）、デバイスサーバ２００、デバイス３００（３００Ａ，３００Ｂ）から構成されている。
【００１５】
デバイス３００（３００Ａ，３００Ｂ）は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェースに準拠した接続ケーブル４００でデバイスサーバ２００に接続（ローカル接続）されている。ただし、ＵＳＢに限定されるものではなく、ＩＥＥＥ１３９４など別のインターフェースに準拠したものであってもよい。一方、クライアントＰＣ１００（１００Ａ，１００Ｂ）は、デバイスサーバ２００と有線又は無線のネットワーク５００を介して接続されている。
【００１６】
＜２．クライアントＰＣ１００の構成＞
クライアントＰＣ１００は、本発明の「クライアント装置」の実施形態の一例であり、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、不図示のＣＰＵ、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続されている。
【００１７】
ＣＰＵは、クライアントＰＣ１００内の各部を制御する中央処理装置である。入力部は、キーボードやマウス等の操作装置である。表示部は、液晶モニタ等の表示装置である。メモリは、ＲＡＭ、ＲＯＭ等の記憶装置である。通信部は、ネットワーク５００（有線又は無線ネットワーク）に接続するためのインターフェースであり、デバイスサーバ２００とデータ通信を行うことで、デバイス３００とデータを送受信することが可能となる。外部記憶部は、ハードディスク等の記憶装置である。
【００１８】
次に、外部記憶部に格納されるソフトウェア部品などの機能について順次説明する。
【００１９】
外部記憶部には、ＯＳ（不図示）、アプリケーションプログラム１０１、常駐モジュール１０２、デバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５、通信制御部１０６などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００２０】
アプリケーションプログラム１０１は、ドライバソフトウェア部品（デバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５）を介して、デバイス３００に対してデータ入出力要求を指示する（送る）ソフトウェア部品である。
【００２１】
常駐モジュール１０２は、ＯＳが起動している間、常に待機及び動作しているソフトウェア部品である。ネットワーク５００上にあるデバイスサーバ２００とデータの送受信を行うことにより、デバイスサーバ２００に接続されたデバイス３００を認識し、当該デバイス３００を識別するためのデバイス情報を受信し、受信したデバイス情報をもとに、デバイス３００とのデータ送受信に必要となるデバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５を一意に特定して、動的に生成し、当該デバイス３００を仮想化制御（後述）できる状態にする。
【００２２】
デバイスドライバ１０３は、ＯＳやアプリケーションプログラム１０１、常駐モジュール１０２など上位層のソフトウェアプログラムからのデータ入出力要求を対象となるデバイス３００に応じたデータ形式のデータ（以下、制御コマンド）に変換し、また、この制御コマンドに対する応答を上位層のソフトウェアプログラムへ通知するソフトウェア部品である。本実施例では、アイソクロナス転送によるデータ入力要求（以下、アイソクロナス入力要求）が制御コマンドに変換される。
【００２３】
ＵＳＢクラスドライバ１０４は、デバイスドライバ１０３で制御コマンドに変換されたデータ入出力要求をＵＳＢのデータ形式に準拠したパケットデータ（以下、ＵＳＢデータ）に変換してＵＳＢ仮想バスデバイス１０５に送り、ＵＳＢ仮想バスデバイス１０５から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ１０３へ送るソフトウェア部品である。本実施例では、デバイスドライバ１０３で制御コマンドに変換されたアイソクロナス入力要求がＵＳＢデータに変換される。
【００２４】
ＵＳＢ仮想バスデバイス１０５は、上位層のソフトウェアプログラムからのデータ入出力要求に対して、デバイス３００がクライアントＰＣ１００に直結（ローカル接続）しているときと同様の振る舞いをシミュレートする機能（以下、仮想化制御）を備えたソフトウェア部品である。この「仮想化制御」によって、デバイス３００をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【００２５】
また、ＵＳＢ仮想バスデバイス１０５は、以下の機能を備える。（１）ＵＳＢクラスドライバ１０４から送られてくる１回目のアイソクロナス入力要求のみを通信制御部１０６に転送し、２回目以降に受信するアイソクロナス入力要求は通信制御部１０６に転送しないように制御する機能、（２）デバイス３００に対するアイソクロナス入力要求の送信を継続するようにデバイスサーバ２００に対して指示するための入力継続要求を一定周期で送信する機能、（３）アイソクロナス入力要求に対する応答情報（以下、入力応答情報）を一時格納するキュー（ｑｕｅｕｅ）データ管理部（不図示）によって、ＵＳＢクラスドライバ１０４からのアイソクロナス入力要求を受信すると、キューデータ管理部に登録（格納）されている入力応答情報をＵＳＢクラスドライバ１０４に送出（返送）する機能を備え、また、入力応答情報に圧縮処理されたデータが含まれているときは、このデータを伸張（復元）してからＵＳＢクラスドライバ１０４に送出する機能も備えている。
【００２６】
なお、（２）の機能において、入力継続要求の送信周期は、ＵＳＢクラスドライバ１０４を経由して送られてくるアイソクロナス入力要求の周期に対して、十分に大きくとられており、アイソクロナス入力要求を送信する場合と比べて、ネットワークトラフィックに対してほとんど影響がない程度の周期で送信するように設定される。
【００２７】
通信制御部１０６は、ＵＳＢ仮想バスデバイス１０５から送られてくる「ＵＳＢデータ」とネットワーク５００を介してデバイスサーバ２００と送受信するための「ネットワークパケット」との変換処理を行い、通信部を介してデバイスサーバ２００との間のデータ送受信の制御を行うソフトウェア部品である。また、上位層のソフトウェアプログラムからのデータ入出力要求を受信すると、デバイスサーバ２００とセッションを開始し、データ送受信が完了すると、当該セッションを切断するセッション制御機能を備えている。
【００２８】
＜２−１．アイスクロナス入力要求のデータ構成＞
ここで、ＵＳＢクラスドライバ１０４で生成されるアイソクロナス入力要求のデータ構成を説明する。図２は、アイソクロナス入力要求（ＵＳＢデータ）のデータ構成の一例であり、図２（Ａ）が示すように、ヘッダ部とデータ部から構成されている。
【００２９】
ヘッダ部には、本システムのプロトコルであることを識別するための「署名データ」、パケットのデータサイズを示す「電文サイズ」、制御コマンドの内容（種別）を示す「コマンドＩＤ」、デバイス３００を一意に識別するためのデバイス識別情報（「ベンダーＩＤ（ＶＩＤ）」、「製品ＩＤ（ＰＩＤ）」、「シリアル番号」）、デバイス３００が具備している機能を一意に識別するための機能識別情報（「機能番号」、「エンドポイント」）などが格納される。本実施例では、アイソクロナス入力要求であることを示すＩＤ情報が「コマンドＩＤ」として格納される。
【００３０】
図２（Ｂ）は、図２（Ａ）で示した「データ部」の構成の一例であり、デバイス３００のスペックなどに応じて規定されているフレーム（データ転送の基本単位）に関する情報（以下、フレーム情報）が格納される。
【００３１】
フレーム情報は、フレーム全体に関する情報と各フレーム（１〜ｎ）の個別情報から構成される。フレーム全体に関する情報として、データ転送周期を設定するためのパラメータである「転送インターバル」、出力データの容量を示す「送信データサイズ」、データ転送を開始する際のフレーム番号を指定した場合に設定される「フレーム開始番号」、１回のアイソクロナス入力要求で使用するフレームの総数を示す「フレーム数（ｎ）」が格納される。各フレーム（１〜ｎ）の個別情報として、フレームの先頭位置を示す「データオフセット」、フレームが格納する出力データの容量を示す「フレーム送信サイズ」、各フレームのエラー情報を示す「ステータス」が格納される。
【００３２】
＜３．デバイスサーバ２００の構成＞
デバイスサーバ２００は、本発明の「デバイス制御装置」の実施形態の一例であり、不図示のＣＰＵ、メモリ、通信部、ＵＳＢインターフェース、外部記憶部などが内部バスで接続されている。ＵＳＢインターフェースは、接続ケーブル４００でデバイス３００と直結（ローカル接続）してデータ送受信をするためのインターフェースであり、その他の構成については、クライアントＰＣ１００と同様であるため、その説明については省略する。
【００３３】
外部記憶部は、ＯＳ（不図示）、情報取得部２０１、デバイス制御部２０２、クライアント制御部２０３、通信制御部２０４などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００３４】
情報取得部２０１は、デバイス３００を一意に識別するためのデバイス識別情報と当該デバイスが具備している機能を一意に識別するための機能識別情報（以下、併せてデバイス個体情報）を、通信制御部２０４を介して取得するソフトウェア部品である。
【００３５】
デバイス制御部２０２は、情報取得部２０１が取得したデバイス個体情報に基づいて、自装置に接続されているデバイス３００とその機能を管理し、また、クライアント制御部２０３、通信制御部２０４と連携してデバイス３００との間の処理や制御を行うソフトウェア部品である。具体的には、クライアント制御部２０３から転送されてくるデータ入出力要求（アイソクロナス入力要求、入力継続要求など）をデバイス３００へ送信し、デバイス３００から受信した入力応答情報などのデータをクライアント制御部２０３へ転送する。
【００３６】
クライアント制御部２０３は、デバイス制御部２０２、通信制御部２０４と連携して、クライアントＰＣ１００との間の処理や制御を行うソフトウェア部品である。クライアントＰＣ１００からの要求に応じて、デバイス制御部２０２が管理するデバイス個体情報を、通信制御部２０４を介してクライアントＰＣ１００に送信する。また、通信制御部２０４を介して受信したデータ入出力要求（アイソクロナス入力要求など）をデバイス制御部２０２へ転送し、デバイス制御部２０２から転送されてくるデバイス３００の入力応答情報などのデータを、通信制御部２０４を介してクライアントＰＣ１００に送信する。
【００３７】
また、クライアント制御部２０３は、最初（１回目）のアイソクロナス入力要求を受信すると、当該アイソクロナス入力要求を保持（記憶）するとともに、デバイス３００に転送する。また、最初（１回目）のアイソクロナス入力要求を転送した後、保持（記憶）したアイソクロナス入力要求を複製して、デバイス３００に対して所定の送信周期で送信する入力要求送信機能を備えており、クライアントＰＣ１００から所定の切替信号（例えば、ＵＳＢ規格におけるＳＥＴ＿ＩＮＴＥＲＦＡＣＥ）を受信するまでの間、若しくは、入力継続要求が一定時間受信されなくなるまでの間、デバイス３００に対するアイソクロナス入力要求の送信を継続する。
【００３８】
なお、本実施例における所定の送信周期とは、デバイス３００側のＵＳＢ規格で決まるものであって、具体的には、１回目のアイソクロナス入力要求に含まれているＵＳＢ転送インターバルの値（図２（Ｂ）参照）に従って決定される。
【００３９】
さらに、クライアント制御部２０３は、デバイス３００からの入力応答情報に含まれるデータを圧縮するデータ圧縮機能を備えている。
【００４０】
通信制御部２０４は、クライアントＰＣ１００との間のセッションを制御（開始、切断）する機能を備えるとともに、デバイス３００との間で送受信する「ＵＳＢデータ」とネットワーク５００を介してクライアントＰＣ１００と送受信する「ネットワークパケット」との変換処理を行い、クライアントＰＣ１００やデバイス３００との間のデータ送受信の制御を行うソフトウェア部品である。
【００４１】
＜３−１．入力応答情報のデータ構成＞
ここで、入力応答情報のデータ構成を説明する。図３は、入力応答情報のデータ構成の一例であり、ヘッダ部とデータ部から構成されている。
【００４２】
ヘッダ部には、デバイス３００のスペックなどに応じて規定されているフレーム（データ転送の基本単位）に関する情報（以下、フレーム情報）が格納され、フレーム全体に関する情報と各フレーム（１〜ｎ）の個別情報から構成される。フレーム全体に関する情報として、データの容量を示す「送信データサイズ」、データ転送を開始する際のフレーム番号を指定した場合に設定される「フレーム開始番号」、１回のアイソクロナス入力要求で使用するフレームの総数を示す「フレーム数（ｎ）」、エラーが発生しているフレーム数を示す「エラー発生フレーム数」が格納される。各フレーム（１〜ｎ）の個別情報として、フレームの先頭位置を示す「データオフセット」、フレームが格納する出力データの容量を示す「フレーム送信サイズ」、各フレームのエラー情報を示す「ステータス」が格納される。データ部には、デバイス３００で処理されたデータが格納される。
【００４３】
なお、各フレームに格納されるデータが「フレーム送信サイズ」のデータ容量に満たない場合、フレーム内に未使用領域が発生する。この場合、クライアント制御部２０３のデータ圧縮機能によって、この未使用領域を圧縮する。
【００４４】
＜４．デバイス３００の構成＞
デバイス３００（３００Ａ、３００Ｂ）は、ＵＳＢインターフェースを有し、アイソクロナス転送をサポート（対応）している汎用的な入出力機器（デバイス）である。デバイスサーバ２００を介して送られてくるクライアントＰＣ１００からのアイソクロナス入力要求（データ入出力要求）を受信すると、これに従って処理を実行し、その処理結果（データ）を入力応答情報としてデバイスサーバ２００に送信（返送）する。
【００４５】
例えば、カメラやマイクロフォンなどの入力機器、ディスプレイなどの表示機器、プリンタやＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）などの周辺機器である。ただし、これらに限定されるものでなく、アイソクロナス転送をサポート（対応）している別のデバイスであってもよい。
【００４６】
なお、上述したデバイスサーバ２００、デバイス３００をそれぞれ別体の装置、機器として説明したが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００と一体構造としても良い。
【００４７】
＜５．デバイス制御システムの概略シーケンス＞
次に、上述したデバイス制御システムのアイソクロナス転送による動作シーケンスについて説明する。図４は、クライアントＰＣ１００からデバイス３００に対してアイソクロナス入力要求するときの過程を示したシーケンス図である。なお、クライアントＰＣ１００は、主要な構成のみが図示されている。
【００４８】
また、クライアントＰＣ１００は、デバイスサーバ２００を介してデバイス３００を仮想化制御できる状態になっているものとして説明する。
【００４９】
まず、クライアントＰＣ１００において、上位層のソフトウェア、例えば、アプリケーションプログラム１０１（以下、ＡＰ１０１）により、デバイス３００に対してアイソクロナス転送によるデータ入力要求（以下、アイソクロナス入力要求）を指示すると、当該アイソクロナス入力要求は、デバイスドライバ１０３によってデバイス３００に応じた制御コマンドに変換され、ＵＳＢクラスドライバ１０４によってＵＳＢのデータ形式に準拠したパケットデータ（以下、ＵＳＢデータ）に変換されて、ＵＳＢ仮想バスデバイス１０５に送られる（タイミングＴ４０１〜Ｔ４０２）。
【００５０】
この一連の処理（タイミングＴ４０１〜Ｔ４０２）が順次実行され、ＵＳＢ仮想バスデバイス１０５に対してパケットデータに変換されたアイソクロナス入力要求が次々に送られてゆく。
【００５１】
ＵＳＢ仮想バスデバイス１０５は、ＵＳＢクラスドライバ１０４から送られてくる最初（１回目）のアイソクロナス入力要求を通信制御部１０６に転送し、通信制御部１０６は、当該アイソクロナス入力要求をネットワークパケットに変換して、仮想化制御しているデバイス３００が接続されたデバイスサーバ２００に対して送信する（タイミングＴ４０３）。
【００５２】
ＵＳＢ仮想バスデバイス１０５では、２回目以降に受信するアイソクロナス入力要求を通信制御部１０６に転送せず、デバイスサーバ２００に対して送信しないように制御する（タイミングＴ４０４〜Ｔ４０６）。
【００５３】
また、ＵＳＢ仮想バスデバイス１０５では、最初（１回目）に受信したアイソクロナス入力要求を転送した後、デバイスサーバ２００に対して、一定周期で入力継続要求を送信する。
【００５４】
一方、デバイスサーバ２００では、クライアントＰＣ１００から送られてくる最初（１回目）のアイソクロナス入力要求（ネットワークパケット）を受信すると、通信制御部２０４でＵＳＢデータに変換してクライアント制御部２０３に送る。
【００５５】
クライアント制御部２０３は、通信制御部２０４から送られてきたアイソクロナス入力要求を保持（記憶）するとともに、デバイス制御部２０２に転送する。
【００５６】
デバイス制御部２０２は、クライアント制御部２０３から転送されてきたアイソクロナス入力要求のデバイス識別情報（図２（Ａ）参照）とデバイス個体情報を照合して、該当するデバイス３００を識別し、当該デバイス３００に対してアイソクロナス入力要求を送信する（タイミングＴ４０７）。
【００５７】
デバイス３００は、受信したアイソクロナス入力要求に基づいてデータ入力処理を実行し、その処理結果（データ）を含んだ入力応答情報（図３参照）をデバイスサーバ２００に送信（返送）する（タイミングＴ４０８）。
【００５８】
デバイスサーバ２００は、デバイス３００から受信した入力応答情報を、デバイス制御部２０２を介してクライアント制御部２０３に転送し、クライアント制御部２０３は、転送されてきた入力応答情報のデータが圧縮可能な場合、データ圧縮処理を施して通信制御部２０４に送り、通信制御部２０４では、当該入力応答情報をネットワークパケットに変換して、クライアントＰＣ１００に送信（返送）する（タイミングＴ４０９）。
【００５９】
また、クライアント制御部２０３は、デバイス３００からの入力応答情報を通信制御部２０４に転送するとともに、保持（記憶）しておいたアイソクロナス入力要求の複製を生成し、複製したアイソクロナス入力要求をデバイス３００に対して送信する（タイミングＴ４１０）。
【００６０】
なお、デバイスサーバ２００では、クライアントＰＣ１００から入力継続要求を一定周期で受信している限り、保持（記憶）しておいたアイソクロナス入力要求の複製を生成し、複製したアイソクロナス入力要求を所定の送信周期でデバイス３００に送り、デバイス３００からの入力応答情報をクライアントＰＣ１００に送信（返送）する一連の処理が繰り返し実行される（タイミングＴ４１２）。
【００６１】
クライアントＰＣ１００では、デバイスサーバ２００から送られてくる入力応答情報を受信するたびに、この入力応答情報をＵＳＢ仮想バスデバイス１０５のキューデータ管理部に登録（格納）する（タイミングＴ４１１）。
【００６２】
キューデータ管理部の入力応答情報は、ＵＳＢ仮想バスデバイス１０５がアイソクロナス入力要求を受信するたびに、登録（格納）された順にＵＳＢクラスドライバ１０４に送出（返送）され、デバイスドライバ１０３を経由してＡＰ１０１に送られる（タイミングＴ４１３〜Ｔ４１６）。なお、入力応答情報のデータが圧縮されているときは、このデータを伸張処理して（元に戻して）から送出される。
【００６３】
アイソクロナス転送を終了するときは、クライアントＰＣ１００からデバイスサーバ２００に切替信号（例えば、ＳＥＴ＿ＩＮＴＥＲＦＡＣＥ）を送る。デバイスサーバ２００がこれを受信すると、デバイス３００（３００Ａ、３００Ｂ）に対するアイソクロナス入力要求の送信が停止され、アイソクロナス入力転送の一連の処理が終了する（タイミングＴ４１７、Ｔ４１８）。
【００６４】
また、別の終了方法として、ＡＰ１０１において終了操作を実施することで、ＵＳＢ仮想バスデバイス１０５からの入力継続要求の送信を停止させる。デバイスサーバ２００では、入力継続要求が一定時間受信されなくなると、デバイス３００に対するアイソクロナス入力要求の送信（タイミングＴ４１７）が停止され、アイソクロナス入力転送の一連の処理が終了する（不図示）。
【００６５】
このように、クライアントＰＣ１００は、デバイスサーバ２００に対して最初（１回目）のアイソクロナス入力要求を送信した後、２回目以降のアイソクロナス入力要求を送信（転送）せず、一定周期で入力継続要求を送ることで、アイソクロナス入力要求によるデータ転送を継続させる。なお、入力継続要求の送出周期は、上位層のソフトウェアプログラムがデータ入力要求（アイソクロナス入力要求）を送出する周期に対して、十分に大きくとられているため、クライアントＰＣ１００から送信されるデータは減少し、ネットワークトラフィックへの影響も低減する。
【００６６】
一方、デバイスサーバ２００は、最初（１回目）のアイソクロナス入力要求を受信するとこれを保持（記憶）し、以降、保持したアイソクロナス入力要求の複製を生成して、所定の送信周期でデバイス３００に送信して、デバイス３００から入力応答情報を受信し、クライアントＰＣ１００へ送信（返送）する。これにより、クライアントＰＣ１００からのアイソクロナス入力要求の受信が不要となるため、ネットワーク区間の遅延によって、デバイスサーバ２００からデバイス３００に対する次のアイソクロナス入力要求が遅れて、デバイス３００の応答情報を取得できなくなる状態は回避できる。
【００６７】
なお、ＵＳＢ仮想バスデバイス１０５において、アイソクロナス入力要求を受信して、一定時間経過しても、キューデータ管理部の入力応答情報が送出（返送）できない（若しくは、登録（格納）されていない）状態の場合、ネットワーク区間でエラーが発生しているとみなして、ＵＳＢクラスドライバ１０４にエラーを通知することで、アイソクロナス入力要求の処理を終了させる。これに伴い、入力継続要求も停止するので、デバイスサーバ２００では、入力継続要求が一定時間受信されなくなり、デバイス３００に対するアイソクロナス入力要求の送信を停止する。
【実施例２】
【００６８】
＜６．マルチキャスト通信システムへの適用例＞
本実施例は、マルチキャスト通信をアイソクロナス入力転送で実施する点が特徴である。図５に示すマルチキャスト通信システムは、クライアントＰＣ１００（１００Ａ、１００Ｂ）、デバイスサーバ２００、デバイス３００（３００Ａ，３００Ｂ）から構成されており、ネットワークに接続されたＵＳＢカメラ（デバイス３００Ａ）で取得した映像データやマイクロフォン（デバイス３００Ｂ）で取得した音声データを複数のクライアントＰＣに一斉に配信（入力）することができるシステムである。
【００６９】
なお、本システムの装置や機器の構成及び機能、接続形態などは、図１のデバイス制御システムのクライアントＰＣ１００、デバイスサーバ２００、デバイス３００で説明したものと、ほとんどが同じであるため、以下、重複する箇所の詳細な説明は省略する。
【００７０】
クライアントＰＣ１００Ａ、１００Ｂは、デバイス３００（３００Ａ、３００Ｂ）から送られてくる映像データや音声データなどを処理（再生）できるデータ再生装置である。本実施例では、ＵＳＢカメラ、ＵＳＢマイクロフォンから送られてくる映像データや音声データを映像、音声に変換して再生する機能を備えている。
【００７１】
また、クライアントＰＣ１００Ａは、マルチキャスト配信の設定を行うためのデータ配信設定機能を備えている。なお、本機能は、アプリケーションプログラム１０１に含まれる形態であってもよく、独立したソフトウェアプログラム（ユーティリティ）であってもよい。なお、クライアントＰＣ１００Ｂが同等の機能を具備していてもよい。本実施例では、クライアントＰＣ１００Ａによってマルチキャスト配信の設定を実施するものとして説明する。
【００７２】
データ配信設定機能では、データ転送方式を設定するための「転送モード」、データ配信元となる装置（以下、配信元装置）及びデータを受信する装置（以下、配信先装置）の「宛先情報」（ＩＰアドレス、ＭＡＣアドレス）などを設定する。これらの設定が完了するとマルチキャスト通信で使用するマルチキャストアドレス（マルチキャストＩＰ及びマルチキャストＭＡＣ）を決定し、「宛先情報」が設定されている装置に対してマルチキャストアドレス情報を通知する。
【００７３】
デバイス３００Ａ，３００Ｂは、撮影した映像を映像データに変換して出力するＵＳＢカメラ（デバイス３００Ａ）、入力される音を音声データに変換して出力するＵＳＢマイクロフォン（デバイス３００Ｂ）であり、デバイスサーバ２００を介して映像データ、音声データをクライアントＰＣ１００に送信することができる機器である。
【００７４】
＜７．マルチキャスト配信システムのシーケンス＞
図６は、上述したマルチキャスト配信システムにおいて、ＵＳＢカメラ及びＵＳＢマイクロフォン（デバイス３００Ａ、３００Ｂ）で処理された映像データ／音声データをアイソクロナス転送により複数のクライアントＰＣ１００に対して一斉配信する過程を示したシーケンス図である。なお、シーケンス図のクライアントＰＣ１００Ａは、主な構成だけ図示してあり、同等の構成を備えているクライアントＰＣ１００Ｂは、図示を省略している。
【００７５】
また、クライアントＰＣ１００Ａは、デバイスサーバ２００を介してデバイス３００ＵＳＢカメラ及びＵＳＢマイクロフォン（デバイス３００Ａ、３００Ｂ）と接続（仮想化制御）できる状態であるものとして説明する。
【００７６】
＜７−１．マルチキャスト配信設定／初期化処理＞
まず、クライアントＰＣ１００Ａにおいて、マルチキャスト配信に必要となる情報を設定する。具体的には、「データ転送モード」として「アイソクロナス転送」、デバイスサーバ２００の「宛先情報」（ＩＰアドレス、ＭＡＣアドレス）と、クライアントＰＣ１００ＡとクライアントＰＣ１００Ｂの「宛先情報」（ＩＰアドレス、ＭＡＣアドレス）を設定する（タイミングＴ６０１）。
【００７７】
マルチキャスト配信の設定が完了すると、マルチキャスト通信で使用するマルチキャストアドレス（マルチキャストＩＰアドレス／マルチキャストＭＡＣアドレス）が決定され、このマルチキャストアドレスを「宛先情報」として設定したデバイスサーバ２００とクライアントＰＣ１００Ｂ宛に送信する（タイミングＴ６０２）。
【００７８】
デバイスサーバ２００は、クライアントＰＣ１００Ａから送られてくるマルチキャストアドレスをクライアント制御部２０３に登録（記憶）し、クライアントＰＣ１００Ｂは、常駐モジュール１０２に登録（記憶）する。また、クライアントＰＣ１００Ａ自身も設定した情報を常駐モジュール１０２に登録する（タイミングＴ６０３）。
【００７９】
続いて、クライアントＰＣ１００Ａは、データ配信を開始する前に、デバイスサーバ２００とクライアントＰＣ１００Ｂに対して、マルチキャスト通信を実行可能な状態とするための初期化処理の実行要求（初期化要求）を送信するとともに、クライアントＰＣ１００Ａ自身も初期化処理を実行する。
【００８０】
デバイスサーバ２００とクライアントＰＣ１００Ｂでは、それぞれ、クライアントＰＣ１００Ａからの初期化要求に応じて、初期化処理（データ転送モードの切り替えなど）を実行し、初期化処理が完了すると、完了応答をクライアントＰＣ１００Ａに返送する（タイミングＴ６０４〜Ｔ６０６）。
【００８１】
このように、各装置でマルチキャストアドレスの設定・登録、初期化処理が完了すると、デバイスサーバ２００では、マルチキャストアドレス宛のパケットデータ（以下、マルチキャストパケット）を作成して送信し、クライアントＰＣ１００Ａ及びクライアントＰＣ１００Ｂでは、マルチキャストパケットの受信が可能な状態となる。なお、デバイスサーバ２００は、マルチキャストアドレスを指定したデータパケットを作成すればよく、個々のクライアントＰＣ１００宛にデータパケットを作成する必要がなくなる。
【００８２】
＜７−２．アイソクロナス転送によるマルチキャスト通信＞
【００８３】
まず、クライアントＰＣ１００Ａのアプリケーションプログラム１０１（以下、ＡＰ１０１）からデバイス３００Ａ、３００Ｂ（以下、併せてデバイス３００）に対してアイソクロナス転送入力要求を指示する。当該アイソクロナス入力要求は、デバイスドライバ１０３によってデバイス３００に応じた制御コマンドに変換され、ＵＳＢクラスドライバ１０４によってＵＳＢデータに変換されて、ＵＳＢ仮想バスデバイス１０５に送られる（タイミングＴ６０７〜Ｔ６０８）。
【００８４】
この一連の処理（タイミングＴ６０７〜Ｔ６０８）が順次実行され、ＵＳＢ仮想バスデバイス１０５にパケットデータに変換されたアイソクロナス入力要求が次々に送られてゆく。
【００８５】
ＵＳＢ仮想バスデバイス１０５は、ＵＳＢクラスドライバ１０４から送られてくる最初（１回目）のアイソクロナス入力要求を通信制御部１０６に転送し、通信制御部１０６は、当該アイソクロナス入力要求をネットワークパケットに変換して、デバイス３００が接続されているデバイスサーバ２００に対して送信する（タイミングＴ６０９）。
【００８６】
ＵＳＢ仮想バスデバイス１０５では、２回目以降に受信するアイソクロナス入力要求を通信制御部１０６に転送せず、デバイスサーバ２００に対して送信しないように制御する（タイミングＴ６１０〜Ｔ６１２）。
【００８７】
また、ＵＳＢ仮想バスデバイス１０５では、最初（１回目）に受信したアイソクロナス入力要求を転送した後、デバイスサーバ２００に対して、一定周期で入力継続要求を送信する。
【００８８】
一方、デバイスサーバ２００では、クライアントＰＣ１００Ａから送られてくる最初（１回目）のアイソクロナス入力要求（ネットワークパケット）を受信すると、通信制御部２０４でＵＳＢデータに変換して、クライアント制御部２０３に送る。
【００８９】
クライアント制御部２０３は、通信制御部２０４から送られてきたアイソクロナス入力要求を保持（記憶）するとともに、デバイス制御部２０２に転送する。
【００９０】
デバイス制御部２０２は、クライアント制御部２０３から転送されてきたアイソクロナス入力要求のデバイス識別情報（図２（Ａ）参照）とデバイス個体情報を照合して、該当するデバイス３００を識別し、当該デバイス３００に対してアイソクロナス入力要求を送信する（タイミングＴ６１３）。
【００９１】
デバイス３００は、受信したアイソクロナス入力要求に従って、データ入力処理を実行し、その処理結果（データ）を含んだ入力応答情報（図３参照）をデバイスサーバ２００に送信（返送）する（タイミングＴ６１４）。
【００９２】
デバイスサーバ２００は、デバイス３００から受信した入力応答情報を、デバイス制御部２０２を介してクライアント制御部２０３に転送する。
【００９３】
クライアント制御部２０３は、転送されてきた入力応答情報のデータが圧縮可能な場合、データ圧縮処理を施して通信制御部２０４に送り、通信制御部２０４では、当該入力応答情報をクライアント制御部２０３に設定されているマルチキャストアドレス宛てのネットワークパケットに変換して、マルチキャストアドレス宛に送信（返送）する（タイミングＴ６１５）。
【００９４】
また、クライアント制御部２０３は、デバイス３００からの入力応答情報を通信制御部２０４に転送するとともに、保持（記憶）しておいたアイソクロナス入力要求の複製を生成し、複製したアイソクロナス入力要求をデバイス３００に対して送信する（タイミングＴ６１６）。
【００９５】
なお、デバイスサーバ２００では、クライアントＰＣ１００Ａから一定周期で送信されている入力継続要求を受信しており、当該入力継続要求を一定周期で受信している限り、保持（記憶）しておいたアイソクロナス入力要求の複製を生成し、複製したアイソクロナス入力要求をデバイス３００に送り、デバイス３００から受信した入力応答情報をマルチキャストアドレス宛に送信（返送）する一連の処理が繰り返し実行される。
【００９６】
クライアントＰＣ１００Ａ、１００Ｂでは、デバイスサーバ２００から送られてくるマルチキャストアドレス宛の入力応答情報を受信するたびに、この入力応答情報を、それぞれのＵＳＢ仮想バスデバイス１０５のキューデータ管理部に登録（格納）する（タイミングＴ６１７）。
【００９７】
キューデータ管理部の入力応答情報は、ＵＳＢ仮想バスデバイス１０５がアイソクロナス入力要求を受信するたびに、登録（格納）された順にＵＳＢクラスドライバ１０４に送出（返送）され、デバイスドライバ１０３を経由してＡＰ１０１に送られる（タイミングＴ６１９〜Ｔ６２２）。なお、入力応答情報のデータが圧縮されているときは、このデータを伸張処理して（元に戻して）から送出される。
【００９８】
アイソクロナス転送を終了するときは、クライアントＰＣ１００Ａからデバイスサーバ２００に切替信号（例えば、ＳＥＴ＿ＩＮＴＥＲＦＡＣＥ）を送る。デバイスサーバ２００がこれを受信すると、デバイス３００に対するアイソクロナス入力要求の送信が停止され、アイソクロナス入力転送の一連の処理が終了する（タイミングＴ６１７、Ｔ６１８）。
【００９９】
また、別の終了方法として、クライアントＰＣ１００ＡのＡＰ１０１において終了操作を実施することで、ＵＳＢ仮想バスデバイス１０５からの入力継続要求の送信を停止させる。デバイスサーバ２００では、入力継続要求が一定時間受信されなくなると、デバイス３００に対するアイソクロナス入力要求の送信が停止され、アイソクロナス入力転送の一連の処理が終了する（不図示）。
【０１００】
このように、アイソクロナス入力転送によるマルチキャスト配信に適用することもできるため、本実施例の如く、ＵＳＢカメラ及びＵＳＢマイクロフォンなどのデバイスで処理されたストリーミングデータ（映像データや音声データ）をネットワーク上に配置した複数のクライアントＰＣに一斉に配信することが可能となる。
【０１０１】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【０１０２】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１０３】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１０４】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【０１０５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１０６】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。又は、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１０７】
１００Ａ，１００Ｂ：クライアントＰＣ
１０１：アプリケーションプログラム
１０２：常駐モジュール
１０３：デバイスドライバ
１０４：ＵＳＢクラスドライバ
１０５：ＵＳＢ仮想バスデバイス
１０６：通信制御部
２００：デバイスサーバ
２０１：情報取得部
２０２：デバイス制御部
２０３：クライアント制御部
２０４：通信制御部
３００Ａ，３００Ｂ：デバイス（ＵＳＢスピーカ）
４００：接続ケーブル
５００：ネットワーク
【図１】
0005686590.tif 000002
【図２】
0005686590.tif 000003
【図３】
0005686590.tif 000004
【図４】
0005686590.tif 000005
【図５】
0005686590.tif 000006
【図６】
0005686590.tif 000007