(57)【要約】【課題】  シンクライアントネットワークシステムのシンクライアントローカル接続されているデバイスをシンクライアントから円滑に動作させることが困難であった。【解決手段】  シンクライアントのデバイスポートにローカル接続されているデバイスの情報（伝送方式）を取得し、デバイスに対する指示をサーバに転送しデバイスに対する操作要求を発行し、デバイスの伝送方式に応じた通信方式に従って転送する。【選択図】  図１
2010009147.tif 000002
【特許請求の範囲】
【請求項１】
クライアントに接続される機器の情報を機器情報として取得し、対応するドライバを選択する選択手段と、
前記クライアントの前記機器に対する指示に基づいて、前記ドライバを用いて前記機器が解釈可能な操作要求を発行する発行手段と、
前記クライアントと前記機器の伝送方式に応じて通信方式を選択し、当該通信方式に従って前記操作要求を前記クライアントへ転送する転送手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記転送手段が前記機器情報もしくは前記選択手段で選択したドライバの少なくとも一方に基づいて前記伝送方式を判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記機器情報が前記クライアントの前記操作要求の受信の失敗を示している場合に、前記転送手段が優先度のより高い通信方式に切替えて前記操作要求を転送することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記通信方式は再送処理に対応する第１の通信方式と保証処理に対応する第２の通信方式とを有しており、前記転送手段が前記伝送方式又は前記機器情報に応じて、前記第１の通信方式と第２の通信方式の少なくとも一方を用いることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記機器はプリンタであり、前記操作要求は印刷データを含む請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記発行手段は前記機器に対応する伝送方式に沿って前記操作要求を発行し、前記転送手段が前記伝送方式の操作要求をパケット単位のデータに変換して転送することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記伝送方式がＵＳＢ、ＳＣＳＩ、ＩＥＥＥ１２８４、ＩＥＥＥ１３９４の何れかの規格に準拠していることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
機器に対して操作要求を発行するサーバと通信可能であり且つ前記機器が接続されるデバイスポートを備える情報処理装置であって、
前記デバイスポートに接続されている機器への操作をサーバに対して指示する指示手段と、
前記機器の情報を機器情報として取得し前記情報処理装置に通知する通知手段と、
所定の通信方式に従って送信される前記機器に対する前記情報処理装置の操作要求を受け付け、前記デバイスポートに転送する受付け手段と、
を有することを特徴とする情報処理装置。
【請求項９】
前記受付け手段がクライアントの受信したパケット単位のデータを前記機器に対応する伝送方式に沿ったデータに変換し、前記デバイスポートへ前記操作要求として送信することを特徴とする請求項８に記載の情報処理。
【請求項１０】
クライアントに接続される機器の情報を機器情報として取得し、対応するドライバを選択する選択工程と、
前記クライアントの前記機器に対する指示に基づいて、前記ドライバを用いて前記機器が解釈可能な操作要求を発行する発行工程と、
前記クライアントと前記機器の伝送方式に応じて通信方式を決定し、当該通信方式に従って前記操作要求を前記クライアントへ転送する転送工程と
を有することを特徴とする情報処理方法。
【請求項１１】
請求項１０に記載の情報処理方法をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンクライアントネットワークシステムにおいて周辺機器を共有するための情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、クライアントとして搭載メモリやＣＰＵ（中央処理装置）の能力を低く抑えたシンクライアントを用いるシンクライアントネットワークシステムの需要が高まってきている。
【０００３】
シンクライアントはＵＩ（ユーザーインターフェイス）処理など軽量な処理が動作するために必要最低限な構成となっているため、コストを抑えられる利点がある。
【０００４】
一方で、プリンタなどの周辺機器をシンクライアントにローカル接続して用いようとすると、シンクライアント側で周辺機器のデバイスドライバを展開し、アプリケーション処理やレンダリング処理などを実行する必要がある。従ってこの場合、シンクライアントにも処理能力が要求されるためにコストを抑える事が出来なくなってしまう。
【０００５】
そこで、特許文献１に記載の技術のように周辺機器のデバイスドライバを蓄積しているサーバと周辺機器との接続を仮想的にローカル接続（直接接続）しているようにみせる方法がある。この方法ではドライバを持たないクライアントに対して周辺機器への操作がある場合、まずクライアントはその操作の内容を処理しないでそのままサーバに転送する。そしてサーバは自身のドライバを用いて操作の内容を処理し、その処理の結果である画面情報をクライアントへ送信する。
【０００６】
なお、シンクライアントとはアプリケーションの処理をサーバが行い端末は操作を指示する役割のみを担うサーバベース方式（画面転送方式）を想定しているものとする。また、ここでいうデバイスドライバとはシンクライアント側で用意されているような必要最低限のドライバを除く。
【特許文献１】特開２００７−１０２３０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
例えばＵＳＢ接続でクライアントにローカル接続されている周辺機器を例に挙げると、クライアントと周辺機器の間には４種の伝送方式が規定されている。詳細には、機器の制御にはコントロール転送、非周期的に大量のデータを扱うにはバルク転送、周期的で低いバンド幅で済むものにはインタラプト転送、応答性が要求される場合にはアイソクロナス転送を用いる。例えばマウスやキーボードのようにポーリングにて制御される周辺機器は一般的にインタラプト転送が用いられる、一方でプリンタのように機器の状態に応じて複数種の伝送方式を用いるものもある。しかし、引用文献１に記載の技術ではシンクライアントにローカル接続されている周辺機器の伝送方式を考慮していない。従って、周辺機器が帯域を保証された通信（例えば前記アイソクロナス転送）や大量のデータを遅れる通信（例えばバルク転送）を必要としていても、サーバからシンクライアントへの転送方式（通信方式）は一定であった。したがって、従来の技術ではシンクライアントに接続した周辺機器（デバイス）を円滑に利用できない事があった。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明に係る代表的な構成は、
クライアントに接続される機器の情報を機器情報として取得し、対応するドライバを選択する選択手段と、前記クライアントの前記機器に対する指示に基づいて、前記ドライバを用いて前記機器が解釈可能な操作要求を発行する発行手段と、前記機器情報又は前記選択手段で選択したドライバに応じて通信方式を決定し、当該通信方式に従って前記操作要求を前記クライアントへ転送する転送手段とを有することを特徴とする。
【発明の効果】
【０００９】
シンクライアントにローカル接続された周辺機器に対して適切な通信方式で操作要求をサーバから転送する事ができるため、シンクライアント環境でも円滑に周辺機器が利用可能になる。
【発明を実施するための最良の形態】
【００１０】
＜実施形態１＞
本実施形態のサーバ装置やクライアント装置等の情報処理装置を構成するコンピュータ装置の構成について、図２のブロック図を用いて説明する。
【００１１】
サーバやクライアントは、それぞれ単一のコンピュータ装置で実現してもよいし、必要に応じて複数のコンピュータ装置に機能を分散してもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（以下、ＬＡＮ）などで接続されている。
【００１２】
図２において、２０１はコンピュータ装置２００全体を制御するＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（中央処理装置、以下、ＣＰＵ）である。ＣＰＵ２０１は後述するＲＯＭやＲＡＭ、外部記憶装置に格納されたプログラムを実行する。２０２は変更を必要としないプログラムやパラメータを格納するＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（以下、ＲＯＭ）である。
【００１３】
２０３は外部装置などから供給されるプログラムやデータを一時記憶するＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（以下、ＲＡＭ）である。２０４はハードディスクやメモリカード、あるいはフレキシブルディスクやＣｏｍｐａｃｔ  Ｄｉｓｋ（以下、ＣＤ）等の光ディスク、磁気や光カード、ＩＣカード、メモリカードなどを含む外部記憶装置である。
【００１４】
２０５はユーザの操作を受け、データを入力するポインティングデバイスやキーボード２０９などの入力デバイスとのインターフェイスである。２０６はコンピュータ装置２００の保持するデータや供給されたデータを表示するためのモニタ２１０とのインターフェイスである。２０７はインターネットなどのネットワーク回線に接続するためのネットワークインターフェイスである。
【００１５】
２０８はプリンタ２１２などの機器（以降、周辺機器と称す）を接続するためのＵＳＢインターフェイスである。２０９は２０１〜２０８の各ユニットを通信可能に接続するシステムバスである。プリンタ２１２を操作するデバイスドライバ（以降、プリンタドライバと称す）はＲＯＭ２０２又は外部記憶装置２０４からＲＡＭ２０３上に展開されてから実行される。
【００１６】
このように、処理能力は違うもののサーバ装置とクライアント装置の概略構成はほぼ等しい。しかし、本実施形態のシンクライアントはプリンタ２１２に対応するデバイスドライバを、シンクライアント内のＲＯＭ２０２に記憶しておらず、ＲＡＭ２０３にも展開しないため、ＲＯＭ及びＲＡＭの構成を小さくできる。
【００１７】
また、本実施形態のシンクライアントは、サーバ装置のＯＳやアプリケーションを利用している。そのため、サーバ装置のＣＰＵ２０１の処理能力や、ＲＯＭ２０２やＲＡＭ２０３、外部記憶装置２０４の容量の方が、クライアント装置のものと比べ優れている。
【００１８】
次に図１を用いて、本実施形態のシンクライアントネットワークシステムの概略構成について説明する。シンクライアントネットワークシステムでは、アプリケーションの処理やＯＳの処理など大半の処理をサーバで集中して行い、クライアントでは主に画面表示およびユーザ操作などのＵＩ処理を行っている。１０１は複数のコンピュータ間での通信を可能にするためのネットワークである。１０２はクライアントとしてのコンピュータであり、１０３はサーバとしてのコンピュータである。クライアント１０２とサーバ１０３との間のデータのやりとりはネットワーク１０１を介して所定の通信方式（例えばＴＣＰ／ＩＰなど）にて行われる。
【００１９】
１０４はクライアントにおけるＵＩ処理部である。１０５はサーバの各種アプリケーション処理部（発行手段）であって、ＵＩ処理部が受付けたプリンタ１１６に対する操作を受け付け、後述の仮想ポートインターフェイス１１２に対してプリンタ１１６が解釈可能な操作要求を発行する。この際、アプリケーション管理部１０５は周辺機器の伝送方式に対応している操作要求を発行する。１０７はＵＳＢインターフェイスに接続される機器の監視およびデータ入出力を行うポートインターフェイスである。
【００２０】
本実施形態ではプリンタ１１６とクライアント１０２の伝送方式としてＵＳＢを用いているが、プリンタ以外にもスキャナやデジタルカメラなどのＵＳＢ機器が接続可能であり、その場合にも同様の処理を行う。また、周辺機器とのデバイスポートとの通信規格（伝送方式）としてはＵＳＢに限らず、ＳＣＳＩやＩＥＥＥ１２８４やＩＥＥＥ１３９４などの規格に準拠した他の伝送方式であってもよい。また、有線に限らず、通信可能であれば無線の伝送方式でもよい。
【００２１】
１０６はポートインターフェイス（デバイスポート）に接続された機器の情報（以降、機器情報と称す）管理する接続機器管理部である。機器情報の中には、機器を識別するための識別情報や、機器の状態を示すステータス情報、機器がローカル接続先と通信する際の伝送方式（ＵＳＢなど）を示す情報などが含まれる。機器の状態には前記機器がクライアントからの操作要求の受信に失敗し、再送を要求している状態、操作要求を処理している状態や操作要求を完了している状態などが例として挙げられる。
ポートインターフェイス１０７は、周辺機器の接続を検出すると接続機器管理部１０６へ通知を行い、接続機器管理部１０６ではポート管理情報１３０３の情報を更新する。ポート管理情報１３０３の詳細については後述する。
【００２２】
１１２はサーバが周辺機器に対して操作要求を行うための仮想データ転送管理部１１３及びデータ転送管理部１０８を生成（もしくは選択）し、データ入出力処理を行う仮想ポートインターフェイスである。
【００２３】
仮想データ転送管理部１１３は仮想モード１転送部１１４および仮想モード２転送部１１５を有している。また仮想データ転送管理部１１３は、画像データを含む操作要求をネットワークデータ（パケット単位のデータ等）に変換する処理および機器動作仕様に合わせてクライアント側とデータ転送を行う。
【００２４】
仮想モード１転送部１１４（第１の通信方式に沿った通信部）は転送エラー対応処理（再送処理）を行い、仮想モード２転送部１１５（第２の通信方式に沿った通信部）は通信保証処理（保証処理）を行う。
【００２５】
また、仮想データ転送管理部１１３は後述の仮想ポート管理情報１４０３を判定し仮想データ転送処理を切替える。
【００２６】
一方、データ転送管理部１０８はネットワークデータを周辺機器への操作要求に変換し、ポートインターフェイス１０８に転送する処理を行う。
【００２７】
データ転送管理部１０８においてもポート管理情報１３０３の情報を判定し、起動するデータ転送処理を切替える。１０９および１１０はデータ転送管理部１０８が有しているデータ転送処理部であり、ネットワークデータから操作要求への変換処理および機器動作仕様に合わせてデータ転送を行う。
【００２８】
１０９は転送エラー対応処理を行うモード１転送部であり、１１０は通信保証処理を行うモード２転送部である。１１１は接続機器管理部１０６からクライアントのポートに機器が有る事を通知された際に、仮想ポートインターフェイス１１２にポート管理情報を通知する通知情報管理部である。
【００２９】
以上の構成により、サーバ側にて印刷データの展開処理を行い、操作要求を含む印刷用データを仮想ポートに出力し、ネットワークを介してクライアントのポートに接続されたプリンタに出力可能とする。従って、シンクライアントネットワークの各シンクライアントのＵＳＢポートに接続されたプリンタを、各シンクライアント又はサーバから利用可能になる。
【００３０】
ポートインターフェイス１０７からプリンタ１１６へのデータ入出力には各インターフェイスのドライバを用いる。また、仮想ポートインターフェイス１１２は、プリンタドライバがデータ入出力するデバイスポートに、サーバ側から仮想的にアクセスするための仮想デバイスポートを生成する。サーバは、ローカルのデバイスポートへデータ入出力を行う処理と同様に、前記仮想デバイスポートにデータを入出力すれば良い。従って、アプリケーションの印刷処理およびドライバは、ローカル接続したプリンタへの印刷に用いるドライバ処理をそのまま使用することが可能となる。
【００３１】
ＵＳＢのデータ転送処理には、バルク転送、アイソクロナス転送、コントロール転送、インタラプト転送などがある。これらの転送処理には、エラー修正処理を必要とする転送処理、また、データの順番における転送レートの保証が必要、もしくは不要な転送処理など、転送処理や優先度の違いがある。従って、機器が現在用いているデータ転送処理に応じて、適切な通信方式を決定する。
【００３２】
本実施形態では、機器の状態に基づいて必要な転送モードを判定し、切替える処理を記載している。例えば、エラー再送処理の要否に応じて、再送処理の必要な転送モードをモード１転送とし、エラー転送処理を実装しない転送モードをモード２転送とする。さらに、モード２転送では、通信レート保証のための処理を行うものとする。
【００３３】
図３はポートインターフェイス１０７の処理を示すフローチャートである。ステップＳ３０１ではデバイスポートの監視およびデータ入出力用ポートの監視およびイベント監視を行っている。ＵＳＢデバイスポートにプリンタが接続されるとデバイスインターフェイス用のデバイスポートが生成され、必要なドライバがロードされる。このデバイスインターフェイス用のデバイスポートを監視し、機器の接続状態の検出を行う。
【００３４】
ステップＳ３０２では終了要求のイベントの判定を行い、要求を受信した場合は終了処理を行う。ステップＳ３０３ではポート監視処理にて新規のデバイスポートが生成されたかを判定している。新しいデバイスポートが生成された場合、ステップＳ３０４にてデバイスポートの初期化処理を行い、ポート管理情報１３０３に新規のエントリを生成し、デバイスポートのデバイスアクセス用の情報を設定する。
【００３５】
ステップＳ３０５にて接続機器管理処理部１０６へ通知処理を行い、ステップＳ３０１へ戻る。ステップＳ３０３にて新規デバイスポートの検出が無い場合、ステップＳ３０６に進む。ステップＳ３０６ではデバイスポートとの接続が切断されたかの判定を行う。接続が切断されたデバイスポートがある場合、ステップＳ３０７にてポート管理情報１３０３から該当項目を削除し、ステップＳ３０８にて接続機器管理１０６へ通知処理を行い、ステップＳ３０１へ戻る。
【００３６】
ステップＳ３０６にてデバイスポートの切断が無いと判定した場合、ステップＳ３０９に進む。ステップＳ３０９ではデータの入力要求があるかを判定し、データ入力要求がある場合、ステップＳ３１１にてデバイスポートからのデータ入力処理を行う。データ出力要求の場合、ステップＳ３１０にてデバイスポートへのデータ出力処理を行う。データ入出力処理を行った後、ステップＳ３０１へ戻る。
【００３７】
図４は接続機器管理部１０６の処理を示すフローチャートである。ステップＳ４０１では接続機器管理部１０６のデータ領域の初期化処理を行う。ステップＳ４０２ではＩ／Ｏ処理およびイベントがあるまで待機処理を行う。何らかの要求があると待機状態が解除されステップＳ４０３に進み、入力された要求が処理終了要求かの判定を行う。処理終了要求の場合、ステップＳ４１０にてデータ領域の開放処理などの終了処理を行って接続機器管理部１０６の処理を終了する。ステップＳ４０３にて入力された要求が終了要求でない場合、ステップＳ４０４に進む。
【００３８】
ステップＳ４０４ではポートインターフェイス処理１０７からの接続通知であるかを判定している。接続通知である場合、ステップＳ４０５にてポート管理情報１３０３を更新し、ステップＳ４０６にてデータ転送管理部１０８の起動処理を行う。ステップＳ４０４にて接続ではなく切断通知であった場合、ステップＳ４０８にてポート管理情報１３０３を更新し、ステップＳ４０９にてデータ転送管理部１０８に終了の通知を行う。次にステップＳ４０７にてポート管理情報１３０３の更新について通知情報管理１１１へ通知を行い、ステップＳ４０２に戻る。
【００３９】
図５は、データ転送管理部１０８の処理を示すフローチャートである。ステップＳ５０１ではデータ転送管理部１０８のデータ領域の初期化処理を行う。ステップＳ５０２では要求があるまでの待機処理を行う。要求を受取ると、ステップＳ５０３にて受取った要求が終了要求であるかの判定を行う。終了要求であると判定した場合、ステップＳ５０４にて起動したタスクへの終了通知を行い、データ転送管理部１０８の処理を終了する。ステップＳ５０３にて終了要求でないと判定した場合、ステップＳ５０５に進む。ステップＳ５０５ではポート管理情報１３０３の情報を元にデータ転送処理の転送モードの判定を行う。判定結果によりステップＳ５０６もしくはＳ５０７にて、対応するモード１転送部１０９もしくはモード２転送部１１０を起動する。
【００４０】
図６は、モード１転送部１０９の処理を示すフローチャートである。ステップＳ６０１ではモード１転送部１０９のデータ領域の初期化を行う。ステップＳ６０２ではＩ／Ｏ処理およびイベント要求が成されるまで待機処理を行う。待機状態が解除される事象が発生するとステップＳ６０３にて終了要求イベントかを判定し、終了要求の場合、ステップＳ６１６にてモード１転送部１０９の終了処理を行う。ステップＳ６０３にて終了要求でない場合、ステップＳ６０４に進む。ステップＳ６０４ではサーバからの動作要求情報を含むコントロール情報を仮想モード１転送部１１４から受信する。
【００４１】
ステップＳ６０５にてコントロール情報の判定を行い、機器からの入力指示の場合は、ステップＳ６０６にてポートインターフェイス１０７からデータを取得する。次にステップＳ６０７にて前記取得デバイスデータをサーバへのネットワークデータに変換し、ステップＳ６０８にて前記ネットワークデータに変換したデータを仮想モード１転送部１１４へ送信する。ステップＳ６０９にてデータ送信が正常終了したかを判定し、エラーが発生した場合、ステップＳ６０８のデータ送信処理をリトライする。
【００４２】
ステップＳ６０５のコントロール情報の判定にて機器への出力処理と判定した場合、ステップＳ６１０に進む。ステップＳ６１０では仮想モード１転送部１１４からネットワークデータを受信する。データ受信にてエラーを検出した場合は、ステップＳ６１１にてデータの再送要求を仮想モード１転送部１１４へ発行し、ステップＳ６１０へ戻る。
【００４３】
ステップＳ６１１にて受信したデータが正常に受信できた場合は、ステップＳ６１３にてデータ受信ＯＫの情報を仮想モード１転送部１１４へ送付する。ステップＳ６１４では受信したネットワークデータをデバイスデータへ変換を行う。ステップＳ６１５では前記変換されたデバイスデータをポートインターフェイス１０７へ出力し、ステップＳ６０２へ戻る。
【００４４】
図７は、モード２転送部１１０の処理を示すフローチャートである。ステップＳ７０１ではモード２転送部１１０のデータ領域の初期化を行う。ステップＳ７０２ではＩ／Ｏ処理およびイベント要求の待機処理を行う。待機状態が解除される事象が発生するとステップＳ７０３にて終了要求イベントかを判定し、終了要求の場合、ステップＳ７１２にてモード２転送部１１０の終了処理を行う。ステップＳ７０３にて終了要求でない場合、ステップＳ７０４に進む。
【００４５】
ステップＳ７０４ではサーバからの動作要求情報を含むコントロール情報を、仮想モード２転送部１１５から受信する。ステップＳ７０５にてコントロール情報の判定を行い、機器からの入力指示の場合は、ステップＳ７０６にてポートインターフェイス１０７からデータ取得する。次にステップＳ７０７にて前記取得したデバイスデータをサーバへのネットワークデータに変換し、ステップＳ７０８にて前記変換したデータを仮想モード２転送部１１５へ送信し、ステップＳ７０２へ戻る。
【００４６】
ステップＳ７０５のコントロール情報の判定にて機器への出力処理と判定した場合、ステップＳ７０９に進む。ステップＳ７０９では仮想モード２転送部１１５からのネットワークデータをバッファ領域に受信する。次にステップＳ７１０にてバッファに受信したネットワークデータをデバイスデータへ変換を行う。ステップＳ７１１では変換されたデバイスデータから機器へ送信可能なデリバリ保証されたデータをポートインターフェイス１０７へ出力し、ステップＳ７０２へ戻る。
【００４７】
図８は通知情報管理部１１１の処理を示すフローチャートである。ステップＳ８０１では通知情報管理部１１１が使用するデータ領域の初期化処理を行う。ステップＳ８０２ではＩ／Ｏ処理およびイベントの待機処理を行う。待機状態が解除される事象が発生するとステップＳ８０３に進み、処理終了要求かの判定を行う。処理終了要求の場合、ステップＳ８０９にてデータ領域の開放処理などの終了処理を行って通知情報管理部１１１を終了する。ステップＳ８０３にて終了要求でない場合、ステップＳ８０４に進む。
【００４８】
ステップＳ８０４では接続機器管理部１０６からの接続通知であるかを判定している。接続通知である場合、ステップＳ８０５にて仮想ポート管理情報１４０３を更新し、ステップＳ８０６にて仮想データ転送管理処理の起動処理を行う。ステップＳ８０４にて接続ではなく切断通知であった場合、ステップＳ８０７にて仮想ポート管理情報１４０３を更新し、ステップＳ８０８にて仮想データ転送管理部１１３に終了の通知を行い、ステップＳ８０２に戻る。
【００４９】
図９は仮想ポートインターフェイス１１２の処理を示すフローチャートである。ステップＳ９０１では仮想デバイスポートの監視およびデータ入出力用ディスクリプタの監視およびイベント監視を行っている。ステップＳ９０２では終了要求のイベント受信の判定を行い、終了要求を受信した場合は、仮想ポートインターフェイス１１２を終了する。ステップＳ９０３では新規の仮想デバイスポートの生成要求イベントであるかを判定している。新しいデバイスポート生成要求イベントの場合、ステップＳ９０４にて仮想ポート管理情報１４０３のエントリを生成し、仮想デバイスポートの生成処理を行い、ステップＳ９０５にて仮想デバイスポートの初期化処理を行い、ステップＳ９０１へ戻る。
【００５０】
ステップＳ９０３にて新規デバイスポート生成要求でなかった場合、ステップＳ９０６に進む。ステップＳ９０６ではデバイスポートが切断要求であるかの判定を行う。切断要求である場合、ステップＳ９０７にて仮想ポート管理情報１４０３から該当項目を削除するなどの開放処理を行い、ステップＳ９０１へ戻る。ステップＳ９０６にて仮想デバイスポートの切断要求ではないと判定された場合、ステップＳ９０８に進む。
【００５１】
ステップＳ９０８ではデータの入力要求であるかを判定し、データ入力要求である場合、ステップＳ９１０にて仮想モード１転送部１１４もしくは仮想モード２転送部１１５からのデータ入力処理を行う。データ出力要求の場合、ステップＳ９０９にて仮想モード１転送部１１４もしくは仮想モード２転送部１１５へのデータ出力処理を行う。データ入出力処理を行った後、ステップＳ９０１へ戻る。
【００５２】
図１０は、仮想データ転送管理部１１３の処理を示すフローチャートである。ステップＳ１００１では仮想データ転送管理部１１３の使用するデータ領域の初期化処理を行う。ステップＳ１００２ではイベント要求などの待機処理を行う。要求を受取ると、ステップＳ１００３にて終了要求かの判定を行う。終了要求の場合、ステップＳ１００４にて起動したタスクの終了要求を行い、仮想データ転送管理部１１３を終了する。
【００５３】
ステップＳ１００３にて終了要求でないと判定した場合、ステップＳ１００５に進む。ステップＳ１００５では仮想ポート管理情報１４０３の情報を元に仮想データ転送処理の転送モードの判定を行う。判定結果によりステップＳ１００６もしくはＳ１００７にて、対応する仮想モード１転送部１１４もしくは仮想モード２転送部１１５を起動し、ステップＳ１００２へ戻る。
【００５４】
図１１は、仮想モード１転送部１１４の処理を示すフローチャートである。ステップＳ１１０１では仮想データ転送部１１４のデータ領域の初期化を行う。ステップＳ１１０２ではＩ／Ｏ処理およびイベント要求の待機処理を行う。待機状態が解除される事象が発生するとステップＳ１１０３にて終了要求イベントかを判定し、終了要求の場合、ステップＳ１１０４にて仮想モード１転送部１１４の終了処理を行う。ステップＳ１１０３にて終了要求でない場合、ステップＳ１１０５に進む。
【００５５】
ステップＳ１１０５にてＩ／Ｏ要求が機器へ出力であるかの判定を行い、機器からの出力要求の場合は、ステップＳ１１０６にて仮想ポートインターフェイス１１２からデータを取得する。次にステップＳ１１０７にて取得したデバイスデータをネットワークデータに変換し、ステップＳ１１０８にてモード１転送部１０９にデータ出力処理のためのコントロール情報を送信する。次にステップ１１０９にて変換したデータをモード１転送部１０９へ送信する。ステップＳ１１１０にてデータ送信が正常終了したかを判定し、エラーが発生した場合、ステップＳ１１０９のデータ送信処理をリトライする。
【００５６】
ステップＳ１１０５の判定にて機器への入力処理と判定した場合、ステップＳ１１１１に進む。ステップＳ１１１１ではモード１転送部１０９にデータ入力処理のためのコントロール情報を送信する。次にステップＳ１１１２にてモード１転送部１０９からネットワークデータを受信する。データ受信にてエラーを検出したかをステップＳ１１１４にて判定し、エラーがあった場合は、ステップＳ１１１３にてデータの再送要求をモード１転送部１０９へ発行し、ステップＳ１１１２へ戻る。
【００５７】
ステップＳ１１１２にて受信したデータが正常に受信できた場合は、ステップＳ１１１５にてデータ受信ＯＫをモード１転送部１０９へ送付し、ステップＳ１１１６にて受信したネットワークデータをデバイスデータへ変換を行う。ステップＳ１１１７では変換されたデバイスデータを仮想ポートインターフェイス１１２へ出力し、ステップＳ１１０２へ戻る。
【００５８】
図１２は、仮想モード２転送部１１５の処理を示すフローチャートである。ステップＳ１２０１では仮想モード２転送部１１５のデータ領域の初期化を行う。ステップＳ１２０２ではＩ／Ｏ処理およびイベント要求の待機処理を行う。待機状態が解除される事象が発生するとステップＳ１２０３にて終了要求イベントかを判定し、終了要求の場合、ステップＳ１２１３にて仮想モード２転送部１１５の終了処理を行う。ステップＳ１２０３にて終了要求でない場合、ステップＳ１２０４に進む。
【００５９】
ステップＳ１２０４では機器への出力要求であるかの判定を行い、機器への出力要求の場合は、ステップＳ１２０５にて仮想デバイスポートインターフェース１１２から出力データを取得する。次にステップＳ１２０６にてデバイスデータをサーバへのネットワークデータに変換し、ステップＳ１２０７にてモード２転送部１１０にデータ出力処理のためのコントロール情報を送信する。ステップＳ１２０８にて変換したデータをモード２転送部１１０に送信し、ステップＳ１２０２へ戻る。ステップＳ１２０４の判定にて機器への入力処理と判定した場合、ステップＳ１２０９に進む。
【００６０】
ステップＳ１２０９ではモード２転送部１１０へ機器からの入力のためのコントロール情報を送信する。ステップＳ１２１０ではモード２転送部１１０からのネットワークデータをバッファ領域に受信する。次にステップＳ１２１１にてバッファに受信したネットワークデータをデバイスデータへ変換を行う。ステップＳ１２１２では変換されたデバイスデータから仮想デバイスポートへ送信可能なデリバリ保証されたデータを仮想デバイスインターフェイス１１２へ出力し、ステップＳ１２０２へ戻る。
【００６１】
図１３（ａ）はクライアントのポート管理情報の処理を示す図である。１３０１はクライアントの管理データ領域を示し、その中にポート管理情報へのポインタ１３０２を用意する。ポート管理情報へのポインタ１３０２は、ポート管理情報１３０３の領域を示すポインタを格納する。ポート管理情報１３０３は１つの管理対象デバイスポートに対して１つのエントリを用意し、複数のデバイスポートの場合、領域をリンクして管理する。ポート管理情報には、ポート名１３０４、ポートの種類１３０５、転送モード１３０６、ポート状態を示すステータス１３０７の領域を用意し、情報を管理する。
【００６２】
図１３（ｂ）はサーバの仮想ポート管理情報の処理を示す図である。１４０１はサーバの管理データ領域を示し、その中に仮想ポート管理情報へのポインタ１４０２を用意する。仮想ポート管理情報へのポインタ１４０２は、仮想ポート管理情報１４０３の領域を示すポインタを格納する。仮想ポート管理情報１４０３は１つの管理対象仮想デバイスポートに対して１つのエントリを用意し、複数の仮想デバイスポートの場合、領域をリンクして管理する。
【００６３】
仮想ポート管理情報には、クライアント情報１４０４、ポート名１４０５、ポートの種類１４０６、転送モード１４０７、仮想デバイスポート名１４０８、仮想ポート状態を示すステータス１４０９の領域を用意し、情報を管理する。
【００６４】
前述の実施形態では、エラー再送処理の要否に応じて転送モードを切替える例を挙げたが、接続している機器がリアルタイムデバイスであるかどうかで切替えるようにしてもよい。例えば、接続している機器がスピーカーやウェブカメラなどのリアルタイム性の要求されるデバイスの場合は転送エラーによる再送要求を必要としないためにモード２転送部を用いて高速に操作要求を転送すればよい。このように多種のデバイスに対応し且つ種々の優先度を持つ複数のモードを状況に応じて切替えることで、ユーザは何も意識することなくシンクライアントに接続したデバイスを使用できるようになる。また、接続している機器が種々の伝送方式（例えばＵＳＢのコントロール転送と、アイソクロナス転送）を使い分ける場合、クライアントから逐一通知する機器情報に現在の伝送方式に関する情報を含ませる方法もある。この場合、仮想データ転送管理部が機器情報から現在のデバイスの用いている伝送方式を判別し、それに対応して転送モードを切替えれば、より好適な転送モードに切替えることができるためオーバーヘッドが少なくなる。
【００６５】
また、前述の実施形態以外にも記録媒体から、前述した実施形態の機能を有するソフトウェアのプログラムコードを、システムあるいは装置のコンピュータが読み出し実行する形態も考えられる。
【００６６】
他にも、コンピュータが読み出したプログラムの指示に基づき、コンピュータ上で稼動しているＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）などが実際の前述した実施形態の処理の一部または全部を行う形態も考えられる。
【００６７】
なお、前述の本発明の処理を示すフローチャートは中央処理装置（ＣＰＵ）が実行する事が望ましいが、一部の構成をハードウェアとして用意しておいてもよい。この場合、柔軟な設計変更ができなくなることがあるが、ＣＰＵが負担する処理が減るため処理速度が向上する効果を奏する。
【図面の簡単な説明】
【００６８】
【図１】本実施形態の概略システム構成を示す図である。
【図２】コンピュータ装置の概略構成図である。
【図３】ポートインターフェイスの行う処理のフロー図である。
【図４】接続機器管理部の行う処理のフロー図である。
【図５】データ転送管理処理のフロー図である。
【図６】モード１転送部の行う処理のフロー図である。
【図７】モード２転送部の行う処理のフロー図である。
【図８】通知情報管理部の行う処理のフロー図である。
【図９】仮想ポートインターフェイスの行う処理のフロー図である。
【図１０】仮想データ転送管理部の行う処理のフロー図である。
【図１１】仮想モード１転送部の行う処理のフロー図である。
【図１２】仮想モード２転送部の行う処理のフロー図である。
【図１３】ポート管理情報のデータ構成を示す図である。
【符号の説明】
【００６９】
１０１  ネットワーク
１０２  クライアントコンピュータ装置（クライアント）
１０３  サーバコンピュータ装置（サーバ）
１０４  ＵＩ処理部
１０５  アプリケーション処理部
１０６  接続機器管理部
１０７  ポートインターフェイス
１０８  データ転送管理部
１０９  モード１転送部
１１０  モード２転送部
１１１  通知情報管理部
１１２  仮想ポートインターフェイス
１１３  仮想データ転送管理部
１１４  仮想モード１転送部
１１５  仮想モード２転送部
１１６  プリンタ（周辺機器）
【図１】
2010009147.tif 000003
【図２】
2010009147.tif 000004
【図３】
2010009147.tif 000005
【図４】
2010009147.tif 000006
【図５】
2010009147.tif 000007
【図６】
2010009147.tif 000008
【図７】
2010009147.tif 000009
【図８】
2010009147.tif 000010
【図９】
2010009147.tif 000011
【図１０】
2010009147.tif 000012
【図１１】
2010009147.tif 000013
【図１２】
2010009147.tif 000014
【図１３】
2010009147.tif 000015