(57)【要約】【課題】情報処理装置とデバイス制御装置との間におけるデバイス制御処理の相違を解消し、外部デバイスの意図しない動作を防止できるデバイス制御装置、情報処理装置、その制御方法、および、デバイス制御システムを提供する。【解決手段】デバイス制御装置は、情報処理装置から電源制御開始を含む仮想化開始命令または電源制御停止を含む仮想化終了命令に応じて、外部デバイスに対して電源供給開始と仮想化制御の開始、または、電源供給停止と仮想化制御の終了を制御して、外部デバイスを接続したままの状態で物理的なリセットを行う。【選択図】図１
2018055635.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して１以上の情報処理装置と接続されているとともにデバイスとローカル接続されているデバイス制御装置であって、
前記情報処理装置から仮想化開始命令、または仮想化終了命令を受信する第１の命令受信手段と、
前記第１の命令受信手段によって前記情報処理装置からの仮想化開始命令の受信に応じて、情報処理装置に前記デバイスがローカル接続されたかのように仮想化制御させる仮想化制御手段と、
前記第１の命令受信手段によって前記情報処理装置からの仮想化終了命令の受信に応じて、前記仮想化制御手段による前記デバイスの仮想化制御を終了させる仮想化制御終了手段と、
前記デバイスへの電源供給開始命令または電源供給停止命令を受信する第２の命令受信手段と、
前記第２の命令受信手段による命令の受信に応じて、前記デバイスに対する電源供給の開始、または電源供給の停止を制御する電源供給制御手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記デバイス制御装置の省電状態を制御する省電制御手段と、
前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態を含む情報を前記情報処理装置に通知するデバイス状態通知手段と、を更に備え、
前記省電制御手段による前記省電状態に変化があった場合、または、前記電源供給制御手段によるデバイスに対する電源供給の開始または電源供給の停止のいずれかの状態に切り替わった場合、
前記デバイス状態通知手段は、前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態を含む情報を前記情報処理装置に通知すること
を特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記省電制御手段によって省電状態から通常状態に復帰し、
前記第１の命令受信手段によって仮想化終了命令を受信し、かつ、前記第２の命令受信手段によって電源供給停止命令を受信した後に、
前記電源供給制御手段によって前記デバイスの電源供給を停止し、
前記仮想化制御終了手段による前記デバイスの仮想化制御を終了した場合、
前記第１の命令受信手段によって仮想化開始命令を受信し、かつ、前記第２の命令受信手段によって電源供給開始命令を受信した後に、
前記電源供給制御手段は、前記デバイスの電源供給を開始する
ことを特徴とする請求項２に記載のデバイス制御装置。
【請求項４】
ネットワークを介してデバイス制御装置に接続されたデバイスを制御する情報処理装置であって、
前記デバイス制御装置を介して前記デバイスがローカル接続されたかのように仮想化制御させる仮想化制御手段と、
前記仮想化制御手段によって仮想化制御した前記デバイスへの仮想化開始命令または仮想化終了命令を送信する第１の命令送信手段と、
前記デバイスへの電源供給開始命令または電源供給停止命令を送信する第２の命令送信手段と、
前記デバイス制御装置から当該デバイス制御装置の省電状態および/または前記デバイスのバス電源供給状態を含む情報を受信し、管理するデバイス状態管理手段と、
を備えることを特徴とする情報処理装置。
【請求項５】
前記第１の命令送信手段は、
前記デバイス状態管理手段によって管理している前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態に応じて、
前記仮想化開始命令または前記仮想化終了命令のいずれか一方を送信する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
請求項１乃至請求項３のいずれか１項に記載の情報処理装置と、請求項４または請求項５に記載のデバイス制御装置と、デバイスから構成され、前記情報処理装置と前記デバイス制御装置とがネットワークを介して接続され、前記デバイス制御装置と前記デバイスがローカル接続されているデバイス制御システム。
【請求項７】
ネットワークを介して１以上の情報処理装置と接続されているとともにデバイスとローカル接続されているデバイス制御装置の制御方法であって、
前記情報処理装置から仮想化開始命令を受信する第１の命令受信ステップと、
前記第１の命令受信ステップによって前記情報処理装置からの仮想化開始命令の受信に応じて、情報処理装置に前記デバイスがローカル接続されたかのように仮想化制御させる仮想化制御ステップと、
前記デバイスへの電源供給開始命令を受信する第２の命令受信ステップと、
前記第２の命令受信ステップによる命令の受信に応じて、前記デバイスに対する電源供給の開始を制御する電源供給制御ステップと、
前記デバイスへの電源供給停止命令を受信する第３の命令受信ステップと、
前記第３の命令受信ステップによる命令の受信に応じて、前記デバイスに対する電源供給の停止を制御する電源供給停止制御ステップと、
前記情報処理装置から仮想化終了命令を受信する第４の命令受信ステップと、
前記第４の命令受信ステップによって前記情報処理装置からの仮想化終了命令の受信に応じて、前記仮想化制御ステップによる前記デバイスの仮想化制御を終了させる仮想化制御終了ステップと、
を備えることを特徴とするデバイス制御装置の制御方法。
【請求項８】
前記デバイス制御装置の省電状態を制御する省電制御ステップと、
前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態を含む情報を前記情報処理装置に通知するデバイス状態通知ステップと、を更に備え、
前記省電制御ステップによる前記省電状態に変化があった場合、前記電源供給制御ステップによる前記デバイスへの電源供給を開始した場合、前記電源供給停止制御ステップによる前記デバイスへの電源供給の停止した場合のいずれかのとき、
前記デバイス状態通知ステップは、前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態を含む情報を前記情報処理装置に通知すること
を特徴とする請求項７に記載のデバイス制御装置の制御方法。
【請求項９】
前記情報処理装置から第２の仮想化開始命令を受信する第５の命令受信ステップと、
前記第５の命令受信ステップによって前記情報処理装置から仮想化開始命令の受信に応じて、情報処理装置に前記デバイスがローカル接続されたかのように仮想化制御させる第２の仮想化制御ステップと、
前記デバイスへの電源供給開始命令を受信する第６の命令受信ステップと、
前記第６の命令受信ステップによる命令の受信に応じて、前記デバイスに対する電源供給の開始を制御する第２の電源供給制御ステップと、を更に備え、
前記省電状態、かつ、前記デバイスに対する電源供給中に、
前記第３の命令受信ステップによって電源供給停止命令を受信し、かつ、前記第４の命令受信ステップによって仮想化終了命令を受信した後に、
省電制御ステップによって省電状態から通常状態に復帰し、
前記電源供給制御ステップは、前記デバイスの電源供給を停止し、
前記仮想化制御終了ステップによる前記デバイスの仮想化制御の終了が行われた場合、
前記第５の命令受信ステップによって仮想化開始命令を受信し、かつ、前記第６の命令受信ステップによって電源供給開始命令を受信した後に、
前記第2の電源供給制御ステップによって前記デバイスの電源供給を開始する
ことを特徴とする請求項８に記載のデバイス制御装置の制御方法。
【請求項１０】
ネットワークを介してデバイス制御装置に接続されたデバイスを制御する情報処理装置の制御方法であって、
前記デバイスへの仮想化開始命令を送信する第１の命令送信ステップと、
前記デバイス制御装置を介して前記デバイスがローカル接続されたかのように仮想化制御する仮想化制御ステップと、
前記仮想化制御ステップによって仮想化制御した前記デバイスへの電源供給開始命令または電源供給停止命令を送信する第２の命令送信ステップと、
前記デバイス制御装置から当該デバイス制御装置の省電状態および/または前記デバイスのバス電源供給状態を含む情報を受信し、管理するデバイス状態管理ステップと、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
前記デバイス状態管理ステップによって管理している前記デバイス制御装置の省電状態および／または前記デバイスへの電源供給状態に応じて、
前記仮想化開始命令または前記仮想化制御ステップによる前記デバイスへの仮想化制御を終了するための仮想化終了命令のどちら一方を送信する第３の命令送信ステップを、更に備えることを特徴とする請求項１０に記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続された情報処理装置から送られる各種要求を処理
するためのデバイス制御装置、情報処理装置、その制御方法、およびデバイス制御システムに関する。
【背景技術】
【０００２】
近年、ネットワークの普及によって、プリンタ、ストレージ、およびスキャナなどの外部デバイスを、ネットワーク上の情報処理装置であるホストコンピュータが共有デバイスとして利用することが行われている。その実現方法がいくつか提案されている。
【０００３】
例えば、サーバコンピュータは、ネットワーク上のホストコンピュータからのコマンド要求に応じて、サーバコンピュータに接続されている周辺機器のバスパワー（デバイス接続ポートのバス電源）を制御することにより無駄な消費電力を抑制する技術がある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３１０７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１は、ホストコンピュータ（情報処理装置）は仮想的な接続を行っていた周辺機器に対して仮想的な接続の終了を行った場合、周辺機器（外部デバイス）を抜去した状態として認識しても、サーバコンピュータ（デバイス制御装置）に接続された周辺機器は物理的に抜去されていないことになる。
【０００６】
そのため、この周辺機器が抜去されていない状態で再びホストコンピュータから周辺機器に対して仮想的な接続を行ったとしても、ホストコンピュータは新規にローカル接続された外部デバイスとして認識し、初期状態からの処理を行ってしまう。
【０００７】
従って、サーバコンピュータ自身に接続された周辺機器は初期状態からの制御を行うことで、ホストコンピュータとサーバコンピュータとの間でデバイス制御処理（処理シーケンス）の相違が発生するため、外部デバイスが意図しない動作を行うという課題がある。
【０００８】
上記の課題に鑑みて、本発明は、情報処理装置とデバイス制御装置との間におけるデバイス制御処理（処理シーケンス）の相違を解消し、外部デバイスの意図しない動作を防止できるデバイス制御装置、情報処理装置、その制御方法、およびデバイス制御システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、ネットワークを介して１以上の情報処理装置と接続されているとともにデバイスとローカル接続されているデバイス制御装置であって、前記情報処理装置から仮想化開始命令、または仮想化終了命令を受信する第１の命令受信手段と、前記第１の命令受信手段によって前記情報処理装置から仮想化開始命令の受信に応じて、情報処理装置に前記デバイスがローカル接続されたかのように仮想化制御させる仮想化制御手段と、前記第１の命令受信手段によって前記情報処理装置から仮想化終了命令の受信に応じて、前記仮想化制御手段による前記デバイスの仮想化制御を終了させる仮想化制御終了手段と、前記デバイスへの電源供給開始命令または電源供給停止命令を受信する第２の命令受信手段と、前記第２の命令受信手段による命令の受信に応じて、前記デバイスに対する電源供給の開始、または電源供給の停止を制御する電源供給制御手段と、を備えることを特徴とする。
【００１０】
上記の課題を解決するために、請求項４に記載の情報処理装置は、ネットワークを介してデバイス制御装置に接続されたデバイスを制御する情報処理装置であって、前記デバイス制御装置を介して前記デバイスがローカル接続されたかのように仮想化制御させる仮想化制御手段と、前記デバイスへの仮想化開始命令または仮想化終了命令を送信する第１の命令送信手段と、前記デバイスへの電源供給開始命令または電源供給停止命令を送信する第２の命令送信手段と、前記デバイス制御装置から当該デバイス制御装置の省電状態および/または前記デバイスのバス電源供給状態を含む情報を受信し、管理するデバイス状態管理手段と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、情報処理装置とデバイス制御装置との間におけるデバイス制御処理（処理シーケンス）の相違を解消し、外部デバイスの意図しない動作を防止できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態におけるデバイス制御システムの一例を示すブロック図である。
【図２】図１に示す情報処理装置１００が有するデバイス状態管理情報１０６の一例を示す図である。
【図３】図１に示すデバイス制御システムにおけるデバイス制御装置２００が外部デバイス３００に対する電源制御および仮想化制御の開始・終了を行う際の動作を説明するシーケンス図である。
【図４】本発明の第２の実施形態におけるデバイス制御システムの一例を示すブロック図である。
【図５】図４に示す情報処理装置１００が有するデバイス制御装置２００の状態を含むデバイス状態管理情報１０６の一例を示す図である。
【図６】図４に示すデバイス制御システムにおけるデバイス制御装置２００の省電制御状態を含む外部デバイス３００の制御を説明するシーケンスである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態によるデバイス制御システムの一例について図面を参照して説明する。
【００１４】
[第１の実施形態]
図１は、本発明の第１の実施形態によるデバイス制御システムの一例の構成を概略的に示すブロック図である。
【００１５】
図示のデバイス制御システムにおいて、情報処理装置１００がローカルエリアネットワーク(ＬＡＮ)やワイドエリアネットワーク（ＷＡＮ）などのネットワークを介してデバイス制御装置２００に接続されている。ネットワークは有線回線または無線回線などで構成される。そして、デバイス制御装置２００には、例えば、通信インターフェース(例えば、ＵＳＢやＨＤＭＩ（登録商標）)によって外部デバイス３００がローカル接続されている。
【００１６】
なお、図１に示すデバイス制御システムにおいては、情報処理装置１００、デバイス制御装置２００、および外部デバイス３００がそれぞれ１つのみ示されているが、情報処理装置１００、デバイス制御装置２００、および外部デバイス３００の台数は図示の例に限定されるものではない。また、デバイス制御装置２００は、例えば、プリンタ又は複合機等のオフィス機器であるが、デバイス制御装置２００はオフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、又はモバイル端末機器であってもよい。  
【００１７】
また、図１に示すデバイス制御システムでは、デバイス制御装置２００と外部デバイス３００をそれぞれ別体の装置で構成しているが、デバイス制御装置２００を外部デバイス３００のケーシング内に収まるように一体構造としても良い。
【００１８】
さらに、外部デバイス３００が備える通信インターフェースは、ＵＳＢ又はＨＤＭＩ（登録商標）に限定されるものではない。以降の説明では情報処理装置１００とデバイス制御装置２００の間はネットワークを介して接続され、外部デバイス３００の通信インターフェースをＵＳＢとして説明する。
【００１９】
＜情報処理装置１００の構成＞
情報処理装置１００は、パーソナルコンピュータ（ＰＣ）等の装置である。ハードウェア構成として、ＣＰＵ１５１、入力部１５２、表示部１５３、メモリ１５４、通信部１５５、および、記憶部１１０を備え、これらハードウェアは内部バスで相互に接続されている。
【００２０】
ＣＰＵ１５１は情報処理装置１００全体の制御を司る。入力部１５２は、例えば、キーボード及びマウスを備えている。表示部１５３として、例えば、液晶モニタが用いられる。メモリ１５４はＲＡＭ及びＲＯＭ等である。通信部１５５はネットワークに接続するためのインターフェースであって、デバイス制御装置２００とデータ送受信を行う。
【００２１】
記憶部１１０には、ソフトウェアであるオペレーティングシステム（以下「ＯＳ」と呼ぶ：不図示）、アプリケーション１０１、デバイスドライバ１０２、仮想化制御部１０３、通信制御部１０４、およびデバイス状態管理部１０５が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、ＣＰＵ１５１の制御に従い動作する。
【００２２】
アプリケーション１０１は、デバイスドライバ１０２に対してデータ入出力要求を指示することにより、デバイス制御装置２００およびデバイス制御装置２００に接続された外部デバイス３００を制御するためのソフトウェアである。
【００２３】
デバイスドライバ１０２は、外部デバイス３００を制御するための機能部である。ＯＳまたはアプリケーション１０１からのデータ入出力要求を、外部デバイス３００に応じたデータ形式のデータ（以下「制御コマンド」と呼ぶ）に変換して、当該制御コマンドを仮想化制御部１０３に送る。さらに、デバイスドライバ１０２は、制御コマンドに対する応答をアプリケーション１０１に通知する。このデバイスドライバ１０２は一般に、製造したメーカーによって提供されるソフトウェアであって、情報処理装置１００は各デバイスに対応したデバイスドライバ１０２によって外部デバイス３００を制御することができる。
【００２４】
仮想化制御部１０３は、デバイスドライバ１０２から送られた制御コマンド（つまり、データ入出力要求）をＵＳＢデータ形式に準拠したパケットデータ（以下「ＵＳＢデータ」と呼ぶ）に変換する。また、仮想化制御部１０３は通信制御部１０４から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ１０２に送る。
【００２５】
さらに、仮想化制御部１０３は、外部デバイス３００に対するデータ送受信要求に対して、外部デバイス３００が直接的に接続（「ローカル接続」）されている際と同様に振る舞いをシミュレートする機能（以下「仮想化制御機能」と呼ぶ）を備えている。この仮想化制御機能により、情報処理装置１００は外部デバイス３００の接続状態が、外部デバイス３００を物理的に接続した場合と同一の状態であると認識してデータの送受信を行うことができる。なお、仮想化制御部１０３が有する仮想化制御機能によって、情報処理装置１００がデバイス制御装置２００に接続された外部デバイス３００を「仮想デバイス」と呼ぶ。
【００２６】
通信制御部１０４は、仮想化制御部１０３から送られるＵＳＢデータとネットワークを介してデバイス制御装置２００と通信する際のネットワークパケットとの変換処理を行い、デバイス制御装置２００と情報処理装置１００の間でデータ送受信の制御を行う。また、通信制御部１０４は仮想化制御部１０３を介してアプリケーション１０１またはデバイスドライバ１０２から送られるデータ送受信要求の受信に応じて、デバイス制御装置２００とのセッション（接続）を開始し、データの送受信が完了すると、セッションを終了（切断）する。
【００２７】
デバイス状態管理部１０５は、ネットワークを介して接続するデバイス制御装置２００に接続された外部デバイス３００に関する情報（後述するデバイス状態管理情報１０６）を認識・管理する。
【００２８】
＜デバイス制御装置２００の構成＞
デバイス制御装置２００は、例えば、プリンタまたは複合機等の周辺機器であって、ハードウェア構成として、ＣＰＵ２５１、入力部２５２、表示部２５３、メモリ２５４、通信部２５５、および、記憶部２１０を備えている。
【００２９】
ＣＰＵ２５１はデバイス制御装置２００全体の制御を司る。入力部２５２は、例えば、操作ボタン、テンキーを備えている。表示部２５３として、例えば、液晶モニタが用いられる。メモリ２５４はＲＡＭおよびＲＯＭ等である。
【００３０】
通信部２５５はネットワークに接続するためのインターフェースであって、情報処理装置１００とデータ送受信を行う。
【００３１】
記憶部２１０には、ソフトウェアであるＯＳ（不図示）、通信制御部２０１、仮想化制御部２０２、デバイス制御部２０３、および電源供給制御部２０４が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、ＣＰＵ２５１の制御に従い動作する。
【００３２】
通信制御部２０１は、ＯＳの制御に従ってネットワーク経由で接続されている情報処理装置１００との間のセッション（接続）の開始および終了を制御する。また、情報処理装置１００との間で行われる入出力データ等の送受信を制御する。
【００３３】
仮想化制御部２０２は、外部デバイス３００があたかも情報処理装置１００に直接的に接続（ローカル接続）されているかのように情報処理装置１００へ認識させて制御できるようにするため、情報処理装置１００の仮想化制御部１０３からの制御要求に従って（連動して）外部デバイス３００の制御を行う。
【００３４】
デバイス制御部２０３は、仮想化制御部２０２の制御に従い、デバイス制御装置２００に接続された外部デバイス３００を制御する。
【００３５】
電源供給制御部２０４は、デバイス制御部２０３と連携して、デバイス制御装置２００に接続された外部デバイス３００のバス接続状態の監視およびバス電源の供給（電源オン）、停止（電源オフ）を制御する。
【００３６】
＜外部デバイス３００の構成＞
外部デバイス３００は、個体識別情報３０１および通信Ｉ／Ｆ３０２を備えており、デバイス制御装置２００にＵＳＢインターフェースによって接続されている。図１では、外部デバイス３００を１台として例示しているが、これに限定したものではなく、複数台あってもよい。
【００３７】
個体識別情報３０１は、外部デバイス３００を識別するための情報であり、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（ＶＩＤ）、機種を識別するために機種毎に割り当てられた製品ＩＤ（ＰＩＤ）、機器の個体を識別するために機器毎に割り当てられたシリアル番号などである。
【００３８】
通信Ｉ／Ｆ３０２は、デバイス制御装置２００と通信を行うための機能部である。
【００３９】
＜デバイス状態管理情報１０６について＞
次に、情報処理装置１００が有するデバイス状態管理情報１０６について説明する。
【００４０】
情報処理装置１００は、デバイス制御装置２００によって外部デバイス３００への電源供給を停止された場合、外部デバイス３００の状態を確認することはできない。そのため、情報処理装置１００は、外部デバイス３００のバス電源供給の状態を含む外部デバイス３００に関する情報をデバイス制御装置２００から取得し、デバイス状態管理情報１０６に保持(記憶)・管理する。
【００４１】
図２は、図１に示すデバイス状態管理情報１０６の一例を示す図である。デバイス状態管理情報１０６は、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、デバ接続ポート番号、デバイスの電源状態から構成される。
【００４２】
デバイス名は、デバイス制御装置２００に接続された外部デバイス３００の名称を示し、主にＵＳＢディスクリプタ情報から取得されるデバイス名称である。なお、ＵＳＢディスクリプタ情報から取得するだけでなく、外部デバイス３００を識別できるような情報であればよい。
【００４３】
デバイス制御装置のＩＰアドレスやＭＡＣアドレスは、外部デバイス３００が接続されているデバイス制御装置２００を識別するために用いられるネットワークのアドレス情報である。
【００４４】
デバイス制御装置の接続ポート番号は、デバイス制御装置２００に接続された外部デバイス３００の物理的な接続位置をバスの接続階層に従い識別する情報である。
【００４５】
デバイスの電源状態は、デバイス制御装置２００に接続された外部デバイス３００に対して、デバイス制御装置２００がバスの電源を供給しているか停止しているかを示す情報である。図２の例示では、デバイスＡとデバイスＣは給電されており、デバイスＢは給電を停止されている。
【００４６】
＜電源制御シーケンス＞
図３は、図１に示すデバイス制御システムにおけるデバイス制御装置２００が外部デバイス３００に対する電源制御および仮想化制御の開始・終了を行う際の動作を説明するシーケンス図である。なお、情報処理装置１００は仮想化制御機能によりデバイス制御装置２００に接続されている外部デバイス３００に対して仮想化制御を開始している状態から説明を始める。
【００４７】
まず、ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、仮想化制御を終了させる外部デバイス３００を選択する（ステップＳ１０１）。例えば、情報処理装置１００の表示部１５３に操作画面を表示させ、ユーザ操作によって、仮想化制御の終了を要求する外部デバイス３００を選択する。
【００４８】
アプリケーション１０１は、デバイスドライバ１０２に対して外部デバイス３００への電源供給停止を含む仮想化終了要求を送信する（ステップＳ１０２）。
【００４９】
デバイスドライバ１０２は、仮想化制御部１０３に対して、ステップＳ１０２でアプリケーション１０１から送信された外部デバイス３００への電源供給停止を含む仮想化終了要求に基づいて制御コマンド（電源供給停止を含む仮想化終了命令）を生成し、送信する（ステップＳ１０３）
【００５０】
仮想化制御部１０３は、通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対して電源供給停止を含む仮想化終了命令を送信する（ステップＳ１０４）。
【００５１】
仮想化制御部２０２は、ステップＳ１０４で情報処理装置１００から送信された電源供給停止を含む仮想化終了命令を受信し、デバイス制御部２０３に対して外部デバイス３００に対する電源供給停止命令を送信する（ステップＳ１０５）。
【００５２】
デバイス制御部２０３は、電源供給制御部２０４に対して外部デバイス３００の接続ポート番号を指定して電源供給停止命令を送信する（ステップＳ１０６）。
【００５３】
電源供給制御部２０４は、電源供給停止命令によって指定された接続ポート番号に対してバスの電源供給を停止する（ステップＳ１０７）。これにより、外部デバイス３００は、デバイス制御装置２００から抜去された時（物理的に接続されていない状態を「デバイス接続切断状態」と呼ぶ）と同一の状態となる。
【００５４】
電源供給制御部２０４は、ステップＳ１０７により外部デバイス３００のデバイス接続切断状態と同一の状態を検知した場合、デバイス制御部２０３に外部デバイス３００の接続切断状態および電源供給停止を通知する（ステップＳ１１１）。
【００５５】
デバイス制御部２０３は、電源供給制御部２０４から外部デバイス３００のデバイス接続切断状態および電源供給停止の通知を受信すると、仮想化制御部２０２に対して外部デバイス３００のデバイス接続切断状態および電源供給停止を通知する（ステップＳ１１２）。
【００５６】
仮想化制御部２０２は、外部デバイス３００のデバイス接続切断状態および電源供給停止の通知に応じて、外部デバイス３００の仮想化制御を終了する（ステップＳ１１３）。その後、仮想化制御部２０２は、デバイス制御装置２００の通信制御部２０１を介して情報処理装置１００の仮想化制御部１０３に対して外部デバイス３００への電源供給停止を含む仮想化終了通知を送信する（ステップＳ１１４）。
【００５７】
仮想化制御部１０３は、ステップＳ１１４で送信された外部デバイス３００への電源供給停止を含む仮想化終了通知を受信し、デバイス状態管理部１０５に対して電源供給停止となった外部デバイス３００の通知を行う（ステップＳ１２１）。
【００５８】
なお、ステップＳ１２１で通知する情報は、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号、およびデバイスの電源状態である。デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号については、外部デバイス３００の仮想化制御の開始時にデバイス制御装置２００より取得した情報を利用する。
【００５９】
デバイス状態管理部１０５は、ステップＳ１２１の通知情報に基づいて、デバイス状態管理情報１０６における該当の外部デバイス３００に関する情報を更新する（ステップＳ１２２）。
【００６０】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００の仮想化終了通知を行う（ステップＳ１２３）。
【００６１】
デバイスドライバ１０２は、アプリケーション１０１に対して外部デバイス３００の仮想化終了通知を行う（ステップＳ１２４）。このとき、情報処理装置１００は、情報処理装置１００自身にあたかも物理的に接続されている（ローカル接続されている）かのように認識している外部デバイス３００（仮想デバイス）の仮想化制御の終了を検知する。
【００６２】
続いて、仮想化制御を終了した外部デバイス３００を再度、仮想化制御を行う場合について説明する。
【００６３】
ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、電源状態を確認したい外部デバイス３００を選択する（ステップ１３１）。
【００６４】
アプリケーション１０１は、デバイスドライバ１０２に対して外部デバイス３００の電源状態確認要求を送信する（ステップＳ１３２）。
【００６５】
デバイスドライバ１０２は、デバイス状態管理部１０５に対して外部デバイス３００の電源状態確認命令（制御コマンド）を送信する（ステップＳ１３３）。
【００６６】
デバイス状態管理部１０５は、外部デバイス３００の電源状態確認命令に応じて、デバイス状態管理情報１０６から外部デバイス３００の電源状態を抽出し、デバイスドライバ１０２に対して応答（送信）する（ステップＳ１３４）。
【００６７】
デバイスドライバ１０２は、デバイス状態管理部１０５から受信した外部デバイス３００の電源状態をアプリケーション１０１に送信する（ステップＳ１３５）。
【００６８】
続いて、ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、仮想化制御を行う外部デバイス３００を選択し（ステップ１４１）、デバイスドライバ１０２に対して電源供給開始を含む仮想化開始要求を送信する（ステップ１４２）。
【００６９】
デバイスドライバ１０２は、ステップ１０２でアプリケーション１０１から送信された電源供給開始を含む仮想化開始要求に基づいて、電源供給開始を含む仮想化開始命令を生成し、仮想化制御部１０３に送信する（ステップＳ１４３）
【００７０】
仮想化制御部１０３は、通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対して電源供給開始を含む仮想化開始命令を送信する（ステップＳ１４４）。
【００７１】
仮想化制御部２０２は、ステップＳ１４４で情報処理装置１００から送信された電源供給開始を含む仮想化開始命令を受信し、デバイス制御部２０３に対して外部デバイス３００の電源供給開始命令を行う（ステップＳ１４５）。
【００７２】
デバイス制御部２０３は、電源供給開始を含む仮想化開始命令により通知されたバスの接続ポート番号を指定して電源供給開始命令を電源供給制御部２０４に送信する（ステップＳ１４６）。
【００７３】
電源供給制御部２０４は、指定された接続ポート番号に対してバスの電源供給を開始し（ステップＳ１４７）、外部デバイス３００に電源を供給する（ステップＳ１４８）。これにより、外部デバイス３００は、ＵＳＢインターフェースを介してデバイス制御装置２００に物理的に接続(挿入)された時と同一の状態となる。
【００７４】
電源供給制御部２０４は、外部デバイス３００への電源供給後に外部デバイス３００の接続を検知した場合、外部デバイス３００への電源供給開始および外部デバイス３００の物理的な接続（以下、デバイス接続通知）をデバイス制御部２０３に通知する（ステップＳ１５１）。
【００７５】
デバイス制御部２０３は、外部デバイス３００への電源供給開始および外部デバイス３００のデバイス接続通知を仮想化制御部２０２に通知する（ステップＳ１５２）。
【００７６】
仮想化制御部２０２は、外部デバイス３００のデバイス接続通知に応じて、外部デバイス３００の仮想化制御を開始する（ステップＳ１５３）。その後、仮想化制御部２０２は、通信制御部２０１を介して情報処理装置１００の仮想化制御部１０３に対して電源供給開始を含む仮想化開始通知を送信する（ステップＳ１５４）。
【００７７】
仮想化制御部１０３は、ステップＳ１５４の電源供給開始を含む仮想化開始通知を受けて、デバイス状態管理部１０５に対して電源供給を開始した外部デバイス３００（仮想デバイス）に関する情報を通知する（ステップＳ１６１）。
【００７８】
なお、ステップＳ１６１で通知する情報は、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号、およびデバイスの電源状態である。また、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号については、外部デバイス３００（仮想デバイス）の仮想化制御の開始時にデバイス制御装置２００より取得した情報を利用する。
【００７９】
デバイス状態管理部１０５は、ステップＳ１６１の通知に基づき、デバイス状態管理情報１０６における該当の外部デバイス３００に関する情報を更新する（ステップＳ１６２）。
【００８０】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００の仮想化開始通知を送信する（ステップＳ１６３）。
【００８１】
デバイスドライバ１０２は、アプリケーション１０１に対して外部デバイス３００の仮想化開始通知を送信する（ステップＳ１６４）。このとき、情報処理装置１００は、外部デバイス３００が情報処理装置１００自身にあたかも物理的に接続されている（ローカル接続されている）かのように認識できる。
【００８２】
次に、情報処理装置１００がデバイス制御装置２００を介して外部デバイス３００を制御する場合について説明する。
【００８３】
ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、制御対象とする外部デバイス３００を選択し（ステップ１７１）、外部デバイス３００に対する制御要求をデバイスドライバ１０２に対して送信する（ステップ１７２）。
【００８４】
デバイスドライバ１０２は、ステップ１７２でアプリケーション１０１から送信された制御要求に基づいて、外部デバイス３００の制御命令を生成し、仮想化制御部１０３に送信する（ステップＳ１７３）。
【００８５】
仮想化制御部１０３は、デバイスドライバ１０２から送信された制御命令を受信し、デバイス制御装置２００の仮想化制御部２０２に送信する（ステップＳ１７４）。
【００８６】
仮想化制御部２０２は、仮想化制御部１０３から送信された制御命令を受信し、デバイス制御部２０３に送信する（ステップＳ１７５）。
【００８７】
デバイス制御部２０３は、仮想化制御部２０２から送信された制御命令を受信し、外部デバイス３００に送信する（ステップＳ１７６）。
【００８８】
外部デバイス３００は、デバイス制御部２０３から送信された制御命令を受信し、その制御命令に応じた制御を実行し（ステップＳ１７７）、デバイス制御部２０３に制御結果を応答する（ステップＳ１８１）。
【００８９】
デバイス制御部２０３は、外部デバイス３００の制御結果を受信し、仮想化制御部２０２に送信する（ステップＳ１８２）。
【００９０】
仮想化制御部２０２は、外部デバイス３００の制御結果を受信し、情報処理装置１００の仮想化制御部１０３に送信する（ステップＳ１８３）。
【００９１】
仮想化制御部１０３は、外部デバイス３００の制御結果を受信し、デバイスドライバ１０２に送信する（ステップＳ１８４）。
【００９２】
デバイスドライバ１０２は、外部デバイス３００の制御結果を受信し、アプリケーション１０１に送信する（ステップＳ１８５）。
【００９３】
上述のように、本発明の第１の実施形態によれば、情報処理装置１００は、外部デバイス３００の仮想化制御の終了時にデバイス制御装置２００から受信した外部デバイス３００に関する情報をデバイス状態管理情報１０６に記憶し、仮想化制御の再開時にデバイス状態管理情報１０６の外部デバイス３００に関する情報を参照することで、外部デバイス３００を初期状態から制御可能になる。
【００９４】
従って、情報処理装置１００とデバイス制御装置２００との間におけるデバイス制御処理（処理シーケンス）の相違を解消し、外部デバイス３００が意図しない動作を行うことを防止できる。
【００９５】
[第２の実施形態]
図４は、本発明の第２の実施形態によるデバイス制御システムの一例の構成を概略的に示すブロック図である。
【００９６】
本発明の第２の実施形態では、デバイス制御装置２００に省電制御部２０６を有することにより、デバイス制御装置２００自身が省電力モード（以下、省電モード）になった場合、外部デバイス３００の電源供給状態を情報処理装置１００に通知する点について説明する。
【００９７】
なお、デバイス制御装置２００が省電モードに移行すると、情報処理装置１００は、デバイス制御装置２００の省電力状態（以下、省電状態）、および、外部デバイス３００の状態を確認することはできない。そのため、デバイス制御装置２００は、省電モードに移行する前にデバイス制御装置２００自身の状態および外部デバイス３００のバス電源供給の状態を含む外部デバイス３００に関する情報を情報処理装置１００に送信する。
【００９８】
＜第２の実施形態のシステム構成＞
図４のデバイス制御システムは、情報処理装置１００、デバイス制御装置２００、外部デバイス３００から構成されており、図１で示したデバイス制御システムと以下の構成が異なっている。その他の接続構成や構成要素は、図１と同じであるため、図１に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
【００９９】
図４に示すデバイス制御装置２００は、省電制御部２０６およびデバイス状態通知部２０７を更に備えている。
【０１００】
省電制御部２０６は、デバイス制御装置２００自身の省電状態への移行および省電状態からの復帰を制御する。例えば、外部デバイス３００へのバス電源の供給を停止する第１の省電モードおよび外部デバイス３００へのバス電源の供給を行う第２の省電モードを備える。
【０１０１】
デバイス状態通知部２０７は、デバイス制御装置２００が省電制御部２０６の制御により省電モードが変化した場合に、外部デバイス３００へのバス電源供給状態も含めたデバイス制御装置２００の状態を情報処理装置１００に通知する。
【０１０２】
＜第２の実施形態におけるデバイス状態管理情報１０６について＞
図５は、図４に示すデバイス状態管理情報１０６の一例を示す図である。本実施形態のデバイス状態管理情報１０６は、第１の実施形態で説明した図２のデバイス状態管理情報１０６に対して、デバイス制御装置２００の省電状態を追加したものである。図５の例示では、デバイスＡは電源オン状態であり、デバイスＢとデバイスＣはスリープ状態である。
【０１０３】
＜第２の実施形態における電源制御シーケンス＞
図６は、図４に示すデバイス制御システムにおけるデバイス制御装置２００の省電制御状態を含む外部デバイス３００の制御を説明するシーケンスである。なお、情報処理装置１００は仮想化制御機能よりデバイス制御装置２００に接続されている外部デバイス３００に対して仮想化制御を開始している状態から説明を始める。
【０１０４】
まず、デバイス制御装置２００は、省電制御部２０６により省電の移行を開始する（ステップＳ２０１）。なお、これ以降は、デバイス制御装置２００が外部デバイス３００への電源供給のために、バスの電源供給を停止しない簡易的な省電（第２の省電モード）状態の場合について説明する。
【０１０５】
省電制御部２０６は、仮想化制御部２０２に対して、簡易省電移行通知を行う（ステップＳ２０２）。
【０１０６】
仮想化制御部２０２は、デバイス状態通知部２０７に対して、デバイス制御装置２００に関する状態の更新命令を行う（ステップＳ２０３）。
【０１０７】
デバイス状態通知部２０７は、仮想化制御部２０２に対して、現在のデバイス制御装置２００の省電状態および外部デバイス３００への電源供給状態を含む情報の通知を行う（ステップＳ２１１）。
【０１０８】
仮想化制御部２０２は、デバイス制御装置２００の通信制御部２０１を介して、デバイス制御装置２００に関する省電状態および外部デバイス３００への電源供給状態を含む情報の通知を情報処理装置１００に行う（ステップＳ２１２）。
【０１０９】
仮想化制御部１０３は、デバイス状態管理部１０５に対して、ステップＳ２１２で受信した情報を通知する（ステップＳ２１３）。
【０１１０】
デバイス状態管理部１０５は、ステップＳ２１３で受信した情報に基づいて、デバイス状態管理情報１０６における該当の外部デバイス３００およびデバイス制御装置２００に関する情報を更新する（ステップＳ２１４）。
【０１１１】
次に、デバイス制御装置２００は、簡易的な省電（第２の省電モード）移行に伴い、仮想化制御部２０２を含む自身のソフトウェアを終了させるため、仮想化制御部２０２および通信制御部２０１を介して、情報処理装置１００とのデータ送受信のために接続していたセッションの終了要求（切断要求）を送信する（ステップＳ２２１）。
【０１１２】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００（仮想デバイス）のセッション終了要求を通知する（ステップＳ２２２）。
【０１１３】
デバイスドライバ１０２はアプリケーション１０１に対して外部デバイス３００（仮想デバイス）のセッション終了要求を通知する（ステップＳ２２３）。
【０１１４】
アプリケーション１０１は、デバイスドライバ１０２に対して外部デバイス３００（仮想デバイス）のセッション終了要求を送信する（ステップＳ２２４）。
【０１１５】
デバイスドライバ１０２は、仮想化制御部１０３に対して外部デバイス３００（仮想デバイス）のセッション終了命令を送信する（ステップＳ２２５）。
【０１１６】
仮想化制御部１０３は、仮想化制御部２０２に対して外部デバイス３００（仮想デバイス）のセッション終了命令を送信する（ステップＳ２２６）。その後、情報処理装置１００とデバイス制御装置２００間のセッションを終了する。
【０１１７】
次に、デバイス制御装置２００における簡易省電解除について説明する。
【０１１８】
情報処理装置１００は、入力部１５２を介したユーザ操作によって外部デバイス３００の接続処理（デバイス制御装置２００とのセッション接続処理）を行う（ステップＳ２３１）。このとき、例えば、情報処理装置１００の表示部１５３に操作画面を表示させ、外部デバイス３００を選択させる。
【０１１９】
デバイスドライバ１０２は、仮想化制御部１０３に対してセッション開始命令を送信する（ステップＳ２３２）。
【０１２０】
仮想化制御部１０３は、情報処理装置１００の通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対してセッション開始命令を送信する（ステップＳ２３４）。その後、情報処理装置１００とデバイス制御装置２００間のセッションの接続を開始する。
【０１２１】
仮想化制御部２０２は、情報処理装置１００とデバイス制御装置２００間のセッション開始に伴い、セッション開始通知を省電制御部２０６に通知する（ステップＳ２３５）。
【０１２２】
省電制御部２０６は、デバイス制御装置２００は、ステップＳ２３１によるセッションの開始に伴い省電モードを解除し、通常モードに復帰する（ステップＳ２３６）。
【０１２３】
デバイス状態通知部２０７は、仮想化制御部２０２に対して、現在のデバイス制御装置２００の省電状態および外部デバイス３００への電源供給状態を含む情報の通知を行う（ステップＳ２４１）。
【０１２４】
仮想化制御部２０２は、デバイス制御装置２００の通信制御部２０１を介して、デバイス制御装置２００に関する省電状態および外部デバイス３００への電源供給状態を含む情報の通知を情報処理装置１００に行う（ステップＳ２４２）。
【０１２５】
仮想化制御部１０３は、デバイス状態管理部１０５に対して、ステップＳ２４２で受信した情報を通知する（ステップＳ２４３）。
【０１２６】
デバイス状態管理部１０５は、ステップＳ２４３で受信した情報に基づいて、デバイス状態管理情報１０６における該当の外部デバイス３００およびデバイス制御装置２００に関する情報を更新する（ステップＳ２４４）。
【０１２７】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００のセッション開始通知を行う（ステップＳ２４５）。
【０１２８】
デバイスドライバ１０２は、アプリケーション１０１に対して外部デバイス３００のセッション開始通知を行う（ステップＳ２４６）。情報処理装置１００とデバイス制御装置２００は、セッションを接続する。その後、情報処理装置１００は、デバイス制御装置２００を介して外部デバイス３００とデータ送受信を行う。
【０１２９】
これ以降は、外部デバイス３００のリセットを行うための処理について説明する。
【０１３０】
デバイス制御装置２００は、デバイス制御装置２００に接続された外部デバイス３００の電源供給状態が給電中である場合、外部デバイス３００の物理的なリセットができない。
【０１３１】
そのため、デバイス制御装置２００に接続されていて、電源供給を停止しようとする外部デバイス３００に対して、情報処理装置１００から電源供給停止を含む仮想化制御終了の処理および電源供給開始を含む仮想化制御開始の処理を行い、外部デバイス３００のリセットを行うことについて説明する。
【０１３２】
まず、ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、リセットを行う外部デバイス３００を選択する。その後、アプリケーション１０１は、セッションの終了要求を生成し（ステップＳ２５１）、デバイスドライバ１０２に対して、セッション終了命令を送信する（ステップＳ２５２）。
【０１３３】
デバイスドライバ１０２は、仮想化制御部１０３に対して、セッション終了命令を送信する（ステップＳ２５３）。
【０１３４】
仮想化制御部１０３は、仮想化制御部２０２に対して、セッション終了命令を送信する（ステップＳ２５４）。その後、情報処理装置１００とデバイス制御装置２００との間のセッションを終了する。
【０１３５】
次に、アプリケーション１０１は、入力部１５２を介して外部デバイス３００が選択されると（ステップＳ２６１）、デバイスドライバ１０２に対して、電源供給停止を含む仮想化終了要求を送信する（ステップＳ２６２）。
【０１３６】
デバイスドライバ１０２は、仮想化制御部１０３に対して、電源供給停止を含む仮想化終了命令を送信する（ステップＳ２６３）。
【０１３７】
仮想化制御部１０３は、通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対して電源供給停止を含む仮想化終了命令を送信する（ステップＳ２６４）。
【０１３８】
仮想化制御部２０２は、ステップＳ２６４で情報処理装置１００から送信された電源供給停止を含む仮想化終了命令を受信し、デバイス制御部２０３に対して外部デバイス３００に対する電源供給停止命令を送信する（ステップＳ２６５）。
【０１３９】
デバイス制御部２０３は、電源供給制御部２０４に対して外部デバイス３００の接続ポート番号を指定して電源供給停止命令を送信する（ステップＳ２６６）。
【０１４０】
電源供給制御部２０４は、電源供給停止命令によって指定された接続ポート番号に対してバスの電源供給を停止する（ステップＳ２６７）。これにより、外部デバイス３００は、デバイス制御装置２００から抜去された時（物理的に接続されていない状態を「デバイス接続切断状態」）と同一の状態となる。
【０１４１】
電源供給制御部２０４は、ステップＳ２６７により外部デバイス３００のデバイス接続切断状態と同一の状態を検知した場合、デバイス制御部２０３に外部デバイス３００の接続切断状態および電源供給停止を通知する（ステップＳ２７１）。
【０１４２】
デバイス制御部２０３は、電源供給制御部２０４から外部デバイス３００のデバイス接続切断状態および電源供給停止の通知を受信すると、仮想化制御部２０２に対して外部デバイス３００の接続切断状態および電源供給停止を通知する（ステップＳ２７２）。
【０１４３】
仮想化制御部２０２は、外部デバイス３００の接続切断通知に応じて、外部デバイス３００の仮想化制御を終了する（ステップＳ２７３）。その後、仮想化制御部２０２は、デバイス制御装置２００の通信制御部２０１を介して情報処理装置１００の仮想化制御部１０３に対して外部デバイス３００への電源供給停止を含む仮想化終了通知を送信する（ステップＳ２７４）。
【０１４４】
仮想化制御部１０３は、ステップＳ２７４で送信された外部デバイス３００への電源供給停止を含む仮想化終了通知を受信し、デバイス状態管理部１０５に対して電源供給停止となった外部デバイス３００の通知を行う（ステップＳ２７５）。
【０１４５】
なお、ステップＳ２７４で通知する情報は、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、省電状態、接続ポート番号、およびデバイスの電源状態である。デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号については、外部デバイス３００の仮想化制御の開始時にデバイス制御装置２００より取得した情報を利用する。
【０１４６】
デバイス状態管理部１０５は、ステップＳ２７５の通知情報に基づいて、デバイス状態管理情報１０６における該当の外部デバイス３００およびデバイス制御装置２００に関する情報を更新する（ステップＳ２７６）。
【０１４７】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００の仮想化終了通知を行う（ステップＳ２７７）。
【０１４８】
デバイスドライバ１０２は、アプリケーション１０１に対して外部デバイス３００の仮想化終了通知を行う（ステップＳ２７８）。このとき、情報処理装置１００は、情報処理装置１００自身にあたかも物理的に接続されている（ローカル接続されている）かのように認識している外部デバイス３００（仮想デバイス）の仮想化制御の終了を検知する。
【０１４９】
続いて、ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、仮想化制御を行う外部デバイス３００を選択し（ステップ２８１）、デバイスドライバ１０２に対して電源供給開始を含む仮想化開始要求を送信する（ステップ２８２）。
【０１５０】
デバイスドライバ１０２は、ステップ２８２でアプリケーション１０１から送信された電源供給開始を含む仮想化開始要求に基づいて、電源供給開始を含む仮想化開始命令を生成し、仮想化制御部１０３に送信する（ステップＳ２８３）
【０１５１】
仮想化制御部１０３は、通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対して電源供給開始を含む仮想化開始命令を送信する（ステップＳ２８４）。
【０１５２】
仮想化制御部２０２は、ステップＳ２８４で情報処理装置１００から送信された電源供給開始を含む仮想化開始命令を受信し、デバイス制御部２０３に対して外部デバイス３００の電源供給開始命令を行う（ステップＳ２８５）。
【０１５３】
デバイス制御部２０３は、電源供給開始を含む仮想化開始命令により通知されたバスの接続ポート番号を指定して電源供給開始命令を電源供給制御部２０４に送信する（ステップＳ２８６）。
【０１５４】
電源供給制御部２０４は、指定された接続ポート番号に対してバスの電源供給を開始し（ステップＳ２８７）、外部デバイス３００に電源を供給する（ステップＳ２８８）。これにより、外部デバイス３００は、ＵＳＢインターフェースを介してデバイス制御装置２００に物理的に接続(挿入)された時と同一の状態となる。
【０１５５】
電源供給制御部２０４は、外部デバイス３００への電源供給後に外部デバイス３００の接続を検知した場合、外部デバイス３００への電源供給開始および外部デバイス３００の物理的な接続（デバイス接続通知）をデバイス制御部２０３に通知する（ステップＳ２９１）。
【０１５６】
デバイス制御部２０３は、外部デバイス３００への電源供給開始および外部デバイス３００のデバイス接続通知を仮想化制御部２０２に通知する（ステップＳ２９２）。
【０１５７】
仮想化制御部２０２は、外部デバイス３００のデバイス接続通知に応じて、外部デバイス３００の仮想化制御を開始する（ステップＳ２９３）。その後、仮想化制御部２０２は、通信制御部２０１を介して情報処理装置１００の仮想化制御部１０３に対して電源供給開始を含む仮想化開始通知を送信する（ステップＳ２９４）。
【０１５８】
仮想化制御部１０３は、ステップＳ２９４の電源供給開始を含む仮想化開始通知を受けて、デバイス状態管理部１０５に対して電源供給を開始した外部デバイス３００（仮想デバイス）に関する情報を通知する（ステップＳ２９５）。
【０１５９】
なお、ステップＳ１６１で通知する情報は、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号、およびデバイスの電源状態である。また、デバイス名、デバイス制御装置のＩＰアドレス、ＭＡＣアドレス、接続ポート番号については、外部デバイス３００（仮想デバイス）の仮想化制御の開始時にデバイス制御装置２００より取得した情報を利用する。
【０１６０】
デバイス状態管理部１０５は、ステップＳ１６１の通知に基づき、デバイス状態管理情報１０６における該当の外部デバイス３００に関する情報を更新する（ステップＳ２９６）。
【０１６１】
仮想化制御部１０３は、デバイスドライバ１０２に対して外部デバイス３００の仮想化制御開始通知を送信する（ステップＳ２９７）。
【０１６２】
デバイスドライバ１０２は、アプリケーション１０１に対して外部デバイス３００の仮想化制御開始通知を送信する（ステップＳ２９８）。このとき、情報処理装置１００は、外部デバイス３００が情報処理装置１００自身にあたかも物理的に接続されている（ローカル接続されている）かのように認識できる。
【０１６３】
情報処理装置１００は、入力部を介したユーザ操作によって、外部デバイス３００を選択し、セッションの接続処理（デバイス制御装置２００とのセッション接続処理）を要求する（ステップＳ３０１）。このとき、例えば、情報処理装置１００の表示部１５３に操作画面を表示させ、外部デバイス３００を選択させる。
【０１６４】
デバイスドライバ１０２は、仮想化制御部１０３に対してセッション開始要求を送信する（ステップＳ３０２）。
【０１６５】
仮想化制御部１０３は、情報処理装置１００の通信制御部１０４を介してデバイス制御装置２００の仮想化制御部２０２に対してセッション開始命令を送信する（ステップＳ３０４）。その後、情報処理装置１００とデバイス制御装置２００間のセッションの接続を開始する。
【０１６６】
次に、情報処理装置１００がデバイス制御装置２００を介して外部デバイス３００を制御する場合について説明する。
【０１６７】
ユーザによる入力部１５２を介した操作により、アプリケーション１０１は、制御対象とする外部デバイス３００を選択し（ステップ３１１）、外部デバイス３００に対する制御要求をデバイスドライバ１０２に対して送信する（ステップ３１２）。
【０１６８】
デバイスドライバ１０２は、ステップ３１２でアプリケーション１０１から送信された制御要求に基づいて、外部デバイス３００の制御命令を生成し、仮想化制御部１０３に送信する（ステップＳ３１３）。
【０１６９】
仮想化制御部１０３は、デバイスドライバ１０２から送信された制御命令を受信し、デバイス制御装置２００の仮想化制御部２０２に送信する（ステップＳ３１４）。
【０１７０】
仮想化制御部２０２は、仮想化制御部１０３から送信された制御命令を受信し、デバイス制御部２０３に送信する（ステップＳ３１５）。
【０１７１】
デバイス制御部２０３は、仮想化制御部２０２から送信された制御命令を受信し、外部デバイス３００に送信する（ステップＳ３１６）。
【０１７２】
外部デバイス３００は、デバイス制御部２０３から送信された制御命令を受信し、その制御命令に応じた制御を実行し（ステップＳ３１７）、デバイス制御部２０３に制御結果を応答する（ステップＳ３２１）。
【０１７３】
デバイス制御部２０３は、外部デバイス３００の制御結果を受信し、仮想化制御部２０２に送信する（ステップＳ３２２）。
【０１７４】
仮想化制御部２０２は、外部デバイス３００の制御結果を受信し、情報処理装置１００の仮想化制御部１０３に送信する（ステップＳ３２３）。
【０１７５】
仮想化制御部１０３は、外部デバイス３００の制御結果を受信し、デバイスドライバ１０２に送信する（ステップＳ３２４）。
【０１７６】
デバイスドライバ１０２は、外部デバイス３００の制御結果を受信し、アプリケーション１０１に送信する（ステップＳ３２５）。
【０１７７】
※該当する
上述のように、本発明の第２の実施形態によれば、デバイス制御装置２００に省電制御機能を有し、外部デバイス３００に対してバス電源供給した状態で省電モードに移行した場合でも、デバイス制御装置２００に接続されていて、電源供給を停止しようとする外部デバイス３００に対して、電源供給停止を含む仮想化終了命令、および電源供給開始を含む仮想化開始命令により、外部デバイス３００の物理的なリセットを行うことが可能となる。
【０１７８】
これにより、情報処理装置１００の仮想化制御の開始のタイミングでデバイス制御装置２００に接続された外部デバイス３００を初期状態から制御することが可能となる。
【０１７９】
以上、本発明について上記各実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０１８０】
デバイス制御装置２００は、外部デバイス３００との接続ポートを内蔵する形態で説明したが、デバイス制御装置２００に別体のデバイス分岐装置（例：ＵＳＢハブ、不図示）を接続し、このデバイス分岐装置を介してデバイス制御装置２００と外部デバイス３００とを接続しても良い。
【０１８１】
例えば、上記の実施の形態の機能を制御方法として、この制御方法をデバイス制御装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをデバイス制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【０１８２】
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施の形態の機能を実現するソフトウェア（プログラム）を、ネットワークまたは各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１８３】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１８４】
また、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成してもよい。
【０１８５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１８６】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１８７】
１００：情報処理装置
２００：デバイス制御装置
３００：外部デバイス
１１０：記憶部
１０１：アプリケーション
１０２：デバイスドライバ
１０３、２０２：仮想化制御部
１０４、２０１：通信制御部
１０５：デバイス状態管理部
１０６：デバイス状態管理情報
２０３：デバイス制御部
２０４：電源供給制御部
２０６：省電制御部
２０７：デバイス状態通知部
３０１：個体識別情報
３０２：通信Ｉ／Ｆ
【図１】
2018055635.tif 000003
【図２】
2018055635.tif 000004
【図３】
2018055635.tif 000005
【図４】
2018055635.tif 000006
【図５】
2018055635.tif 000007
【図６】
2018055635.tif 000008