(57)【要約】【課題】クライアントに接続されるデバイスを、クライアントから利用する場合と同様の利用環境で、情報処理サーバから利用することを可能とする。【解決手段】利用者がクライアントにデバイスを接続したことを検知し、情報処理サーバ内に当該デバイスのデバイスドライバが存在しない場合には、クライアント内に存在するデバイスドライバを情報処理サーバへ送信し、自動的にインストールを行う手段を設ける。また、情報処理サーバが複数の利用者で共用されるような場合であって、情報処理サーバの利用終了後に利用前の環境に戻す必要がある場合にも対応するため、情報処理サーバにおけるデバイスドライバの導入状態を復元する手段を設ける。【選択図】図１
2008146398.tif 000002
【特許請求の範囲】
【請求項１】
デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムであって、
前記サービス利用装置は、
当該サービス利用装置により実行されるオペレーティングシステムが前記デバイスを利用する際に、前記デバイスに対してコマンドを出力するデバイスドライバと、
前記デバイスドライバが前記デバイスに対して出力した前記コマンドを取得して前記デバイスに送信するバスドライバと、
前記デバイスドライバの識別情報を前記サービス提供装置に送信するデバイスドライバ識別情報送信部と、
前記サービス提供装置から送信される前記デバイスに対するコマンドを受信するコマンド受信部と、
前記コマンド受信部が受信した前記コマンドを前記バスドライバに引き渡すフィルタドライバと、
を備え、
前記サービス提供装置は、
前記サービス利用装置から、前記デバイスドライバの識別情報を受信するデバイスドライバ識別情報受信部と、
当該サービス提供装置により実行されるオペレーティングシステムから前記デバイスを利用可能とするために、前記受信した識別情報により特定されるデバイスドライバをインストールするデバイスドライバインストール部と、
前記オペレーティングシステムが前記デバイスを利用する際に、前記インストールされたデバイスドライバから前記デバイスに対して出力されるコマンドを取得する擬似バスドライバと、
前記擬似バスドライバが取得した前記コマンドを前記コマンド受信部に送信するコマンド送信部と、
を備える
ことを特徴とする情報処理システム。
【請求項２】
請求項1に記載の情報処理システムであって、
前記サービス提供装置は、複数のデバイスドライバと、各デバイスドライバの識別情報と、をそれぞれ対応付けて記憶する記憶装置を備え、
前記デバイスドライバインストール部は、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバを、前記記憶装置から読み出してインストールする
ことを特徴とする情報処理システム。
【請求項３】
請求項1に記載の情報処理システムであって、
前記サービス提供装置は、
前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバの送信要求を前記サービス利用装置に送信するデバイスドライバ要求送信部と、
前記デバイスドライバの送信要求に応じて前記サービス利用装置から送信されてくるデバイスドライバを受信するデバイスドライバ受信部と、
を備え、
前記サービス利用装置は、
前記デバイスドライバ要求送信部から、前記デバイスドライバの送信要求を受信するデバイスドライバ要求受信部と、
前記デバイスドライバの送信要求に応じて、前記デバイスドライバ識別情報送信部が前記サービス提供装置に送信した前記識別情報により特定されるデバイスドライバを前記デバイスドライバ受信部に送信するデバイスドライバ送信部と、
を備え、
前記デバイスドライバインストール部は、前記デバイスドライバ受信部が受信したデバイスドライバをインストールする
ことを特徴とする情報処理システム。
【請求項４】
請求項３に記載の情報処理システムであって、
前記サービス提供装置は、複数のデバイスドライバと、各デバイスドライバの識別情報と、をそれぞれ対応付けて記憶する記憶装置と、
前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバが前記記憶装置に記憶されているか否かを判定するデバイスドライバ判定部と、
を備え、
前記デバイスドライバ要求送信部は、前記判定の結果に応じて、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバの送信要求を前記サービス利用装置に送信する
ことを特徴とする情報処理システム。
【請求項５】
請求項４に記載の情報処理システムであって、
前記デバイスドライバの識別情報には、当該デバイスドライバの名称を示す情報及びバージョンを示す情報が含まれ、
前記デバイスドライバ要求送信部は、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバと名称及びバージョンのいずれもが同一のデバイスドライバが前記記憶装置に記憶されていない場合には、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバと同一名称及び同一バージョンのデバイスドライバの送信要求を、前記サービス利用装置に送信する
ことを特徴とする情報処理システム。
【請求項６】
請求項５に記載の情報処理システムであって、
前記デバイスドライバインストール部は、前記デバイスドライバ受信部が受信したデバイスドライバと名称は同一であるがバージョンが異なるデバイスドライバが前記サービス提供装置にインストールされている場合には、当該デバイスドライバをアンインストールした後に、前記デバイスドライバ受信部が受信したデバイスドライバをインストールする
ことを特徴とする情報処理システム。
【請求項７】
請求項６に記載の情報処理システムであって、
前記デバイスドライバインストール部は、前記デバイスドライバ受信部が受信した前記デバイスドライバと名称は同一であるがバージョンが異なる前記デバイスドライバをアンインストールする際に、当該デバイスドライバを前記記憶装置に退避しておき、前記サービス提供装置が、前記サービス利用装置から前記サービスの利用を終了するサービス利用終了通知を受信した場合には、前記サービス提供装置にインストールされている前記デバイスドライバをアンインストールし、前記記憶装置に退避しておいた前記デバイスドライバをインストールする
ことを特徴とする情報処理システム。
【請求項８】
デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムの制御方法であって、
前記サービス利用装置は、デバイスドライバと、バスドライバと、デバイスドライバ識別情報送信部と、コマンド受信部と、フィルタドライバと、を備え、
前記サービス提供装置は、デバイスドライバ識別情報受信部と、デバイスドライバインストール部と、擬似バスドライバと、コマンド送信部と、を備え、
前記デバイスドライバが、前記サービス利用装置により実行されるオペレーティングシステムが前記デバイスを利用する際に、前記デバイスに対してコマンドを出力し、
前記バスドライバが、前記デバイスドライバが前記デバイスに対して出力した前記コマンドを取得して前記デバイスに送信し、
前記デバイスドライバ識別情報送信部が、前記デバイスドライバの識別情報を前記デバイスドライバ識別情報受信部に送信し、
前記デバイスドライバ識別情報受信部が、前記デバイスドライバの識別情報を受信し、
前記デバイスドライバインストール部が、前記サービス提供装置により実行されるオペレーティングシステムから前記デバイスを利用可能とするために、前記受信した識別情報により特定されるデバイスドライバをインストールし、
前記擬似バスドライバが、前記オペレーティングシステムが前記デバイスを利用する際に、前記インストールされたデバイスドライバから前記デバイスに対して出力されるコマンドを取得し、
前記コマンド送信部が、前記擬似バスドライバが取得した前記コマンドを前記コマンド受信部に送信し、
前記コマンド受信部が、前記コマンド送信部から送信された前記デバイスに対するコマンドを受信し、
前記フィルタドライバが、前記コマンド受信部が受信した前記コマンドを前記バスドライバに引き渡す、
ことを特徴とする情報処理システムの制御方法。
【請求項９】
請求項８に記載の情報処理システムの制御方法であって、
前記サービス提供装置は、複数のデバイスドライバと、各デバイスドライバの識別情報と、をそれぞれ対応付けて記憶する記憶装置を備え、
前記デバイスドライバインストール部は、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバを、前記記憶装置から読み出してインストールする
ことを特徴とする情報処理システムの制御方法。
【請求項１０】
請求項８に記載の情報処理システムの制御方法であって、
前記サービス提供装置は、デバイスドライバ要求送信部と、デバイスドライバ受信部と、を備え、
前記サービス利用装置は、デバイスドライバ要求受信部と、デバイスドライバ送信部と、を備え、
前記デバイスドライバ要求送信部が、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバの送信要求を前記デバイスドライバ要求受信部に送信し、
前記デバイスドライバ要求受信部が、前記デバイスドライバの送信要求を受信し、
前記デバイスドライバ送信部が、前記デバイスドライバの送信要求に応じて、前記デバイスドライバ識別情報送信部が前記デバイスドライバ識別情報受信部に送信した前記識別情報により特定されるデバイスドライバを、前記デバイスドライバ受信部に送信し、
前記デバイスドライバ受信部が、前記デバイスドライバを受信し、
前記デバイスドライバインストール部が、前記デバイスドライバをインストールする
ことを特徴とする情報処理システムの制御方法。
【請求項１１】
請求項１０に記載の情報処理システムの制御方法であって、
前記サービス提供装置は、複数のデバイスドライバと、各デバイスドライバの識別情報と、をそれぞれ対応付けて記憶する記憶装置と、デバイスドライバ判定部と、を備え、
前記デバイスドライバ判定部が、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバが前記記憶装置に記憶されているか否かを判定し、
前記デバイスドライバ要求送信部が、前記判定の結果に応じて、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバの送信要求を前記サービス利用装置に送信する
ことを特徴とする情報処理システムの制御方法。
【請求項１２】
請求項１１に記載の情報処理システムの制御方法であって、
前記デバイスドライバの識別情報には、当該デバイスドライバの名称を示す情報及びバージョンを示す情報が含まれ、
前記デバイスドライバ要求送信部は、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバと名称及びバージョンのいずれもが同一のデバイスドライバが前記記憶装置に記憶されていない場合には、前記デバイスドライバ識別情報受信部が受信した識別情報により特定されるデバイスドライバと同一名称及び同一バージョンのデバイスドライバの送信要求を、前記サービス利用装置に送信する
ことを特徴とする情報処理システムの制御方法。
【請求項１３】
請求項１２に記載の情報処理システムの制御方法であって、
前記デバイスドライバインストール部は、前記デバイスドライバ受信部が受信したデバイスドライバと名称は同一であるがバージョンが異なるデバイスドライバが前記サービス提供装置にインストールされている場合には、当該デバイスドライバをアンインストールした後に、前記デバイスドライバ受信部が受信したデバイスドライバをインストールする
ことを特徴とする情報処理システムの制御方法。
【請求項１４】
請求項１３に記載の情報処理システムの制御方法であって、
前記デバイスドライバインストール部は、前記デバイスドライバ受信部が受信した前記デバイスドライバと名称は同一であるがバージョンが異なる前記デバイスドライバをアンインストールする際に、当該デバイスドライバを前記記憶装置に退避しておき、前記サービス提供装置が、前記サービス利用装置から前記サービスの利用を終了するサービス利用終了通知を受信した場合に、前記サービス提供装置にインストールされている前記デバイスドライバをアンインストールし、前記記憶装置に退避しておいた前記デバイスドライバをインストールする
ことを特徴とする情報処理システムの制御方法。
【請求項１５】
デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムにおける前記サービス利用装置であって、
当該サービス利用装置により実行されるオペレーティングシステムが前記デバイスを利用する際に、前記デバイスに対してコマンドを出力するデバイスドライバと、
前記デバイスドライバが前記デバイスに対して出力した前記コマンドを取得して前記デバイスに送信するバスドライバと、
前記デバイスドライバの識別情報を前記サービス提供装置に送信するデバイスドライバ識別情報送信部と、
前記サービス利用装置から前記デバイスドライバの識別情報を受信するデバイスドライバ識別情報受信部と、前記サービス提供装置により実行されるオペレーティングシステムから前記デバイスを利用可能とするために、前記受信した識別情報により特定されるデバイスドライバをインストールするデバイスドライバインストール部と、前記オペレーティングシステムが前記デバイスを利用する際に、前記インストールされたデバイスドライバから前記デバイスに対して出力されるコマンドを取得する擬似バスドライバと、前記擬似バスドライバが取得した前記コマンドを前記サービス利用装置に送信するコマンド送信部と、を備える前記サービス提供装置から送信される前記デバイスに対するコマンドを受信するコマンド受信部と、
前記コマンド受信部が受信した前記コマンドを前記バスドライバに引き渡すフィルタドライバと、
を備えることを特徴とするサービス利用装置。
【請求項１６】
デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムにおける前記サービス提供装置であって、
前記サービス利用装置により実行されるオペレーティングシステムが前記デバイスを利用する際に、前記デバイスに対してコマンドを出力するデバイスドライバと、前記デバイスドライバが前記デバイスに対して出力した前記コマンドを取得して前記デバイスに送信するバスドライバと、前記デバイスドライバの識別情報を前記サービス提供装置に送信するデバイスドライバ識別情報送信部と、前記サービス提供装置から送信される前記デバイスに対するコマンドを受信するコマンド受信部と、前記コマンド受信部が受信した前記コマンドを前記バスドライバに引き渡すフィルタドライバと、を備える前記サービス利用装置の前記デバイスドライバ識別情報送信部から、前記デバイスドライバの識別情報を受信するデバイスドライバ識別情報受信部と、
前記サービス提供装置により実行されるオペレーティングシステムから前記デバイスを利用可能とするために、前記受信した識別情報により特定されるデバイスドライバをインストールするデバイスドライバインストール部と、
前記オペレーティングシステムが前記デバイスを利用する際に、前記インストールされたデバイスドライバから前記デバイスに対して出力されるコマンドを取得する擬似バスドライバと、
前記擬似バスドライバが取得した前記コマンドを前記コマンド受信部に送信するコマンド送信部と、
を備える
ことを特徴とするサービス提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムにおいて、前記サービス提供装置が、前記サービス利用装置に接続されているデバイスを、前記サービス提供装置に直接接続されている場合と同様に利用可能とする技術に関する。
【背景技術】
【０００２】
利用者からの入力データを受け付けるサービス利用装置（以下、操作端末又はクライアントとも記す）が、ネットワークで接続されたサービス提供装置（以下、被操作端末又は情報処理サーバとも記す）にその入力データを送信し、その入力データに応じた情報処理が情報処理サーバにて実行され、その実行結果を示す画面データがクライアントのディスプレイに表示される、というリモート操作システムが開発されている（例えば、特許文献１、２参照）。
【特許文献１】特開２００１−３３１４２８号公報
【特許文献２】特開２００１−１９７４６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、リモート操作システムにおいて、クライアントがシンクライアントなどである場合は、実際の処理装置は情報処理サーバで行われるため、情報処理サーバ側にあるデータをクライアントに接続されたプリンタなどのデバイスへ出力したい場合や、クライアントに接続されたICカードリーダなどのデバイスから情報処理サーバがデータを読み出したい場合には、クライアントに接続されたデバイスを、情報処理サーバ側のＯＳ（Operating System）やアプリケーションから直接制御し、利用することができない。
【０００４】
そこで、情報処理サーバからクライアントに接続されたデバイスを使用可能とするために、クライアントにデバイス管理マネージャを設け、情報処理サーバにデバイス管理エージェントを設けることが考えられる。
【０００５】
デバイス管理マネージャは、クライアントに接続されたデバイスとクライアントが実行するアプリケーションとの間のデータの送受信と、クライアントに接続されたデバイスと情報処理サーバとの間のデータの送受信と、を排他的に制御するフィルタドライバや、情報処理サーバとの通信手段等を実現するプログラムである。
【０００６】
デバイス管理エージェントは、情報処理サーバが実行するアプリケーションとの間で仮想的にバスドライバとして機能する擬似バスドライバや、クライアントとの通信手段等を実現するプログラムである。
【０００７】
具体的には、クライアントにデバイスが接続される際にデバイスから出力されるプラグインデータをフィルタドライバがメモリ等に保存しておき、クライアントから情報処理サーバにプラグイン指示をする際に、そのプラグインデータを情報処理サーバに送信し、情報処理サーバにインストールされているデバイスドライバに対して、擬似バスドライバがプラグインデータを擬似的に応答する。
【０００８】
このように、情報処理サーバのデバイスドライバに対して、クライアントに接続されているデバイスがあたかも情報処理サーバに直接接続されているかのように応答することで、クライアントに接続されているデバイスを、情報処理サーバのＯＳ（Operating System）が利用することが可能となる。
【０００９】
クライアントにデバイスが接続された場合には、クライアントで実行されるＯＳは、デバイスのプラグイン処理を実行する。プラグイン処理においては、ＯＳがデバイスを認識するためのプラグインデータがＯＳとデバイスドライバとデバイスとの間で授受される。
【００１０】
フィルタドライバは、デバイスドライバとデバイスの間で授受されるデータをフィルタリングする。これにより、デバイスドライバとデバイスとの間で授受されるデータを監視したり保存したりすることができる。クライアントに接続されたデバイスからプラグインデータが出力されると、そのプラグインデータはフィルタドライバにより捕捉され、クライアントが情報処理サーバにプラグイン指示をする際に、情報処理サーバに送信される。
【００１１】
情報処理サーバがそのプラグインデータを受信すると、擬似バスドライバは、情報処理サーバにインストールされているデバイスドライバにそのプラグインデータを引き渡す。そのプラグインデータを用いてプラグイン処理が実行される。このようにして、情報処理サーバのＯＳは、クライアントに接続されているデバイスを認識する。
【００１２】
クライアントに接続されているデバイスを情報処理サーバが認識した後、情報処理サーバのＯＳやアプリケーションからデバイスにリクエストがなされた場合は、情報処理サーバの擬似バスドライバがそのリクエストを受け取り、クライアントのフィルタドライバに送信する。
【００１３】
クライアントのフィルタドライバは、受信したリクエストをデバイスに送信する。そのリクエストがデバイスで処理されると、デバイスから処理結果としてレスポンスが出力される。レスポンスは、フィルタドライバを経由して情報処理サーバの擬似バスドライバに送信される。擬似バスドライバは、フィルタドライバから受信したレスポンスを情報処理サーバが実行するＯＳやアプリケーションに返信する。これにより、情報処理サーバが実行するＯＳやアプリケーションからクライアントに接続されたデバイスにアクセス可能となる。
【００１４】
以上の手段により、情報処理サーバは、情報処理サーバにデバイスが直接接続されたときと同様に、クライアントに接続されているデバイスに対する処理を行うことが可能となる。
【００１５】
しかし、クライアントに接続されているデバイスを情報処理サーバから利用する場合に、情報処理サーバが実行するデバイスドライバが、クライアントが実行するデバイスドライバと異なる場合には、同じデバイスを利用するにしても、クライアントから利用する場合と、情報処理サーバから利用する場合とで、利用環境が異なってしまう。このため、ユーザの使い勝手が悪く、作業効率も悪化する。
【００１６】
また、クライアントに接続されたデバイスが例えば特殊なデバイスであり、そのデバイスを利用するためには特別な機能を持つデバイスドライバを実行する必要がある場合において、そのデバイスを情報処理サーバで過去に利用したことがない場合には、そのデバイスを利用する毎に、そのデバイスドライバを情報処理サーバにインストールしなければならず、作業性が悪い。
【００１７】
本発明は、クライアントに接続されたデバイスを、クライアントから利用する場合と同様の利用環境で、情報処理サーバから利用することを可能とすることを1つの目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するに、本実施形態は、デバイスが接続されるサービス利用装置に通信可能に接続され、前記サービス利用装置に入力された入力データを当該サービス利用装置から受信し、前記入力データに応じて情報処理を実行し、その実行結果を前記サービス利用装置に送信するサービスを提供するサービス提供装置と、前記サービス利用装置と、を備えて構成される情報処理システムであって、前記サービス利用装置は、当該サービス利用装置により実行されるオペレーティングシステムが前記デバイスを利用する際に、前記デバイスに対してコマンドを出力するデバイスドライバと、前記デバイスドライバが前記デバイスに対して出力した前記コマンドを取得して前記デバイスに送信するバスドライバと、前記デバイスドライバの識別情報を前記サービス提供装置に送信するデバイスドライバ識別情報送信部と、前記サービス提供装置から送信される前記デバイスに対するコマンドを受信するコマンド受信部と、前記コマンド受信部が受信した前記コマンドを前記バスドライバに引き渡すフィルタドライバと、を備え、前記サービス提供装置は、前記サービス利用装置から、前記デバイスドライバの識別情報を受信するデバイスドライバ識別情報受信部と、当該サービス提供装置により実行されるオペレーティングシステムから前記デバイスを利用可能とするために、前記受信した識別情報により特定されるデバイスドライバをインストールするデバイスドライバインストール部と、前記オペレーティングシステムが前記デバイスを利用する際に、前記インストールされたデバイスドライバから前記デバイスに対して出力されるコマンドを取得する擬似バスドライバと、前記擬似バスドライバが取得した前記コマンドを前記コマンド受信部に送信するコマンド送信部と、を備える。
【００１９】
このような態様により、サービス利用装置に接続されたデバイスを、サービス利用装置から利用する場合と同様の利用環境で、サービス提供装置から利用することが可能となる。
【発明の効果】
【００２０】
デバイスが接続されるサービス利用装置に通信可能に接続され、サービス利用装置に入力された入力データを当該サービス利用装置から受信し、その入力データに応じて情報処理を実行し、その実行結果をサービス利用装置に送信するサービスを提供するサービス提供装置と、サービス利用装置と、を備えて構成される情報処理システムにおいて、サービス利用装置に接続されるデバイスを、サービス利用装置から利用する場合と同様の利用環境で、サービス提供装置から利用することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を図面に基づいて説明する。  
図１は、本実施形態におけるリモート操作システム１０００のハードウェア構成およびソフトウェア構成を表す図の一例である。
【００２２】
リモート操作システム１０００は、クライアント１０１と情報処理サーバ１０２とがネットワーク１１００を介して通信可能に接続されて構成される情報処理システムである。図１に示すリモート操作システム１０００は、１台のクライアント１０１と１台の情報処理サーバ１０２とにより構成されているが、それぞれ複数台であっても良い。
【００２３】
クライアント１０１は、ユーザの出張先や自宅あるいは移動途中の場所など、様々な場所からネットワーク１１００に接続し、情報処理サーバ１０２と通信を行うことが可能なコンピュータである。クライアント１０１は、ユーザからの入力データを受け付けると、その入力データを情報処理サーバ１０２に送信する。そしてクライアント１０１は、その入力データに応じて実行された情報処理の実行結果を示す画面データを情報処理サーバ１０２から受信して表示する。
【００２４】
クライアント１０１は、例えばシンクライアントにより構成することができる。もちろんノート型パーソナルコンピュータやＰＤＡ（Personal Digital Assistant）等の一般的なコンピュータにより構成することもできる。
【００２５】
情報処理サーバ１０２は、クライアント１０１から送信されてくる入力データに応じて情報処理を実行し、その実行結果を示す画面データを生成して、クライアント１０１に送信するコンピュータである。
【００２６】
情報処理サーバ１０２は、例えば、ブレードサーバを構成する個々のブレードコンピュータにより構成することができる。ブレードコンピュータは、コンピュータとして機能する一体的に形成されたボードであり、同一規格の複数のブレードコンピュータが筐体に装着されることにより、ブレードサーバを構成する。もちろん、パーソナルコンピュータやワークステーション、メインフレーム等のコンピュータにより構成することもできる。
【００２７】
次にリモート操作システム１０００のハードウェア構成について説明する。  
クライアント１０１は、ＣＰＵ（Central Processing Unit）１１０、メモリ１１１、デバイスＩ／Ｆ（Interface）１１２、ディスクＩ／Ｆ１１３、通信Ｉ／Ｆ１１４を備える。  
デバイスＩ／Ｆ１１２は、デバイスＡ１５１を接続するためのインタフェースである。
【００２８】
クライアント１０１は、ＵＳＢ（登録商標）やシリアルポートインタフェース、ＩＥＥＥ１３９４（Institute of Electrical and Electronic Engineers 1394）等の各種規格に応じて、複数のデバイスＩ／Ｆ１１２を設けることができる。デバイスＩ／Ｆ１１２は、デバイスの種類ごとに存在する。図示しないキーボードやマウス、ディスプレイなどの入出力デバイスも各々に対応したデバイスＩ／Ｆ１１２に接続されるようにしてもよい。
【００２９】
デバイスＡ１５１は、プリンタやＩＣ（Integrated Circuit）カードリーダなどのいわゆる周辺機器であり、デバイスＩ／Ｆ１１２を介してクライアント１０１と接続される。デバイスＡ１５１は、内部にメモリを備え、製造ベンダＩＤや製品ＩＤ、シリアル番号等のデバイス識別情報を記憶している。これらのデータは、デバイスＡ１５１がデバイスＩ／Ｆ１１２に接続されると、デバイスＡ１５１から出力され、クライアント１０１に読み出される。
【００３０】
ディスクＩ／Ｆ１１３は、ハードディスクドライブやフラッシュメモリなどのストレージ１５２を接続するためのインタフェースである。
【００３１】
通信Ｉ／Ｆ１１４は、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などのネットワーク１１００に接続し、他のコンピュータと通信を行うためのインタフェースである。本実施形態では、クライアント１０１と情報処理サーバ１０２とは、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）の通信規格に従ってネットワーク１１００を介して通信を行う。
【００３２】
情報処理サーバ１０２はＣＰＵ１１５、メモリ１１６、デバイスＩ／Ｆ１１７、ディスクＩ／Ｆ１１８、通信Ｉ／Ｆ１１９を備える。
【００３３】
デバイスＩ／Ｆ１１７は、プリンタ等の各種デバイスに接続するためのインタフェースである。情報処理サーバ１０２は、ＵＳＢ（登録商標）やシリアルポートインタフェース、ＩＥＥＥ１３９４等の各種規格に応じて、複数のデバイスＩ／Ｆ１１７を設けることができる。デバイスＩ／Ｆ１１７は、デバイスの種類ごとに存在する。図示しないキーボードやマウス、ディスプレイなどの入出力デバイスも各々に対応したデバイスＩ／Ｆ１１７に接続されてもよい。ただし、本実施形態に係る情報処理サーバ１０２は、ユーザインタフェースを不要とし、ディスプレイやキーボード、マウスが接続されていなくても良い。
【００３４】
ディスクＩ／Ｆ１１８は、ハードディスクドライブやフラッシュメモリなどのストレージ１５３に接続するためのインタフェースである。  
通信Ｉ／Ｆ１１９は、ＬＡＮやＷＡＮなどのネットワークに接続し、他のコンピュータと通信を行うためのインタフェースである。
【００３５】
次に、リモート操作システム１０００のソフトウェア構成について説明する。  
クライアント１０１は、アプリケーションプログラム１２０、ＯＳ（Operating System）１２１、ドライバＡ１２２、バスドライバ１２３、クライアント制御プログラム１２４、デバイス管理マネージャプログラム１２５を実行する。なお、デバイス管理マネージャプログラム１２５には、クライアント側基本制御プログラム１４１、クライアント側テーブル処理プログラム１４２、フィルタドライバ１４３が含まれる。
【００３６】
メモリ１１１に読み込まれたこれらのプログラムがＣＰＵ１１０により実行されることにより、クライアント１０１の各処理部が実現される。例えば、メモリ１１１に格納されたクライアント制御プログラム１２４、クライアント側基本制御プログラム１４１、クライアント側テーブル処理プログラム１４２などの各種プログラムが、ＣＰＵ１１０により実行されることで、各種の処理が行われる。
【００３７】
これらの各処理は、各プログラムをＣＰＵ１１０が実行することにより行なわれるが、これらは、クライアント制御部、クライアント側基本制御部、クライアント側テーブル処理部など、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。
【００３８】
以下、説明を簡略化するため、各種プログラムを各処理の主体として説明するが、各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。
【００３９】
なお、クライアント側基本制御プログラム１４１には、デバイスドライバ識別情報送信プログラム３００、コマンド受信プログラム３０１、デバイスドライバ要求受信プログラム３０２、デバイスドライバ送信プログラム３０３が含まれる。これらの各プログラムがＣＰＵ１１０によりそれぞれ実行されることにより、特許請求の範囲に記載のデバイスドライバ識別情報送信部、コマンド受信部、デバイスドライバ要求受信部、デバイスドライバ送信部における各機能が実現される。
【００４０】
またストレージ１５２には、デバイス管理テーブル１６１、ドライバＡファイル１６２、ドライバＡ設定ファイル１６３、ネットワーク接続状態バッファ１６７が記憶される。
【００４１】
ドライバＡファイル１６２はドライバＡ１２２に対応するドライバファイルであり、ＯＳ１２１がドライバＡファイル１６２をメモリ１１１にロードすることによって、ドライバＡファイル１６２はドライバＡ１２２として動作する。ドライバＡ設定ファイル１６３はドライバＡ１２２をインストール時に設定するためのファイルである。
【００４２】
また詳しくは後述するが、ドライバＡファイル１６２およびドライバＡ設定ファイル１６３は、情報処理サーバ１０２で必要な場合には、情報処理サーバ１０２に送信される。
【００４３】
クライアント制御プログラム１２４は、キーボードやマウス等を用いてユーザによって入力されたデータ（入力データ）を情報処理サーバ１０２へ送信し、情報処理サーバ１０２から送信されてくる画面データを受信してディスプレイに表示する制御を行うプログラムである。
【００４４】
またクライアント制御プログラム１２４は、デバイス管理マネージャプログラム１２５から各種通知を受け取り、通知の内容に対応したメッセージをディスプレイに表示する制御も行う。またクライアント制御プログラム１２４は、ユーザがクライアント１０１から情報処理サーバ１０２にログインをするための各種制御を実行する。
【００４５】
アプリケーションプログラム１２０は、例えば、指紋認証等によりユーザの本人確認を行うユーザ認証プログラム等とすることができる。アプリケーションプログラム１２０は、ＯＳ１２１、ドライバＡ１２２、バスドライバ１２３を通して、デバイスＩ／Ｆ１１２に接続されたデバイスＡ１５１にアクセスし、データの入出力などを行うことができる。
【００４６】
ＯＳ１２１は、クライアント１０１を構成する各種ハードウェアの制御を司るプログラムである。またアプリケーションプログラム１２０がデバイスＡ１５１との間でデータの授受を行う際に、アプリケーションプログラム１２０とドライバＡ１２２との間で行われるデータの授受を制御する。
【００４７】
ＯＳ１２１は、各デバイスＩ／Ｆ１１２にデバイスＡ１５１が接続されているか否かや、それらのデバイスＡ１５１を利用可能か否かを管理している。
【００４８】
デバイスＩ／Ｆ１１２にデバイスＡ１５１が接続されると、デバイスＡ１５１から、デバイスＡ１５１のベンダＩＤや製品ＩＤ、シリアル番号を含むデバイス識別情報が出力される。デバイス識別情報は、デバイスＡ１５１がデバイスＩ／Ｆ１１２に接続された際にデバイスＡ１５１から出力されるプラグインデータに含まれている場合もある。バスドライバ１２３は、そのデバイス識別情報をデバイスＡ１５１から受け取ると、デバイスＩ／Ｆ１１２の識別情報と共にＯＳ１２１に引き渡す。そしてＯＳ１２１は、そのデバイス識別情報を、デバイスＩ／Ｆ１１２の識別情報と対応付けてメモリ１１１に記憶する。またＯＳ１２１は、そのデバイス識別情報によりデバイスＡ１５１を特定する。そしてＯＳ１２１は、上記特定したデバイスＡ１５１を制御するためのドライバＡ１２２をメモリ１１１にロードする。ドライバＡ１２２のインストールは、ストレージ１５２に記憶されているドライバＡ設定ファイル１６３に従って、ドライバＡファイル１６２をドライバＡ１２２としてメモリ１１１にロードすることにより行われる。そしてＯＳ１２１は、デバイスＡ１５１を制御中である旨のフラグをセットする。これにより、ＯＳ１２１はデバイスＡ１５１を利用可能になる。以下、ＯＳ１２１がデバイスＡ１５１を利用可能とするための処理をプラグイン処理とも記す。
【００４９】
一方、デバイスＡ１５１がデバイスＩ／Ｆ１１２から取り外されると、バスドライバ１２３により検知される。バスドライバ１２３はその旨のメッセージを、デバイスＩ／Ｆ１１２の識別情報と共にＯＳ１２１に通知する。そうするとＯＳ１２１は、そのデバイスＩ／Ｆ１１２の識別情報と対応付けてメモリ１１１に記憶されているデバイス識別情報に基づいて、取り外されたデバイスＡ１５１を特定する。そしてＯＳ１２１は、デバイスＡ１５１を制御終了中である旨のフラグをセットする。これにより、ＯＳ１２１はデバイスＡ１５１を利用中止する。以下、ＯＳ１２１がデバイスＡ１５１を利用中止するための処理をプラグアウト処理とも記す。この後、ドライバＡ１２２をアンインストールするようにしても良い。
【００５０】
ドライバＡ１２２は、デバイスＡ１５１を制御するためのプログラム（デバイスドライバ）である。例えば、デバイスＡ１５１がプリンタである場合には、そのプリンタの起動や印刷用紙の給紙、印字サイズや画像解像度の制御等を行う。ドライバＡ１２２は、元々ストレージ１５２等にドライバＡファイル１６２として記憶されており、デバイスＡ１５１がデバイスＩ／Ｆ１１２に接続されたときに、ストレージ１５２等からメモリ１１１にロードされる。ドライバＡ１２２は、アプリケーションプログラム１２０がデバイスＡ１５１との間でデータの授受を行う際に、ＯＳ１２１とバスドライバ１２３との間で行われるデータの授受を制御する。なお、詳細は後述するが、本実施形態においては、ドライバＡ１２２は、フィルタドライバ１４３を介してバスドライバ１２３との間でデータを授受する。
【００５１】
バスドライバ１２３は、ドライバＡ１２２とデバイスＩ／Ｆ１１２との間で行われるデータの授受を制御し、クライアント１０１とデバイスＡ１５１との間の通信を制御するプログラムである。例えばバスドライバ１２３は、デバイスＡ１５１から送信されてくる、デバイスＡ１５１の動作状態を示すデータや各種割り込み信号等をデバイスＩ／Ｆ１１２から受け取ると、ドライバＡ１２２に対してそれらのデータを受け渡す。なお、詳細は後述するが、本実施形態においては、バスドライバ１２３は、フィルタドライバ１４３を介してドライバＡ１２２との間でデータを授受する。
【００５２】
デバイス管理マネージャプログラム１２５は、クライアント１０１に接続されているデバイスＡ１５１を、情報処理サーバ１０２のＯＳ１３１が制御可能とするためのプログラムである。以下、クライアント１０１に接続されているデバイスを情報処理サーバ１０２のＯＳ１３１が制御可能とすることを、デバイスをリモート利用するとも記す。制御デバイス管理マネージャプログラム１２５は、クライアント側基本制御プログラム１４１、クライアント側テーブル処理プログラム１４２、フィルタドライバ１４３を備えて構成される。
【００５３】
フィルタドライバ１４３は、ドライバＡ１２２やＯＳ１２１に対してはバスドライバ１２３としての処理を実行し、バスドライバ１２３に対してはドライバＡ１２２やＯＳ１２１としての処理を実行するプログラムである。これにより、フィルタドライバ１４３は、バスドライバ１２３からドライバＡ１２２に対して引き渡されるデータを取得（以下、フィルタリングとも記す）して、クライアント側基本制御プログラム１４１に引き渡すことが可能となる。またフィルタドライバ１４３は、クライアント側基本制御プログラム１４１から引き渡されたデータを、あたかもドライバＡ１２２からのデータであるかのように、バスドライバ１２３に引き渡すことが可能となる。詳細は後述するが、これにより、クライアント側基本制御プログラム１４１が情報処理サーバ１０２からデバイスＡ１５１へのリクエストを受信した場合に、フィルタドライバ１４３は、そのリクエストをデバイスＡ１５１に送信することが可能となり、また、フィルタドライバ１４３は、そのリクエストに対するデバイスＡ１５１からのレスポンスを取得して、クライアント側基本制御プログラム１４１を通じて情報処理サーバ１０２に返すことが可能となる。また、デバイスＡ１５１の接続や取り外し等のイベントが発生した場合に、フィルタドライバ１４３が当該デバイスＡ１５１の識別情報を取得し、クライアント側基本制御プログラム１４１に通知することにより、デバイスＡ１５１の接続や取り外し等のイベントを監視することも可能となる。
【００５４】
クライアント側テーブル処理プログラム１４２は、クライアント側基本制御プログラム１４１からの指示に従って、デバイス管理テーブル１５２の作成やデータ格納、更新、取得処理などを行うプログラムである。
【００５５】
クライアント側基本制御プログラム１４１は、フィルタドライバ１４３によって取得されたデータを情報処理サーバ１０２へ送信し、情報処理サーバ１０２から送信されたデータをフィルタドライバ１４３へ引き渡す処理を行うプログラムである。またクライアント側基本制御プログラム１４１は、クライアント側テーブル処理プログラム１４２に対して、デバイス管理テーブル１６１の更新等の処理を指示する。
【００５６】
ストレージ１５２には、デバイス管理テーブル１５２が記憶されている。デバイス管理テーブル１６１の一例を図２に示す。
【００５７】
デバイス管理テーブル１６１は、各デバイスの識別情報であるベンダＩＤ３０１と製品ＩＤ３０２、および個々の製品に個別に割り当てられるシリアル番号３０３、当該デバイスに対応するドライバのドライバファイルパス３０４、バージョン３０５、および同ドライバの設定ファイルパス３０６、当該デバイスの動作状態を示すアクティブ３０７から構成される。
【００５８】
ベンダＩＤ３０１、製品ＩＤ３０２、シリアル番号３０３は、デバイスを、個々の製品の区別を含めて一意に識別するためにデバイス管理マネージャプログラム１２５が使用する。ドライバファイルパス３０４、バージョン３０５、設定ファイルパス３０６は、ベンダＩＤ３０１、製品ＩＤ３０２、シリアル番号３０３により一意に識別されるデバイスに対応した、クライアント１０１にインストール済みであるデバイスドライバについての情報である。ドライバファイルパス３０４には、当該デバイスドライバに対応するドライバファイルが存在するストレージ１５２内のパス及びドライバファイルの名称が格納される。設定ファイルパス３０６には、当該デバイスドライバに対応するドライバ設定ファイルが存在するストレージ１５２内のパス及びドライバ設定ファイルの名称が格納される。
【００５９】
バージョン３０５は、ドライバファイルパス３０４に存在するドライバファイルのバージョンを示しており、情報処理サーバ１０２でドライバの導入状態をチェックし、情報処理サーバ１０２に導入されているドライバとのバージョン比較を行うときに使用される。詳細は後述する。
【００６０】
アクティブ３０７は、当該デバイスが動作中（ＯＳ１２１が当該デバイスを制御中）のとき「Ｙｅｓ」が設定され、動作中でない（ＯＳ１２１が当該デバイスを制御終了中）とき、「Ｎｏ」が設定される。この値は、デバイス管理マネージャプログラム１２５が、情報処理サーバ１０２に対して、アクティブデバイス情報（デバイス管理テーブル１６１のデータのうち、アクティブ３０７が「Ｙｅｓ」となっているデータ全てで構成される情報）を送信する前に、クライアント１０１内にアクティブなデバイスが存在するか、また、どのデバイスがアクティブであるか、という判断を行う際に使用される。また、アクティブ３０７の値の更新は、デバイスの接続や取り外しをデバイス管理マネージャプログラム１２５が検知したときに、デバイス管理マネージャプログラム１２５内のクライアント側テーブル処理プログラム１４２が行う。
【００６１】
デバイス管理テーブル１６１内の各値は、クライアント１０１において使用可能である全てのデバイスについて、管理者があらかじめ設定しておくこととしても良い。なお、管理者がクライアント１０１の利用者に対して、ストレージ１５２のデータを更新する権限を与えずに、内容を参照する権限しか与えない運用を行う場合には、当該デバイスの動作状態が変化したときに、アクティブ３０７の値を更新するのではなく、バッファ内に、ベンダＩＤ３０１、製品ＩＤ３０２、シリアル番号３０３、およびアクティブ３０７の値を保持し、更新することによって代用してもよい。
【００６２】
次に、ストレージ１５２に記憶されるネットワーク接続状態バッファ１６７について説明する。図４は、ネットワーク接続状態バッファ１６７を表す図の一例である。ネットワーク接続状態バッファ１６７は、クライアント１０１のリモート接続状態を一時的に保存しておくためのバッファである。ネットワーク接続状態バッファ１６７は、リモート接続状態５０１から構成される。
【００６３】
リモート接続状態５０１は、現在クライアント１０１が情報処理サーバ１０２に対してリモート接続を行っている場合には「接続中」が設定され、リモート接続を行っていない場合には「切断中」が設定される。リモート接続状態５０１の値は、クライアント１０１のリモート接続状態が変化したタイミングで、デバイス管理マネージャプログラム１２５によって更新される。値が更新されるタイミング、および値の使用用途については、図９〜図１１で後述する。
【００６４】
図１に戻って、情報処理サーバ１０２のソフトウェア構成について説明する。  
情報処理サーバ１０２は、アプリケーションプログラム１３０、ＯＳ１３１、ドライバＡ１３２、ドライバＢ１３５、バスドライバ１３６、情報処理サーバ制御プログラム１３３、デバイス管理エージェントプログラム１３４を実行する。なお、デバイス管理エージェントプログラム１３４には、情報処理サーバ側基本制御プログラム１４４、情報処理サーバ側テーブル処理プログラム１４５、インストール／アンインストール処理プログラム１４６、擬似バスドライバ１４７が含まれる。
【００６５】
メモリ１１６に読み込まれたこれらのプログラムがＣＰＵ１１５により実行されることにより、情報処理サーバ１０２の各処理部が実現される。例えば、メモリ１１６に格納された情報処理サーバ制御プログラム１３３、情報処理サーバ側基本制御プログラム１４４、情報処理サーバ側テーブル処理プログラム１４５、インストール／アンインストール処理プログラム１４６などの各種プログラムが、ＣＰＵ１１５により実行されることで、各種の処理が行われる。
【００６６】
これらの各処理は、各プログラムをＣＰＵ１１５が実行することにより行なわれるが、これらは、情報処理サーバ制御部、情報処理サーバ側基本制御部、情報処理サーバ側テーブル処理部、インストール／アンインストール処理部など、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。
【００６７】
以下、説明を簡略化するため、各種プログラムを各処理の主体として説明するが、各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。
【００６８】
なお、情報処理サーバ側基本制御プログラム１４４には、デバイスドライバ識別情報受信プログラム３０４、コマンド送信プログラム３０５、デバイスドライバ要求送信プログラム３０６、デバイスドライバ受信プログラム３０７、デバイスドライバ判定プログラム３０８が含まれる。これらの各プログラムがＣＰＵ１１５によりそれぞれ実行されることにより、特許請求の範囲に記載のデバイスドライバ識別情報受信部、コマンド送信部、デバイスドライバ要求送信部、デバイスドライバ受信部、デバイスドライバ判定部における各機能が実現される。またインストール／アンインストール処理プログラム１４６には、デバイスドライバインストールプログラム３０９が含まれる。デバイスドライバインストールプログラム３０９がＣＰＵ１１５により実行されることにより、特許請求の範囲に記載のデバイスドライバインストール部における機能が実現される。
【００６９】
ストレージ１５３には、ドライバ管理テーブル１６４，ドライバＡファイル１６５、ドライバＡ設定ファイル１６６、ドライバＢファイル１６９、ドライバＢ設定ファイル１７０、デバイスドライバ管理設定テーブル１６８が記憶される。
【００７０】
ドライバＡファイル１６５はドライバＡ１３２に対応するドライバファイルであり、ドライバＡ設定ファイル１６６はドライバＡ１３２に対応するドライバ設定ファイルである。ドライバＢファイル１６９はドライバＢ１３５に対応するドライバファイルであり、ドライバＢ設定ファイル１７０はドライバＢ１３５に対応するドライバ設定ファイルである。
【００７１】
情報処理サーバ制御プログラム１３３は、クライアント１０１に入力されたデータ（入力データ）を、クライアント制御プログラム１２４を通じて受信し、その入力データに応じて実行された情報処理の実行結果を示す画面データをクライアント１０１に送信するプログラムである。また情報処理サーバ制御プログラム１３３は、ユーザがクライアント１０１から情報処理サーバ１０２にログインをするための各種制御を実行する。
【００７２】
アプリケーションプログラム１３０は、クライアント１０１から送信されてくる入力データに応じた情報処理を実行するプログラムである。例えば、ワードプロセッサ用プログラムや、表計算プログラム、データベース管理プログラム、電子メール送受信プログラム等とすることができる。アプリケーションプログラム１３０は、ＯＳ１３１、ドライバＢ１３５、バスドライバ１３６を通して、デバイスＩ／Ｆ１１７に接続されたデバイスＢ１５４にアクセスし、データの入出力などを行うことができる。
【００７３】
ＯＳ１３１は、情報処理サーバ１０２を構成する各種ハードウェアの制御を司るプログラムである。またアプリケーションプログラム１３０がデバイスＢ１５４との間でデータの入出力を行う際に、アプリケーションプログラム１３０とドライバＢ１３５との間で行われるデータの授受を制御する。
【００７４】
ＯＳ１３１は、情報処理サーバ１０２の各デバイスＩ／Ｆ１１７にデバイスＢ１５４が接続されているか否かや、それらのデバイスＢ１５４を利用可能か否かを管理している。
【００７５】
デバイスＩ／Ｆ１１７にデバイスＢ１５４が接続されると、デバイスＢ１５４から、デバイスＢ１５４のベンダＩＤや製品ＩＤ、シリアル番号を含むデバイス識別情報が出力される。デバイス識別情報は、デバイスＢ１５４がデバイスＩ／Ｆ１１７に接続された際にデバイスＢ１５４から出力されるプラグインデータに含まれている場合もある。バスドライバ１３６は、そのデバイス識別情報をデバイスＢ１５４から受け取ると、デバイスＩ／Ｆ１１７の識別情報と共にＯＳ１３１に引き渡す。そしてＯＳ１３１は、そのデバイス識別情報を、デバイスＩ／Ｆ１１７の識別情報と対応付けてメモリ１１６に記憶する。またＯＳ１３１は、そのデバイス識別情報によりデバイスＢ１５４を特定する。そしてＯＳ１３１は、上記特定したデバイスＢ１５４を制御するためのドライバＢ１３５をメモリ１１６にロードする。ドライバＢ１３５のインストールは、ストレージ１５３に記憶されているドライバＢ設定ファイル１７０に従って、ドライバＢファイル１６９をドライバＢ１３５としてメモリ１１６にロードすることにより行われる。そしてＯＳ１３１は、デバイスＢ１５４を制御中である旨のフラグをセットする。これにより、ＯＳ１３１はデバイスＢ１５４を利用可能になる。このようにしてＯＳ１３１は、デバイスＢ１５４を利用可能とするためのプラグイン処理を実行する。
【００７６】
一方、デバイスＢ１５４がデバイスＩ／Ｆ１１７から取り外されると、バスドライバ１３６により検知される。バスドライバ１３６はその旨のメッセージを、デバイスＩ／Ｆ１１７の識別情報と共にＯＳ１３１に通知する。そうするとＯＳ１３１は、そのデバイスＩ／Ｆ１１７の識別情報と対応付けてメモリ１１６に記憶されているデバイス識別情報に基づいて、取り外されたデバイスＢ１５４を特定する。そしてＯＳ１３１は、デバイスＢ１５４を制御終了中である旨のフラグをセットする。これにより、ＯＳ１３１はデバイスＢ１５４を利用中止する。このようにしてＯＳ１３１は、デバイスＢ１５４を利用中止するためのプラグアウト処理を実行する。この後、ドライバＢ１３５をアンインストールするようにしても良い。
【００７７】
ドライバＢ１３５は、デバイスＢ１５４を制御するためのプログラム（デバイスドライバ）である。例えば、デバイスＢ１５４がプリンタである場合には、そのプリンタの起動や印刷用紙の給紙、印字サイズや画像解像度の制御等を行う。ドライバＢ１３５は、元々ストレージ１５３等にドライバＢファイル１６９として記憶されており、デバイスＢ１５４が情報処理サーバ１０２に接続されたときに、ストレージ１５３等からメモリ１１６にロードされる。ドライバＢ１３５は、アプリケーションプログラム１３０がデバイスＢ１５４との間でデータの入出力を行う際に、ＯＳ１３１とバスドライバ１３６との間で行われるデータの授受を制御する。
【００７８】
ドライバＡ１３２は、デバイスＡ１５１を制御するためのプログラム（デバイスドライバ）である。例えば、デバイスＡ１５１がプリンタである場合には、そのプリンタの起動や印刷用紙の給紙、印字サイズや画像解像度の制御等を行う。ドライバＡ１３２は、元々ストレージ１５３等にドライバＡファイル１６５として記憶されており、デバイスＡ１５１がクライアント１０１に接続されたときに、ストレージ１５３等からメモリ１１６にロードされる。ドライバＡ１３２は、アプリケーションプログラム１３０がデバイスＡ１５１との間でデータの入出力を行う際に、ＯＳ１３１と擬似バスドライバ１４７との間で行われるデータの授受を制御する。
【００７９】
バスドライバ１３６は、ドライバＢ１３５とデバイスＩ／Ｆ１１７との間で行われるデータの授受を制御し、情報処理サーバ１０２とデバイスＢ１５４との間の通信を制御するプログラムである。例えばバスドライバ１３６は、デバイスＢ１５４から送信されてくる、デバイスＢ１５４の動作状態を示すデータや各種割り込み信号等をデバイスＩ／Ｆ１１７から受け取ると、ドライバＢ１３５に対してそれらのデータを受け渡す。
【００８０】
デバイス管理エージェントプログラム１３４は、クライアント１０１に接続されているデバイスＡ１５１を情報処理サーバ１０２のＯＳ１３１が制御できるようにするためのプログラムである。デバイス管理エージェントプログラム１３４は、情報処理サーバ側基本制御プログラム１４４、情報処理サーバ側テーブル処理プログラム１４５、インストール/アンインストール処理プログラム１４６、擬似バスドライバ１４７を備えて構成される。
【００８１】
擬似バスドライバ１４７は、情報処理サーバ１０２の仮想的なバスドライバとして振る舞うプログラムである。つまり、擬似バスドライバ１４７は、ドライバＡ１３２に対して、あたかもドライバＡ１３２とデバイスＩ／Ｆ１１７との間で行われるデータの授受を制御しているかのように処理を実行する。このため、ドライバＡ１３２は、デバイスＩ／Ｆ１１７にデバイスＡ１５１が接続されている場合と同様に、擬似バスドライバ１４７との間でデータの授受を行う。
【００８２】
また上述したように、クライアント１０１のデバイスＩ／Ｆ１１２にデバイスＡ１５１が接続された場合には、デバイスＡ１５１のメーカや品番等を含むデバイス識別情報がフィルタドライバ１４３により取得され、そのデバイス識別情報が、デバイスＩ／Ｆ１１２の識別情報と共にクライアント側基本制御プログラム１４１から情報処理サーバ側基本制御プログラム１４４に送信されるが、擬似バスドライバ１４７は、情報処理サーバ側基本制御プログラム１４４からデバイス識別情報及びデバイスＩ／Ｆ１１２の識別情報を受け取ると、ＯＳ１３１に引き渡す。そしてＯＳ１３１は、クライアント１０１のデバイスＩ／Ｆ１１２に接続されたデバイスＡ１５１のプラグイン処理を行う。
【００８３】
擬似バスドライバ１４７は、アプリケーションプログラム１３０がデバイスＡ１５１にアクセスしようとするなどして、デバイスＡ１５１へのリクエストが発生し、ドライバＡ１３２からそのリクエストを受信した場合には、そのリクエストを情報処理サーバ側基本制御プログラム１４４を通じてクライアント１０１に送信する。擬似バスドライバ１４７は、そのリクエストに対するレスポンスを情報処理サーバ側基本制御プログラム１４４から受信すると、レスポンスをドライバＡ１３２に返す。
【００８４】
またクライアント１０１のデバイスＩ／Ｆ１１２からデバイスＡ１５１が取り外された場合には、その旨のメッセージが、デバイスＩ／Ｆ１１２の識別情報と共に、フィルタドライバ１４３からクライアント側基本制御プログラム１４１を通じて情報処理サーバ側基本制御プログラム１４４に送信されるが、擬似バスドライバ１４７は、情報処理サーバ側基本制御プログラム１４４から上記メッセージを受け取ると、デバイスＩ／Ｆ１１２の識別情報と共にＯＳ１３１に引き渡す。ＯＳ１２１は、このデバイスＩ／Ｆ１１２の識別情報に基づいて取り外されたデバイスＡ１５１を特定し、デバイスＡ１５１のプラグアウト処理を実行する。
【００８５】
情報処理サーバ側テーブル処理プログラム１４６は、情報処理サーバ側基本制御プログラム１４４からの指示に応じて、ドライバ管理テーブル１６４の作成やデータ格納、更新、取得処理などを行うプログラムである。
【００８６】
インストール/アンインストール処理プログラム１４６は、情報処理サーバ側基本制御プログラム１４４からの指示に応じて、クライアント１０１から送信されてきたドライバＡファイル１６２およびドライバＡ設定ファイル１６３を使用したドライバのインストール処理や、デバイスのリモート利用後における、ドライバのアンインストール処理などを行う。
【００８７】
情報処理サーバ側基本制御プログラム１４４は、擬似バスドライバ１４７が取得したデータをクライアント１０１へ送信し、かつクライアント１０１から送信されたデータを擬似バスドライバ１４７へ送信する。また、情報処理サーバ側テーブル処理プログラム１４５、インストール/アンインストール処理プログラム１４６に対して、処理を指示する。
【００８８】
ストレージ１５３には、ドライバ管理テーブル１６４が記憶されている。ドライバ管理テーブル１６４の一例を図３に示す。
【００８９】
ドライバ管理テーブル１６４は、各デバイスの識別情報であるベンダＩＤ４０１と製品ＩＤ４０２、および当該デバイスに対応するドライバの、ドライバファイル名４０３、バージョン４０４、設定ファイル名４０５、導入状態４０６、退避パス４０７、リモート利用４０８から構成される。
【００９０】
ベンダＩＤ４０１と製品ＩＤ４０２は、デバイスの識別を行うために使用する。  
ドライバファイル名４０３は、ベンダＩＤ４０１と製品ＩＤ４０２で識別されるデバイスに対応するドライバファイルのファイル名を表し、同様に設定ファイル名４０５は、ベンダＩＤ４０１と製品ＩＤ４０２で識別されるデバイスに対応するドライバ設定ファイルのファイル名を表す。
【００９１】
バージョン４０４は、ドライバファイル名４０３が示すドライバファイルのバージョンを示しており、情報処理サーバ１０２でドライバの導入状態をチェックし、クライアント１０１に導入されているドライバとのバージョン比較を行うときに使用される。
【００９２】
導入状態４０６は、情報処理サーバ１０２における各デバイスドライバの導入状態をデバイス管理エージェントプログラム１３４がチェックするときに参照される。導入状態４０６は、導入状態によって、「一時退避」、「退避」、「リモート導入中」、「導入済」、「無し」という各値が設定される。
【００９３】
「一時退避」は、情報処理サーバ１０２がクライアント１０１に接続されているデバイスをリモート利用している間に、リモート利用を開始する前にインストールされていたドライバを後で復元して再インストール可能にしておくために、一時的にアンインストールして退避している状態を表す。  
「退避」は、利用者が次に情報処理サーバ１０２に対してリモート接続を行う場合に、ドライバの送信は行わずに、情報処理サーバ１０２内から直接インストールできるようにしておくために、ドライバファイルおよびドライバ設定ファイルをストレージ１５３内に退避してある状態を表す。  
「リモート導入中」は、クライアント１０１から送信されてきたドライバファイルおよびドライバ設定ファイルを元にドライバをインストールした結果、現在そのドライバを利用中であることを表す。  
「導入済」は、当該ドライバが情報処理サーバ１０２にインストール済みであり、利用可能である状態を表す。  
「無し」は、当該ドライバがインストールされておらず、かつ、退避中でもない状態を表す。
【００９４】
導入状態４０６の値は、各デバイスドライバの導入状態が変化したタイミングで、デバイス管理エージェントプログラム１３４内の情報処理サーバ側テーブル処理プログラム１４５によって更新される。値が更新されるタイミング、および値の使用用途の詳細については、図１３〜図１６において後述する。
【００９５】
退避パス４０７は、導入状態４０６が「一時退避」または「退避」の場合にのみ使用され、各々該当するドライバファイルおよびドライバ設定ファイルの、ストレージ１５３内の退避先パスを表している。退避パス４０７は、当該ドライバを退避先パスからインストールする際に参照される。
【００９６】
リモート利用４０８は、当該ドライバがリモート利用中かどうかを表しており、リモート利用中の場合は「Ｙｅｓ」、リモート利用中でない場合は「Ｎｏ」が設定される。リモート利用４０８は、クライアント１０１から情報処理サーバ１０２へのリモート切断処理の際に、リモート利用中のドライバを特定するために使用される。
【００９７】
図５は、情報処理サーバ１０２のデバイスドライバの管理方法についての情報を設定するための、デバイスドライバ管理設定テーブル１６８の一例である。このデータは端末利用設定６０１および退避パス設定６０２から構成され、情報処理サーバ１０２内のＯＳ１３１のレジストリ内に、管理者によってあらかじめ設定される。
【００９８】
端末利用設定６０１は、情報処理サーバ１０２の操作元のクライアント１０１が１つだけであり、他のクライアント１０１から接続される可能性がない運用を行う場合には、「専用」と設定される。一方、情報処理サーバ１０２が複数のクライアント１０１から接続される可能性のある運用を行う場合には「共用」と設定される。
【００９９】
端末利用設定６０１は、デバイスドライバをクライアント１０１からリモート導入した後、リモート切断をするときに、情報処理サーバ１０２にデバイスドライバを残すのか、退避後アンインストールするのか、という判断をするときに、デバイス管理エージェントプログラム１３４によって使用される。
【０１００】
退避パス設定６０２には、ドライバファイルおよびドライバ設定ファイルを退避する際に退避先となるストレージ１５３内のパスが設定され、ドライバファイルおよびドライバ設定ファイルを退避するとき、またはドライバ管理テーブル１６４の退避パス４０７を更新するときなどにデバイス管理エージェントプログラム２１５が参照する。
【０１０１】
図６は、本実施形態におけるリモート操作システム１０００のシステム構成を表す図の一例である。図６に示すリモート操作システム１０００では、図１のクライアント１０１、情報処理サーバ１０２に加えて、データサーバ２０１を備える構成となっている。
【０１０２】
データサーバ２０１は、図示しないが、図１のクライアント１０１と同様のハードウェア構成を持ち、また、ＯＳや各種アプリケーションを備えている。データサーバ２０１内のストレージ２５４には、ドライバＢファイル２６１、ドライバＣファイル２６２など、複数のドライバファイルが図示しないドライバ設定ファイルと対応付けて格納されている。
【０１０３】
矢印２７１は、情報処理サーバ１０２のストレージ１５３内にドライバＡファイル１６２が存在しない場合に、クライアント１０１のストレージ１５２内のドライバＡファイル１６２を図示しないドライバＡ設定ファイル１６３と共に送信するときの、データの流れを表している。
【０１０４】
矢印２７２は、情報処理サーバ１０２のストレージ１５３内にドライバＢファイル２６１が存在しない場合に、データサーバ２０１のストレージ２５４内から、ドライバＢファイル２６１を、図示しないドライバＢ設定ファイルと共にダウンロードするときの、データの流れを表している。
【０１０５】
図７は、利用者がクライアント１０１を起動してから、情報処理サーバ１０２にログインし、クライアント１０１に接続されたデバイスＡ１５１を情報処理サーバ１０２から利用できるようにするまでの、システム全体の処理フローを表す図の一例である。
【０１０６】
利用者はクライアント１０１に起動要求を行う（７０１）。利用者からの起動要求を受けたクライアント１０１は、ストレージ１５２から、ＯＳ１２１、バスドライバ１２３、アプリケーションプログラム１２０、デバイス管理マネージャプログラム１２５のクライアント側基本制御プログラム１４１などをメモリ１１１にロードし、起動する（７０２）。
【０１０７】
次に、利用者によってデバイスＡ１５１がクライアント１０１に挿入されると（７０３）、デバイスＡ１５１からプラグインデータが出力される。プラグインデータには、デバイスＡ１５１の識別情報が含まれている。そしてクライアント１０１内のバスドライバ１２３が挿入を検知し、ＯＳ１２１に対してデバイスＡ１５１に適合したデバイスドライバの利用準備を行うように指示を出す。指示を受けたＯＳ１２１は、ＯＳ１２１のレジストリに登録された情報からドライバＡファイル１６２の場所を探しに行き、ドライバＡファイル１６２が見つかると、ドライバＡファイル１６２をメモリ１１１にロードする。以降、ドライバＡファイル１６２はドライバＡ１２２として動作する。
【０１０８】
一方、フィルタドライバ１４３もドライバＡ１２２と同様の処理を経てメモリ１１１にロードされる。ドライバＡ１２２およびフィルタドライバ１４３がメモリ１１１にロードされ、フィルタドライバ１４３は、ＯＳ１２１がデバイスＡ１５１を認識するためのプラグインデータをＯＳ１２１とデバイスＡ１５１間で送受信する。フィルタドライバ１４３はＯＳ１２１からドライバＡ１２２、バスドライバ１２３を経由してデバイスＡ１５１に送受信されるデータをフィルタリングすることで監視し、ＯＳ１２１がデバイスを認識するためのプラグインデータをフィルタドライバ１４３に保存する。
【０１０９】
プラグインデータは、後述するステップ７２１において、情報処理サーバ１０２でのプラグイン処理を行うときに使用される。また、フィルタドライバ１４３はデバイスＡ１５１が接続されたことをクライアント側基本制御プログラム１４１に通知（以下、プラグイン通知とも記す）する。通知の際は、デバイスＡ１５１のベンダＩＤ、製品ＩＤ、シリアル番号等のデバイス識別情報も併せて通知する（７０４）。またドライバＡ１２２の名称やバージョン等のドライバＡ１２２の識別情報を通知するようにしてもよい。
【０１１０】
一方、プラグイン通知を受信したクライアント側基本制御プログラム１４１は、受信したデバイスＡ１５１のベンダＩＤ、製品ＩＤ、シリアル番号等のデバイス識別情報、あるいはドライバＡ１２１の識別情報に基づいて、デバイス管理テーブル１６１内の、対応するデバイスの行の、アクティブ３０７の値を「Ｙｅｓ」に更新する（７０５）。以上により、デバイスＡ１５１がクライアント１０１において、クライアント１０１から使用できる状態となる（７０６）。
【０１１１】
次に、利用者がクライアント１０１に対してリモート接続開始を指示すると（７０７）、クライアント１０１は情報処理サーバ１０２へリモート接続開始要求を送信する（７０８）。リモート接続開始の指示は、利用者のＩＤとパスワードの入力に相当し、リモート接続開始要求を受信した情報処理サーバ１０２では、セッションを生成し、ユーザの認証を行い（７０９）、クライアント１０１に対し、接続完了通知を送信する（７１０）。
【０１１２】
接続完了通知を受信すると、クライアント１０１内にアクティブなデバイスが存在する場合は、クライアント制御プログラム１２４はデバイス共有準備中である旨のメッセージを表示して利用者に通知し（７１１）、情報処理サーバ１０２にはアクティブデバイス情報を送信する（７１２）。アクティブデバイス情報を受信した情報処理サーバ１０２は、そのデバイスに対応したドライバの導入状態をチェックし（７１３）、同一名称のドライバファイルが情報処理サーバ１０２内に存在しない、または導入済であっても、クライアント１０１内のドライバＡ１２２とバージョンが異なる場合には、クライアント１０１に対してドライバの送信要求を行う（７１４）。ドライバの送信要求を受信したクライアント１０１は当該ドライバを準備の上（７１５）、ストレージ１５２内のドライバＡファイル１６２およびドライバＡ設定ファイル１６３を情報処理サーバ１０２に送信する（７１６）。各ファイルの存在するパスについては、デバイス管理テーブル１６１内のドライバファイルパス３０４、設定ファイルパス３０６を参照することによって取得する。
【０１１３】
なお、ステップ７１４〜７１６については、ドライバの送信要求を、図6に示したデータサーバ２０１に対して行い、該当するドライバファイルおよびドライバ設定ファイルをデータサーバ２０１から受信するように構成しても良い。
【０１１４】
ドライバＡファイル１６２およびドライバＡ設定ファイル１６３を受信すると、デバイス管理エージェントプログラム１３４は、受信したドライバＡファイル１６２およびドライバＡ設定ファイル１６３を使用することによって、ドライバＡ１３２のインストール処理を行う（７１６）。インストール処理が完了すると、デバイス管理エージェントプログラム１３４は、ドライバ管理テーブル１６４の更新を行う（７１７）。ドライバ管理テーブル１６４の更新内容としては、ベンダＩＤ４０１、製品ＩＤ４０２、ドライバファイル名４０３、バージョン４０４、設定ファイル名４０５については、ステップ７１２で受信したアクティブデバイス情報に基づいて更新する。ただし、ドライバファイル名４０３、設定ファイル名４０５については、ファイル名より前のパスの部分は削除した上で格納する。また、導入状態４０６を「リモート導入中」、リモート利用４０８を「Ｙｅｓ」と更新する。
【０１１５】
なお、情報処理サーバ１０２に既にドライバＡ１２２とバージョンも含めて同一のドライバＡ１３２が導入済である場合には、７１３〜７１７までのステップは行われないが、ステップ７１８において、リモート利用４０８を「Ｙｅｓ」に更新することだけは実行する。
【０１１６】
次に、情報処理サーバ１０２は、クライアント１０１に対してドライバ準備完了通知を送信する（７１８）。ドライバ準備完了通知を受信したクライアント１０１は、アクティブであるデバイスＡ１５１のプラグイン指示を情報処理サーバ１０２に行う（７２０）。プラグイン指示（７２０）を行う際、プラグインデータもクライアント１０１から情報処理サーバ１０２に送信する。プラグイン指示を受信した情報処理サーバ１０２はプラグイン処理を行う（７２１）。
【０１１７】
ここに、プラグイン処理とは、情報処理サーバ１１６にデバイスＡ１５１が直接挿入された場合と同じ手続きをデバイス管理エージェントプログラム１３４とＯＳ１３１とドライバＡ１３２の間で再現する処理であり、擬似バスドライバ１４７がドライバＡ１３２に対してプラグインデータを擬似応答することにより情報処理サーバ１０２で仮想的にデバイスを認識する。
【０１１８】
情報処理サーバ１０２で仮想的にデバイスを認識した後、情報処理サーバ１０２のＯＳ１３１やアプリケーションプログラム１３０からデバイスＡ１５１にリクエストがあった場合は、ネットワーク１１００を経由して情報処理サーバ１０２の擬似バスドライバ１４７からクライアント１０１のフィルタドライバ１４３にリクエストを送信する。
【０１１９】
クライアント１０１のフィルタドライバ１４３では受信したリクエストをデバイスＡ１５１で処理し、その処理結果であるレスポンスを情報処理サーバ１０２の擬似バスドライバ１４７に送信する。
【０１２０】
なお、クライアント１０１のフィルタドライバ１４３ではクライアント１０１のＯＳ１２１やアプリケーションプログラム１２０からのリクエストと情報処理サーバ１０２のＯＳ１３１やアプリケーションプログラム１３０のリクエストを排他的に制御している。排他の制御は、例えば、セマフォ等により各リクエストに対して同期を取ることにより行うことができる。
【０１２１】
擬似バスドライバ１４７は、情報処理サーバ１０２のＯＳ１３１やアプリケーションプログラム１３０に、クライアント１０１のフィルタドライバ１４３から受信したレスポンスを返信する。これにより、情報処理サーバ１０２のＯＳ１３１やアプリケーションプログラム１３０からクライアント１０１に接続されたデバイスＡ１５１にアクセス可能となる。
【０１２２】
プラグイン処理完了後、情報処理サーバ１０２からクライアント１０１へプラグイン完了通知が送信され（７２２）、クライアント制御プログラム１２４は利用者に対してデバイス共有準備が完了した旨のメッセージを表示して通知する（７２３）。
【０１２３】
以上の処理によって、デバイス管理マネージャプログラム１２５とデバイス管理エージェントプログラム１３４が通信することにより、デバイスＡ１５１は情報処理サーバ１０２から直接接続されているときと同様に動作することとなり、すなわちデバイスＡ１５１の共有が開始される（７２４）。
【０１２４】
なお、図７におけるデバイス管理マネージャプログラム１２５とデバイス管理エージェントプログラム１３４内の各処理プログラムが行う処理の詳細については、図９〜図１６で後述する。
【０１２５】
図８は、デバイスＡ１５１がクライアント１０１と情報処理サーバ１０２によって共有された状態から、利用者がデバイスＡ１５１を取り外し、クライアント１０１からの情報処理サーバ１０２の操作を終了するまでのシステム全体の処理フローを表す図の一例である。
【０１２６】
利用者がデバイスＡ１５１の取り外しを行うと（８０１）、ＯＳ１２１がそれを検知し、デバイス管理マネージャプログラム１２５に通知する。  
デバイス管理マネージャプログラム１２５は、通知された情報に基づいてデバイス管理テーブル１６１を更新する（８０２）。引き続き、クライアント１０１は情報処理サーバ１０２へデバイス取り外し通知を行い（８０３）、この通知を受信した情報処理サーバ１０２はプラグアウト処理を行う（８０４）。
【０１２７】
ここに、プラグアウト処理とは、情報処理サーバ１０２にデバイスＡ１５１が直接接続されていた状態から、切断を行ったときと同じ手続きをデバイス管理エージェントプログラム１３４とＯＳ１３１とドライバＡ１３２の間で再現する処理であり、擬似バスドライバ１４７がドライバＡ１３２に対してプラグアウトデータを擬似応答することにより情報処理サーバ１０２で仮想的にデバイスが取り外されたと認識させる処理である。
【０１２８】
これにより、デバイスＡ１５１は情報処理サーバ１０２から取り外された状態となり、再びプラグイン処理を行うまではクライアント１０２のアプリケーションプログラム１３０からクライアント１０１に接続されたデバイスＡ１５１にアクセス不可能となる。プラグアウト処理が完了すると、情報処理サーバ１０２はクライアント１０１にプラグアウト処理完了通知を行う（８０５）。
【０１２９】
次に、利用者がクライアント１０１に対して、情報処理サーバ１０２との接続の切断を指示する（８０６）と、クライアント１０１は情報処理サーバ１０２に対してリモート切断要求（サービス利用終了通知）を送信する（８０７）。リモート切断要求を受信した情報処理サーバ１０２のデバイス管理エージェントプログラム１３４は、リモートで利用中であるドライバＡ１３２をストレージ１５３内に退避し（８０８）、デバイスＡ１５１の導入状態をリモート接続前の状態に戻す処理を行う（８０９）。
【０１３０】
この処理が行われた後、デバイス管理エージェントプログラム１３４はドライバ管理テーブル１６４を更新し（８１０）、セッションを削除し（８１１）、クライアント１０１に対して切断完了通知を行う（８１２）。なお、デバイスドライバ管理設定テーブル１６８の端末利用設定６０１が「共用」でない場合、ステップ８０８、８０９の処理は行われず、ステップ７１６でインストールされたドライバＡ１３２がそのままの状態で残ることとなる。
【０１３１】
なお、図８におけるデバイス管理マネージャプログラム１２５とデバイス管理エージェントプログラム１３４内の各処理プログラムが行う処理の詳細については、図９〜図１６で後述する。  
図９は、クライアント１０１内のデバイス管理マネージャプログラム１２５のクライアント側基本制御プログラム１４１における、デバイスＡ１５１の接続からデバイスＡ１５１の共有開始までの処理の流れを表す図の一例である。  
なお、図９および図１０中の丸囲いのアルファベット記号は、情報処理サーバ１０２への出力、または情報処理サーバ１０２からの入力を表しており、他の図中に存在する同じ丸囲いのアルファベット記号の入出力に対応している。
【０１３２】
クライアント側基本制御プログラム１４１は、起動後、イベントを受信する（９０２）まで待ち状態で待機している（９０１）。  
クライアント側基本制御プログラム１４１は、デバイスＡ１５１の挿入通知をフィルタドライバ１４３から受信すると（９０３−Ｙｅｓ）、その挿入通知と共に受信したデバイスＡ１５１の識別情報であるベンダＩＤ３０１、製品ＩＤ３０２、シリアル番号３０３に対応するデバイス管理テーブル１６１内のアクティブ３０７の値を「Ｙｅｓ」へ更新するように、クライアント側テーブル処理プログラム１４２へ指示する（９０４）。
【０１３３】
クライアント側基本制御プログラム１４１は、ネットワーク接続状態バッファ１６７内のリモート接続状態５０１が「接続中」でない場合には（９０５−Ｎｏ）、再び待ち状態９０１となる。  
また、クライアント側基本制御プログラム１４１は、利用者からリモート接続開始要求を受信すると（９０６−Ｙｅｓ）、情報処理サーバ１０２へリモート接続開始要求を送信する（９０７）。またクライアント側基本制御プログラム１４１は、情報処理サーバ１０２から接続完了通知を受信すると（９０８）、リモート接続状態５０１を「接続中」に更新する（９０９）。
【０１３４】
ここで、デバイス管理テーブル１６１内のアクティブ３０７を参照することにより、アクティブなデバイスがクライアント１０１内に存在するかどうかをチェックし、アクティブなデバイスが存在する場合には（９１０−Ｙｅｓ）、アクティブデバイス情報を情報処理サーバ１０２へ送信し（９１１）、イベント受信（９１３）まで待ち状態になる（９１２）。
【０１３５】
クライアント側基本制御プログラム１４１は、ドライバの送信要求を受信した場合には（９１４−Ｙｅｓ）、当該ドライバＡファイル１６２およびドライバＡ設定ファイル１６３を情報処理サーバ１０２へ送信する（９１５）。送信元の各ファイルの所在については、デバイス管理テーブル１６１のドライバファイルパス３０４および設定ファイルパス３０６を参照することによって特定する。
【０１３６】
クライアント側基本制御プログラム１４１は、ドライバ準備完了通知を受信した場合には（９１６−Ｙｅｓ）、情報処理サーバ１０２へプラグイン指示を送信する（９１７）。
【０１３７】
クライアント側基本制御プログラム１４１は、情報処理サーバ１０２からのプラグイン処理完了通知を受信すると（９１８）、デバイスＡ１５１の共有準備が完了し、デバイスＡ１５１の共有が開始される（７２３）。
【０１３８】
図１０は、クライアント１０１内のデバイス管理マネージャプログラム１２５のクライアント側基本制御プログラム１４１における、デバイスＡ１５１の共有後からリモート切断までの処理の流れを表す図の一例である。
【０１３９】
クライアント側基本制御プログラム１４１は、待ち状態において（１００１）、フィルタドライバ１４３からからデバイスＡ１５１のデバイス取り外し通知のイベントを受信すると（１００２、１００３−Ｙｅｓ）、デバイス取り外し通知と共に受信したデバイスＡ１５１の識別情報であるベンダＩＤ３０１、製品ＩＤ３０２、シリアル番号３０３に対応するデバイス管理テーブル１６１内のアクティブ３０７の値を「Ｎｏ」へ更新するように、クライアント側テーブル処理プログラム１４２へ指示する（１００４）。
【０１４０】
クライアント側基本制御プログラム１４１は、リモート接続状態５０１が「接続中」である場合には（１００５−Ｙｅｓ）、デバイスの取り外し通知を情報処理サーバ１０２に対して送信する（１００６）。  
クライアント側基本制御プログラム１４１は、情報処理サーバ側基本制御プログラム１４４からプラグアウト処理完了通知を受信すると（１００７）、再び待ち状態に戻る。
【０１４１】
次にクライアント側基本制御プログラム１４１は、リモート切断要求のイベントを受信すると（１００２、１００８−ＹＥＳ）、情報処理サーバ１０２へリモート切断要求を送信し（１００９）、情報処理サーバから切断完了通知を受信後（１０１０）、リモート接続状態を「切断中」に設定する（１０１１）。
【０１４２】
図１１は、クライアント１０１内のデバイス管理マネージャプログラム１２５のクライアント側テーブル処理プログラム１４２における処理の流れを表す図の一例である。  
クライアント側テーブル処理プログラム１４２は、クライアント側基本制御プログラム１４１からのデバイス管理テーブル１６１の更新指示を受信すると（１１０１）、デバイス管理テーブル１６１が存在するかチェックし（１１０２）、存在しない場合にはデバイス管理テーブル１６１を作成する（１１０３）。
【０１４３】
次に、クライアント側テーブル処理プログラム１４２は、クライアント側基本制御プログラム１４１から受信したデバイス特定情報により特定されるデバイスについて、デバイス管理テーブル１６１に記録されている情報の更新を行う（１１０４）。クライアント側テーブル処理プログラム１４２は、処理が完了すると、クライアント側基本制御プログラム１４１へ完了通知を行う（１１０５）。
【０１４４】
図１２は、情報処理サーバ１０２内のデバイス管理エージェントプログラム１３４の情報処理サーバ側基本制御プログラム１４４における、リモート接続時の処理の流れを表す図の一例である。  
なお、図１２〜図１４中の丸囲いのアルファベット記号は、クライアント１０１への出力、またはクライアント１０１からの入力を表しており、他の図中に存在する同じ丸囲いのアルファベット記号の入出力に対応している。  
情報処理サーバ側基本制御プログラム１４４は、リモート切断中にクライアント１０１からリモート接続開始要求を受信すると（１２０１）、セッション生成・認証処理を行い（１２０２）、処理が終わると、リモート接続完了通知をクライアント１０１へ送信する（１２０３）。
【０１４５】
図１３は、情報処理サーバ１０２内のデバイス管理エージェントプログラム１３４の情報処理サーバ側基本制御プログラム１４４における、リモート接続後からデバイスＡ１５１の共有開始までの処理の流れを表す図の一例である。
【０１４６】
情報処理サーバ側基本制御プログラム１４４は、リモート接続中にクライアント１０１からアクティブデバイス情報を受信すると（１３０１）、受信したアクティブデバイス情報と、ドライバ管理テーブル１６４との照合を情報処理サーバ側テーブル処理プログラム１４５へ指示する（１３０２）。この際、情報処理サーバ側基本制御プログラム１４４は、デバイスのベンダＩＤ３０１、製品ＩＤ３０２の情報を情報処理サーバ側テーブル処理プログラム１４５に送信し、ベンダＩＤ３０１、製品ＩＤ３０２で識別されるデバイスＡ１３２に対応するドライバの導入状態４０６とバージョン４０４を、情報処理サーバ側テーブル処理プログラム１４５から照合結果として受信する（１３０３）。以下、ドライバＡ１３２の導入状態によって処理が分岐する（１３０４）。
【０１４７】
まず、導入状態が「退避」の場合には、ドライバの送信は不要であるが、ドライバＡ１３２のインストールは必要であるため、情報処理サーバ側基本制御プログラム１４４は、情報処理サーバ側テーブル処理プログラム１４５に対して、ドライバＡ１３２の退避パスの取得を要求する。
【０１４８】
そして、情報処理サーバ側基本制御プログラム１４４は、ドライバＡ１３２のハードウェアＩＤをレジストリ内、もしくはドライバＡ設定ファイル１６６内に記述されたエントリから取得する（１３０５）。ここに、ハードウェアＩＤとは、ドライバ設定ファイルとデバイスを適合するために使用する、デバイスのベンダが定義するデバイスの識別文字列である。ハードウェアＩＤは、各ドライバ設定ファイル内に記述されており、ハードウェアＩＤとデバイスが一対一に対応するので、ハードウェアＩＤを介して、ドライバ設定ファイルとデバイスが対応付けられる。
【０１４９】
情報処理サーバ側基本制御プログラム１４４は、取得結果を受信すると（１３０６）、取得したドライバＡ１３２の退避パスおよびハードウェアＩＤを入力情報として、インストール/アンインストール処理プログラム１４６に対して、ドライバＡ１３２のインストール処理を要求する（１３０９）。
【０１５０】
情報処理サーバ側基本制御プログラム１４４は、インストール/アンインストール処理プログラム１４６からインストール完了通知を受信すると（１３１０）、情報処理サーバ側テーブル処理プログラム１４５に対して、ドライバ管理テーブル１６４における、ドライバＡ１３２の導入状態４０６を「リモート導入中」に更新するよう指示する（１３１１）。
【０１５１】
次に、ステップ１３０４において、導入状態４０６が「無し」の場合には、情報処理サーバ側基本制御プログラム１４４は、クライアント１０１に対して、ドライバＡ１２２に対応するドライバＡファイル１６２およびドライバＡ設定ファイル１６３の送信要求を行う（１３０７）。
【０１５２】
情報処理サーバ側基本制御プログラム１４４は、クライアント１０１からドライバＡファイル１６２およびドライバＡ設定ファイル１６３を受信すると（１３０８）、ドライバＡ１２２のハードウェアＩＤをレジストリ内、もしくはドライバＡ設定ファイル１６６内に記述されたエントリから取得した上で、インストール/アンインストール処理プログラム１４６に対して、ドライバＡ１２２のインストール処理を要求する（１３０９）。ステップ１３１０、１３１１については導入状態が「退避」の場合と同様に処理を行う。
【０１５３】
次に、ステップ１３０４において、導入状態４０６が「導入済」の場合には、情報処理サーバ側基本制御プログラム１４４は、ステップ１３０１で受信したクライアント１０１内のドライバＡ１２２のバージョン３０５と、ステップ１３０３で受信したバージョン４０４を比較する（１３１２）。
【０１５４】
比較の結果、バージョンが異なる場合には（１３１２−Ｙｅｓ）、情報処理サーバ側基本制御プログラム１４４は、既に導入済であるドライバＡ１３２に対応する、ドライバＡファイル１６５およびドライバＡ設定ファイル１６６を一時退避させる（１３１３）。一時退避先のパスについては、例えば、退避パス設定６０２のパスに、現在リモート接続中の利用者のユーザＩＤを組み合わせたパスとする。
【０１５５】
引き続き、情報処理サーバ側基本制御プログラム１４４は、ドライバ管理テーブル１６４において、一時退避したドライバの導入状態４０６を「一時退避」、退避パス４０７を一時退避先のパスの値に更新するように、情報処理サーバ側テーブル処理プログラム１４５に指示する（１３１４）。その後は導入状態４０６が「無し」の場合のステップ１３０７〜１３１１と同様の処理を行う。
【０１５６】
ステップ１３１２の比較の結果、バージョンが同じである場合には（１３１２−Ｎｏ）、ドライバの送受信処理およびインストール処理は行われない。
【０１５７】
以上の処理により、情報処理サーバ１０２側でのドライバＡ１３２（またはドライバＡ１２２）の準備が完了すると、情報処理サーバ側基本制御プログラム１４４は、クライアント１０１に対して、ドライバ準備完了通知を行う（１３１５）。その後、クライアント１０１からプラグイン指示を受信すると（１３１６）、情報処理サーバ側基本制御プログラム１４４は、擬似バスドライバ１４７に対してプラグイン指示を行う（１３１７）。
【０１５８】
擬似バスドライバ１４７から、プラグイン処理の完了通知を受信すると（１３１８）、情報処理サーバ側基本制御プログラム１４４は、クライアント１０１に対してプラグイン処理完了通知を送信する（１３１９）。
【０１５９】
以上の処理により、デバイスＡ１５１の共有準備が完了し、デバイスＡ１５１の共有が開始される（７２３）。
【０１６０】
図１４は、情報処理サーバ１０２内のデバイス管理エージェントプログラム１３４の情報処理サーバ側基本制御プログラム１４４における、デバイスＡ１５１の共有後からリモート切断までの処理の流れを表す図の一例である。
【０１６１】
情報処理サーバ側基本制御プログラム１４４は、クライアント１０１からデバイス取り外し通知を受信すると（１４０３−Ｙｅｓ）、擬似バスドライバ１４７に対して、デバイス取り外し通知を行う（１４０４）。情報処理サーバ側基本制御プログラム１４４は、擬似バスドライバ１４７からプラグアウト処理完了通知を受信すると（１４０５）、プラグアウト処理完了通知をクライアント１０２に対して送信する（１４０６）。
【０１６２】
また情報処理サーバ側基本制御プログラム１４４は、クライアント１０１からリモート切断要求を受信すると（１４０２−Ｙｅｓ）、リモート利用中であるドライバの情報取得要求を情報処理サーバ側テーブル処理プログラム１４５に対して行う（１４０７）。情報処理サーバ側基本制御プログラム１４４は、情報処理サーバ側テーブル処理プログラム１４５から情報取得結果を受信すると（１４０８）、以下、リモート利用中であるドライバＡ１３２の導入状態によって処理が分岐する（１４０９）。
【０１６３】
導入状態が「リモート導入中」であった場合には、情報処理サーバ側基本制御プログラム１４４は、端末利用設定６０１が「共用」であるかどうかチェックし、「共用」である場合には（１４１０−Ｙｅｓ）、リモート利用中であるドライバＡ１３２の退避処理を行う（１４１１）。ドライバの退避処理とは、ドライバＡ１３２に対応するドライバＡファイル１６５とドライバＡ設定ファイル１６６をストレージ１５３内の退避先パスにコピーする処理のことを意味する。また、各ファイルの退避先パスは、退避パス設定６０２に設定された値とする。
【０１６４】
ここで、リモート利用前のドライバが一時退避中でない場合、すなわちリモート接続前にドライバＡ１３２が導入済でなかった場合には（１４１２−Ｎｏ）、情報処理サーバ側基本制御プログラム１４４は、リモート利用中であるドライバＡ１３２のアンインストール処理要求を、インストール/アンインストール処理プログラム１４６に対して行い（１４１４）、アンインストール処理の完了後、アンインストール完了通知を受信する（１４１４）。
【０１６５】
その後、情報処理サーバ側基本制御プログラム１４４は、ドライバ管理テーブル１６４におけるリモート利用中であるドライバＡ１３２の導入状態４０６、退避パス４０７、リモート利用４０８の値を各々現在の状態に更新するように、情報処理サーバ側テーブル処理プログラム１４５に指示する（１４１８）。
【０１６６】
一方、リモート利用前のドライバ（このドライバを暫定的にドライバＡ１３２ａと書く）が一時退避中である場合、すなわちリモート接続前にドライバＡ１３２が導入済であったが、バージョン３０５が異なっていた場合には（１４１２−Ｙｅｓ）、情報処理サーバ側基本制御プログラム１４４は、リモート接続前に導入済で現在一時退避中であるドライバＡ１３２ａのインストール処理要求を、インストール/アンインストール処理プログラム１４６に対して行い（１４１５）、インストール処理の完了後、インストール完了通知を受信する（１４１６）。
【０１６７】
その後、情報処理サーバ側基本制御プログラム１４４は、ドライバ管理テーブル１６４におけるリモート利用中であるドライバＡ１３２、および一時退避中であったドライバＡ１３２ａの導入状態４０６、退避パス４０７、リモート利用４０８の値を各々現在の状態に更新するように、情報処理サーバ側テーブル処理プログラム１４５に指示する（１４１８）。
【０１６８】
ステップ１４１０において、端末利用設定６０１が「専用」であった場合には（１４１０−Ｎｏ）、情報処理サーバ側基本制御プログラム１４４は、ドライバ管理テーブル１６４におけるリモート利用中であるドライバＡ１３２の導入状態４０６を「導入済」に更新するように、情報処理サーバ側テーブル処理プログラム１４５に指示する（１４１７、１４１８）。
【０１６９】
ステップ１４０９において、導入状態が「導入済」であった場合には、情報処理サーバ側基本制御プログラム１４４は、ドライバ管理テーブル１６４におけるリモート利用中であるドライバＡ１３２に対応するリモート利用４０８の値を「Ｎｏ」に更新するように、情報処理サーバ側テーブル処理プログラム１４５に指示する（１４１７、１４１８）。
【０１７０】
情報処理サーバ側基本制御プログラム１４４は、ステップ１４１８までの処理が完了すると、セッションを削除し（１４１９）、切断完了通知をクライアント１０１に対して送信する（１４２０）。以上の処理により、リモート切断処理が完了となる。
【０１７１】
図１５は、情報処理サーバ１０２内のデバイス管理エージェントプログラム１３４の情報処理サーバ側テーブル処理プログラム１４５における処理の流れを表す図の一例である。
【０１７２】
情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４からの指示を受信すると（１５０１）、指示内容にしたがって、以下のような処理を行う。
【０１７３】
情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４からドライバ管理テーブル１６４との照合指示を受信した場合は（１５０２−Ｙｅｓ）、指示と同時に、デバイスのベンダＩＤ、製品ＩＤの情報も受信する。情報処理サーバ側テーブル処理プログラム１４５は、まず、ドライバ管理テーブル１６４が存在するかチェックし（１５０３）、存在しない場合はドライバ管理テーブル１６４を作成する（１５０５）。また、ドライバ管理テーブル１６４が存在する場合には（１５０３−Ｙｅｓ）、情報処理サーバ側基本制御プログラム１４４から受信したベンダＩＤ、製品ＩＤで識別されるデバイスに対応したドライバの情報がドライバ管理テーブル１６４に存在するかチェックし（１５０４）、存在した場合には、その対応したドライバの導入状態４０６を情報処理サーバ側基本制御プログラム１４４に送信する（１５０８）。
【０１７４】
情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４から受信したベンダＩＤ、製品ＩＤで識別されるデバイスに対応したドライバの情報がドライバ管理テーブル１６４に存在しない場合（１５０４−Ｎｏ）、またはステップ１５０５でドライバ管理テーブル１６４を作成後は、ベンダＩＤ、製品ＩＤで識別されるデバイスに対応したドライバの情報をＯＳ１３１のレジストリから検索する（１５０６）。情報処理サーバ側テーブル処理プログラム１４５は、検索完了後、検索した結果をドライバ管理テーブル１６４に保存する（１５０７）。
【０１７５】
この時、情報処理サーバ側テーブル処理プログラム１４５は、例えば、情報処理サーバ側基本制御プログラム１４４から受信したベンダＩＤ、製品ＩＤで識別されるデバイスに対応するドライバＡ１３２がインストールされていた場合には、ベンダＩＤ４０１、製品ＩＤ４０２については情報処理サーバ側基本制御プログラム１４４から受信した情報をそのまま格納し、ドライバファイル名４０３、設定ファイル名４０５については、レジストリから得た情報を格納する。またバージョン４０４については、ドライバＡ１３２のファイルである、ドライバＡファイル１６５に対してＡＰＩを実行することによって取得した上で値を格納する。この場合、導入状態４０６は「導入済」、リモート利用４０８は「Ｎｏ」を格納する。
【０１７６】
ステップ１５０６の結果、対応するドライバがインストールされていなかった場合には、情報処理サーバ側テーブル処理プログラム１４５は、ステップ１５０７では、ベンダＩＤ４０１、製品ＩＤ４０２には情報処理サーバ側基本制御プログラム１４４から受信した情報をそのまま格納し、導入状態４０６には「無し」を格納し、その他の項目には何も格納しない。
【０１７７】
ステップ１５０７の後、情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４から受信したベンダＩＤ、製品ＩＤで識別されるデバイスに対応したドライバの導入状態４０６およびバージョン４０４を、照合結果として情報処理サーバ側基本制御プログラム１４４に送信する（１５０８）。
【０１７８】
次に、情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４からドライバの各種情報の取得要求を受信した場合（１５０９−Ｙｅｓ）、要求された情報をドライバ管理テーブル１６４から取得し（１５１０）、その結果を情報処理サーバ側基本制御プログラム１４４に送信する（１５１１）。
【０１７９】
また情報処理サーバ側テーブル処理プログラム１４５は、情報処理サーバ側基本制御プログラム１４４からドライバ管理テーブル１６４の更新指示を受信した場合（１５１２−Ｙｅｓ）は、受信した更新情報をドライバ導入テーブル１６４に保存する（１５１３）。
【０１８０】
図１６は、情報処理サーバ１０２内のデバイス管理エージェントプログラム１３４のインストール/アンインストール処理プログラム１４６における処理の流れを表す図の一例である。
【０１８１】
インストール/アンインストール処理プログラム１４６は、情報処理サーバ側基本制御プログラム１４４からの指示を受信すると（１６０１）、指示内容がインストール処理の場合はインストール処理を実行し（１６０２、１６０３）、指示内容がアンインストール処理の場合はアンインストール処理を実行する（１６０２、１６０４）。それぞれの場合に実行する処理の詳細について、以下に述べる。
【０１８２】
インストール処理の指示を受信した場合は、インストール/アンインストール処理プログラム１４６は、同時にインストール対象のドライバの、ドライバファイルおよびドライバ設定ファイルのパスと、当該ドライバが対応するデバイスのハードウェアＩＤを受信する。このパスとハードウェアＩＤを入力データとして、インストール処理を以下のような手順で行う。
【０１８３】
まず、インストール/アンインストール処理プログラム１４６は、レジストリからハードウェアＩＤを取得するＡＰＩを実行することによって、入力データであるハードウェアＩＤと適合するデバイスに対応するドライバが既にインストール済であるかどうかチェックする。
【０１８４】
ドライバが既にインストール済である場合には、インストール/アンインストール処理プログラム１４６は、ハードウェアＩＤと適合するデバイスに対応する新規のドライバをインストールするＡＰＩを実行することによって、入力データであるパスに存在するドライバファイルがドライバとして動作するように、上書きインストールする。
【０１８５】
一方、ドライバがインストール済でない場合には、インストール/アンインストール処理プログラム１４６は、ＰｎＰデバイスのプロパティを設定するＡＰＩと、新規に作成されたデバイスインスタンスをＰｎＰマネージャに登録するＡＰＩと、ハードウェアＩＤと適合するデバイスに対応する新規のドライバをインストールするＡＰＩを実行することによって、入力データであるパスに存在するドライバファイルがドライバとして動作するように、新規インストールする。
【０１８６】
一方、インストール/アンインストール処理プログラム１４６は、情報処理サーバ側基本制御プログラム１４４からアンインストール処理の指示を受信した場合は、同時に当該ドライバが対応するデバイスのハードウェアＩＤを受信する。このハードウェアＩＤを入力データとして、アンインストール処理を以下のような手順で行う。
【０１８７】
まず、インストール/アンインストール処理プログラム１４６は、レジストリからハードウェアＩＤを取得するＡＰＩを実行することによって、入力データであるハードウェアＩＤと適合するデバイスに対応するドライバがインストール済かどうかチェックする。
【０１８８】
ドライバがインストール済でなかった場合には、インストール/アンインストール処理プログラム１４６は、ドライバがインストール済でなかったため、アンインストール処理ができない旨のエラーを情報処理サーバ側基本制御プログラム１４４に返す。
【０１８９】
ドライバがインストール済であった場合には、インストール/アンインストール処理プログラム１４６は、ＡＰＩを実行することによって、入力データであるハードウェアＩＤと適合するデバイスに対応するドライバをアンインストールする。
【０１９０】
インストール処理またはアンインストール処理が完了すると、インストール/アンインストール処理プログラム１４６は、情報処理サーバ側基本制御プログラム１４４に対して処理完了通知を行う（１６０５）。
【０１９１】
以上、本実施形態に係るリモート操作システムによれば、クライアントに接続されるデバイスを、クライアントから利用する場合と同様の利用環境で、情報処理サーバから利用することが可能となる。
【０１９２】
情報処理サーバにデバイスが直接接続されているときと同様に、情報処理サーバからクライアントに接続されているデバイスに対する処理を行うことが可能となる。例えば、情報処理サーバ内のアプリケーションからクライアントに接続されているプリンタに直接アクセスすることが可能となるため、情報処理サーバ内に存在するデータをクライアントに接続されたプリンタに出力することができる。また、情報処理サーバに利用したいデバイスのデバイスドライバがインストールされていない場合でも、利用者や管理者が情報処理サーバにデバイスドライバのインストール作業を手動で行うことなく、利用したいときに自動的にデバイスドライバの送信・インストールが行われることによって、当該システムの運用時の利用者、管理者の負担を軽減できる。
【０１９３】
またクライアントへデバイスを接続し、接続された当該デバイスに情報処理サーバからアクセスする際に、デバイスを接続するだけで、他の操作なしで情報処理サーバ側からクライアントに接続されたデバイスを使用可能とするために、クライアント側には、クライアントに接続されたデバイスとクライアントのアプリケーションとの間のデータの送受信と、前記デバイスと情報処理サーバとの間のデータの送受信とを排他的に制御するフィルタドライバを備えるデバイス管理マネージャを設け、情報処理サーバ側にはクライアントとの通信手段とアプリケーションとの間で仮想的にバスドライバとして機能する擬似バスドライバを備えるデバイス管理エージェントを設ける。これにより、情報処理サーバにデバイスが直接接続されたときと同様に、情報処理サーバからクライアントに接続されているデバイスに対する処理を行うことが可能となる。
【０１９４】
またクライアント側に接続されたデバイスが特別な機能を持つデバイスドライバを必要とする特殊なデバイスであり、当該デバイスを情報処理サーバで過去に利用したことがない場合には、必要なデバイスドライバを情報処理サーバにインストールする必要がある。
【０１９５】
このため、利用者がクライアントにデバイスを接続したことを検知し、情報処理サーバ内に当該デバイスのデバイスドライバが存在しない場合には、クライアント内に存在するデバイスドライバを情報処理サーバへ送信し、自動的にインストールを行う手段を設ける。また、情報処理サーバが複数の利用者で共用されるような場合であって、情報処理サーバの利用終了後に利用前の環境に戻す必要がある場合にも対応するため、情報処理サーバにおけるデバイスドライバの導入状態を復元する手段を設ける。
【０１９６】
これにより、リモート操作システムにおいて、クライアントがシンクライアントなどであり、実際の処理装置は情報処理サーバ（サーバ）で行なわれる場合等であっても、情報処理サーバ側にあるデータをクライアントに直接接続されたプリンタなどのデバイスへ出力でき、また、クライアントに直接接続されたICカードリーダなどのデバイスから情報処理サーバ側にデータを出力できる。クライアントに直接接続されたデバイスを、情報処理サーバ側のアプリケーションから直接制御し、利用することができる。
【０１９７】
以上発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【０１９８】
【図１】リモート操作システムのハードウェア構成、およびプログラム構成を表す図の一例である。
【図２】ストレージに格納されたデバイス管理テーブルを表す図の一例である。
【図３】ストレージに格納されたドライバ管理テーブルを表す図の一例である。
【図４】ネットワーク接続状態バッファを表す図の一例である。
【図５】デバイスドライバ管理設定テーブルを表す図の一例である。
【図６】リモート操作システムのシステム構成を表す図の一例である。
【図７】利用者がクライアントを起動してから、情報処理サーバに接続し、デバイスを情報処理サーバから直接利用できるようにするまでの、システム全体の処理フローを表す図の一例である。
【図８】デバイスがクライアントと情報処理サーバによって共有された状態から、利用者がデバイスをプラグアウトし、クライアントからの情報処理サーバの操作を終了するまでの、システム全体の処理フローを表す図の一例である。
【図９】クライアント内のデバイス管理マネージャの基本制御プログラムにおける、デバイスのプラグインからデバイスの共有開始までの処理の流れを表す図の一例である。
【図１０】クライアント内のデバイス管理マネージャの基本制御プログラムにおける、デバイスの共有後からリモート切断までの処理の流れを表す図の一例である。
【図１１】クライアント内のデバイス管理マネージャのテーブル処理プログラムにおける処理の流れを表す図の一例である。
【図１２】情報処理サーバ内のデバイス管理エージェントの基本制御プログラムにおける、リモート接続時の処理の流れを表す図の一例である。
【図１３】情報処理サーバ内のデバイス管理エージェントの基本制御プログラムにおける、リモート接続後からデバイスの共有開始までの処理の流れを表す図の一例である。
【図１４】情報処理サーバ内のデバイス管理エージェントの基本制御プログラムにおける、デバイスの共有後からリモート切断までの処理の流れを表す図の一例である。
【図１５】情報処理サーバ内のデバイス管理エージェントのテーブル処理プログラムにおける処理の流れを表す図の一例である。
【図１６】情報処理サーバ内のデバイス管理エージェントのインストール/アンインストール処理プログラムにおける処理の流れを表す図の一例である。
【符号の説明】
【０１９９】
１０１    クライアント
１０２    情報処理サーバ
１２１    ＯＳ
１２２    ドライバＡ
１２３    バスドライバ
１２４    クライアント制御プログラム
１２５    デバイス管理マネージャプログラム
１３０    アプリケーションプログラム
１３１    ＯＳ
１３２    ドライバＡ
１３３    情報処理サーバ制御プログラム
１３４    デバイス管理エージェントプログラム
１３５    ドライバＢ
１３６    バスドライバ
１４１    クライアント側基本制御プログラム
１４２    クライアント側テーブル処理プログラム
１４３    フィルタドライバ
１４４    情報処理サーバ側基本制御プログラム
１４５    情報処理サーバ側テーブル処理プログラム
１４６    インストール/アンインストール処理プログラム
１４７    擬似バスドライバ
１５１    デバイスＡ
１５２    ストレージ
１５３    ストレージ
１６１    デバイス管理テーブル
１６４    ドライバ管理テーブル
１６７    ネットワーク接続状態バッファ
１６８    デバイスドライバ管理設定テーブル
２０１    データサーバ
１０００  リモート操作システム
【図１】
2008146398.tif 000003
【図２】
2008146398.tif 000004
【図３】
2008146398.tif 000005
【図４】
2008146398.tif 000006
【図５】
2008146398.tif 000007
【図６】
2008146398.tif 000008
【図７】
2008146398.tif 000009
【図８】
2008146398.tif 000010
【図９】
2008146398.tif 000011
【図１０】
2008146398.tif 000012
【図１１】
2008146398.tif 000013
【図１２】
2008146398.tif 000014
【図１３】
2008146398.tif 000015
【図１４】
2008146398.tif 000016
【図１５】
2008146398.tif 000017
【図１６】
2008146398.tif 000018