(57)【特許請求の範囲】
【請求項１】
周辺装置を利用するためのシステムであって、
サーバ装置と、
少なくとも１つのクライアント装置と、
を含み、
前記サーバ装置は、
周辺装置との接続のためのデバイスインタフェースと、
ネットワークとの接続のための第１ネットワークインタフェースと、
前記第１ネットワークインタフェースを介して前記クライアント装置と前記デバイスインタフェースとの間のデータ通信を中継するデバイスインタフェース制御部と、
を含み、
前記クライアント装置は、
前記ネットワークとの接続のための第２ネットワークインタフェースと、
前記デバイスインタフェース制御部と通信することによって、前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成する仮想インタフェース制御部と、
前記クライアント装置の起動時に、前記周辺装置に供給されるべきデータとは異なる第１データを前記サーバ装置に送信し、前記クライアント装置のシャットダウン時に、前記周辺装置に供給されるべきデータとは異なる第２データを前記サーバ装置に送信する動作状態データ送信部と、
を含み、
前記サーバ装置の前記デバイスインタフェース制御部は、
前記クライアント装置から前記第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置から前記第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行し、
前記クライアント装置の前記仮想インタフェース制御部は、
前記動作状態データ送信部が前記第１データを前記サーバ装置に送信した場合であっても、前記デバイスインタフェースを介する前記周辺装置との通信であるデバイス通信を前記クライアント装置と前記周辺装置との間で確立することを自動的には要求せずに、ユーザの指示に応じて、前記デバイス通信の確立を、前記デバイスインタフェース制御部に要求し、
前記サーバ装置の前記デバイスインタフェース制御部は、
前記クライアント装置の前記仮想インタフェース制御部からの要求に応じて、前記第１と第２のネットワークインタフェースを介する前記仮想インタフェース制御部との通信であるネットワーク通信を利用することによって、前記デバイス通信を、前記クライアント装置と前記周辺装置との間で確立し、
前記第１処理の実行後、前記デバイス通信が確立されていない場合であっても、前記第２条件が満たされるまでは、前記周辺装置の状態を前記第１状態に維持する、
システム。
【請求項２】
請求項１に記載のシステムであって、
前記デバイスインタフェースは、前記周辺装置に対して電力を供給するための電力供給端子を含み、
前記デバイスインタフェース制御部は、
前記第１処理として、前記電力供給端子への電力の供給を開始する処理を実行し、
前記第２処理として、前記電力供給端子への電力の供給を停止する処理を実行する、
システム。
【請求項３】
請求項１または請求項２に記載のシステムであって、
前記デバイスインタフェース制御部は、
前記周辺装置の動作状態が前記第２状態である状態で前記第１データを受信したことを前記第１条件として利用することによって、前記第１処理を実行し、
前記第２データを受信したことによって前記第１データを受信した回数から前記第２データを受信した回数を減算して得られる差分がゼロになったことを前記第２条件として利用することによって、前記第２処理を実行し、
前記第２データを受信した場合であっても、前記第１データを受信した回数から前記第２データを受信した回数を減算して得られる差分が１以上である場合には、前記第２処理を実行しない、
システム。
【請求項４】
サーバ装置のデバイスインタフェースに接続された周辺装置をネットワークを介して利用する方法であって、
クライアント装置が、前記クライアント装置の起動時に、前記周辺装置に供給されるべきデータとは異なる第１データを、前記ネットワークを介して前記サーバ装置に送信し、
前記サーバ装置が、前記クライアント装置から前記第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置が、前記サーバ装置と前記ネットワークを介して通信することによって、前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成し、
前記クライアント装置が、前記クライアント装置のシャットダウン時に、前記周辺装置に供給されるべきデータとは異なる第２データを、前記ネットワークを介して前記サーバ装置に送信し
前記サーバ装置が、前記クライアント装置から前記第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行し、
前記クライアント装置が、前記第１データを前記サーバ装置に送信した場合であっても、前記デバイスインタフェースを介する前記周辺装置との通信であるデバイス通信を前記クライアント装置と前記周辺装置との間で確立することを自動的には要求せずに、ユーザの指示に応じて、前記デバイス通信の確立を、前記サーバ装置に要求し、
前記サーバ装置が、前記クライアント装置からの要求に応じて、前記ネットワークを介する前記クライアント装置との通信であるネットワーク通信を利用することによって、前記デバイス通信を、前記クライアント装置と前記周辺装置との間で確立し、
前記サーバ装置が、前記第１処理の実行後、前記デバイス通信が確立されていない場合であっても、前記第２条件が満たされるまでは、前記周辺装置の状態を前記第１状態に維持する、
方法。
【請求項５】
クライアント装置にネットワークを介して周辺装置を利用させるサーバ装置であって、
周辺装置との接続のためのデバイスインタフェースと、
ネットワークとの接続のための第１ネットワークインタフェースと、
前記ネットワークに接続されたクライアント装置によって実行される処理であって、前記サーバ装置と通信することによって前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成する処理のために、前記第１ネットワークインタフェースを介して前記クライアント装置と前記デバイスインタフェースとの間のデータ通信を中継するデバイスインタフェース制御部と、
を備え、
前記デバイスインタフェース制御部は、
前記クライアント装置の起動時に前記クライアント装置によって前記サーバ装置に対して送信されたデータであって、前記周辺装置に供給されるべきデータとは異なる第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置のシャットダウン時に前記クライアント装置によって前記サーバ装置に対して送信されたデータであって、前記周辺装置に供給されるべきデータとは異なる第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行し、
前記デバイスインタフェースを介する前記周辺装置との通信であるデバイス通信を前記クライアント装置と前記周辺装置との間で確立することの要求であって、前記クライアント装置が前記第１データを前記サーバ装置に送信した場合であっても自動的には行われずに、ユーザの指示に応じて行われた、前記クライアント装置からの前記要求に応じて、前記前記第１ネットワークインタフェースを介する前記クライアント装置との通信であるネットワーク通信を利用することによって、前記デバイス通信を、前記クライアント装置と前記周辺装置との間で確立し、
前記第１処理の実行後、前記デバイス通信が確立されていない場合であっても、前記第２条件が満たされるまでは、前記周辺装置の状態を前記第１状態に維持する、
サーバ装置。
【請求項６】
請求項５に記載のサーバ装置であって、
前記デバイスインタフェース制御部は、前記クライアント装置によって送信された、動的ホストコンフィグレーションプロトコルに従ったディスカバーメッセージを、前記第１データとして利用する、
サーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周辺装置を利用するためのシステム、サーバ装置、方法に関するものである。
【背景技術】
【０００２】
従来から、ネットワークを介してコンピュータにＵＳＢ（Universal Serial Bus）デバイスを利用させるＵＳＢデバイスサーバが知られている。また、コンピュータがＵＳＢデバイスを利用する時に、ＵＳＢデバイスサーバがＵＳＢのバスパワーの状態をオン状態にし、所定時間の経過後に、ＵＳＢデバイスサーバがＵＳＢのバスパワーの状態をオフ状態にする技術も提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３１０７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、従来は、周辺装置を利用する技術に関しては、十分な工夫がなされていないのが実情であった。例えば、ＵＳＢデバイスの利用開始時にＵＳＢのバスパワーの状態をオフ状態からオン状態にする技術においては、ＵＳＢデバイスを利用する場合にＵＳＢデバイスの準備完了を待つ時間が長くなる可能性があった。また、ＵＳＢのバスパワーの状態を常にオン状態に維持する技術においては、消費電力の積算値が過大となる可能性があった。
【０００５】
なお、このような問題は、周辺装置のインタフェースの規格がＵＳＢ規格である場合に限らず、インタフェースの規格が他の規格である場合にも共通する問題であった。
【０００６】
本発明の主な利点は、周辺装置を利用する場合に、消費電力の積算値を抑制しつつ、利便性を向上させることができる技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
［形態１］
周辺装置を利用するためのシステムであって、
サーバ装置と、
少なくとも１つのクライアント装置と、
を含み、
前記サーバ装置は、
周辺装置との接続のためのデバイスインタフェースと、
ネットワークとの接続のための第１ネットワークインタフェースと、
前記第１ネットワークインタフェースを介して前記クライアント装置と前記デバイスインタフェースとの間のデータ通信を中継するデバイスインタフェース制御部と、
を含み、
前記クライアント装置は、
前記ネットワークとの接続のための第２ネットワークインタフェースと、
前記デバイスインタフェース制御部と通信することによって、前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成する仮想インタフェース制御部と、
前記クライアント装置の起動時に、前記周辺装置に供給されるべきデータとは異なる第１データを前記サーバ装置に送信し、前記クライアント装置のシャットダウン時に、前記周辺装置に供給されるべきデータとは異なる第２データを前記サーバ装置に送信する動作状態データ送信部と、
を含み、
前記サーバ装置の前記デバイスインタフェース制御部は、
前記クライアント装置から前記第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置から前記第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行し、
前記クライアント装置の前記仮想インタフェース制御部は、
前記動作状態データ送信部が前記第１データを前記サーバ装置に送信した場合であっても、前記デバイスインタフェースを介する前記周辺装置との通信であるデバイス通信を前記クライアント装置と前記周辺装置との間で確立することを自動的には要求せずに、ユーザの指示に応じて、前記デバイス通信の確立を、前記デバイスインタフェース制御部に要求し、
前記サーバ装置の前記デバイスインタフェース制御部は、
前記クライアント装置の前記仮想インタフェース制御部からの要求に応じて、前記第１と第２のネットワークインタフェースを介する前記仮想インタフェース制御部との通信であるネットワーク通信を利用することによって、前記デバイス通信を、前記クライアント装置と前記周辺装置との間で確立し、
前記第１処理の実行後、前記デバイス通信が確立されていない場合であっても、前記第２条件が満たされるまでは、前記周辺装置の状態を前記第１状態に維持する、
システム。
【０００８】
［適用例１］
周辺装置を利用するためのシステムであって、
サーバ装置と、
少なくとも１つのクライアント装置と、
を含み、
前記サーバ装置は、
周辺装置との接続のためのデバイスインタフェースと、
ネットワークとの接続のための第１ネットワークインタフェースと、
前記第１ネットワークインタフェースを介して前記クライアント装置と前記デバイスインタフェースとの間のデータ通信を中継するデバイスインタフェース制御部と、
を含み、
前記クライアント装置は、
前記ネットワークとの接続のための第２ネットワークインタフェースと、
前記デバイスインタフェース制御部と通信することによって、前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成する仮想インタフェース制御部と、
前記クライアント装置の起動時に、前記周辺装置に供給されるべきデータとは異なる第１データを前記サーバ装置に送信し、前記クライアント装置のシャットダウン時に、前記周辺装置に供給されるべきデータとは異なる第２データを前記サーバ装置に送信する動作状態データ送信部と、
を含み、
前記デバイスインタフェース制御部は、
前記クライアント装置から前記第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置から前記第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行する、
システム。
【０００９】
この構成によれば、クライアント装置に周辺装置が直接に接続されていない場合であっても、クライアント装置は、ネットワークとサーバ装置とを介して、周辺装置を利用することができる。また、クライアント装置の起動時に、周辺装置の状態が、デバイスインタフェースと通信可能な第１状態になるので、クライアント装置が周辺装置を利用する場合に、周辺装置の準備完了を待つ時間が過剰に長くなる可能性を低減できる。さらに、クライアント装置のシャットダウン時に、周辺装置の状態が、第１状態と比べて消費電力の小さい第２状態になるので、周辺装置が利用されない状況下において、消費電力を抑制することができる。これらの結果、消費電力の積算値を抑制しつつ、利便性を向上させることができる。
【００１０】
［適用例２］
適用例１に記載のシステムであって、
前記デバイスインタフェースは、前記周辺装置に対して電力を供給するための電力供給端子を含み、
前記デバイスインタフェース制御部は、
前記第１処理として、前記電力供給端子への電力の供給を開始する処理を実行し、
前記第２処理として、前記電力供給端子への電力の供給を停止する処理を実行する、
システム。
【００１１】
この構成によれば、第２処理として、電力供給端子への電力の供給を停止する処理が実行されるので、消費電力を適切に抑制することができる。そして、第１処理として、電力供給端子への電力の供給を開始する処理が実行されるので、周辺装置を適切に通信可能な状態にすることができる。
【００１２】
［適用例３］
適用例１または適用例２に記載のシステムであって、
前記仮想インタフェース制御部は、
前記クライアント装置の起動時に、前記デバイスインタフェース制御部を介した前記周辺装置とのデータ通信を確立することによって、前記周辺装置が前記クライアント装置に接続された状態を仮想的に実現する、
システム。
【００１３】
この構成によれば、クライアント装置の起動時に、仮想インタフェース制御部と周辺装置とのデータ通信が確立し、周辺装置がクライアント装置に接続された状態が仮想的に実現される。その結果、クライアント装置が周辺装置を利用する場合に、周辺装置の準備完了を待つ時間が過剰に長くなる可能性を効果的に低減できる。
【００１４】
［適用例４］
請求項１または請求項２に記載のシステムであって、
前記デバイスインタフェース制御部は、
前記周辺装置の動作状態が前記第２状態である状態で前記第１データを受信したことを前記第１条件として利用することによって、前記第１処理を実行し、
前記第２データを受信したことによって前記第１データを受信した回数から前記第２データを受信した回数を減算して得られる差分がゼロになったことを前記第２条件として利用することによって、前記第２処理を実行し、
前記第２データを受信した場合であっても、前記第１データを受信した回数から前記第２データを受信した回数を減算して得られる差分が１以上である場合には、前記第２処理を実行しない、
システム。
【００１５】
この構成によれば、第１データを受信した回数から第２データを受信した回数を減算して得られる差分、すなわち、起動しているクライアント装置の総数が、１以上である場合には、周辺装置が第１状態に維持される。従って、周辺装置を利用し得るクライアント装置の総数が複数である場合に、起動しているクライアント装置が、複数のクライアント装置のうちのいずれであっても、周辺装置が第１状態に維持される。これにより、周辺装置を利用するクライアント装置が、複数のクライアント装置のうちのいずれであっても、周辺装置の準備完了を待つ時間が過剰に長くなる可能性を低減できる。また、全てのクライアント装置がシャットダウンした場合には、周辺装置の状態が第２状態に移行する。これにより、周辺装置が利用されない状況下において、消費電力を抑制することができる。
【００１６】
［適用例５］
サーバ装置のデバイスインタフェースに接続された周辺装置をネットワークを介して利用する方法であって、
クライアント装置が、前記クライアント装置の起動時に、前記周辺装置に供給されるべきデータとは異なる第１データを、前記ネットワークを介して前記サーバ装置に送信し、
前記サーバ装置が、前記クライアント装置から前記第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置が、前記サーバ装置と前記ネットワークを介して通信することによって、前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成し、
前記クライアント装置が、前記クライアント装置のシャットダウン時に、前記周辺装置に供給されるべきデータとは異なる第２データを、前記ネットワークを介して前記サーバ装置に送信し
前記サーバ装置が、前記クライアント装置から前記第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行する、
方法。
【００１７】
［適用例６］
クライアント装置にネットワークを介して周辺装置を利用させるサーバ装置であって、
周辺装置との接続のためのデバイスインタフェースと、
ネットワークとの接続のための第１ネットワークインタフェースと、
前記ネットワークに接続されたクライアント装置によって実行される処理であって、前記サーバ装置と通信することによって前記サーバ装置の前記デバイスインタフェースに対応する仮想的なデバイスインタフェースを形成する処理のために、前記第１ネットワークインタフェースを介して前記クライアント装置と前記デバイスインタフェースとの間のデータ通信を中継するデバイスインタフェース制御部と、
を備え、
前記デバイスインタフェース制御部は、
前記クライアント装置の起動時に前記クライアント装置によって前記サーバ装置に対して送信されたデータであって、前記周辺装置に供給されるべきデータとは異なる第１データを受信したことを必要条件として含む第１条件が満たされた場合に、前記周辺装置の状態を、前記デバイスインタフェースと通信可能な状態である第１状態に移行させる第１処理を実行し、
前記クライアント装置のシャットダウン時に前記クライアント装置によって前記サーバ装置に対して送信されたデータであって、前記周辺装置に供給されるべきデータとは異なる第２データを受信したことを必要条件として含む第２条件が満たされた場合に、前記周辺装置の状態を、前記第１状態と比べて消費電力の小さい第２状態に移行させる第２処理を実行する、
サーバ装置。
【００１８】
［適用例７］
適用例６に記載のサーバ装置であって、
前記デバイスインタフェース制御部は、前記クライアント装置によって送信された、動的ホストコンフィグレーションプロトコルに従ったディスカバーメッセージを、前記第１データとして利用する、
サーバ装置。
【００１９】
この構成によれば、起動時にＤＨＣＰ（Dynamic Host Configuration Protocol）を利用してネットワークに接続するクライアント装置が利用される場合に、サーバ装置を利用するためだけの専用の機能をクライアント装置に設けずに、サーバ装置は、クライアント装置の起動（第１データの受信）に応じて第１処理を実行することができる。その結果、クライアント装置の構成が過剰に複雑になる可能性を低減できる。
【００２０】
なお、本発明は、種々の形態で実現することが可能であり、例えば、クライアント装置にネットワークを介して周辺装置を利用させる方法およびサーバ装置、サーバ装置とクライアント装置とを含むネットワークシステム、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００２１】
【図１】システム９００を示す説明図である。
【図２】コンピュータ１００の起動時（電源ＯＮ）の処理の概要を示すシーケンス図である。
【図３】コンピュータ１００のシャットダウン時（電源ＯＦＦ）の処理の概要を示すシーケンス図である。
【図４】第２実施例のシステム９１０を示す説明図である。
【図５】デバイスインタフェース制御部２３２（図１）によって実行される制御処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２２】
次に、この発明の実施の形態を第１〜第２実施例と変形例とに基づいて説明する。
【００２３】
Ａ．第１実施例：
図１は、本発明の一実施例としてのシステム９００を示す説明図である。このシステム９００は、コンピュータ１００と、デバイスサーバ２００と、プリンタ３００と、ＴＶチューナ３１０と、を含んでいる。コンピュータ１００は、汎用のパーソナルコンピュータである。コンピュータ１００は、ネットワークＮＴを介して、デバイスサーバ２００に接続されている。プリンタ３００とＴＶチューナ３１０とは、デバイスサーバ２００に、それぞれ接続されている。なお、ネットワークＮＴとしては、ハブやルータといった中継装置を含むネットワークを採用してもよい。この代わりに、コンピュータ１００とデバイスサーバ２００とを直接的に接続する１本の通信ラインを、ネットワークＮＴとして採用してもよい。また、本実施例では、コンピュータ１００と、デバイスサーバ２００と、プリンタ３００と、ＴＶチューナ３１０とは、近接して配置されている（例えば、これらの装置１００、２００、３００、３１０は、同じ部屋に配置されている）。ただし、一部の装置が、他の装置から遠方に配置されてもよい。
【００２４】
コンピュータ１００は、ネットワークとの接続のためのネットワークポート１１０と、制御部１２０と、不揮発性メモリ１５０（例えば、ハードディスクドライブや、ソリッドステートドライブ）と、を含んでいる。ネットワークポート１１０は、例えば、イーサネット（イーサネットは、登録商標）の物理インタフェース（物理ポート）である。制御部１２０は、ＣＰＵ１３０と、メモリ１４０（例えば、ＤＲＡＭ）とを有するコンピュータであり、コンピュータ１００の各部を制御する。ＣＰＵ１３０は、不揮発性メモリ１５０に格納されたプログラム（図示省略）を実行することによって、仮想インタフェース制御部１３２と、動作状態データ送信部１３４とを含む種々の処理部の機能を実現する（詳細は後述）。以下、プログラムに従ってＣＰＵが或る処理部としての機能を実行することを、その処理部が処理を実行する、とも表現する。
【００２５】
デバイスサーバ２００は、周辺装置を、ネットワークを通じて、コンピュータに利用させるサーバである。本実施例では、周辺装置として、ＵＳＢ（Universal Serial Bus）規格に適合する周辺装置を採用している。デバイスサーバ２００は、ネットワークとの接続のためのネットワークポート２１０と、ＵＳＢポート２１２、２１４と、ＵＳＢホストコントローラ２１８と、制御部２２０と、不揮発性メモリ２５０（例えば、フラッシュメモリ）と、を含んでいる。ネットワークポート２１０は、例えば、イーサネットの物理インタフェース（物理ポート）である。ＵＳＢポート２１２、２１４は、それぞれ、ＵＳＢ規格に適合する物理インタフェース（物理ポート）である。ＵＳＢホストコントローラ２１８は、ＵＳＢ規格に適合するホストコントローラであり、ＵＳＢポート２１２、２１４を制御する。制御部２２０は、ＣＰＵ２３０と、メモリ２４０（例えば、ＤＲＡＭ）とを有するコンピュータであり、デバイスサーバ２００の各部を制御する。ＣＰＵ２３０は、不揮発性メモリ２５０に格納されたプログラム（図示省略）を実行することによって、デバイスインタフェース制御部２３２としての機能を実現する。デバイスインタフェース制御部２３２は、ＵＳＢホストコントローラ２１８を通じてＵＳＢポート２１２、２１４を制御することによって、ＵＳＢデバイスを制御する（詳細は後述）。
【００２６】
プリンタ３００とＴＶチューナ３１０とは、それぞれ、ＵＳＢ規格に適合する周辺装置である。図１のシステム９００では、プリンタ３００が第１ＵＳＢポート２１２に接続され、ＴＶチューナ３１０が第２ＵＳＢポート２１４に接続されている。ＵＳＢポート２１２、２１４は、それぞれ、ＵＳＢ規格に適合する４つの端子（ＶＢＵＳ、Ｄ＋、Ｄ−、ＧＮＤ）を有している。ＧＮＤ端子は、基準電位（common reference）を提供し、ＶＢＵＳ端子は、ＵＳＢデバイスに電力を提供し、Ｄ＋端子とＤ−端子とは、信号（データ）の入出力を行う。
【００２７】
コンピュータ１００の仮想インタフェース制御部１３２は、ネットワークＮＴを介してデバイスサーバ２００のデバイスインタフェース制御部２３２と通信することによって、仮想ＵＳＢインタフェース１３２ｉを構成する（例えば、仮想インタフェース制御部１３２は、仮想的な、ルートハブ（ＵＳＢホストコントローラ）と、ＵＳＢポートとを構成する）。仮想インタフェース制御部１３２とデバイスインタフェース制御部２３２とは、ＵＳＢデバイス（ここでは、プリンタ３００とＴＶチューナ３１０）の制御のためのデータを、ネットワーク通信のパケットでカプセル化することによって、交換する。
【００２８】
そして、仮想インタフェース制御部１３２は、コンピュータ１００上で動作するアプリケーション（例えば、ＵＳＢデバイスのためのデバイスドライバ）が仮想ＵＳＢインタフェース１３２ｉにアクセスすることを許容する。仮想ＵＳＢインタフェース１３２ｉに対するアクセス方式は、通常のＵＳＢインタフェース（ＵＳＢホストコントローラ）に対するアクセス方式と同じである。その結果、アプリケーションからは、デバイスサーバ２００に接続されたＵＳＢデバイスが仮想ＵＳＢインタフェース１３２ｉに直接的に接続されているかのように、みえる。
【００２９】
例えば、コンピュータ１００がプリンタ３００を利用して印刷する場合について説明する。この場合には、コンピュータ１００上で動作しているアプリケーション（例えば、ワードプロセッサと、プリンタ３００用のデバイスドライバ）が、ＵＳＢインタフェース用の制御データ（印刷データを含む）を、仮想インタフェース制御部１３２に供給する。仮想インタフェース制御部１３２は、受信したデータを、カプセル化してデバイスサーバ２００に送信する。デバイスサーバ２００のデバイスインタフェース制御部２３２は、受信したデータからＵＳＢインタフェース用のデータを抽出する。デバイスインタフェース制御部２３２は、抽出したデータに従ってＵＳＢホストコントローラ２１８を制御し、第１ＵＳＢポート２１２からプリンタ３００に印刷データを供給する。プリンタ３００は、受信した印刷データに従って、印刷を行う。
【００３０】
次に、コンピュータ１００が、ＴＶチューナ３１０によって受信されたＴＶ番組（動画像）を表示する場合について説明する。この場合には、ＴＶチューナ３１０は、ＵＳＢインタフェース用の制御データ（受信した動画像を表す動画像データを含む）を、第２ＵＳＢポート２１４に出力する。ＵＳＢホストコントローラ２１８は、第２ＵＳＢポート２１４からデータを受信すると、受信したデータを、デバイスインタフェース制御部２３２に供給する。デバイスインタフェース制御部２３２は、受信したデータを、カプセル化してコンピュータ１００に送信する。コンピュータ１００の仮想インタフェース制御部１３２は、受信したデータからＵＳＢインタフェース用のデータを抽出し、抽出したデータを、ＴＶチューナ３１０用のデバイスドライバ（図示省略）に供給する。デバイスドライバは、受信したデータから動画像データを取得し、取得した動画像データを、動画像再生アプリケーション（図示省略）に供給する。
【００３１】
以上のように、仮想インタフェース制御部１３２とデバイスインタフェース制御部２３２とは、ＵＳＢ規格に従った双方向の通信を実現する。また、仮想インタフェース制御部１３２とデバイスインタフェース制御部２３２とは、プリンタ３００とＴＶチューナ３１０とに限らず、種々のＵＳＢデバイスのための通信を実現する。
【００３２】
なお、仮想インタフェース制御部１３２とデバイスインタフェース制御部２３２との間の通信方式としては、コンピュータ１００とＵＳＢデバイスとの間のＵＳＢ通信を実現する任意の方式を採用可能である。例えば、デバイスインタフェース制御部２３２は、デバイスサーバ２００とＵＳＢデバイスとの間の通信の一部のみを、コンピュータ１００に中継してもよい。
【００３３】
図２は、コンピュータ１００の起動時（電源ＯＮ）の処理の概要を示すシーケンス図である。ここでは、コンピュータ１００の起動前には、デバイスサーバ２００（ＵＳＢホストコントローラ２１８）は、ＵＳＢポート２１２、２１４（図１）のＶＢＵＳ端子からの電力供給を停止していることとしている。これにより、ＵＳＢポート２１２、２１４に接続されたＵＳＢデバイスによる消費電力は、ＶＢＵＳ端子から電力が供給されている場合と比べて、抑制されている（以下、ＵＳＢデバイスのこの状態を「第２状態」とも呼ぶ）。
【００３４】
ステップＳ１００では、ユーザがコンピュータ１００を起動させる（ユーザは、コンピュータ１００の電源をオンにする）。ステップＳ１１０では、動作状態データ送信部１３４が、自動的に起動し、ステップＳ１２０で、動作状態データ送信部１３４は、起動パケットをデバイスサーバ２００に送信する。起動パケットは、予め決められたデータ（以下「第１データ」とも呼ぶ）を含んでいる。第１データは、ＵＳＢデバイスに供給されるべきデータ（ＵＳＢの制御データ）とは異なるデータである。デバイスサーバ２００のデバイスインタフェース制御部２３２は、受信した第１データをＵＳＢデバイスには供給しない。第１データは、ＵＳＢデバイスによっては解釈されず、デバイスインタフェース制御部２３２によって解釈される。
【００３５】
ステップＳ１３０では、デバイスサーバ２００のデバイスインタフェース制御部２３２は、第１データを受信したことに応じて、全てのＵＳＢポート（ＵＳＢポート２１２、２１４）のＶＢＵＳ端子への電力の供給を、ＵＳＢホストコントローラ２１８に開始させる。ステップＳ１４０では、ＵＳＢポート２１２、２１４に接続された全てのＵＳＢデバイス（ここでは、プリンタ３００とＴＶチューナ３１０）は、受けた電力を利用して起動し、デバイスサーバ２００との通信を開始する。このように、デバイスサーバ２００に接続された全てのＵＳＢデバイスの状態は、デバイスサーバ２００と通信可能な状態（以下「第１状態」とも呼ぶ）になる。ここで、「ＵＳＢデバイスの状態が、デバイスサーバ２００と通信可能な状態である」とは、ＵＳＢデバイスとデバイスサーバ２００との少なくとも一方が、他方に対して、何らかのデータを供給した場合に、他方がそのデータに応じた処理を実行し得る状態を、意味している。次のステップＳ１５０では、デバイスインタフェース制御部２３２とＵＳＢホストコントローラ２１８とが、いわゆるバスエニュメレーション（Bus Enumeration）を開始して、ＵＳＢデバイスに関する種々の情報を取得する。ステップＳ１６０では、デバイスインタフェース制御部２３２は、ＵＳＢデバイスの起動完了を表すデータ（「起動完了データ」と呼ぶ）を含むパケットを、コンピュータ１００に送信する。起動完了データは、ＵＳＢ規格に適合する制御データではなく、コンピュータ１００の仮想インタフェース制御部１３２によって解釈される。
【００３６】
ステップＳ１７０では、コンピュータ１００の仮想インタフェース制御部１３２は、起動完了データを受信したことに応じて、ＵＳＢデバイスとの接続要求を開始する。続くステップＳ１８０ａ〜Ｓ１８０ｃでは、コンピュータ１００とデバイスサーバ２００との間の通信、および、デバイスサーバ２００とＵＳＢデバイスとの間の通信が行われる。これらの通信は、コンピュータ１００とＵＳＢデバイスとの間のデータ通信を確立するためのものである。ステップＳ１９０では、デバイスサーバ２００を介したコンピュータ１００とＵＳＢデバイスとの間のデータ通信が確立する。例えば、コンピュータ１００上で動作するアプリケーション（例えば、デバイスドライバ）と、ＵＳＢデバイスとの間の論理的な通信経路（ＵＳＢ規格では、「パイプ」とも呼ばれる）が、デバイスサーバ２００を介して確立する。このような通信経路は、ＵＳＢデバイスの種々の機能毎に、形成される。このように、仮想インタフェース制御部１３２は、ＵＳＢデバイスの種々の機能を利用するための通信を、デバイスサーバ２００のデバイスインタフェース制御部２３２を介して、行う。
【００３７】
これにより、デバイスインタフェース制御部２３２は、ＵＳＢデバイスがコンピュータ１００に接続された状態を、仮想的に実現する。コンピュータ１００上で動作するアプリケーション（例えば、ワードプロセッサ）は、デバイスサーバ２００の存在を認識せずに、ＵＳＢデバイスを利用することができる。デバイスサーバ２００に複数のＵＳＢデバイスが接続されている場合には、コンピュータ１００と全てのＵＳＢデバイスとの通信経路が確立する。
【００３８】
この後、コンピュータ１００をシャットダウンするまでは、コンピュータ１００とＵＳＢデバイスとの論理的な通信経路（パイプ）は維持される。これにより、コンピュータ１００をシャットダウンするまでの間は、いつでも、コンピュータ１００とＵＳＢデバイスとの間の通信を素速く開始することが可能である（ステップＳ１９５ａ〜Ｓ１９５ｃ）。その結果、コンピュータ１００上で動作するアプリケーションがＵＳＢデバイスを利用する場合に、ＵＳＢデバイスの準備完了を待つ時間が過剰に長くなる可能性を低減できる。
【００３９】
図３は、コンピュータ１００のシャットダウン時（電源ＯＦＦ）の処理の概要を示すシーケンス図である。ステップＳ２００では、ユーザがコンピュータ１００をシャットダウンする（ユーザは、コンピュータ１００の電源をオフにする）。ステップＳ２１０では、動作状態データ送信部１３４（図１）が、コンピュータ１００のオペレーションシステムに対して、シャットダウン処理の一時停止を要求する。ステップＳ２２０では、動作状態データ送信部１３４は、ＵＳＢデバイスの切断要求を、デバイスサーバ２００に送信する。ここでは、予め決められたデータ（第１データとは異なるデータ。以下「第２データ」とも呼ぶ）を含むパケットが、切断要求として利用される。第２データは、ＵＳＢデバイスに供給されるべきデータ（ＵＳＢ規格に適合する制御データ）とは異なるデータである。デバイスサーバ２００のデバイスインタフェース制御部２３２は、第２データをＵＳＢデバイスには供給しない。第２データは、ＵＳＢデバイスによっては解釈されずに、デバイスインタフェース制御部２３２によって解釈される。
【００４０】
ステップＳ２３０では、デバイスインタフェース制御部２３２は、第２データを受信したことに応じて、全てのＵＳＢデバイスとの通信を切断する処理を開始する。例えば、デバイスインタフェース制御部２３２は、全てのＵＳＢポートのバスの状態をサスペンド状態に移行させる。これにより、ステップＳ２４０では、デバイスサーバ２００に接続された全てのＵＳＢデバイスの状態が、サスペンド状態（Suspend State）に移行する。そして、ステップＳ２５０では、全てのＵＳＢデバイスが、ＵＳＢ通信を停止する。これに応じて、ステップＳ２６０では、デバイスインタフェース制御部２３２は、全てのＵＳＢポートのＶＢＵＳ端子への電力の供給を、停止する。これにより、デバイスサーバ２００に接続されたＵＳＢデバイス（ここでは、プリンタ３００とＴＶチューナ３１０）の消費電力は、ＶＢＵＳ端子から電力が供給されている場合と比べて、抑制される（第２状態）。
【００４１】
次のステップＳ２７０で、デバイスインタフェース制御部２３２は、ＵＳＢデバイスとの通信の切断が完了したことを、コンピュータ１００に通知する。ステップＳ２８０では、コンピュータ１００の動作状態データ送信部１３４が、デバイスサーバ２００からの通知に応じて、シャットダウン処理を再開する。これにより、コンピュータ１００のシャットダウン処理が進行し、ステップＳ２９０では、コンピュータのシャットダウンが完了する（コンピュータ１００とＵＳＢデバイスとの通信の切断も完了する）。なお、ステップＳ２７０を省略してもよい。この場合、動作状態データ送信部１３４は、第２データの送信が完了したことに応じて、シャットダウン処理を再開すればよい。
【００４２】
以上のように、コンピュータ１００の動作状態データ送信部１３４（図１）は、コンピュータ１００の起動時に、第１データをデバイスサーバ２００に送信する（図２：Ｓ１２０）。そして、デバイスサーバ２００のデバイスインタフェース制御部２３２は、第１データを受信したことに応じてＶＢＵＳ端子への電力供給を開始することによって、ＵＳＢデバイスの状態をデバイスサーバ２００と通信可能な第１状態にする（図２：Ｓ１３０〜Ｓ１５０）。この結果、コンピュータ１００がＵＳＢデバイスを利用する場合に、コンピュータ１００の準備完了を待つ時間が過剰に長くなる可能性を低減できる。なお、第１実施例では、ＵＳＢデバイスの状態を第１状態に移行させるための条件（第１条件）は、第１データを受信したこと、である。
【００４３】
さらに、コンピュータ１００の動作状態データ送信部１３４（図１）は、コンピュータ１００のシャットダウン時に、第２データをデバイスサーバ２００に送信する（図３：Ｓ２２０）。デバイスサーバ２００のデバイスインタフェース制御部２３２は、第２データを受信したことに応じてＶＢＵＳ端子への電力供給を停止することによって、ＵＳＢデバイスの状態を、第１状態よりも消費電力の小さい第２状態にする（図３：Ｓ２３０〜Ｓ２６０）。この結果、ＵＳＢデバイスが利用されない状況下において、消費電力を抑制することができる。なお、第１実施例では、ＵＳＢデバイスの状態を第２状態に移行させるための条件（第２条件）は、第２データを受信したこと、である。
【００４４】
また、コンピュータ１００の仮想インタフェース制御部１３２は、コンピュータ１００の起動時に、コンピュータ１００を介したＵＳＢデバイスとのデータ通信を確立することによって、コンピュータ１００にＵＳＢデバイスが接続された状態を仮想的に実現する（図２：Ｓ１７０〜Ｓ１９０）。これにより、コンピュータ１００がＵＳＢデバイスを利用する場合に、ＵＳＢデバイスの準備完了を待つ時間が過剰に長くなる可能性を効果的に低減できる。
【００４５】
Ｂ．第２実施例：
図４は、第２実施例のシステム９１０を示す説明図である。図４（Ａ）〜図４（Ｅ）は、システム９１０の状態が変化する様子を５段階で示している（状態が、図４（Ａ）〜図４（Ｅ）の順に変化する）。このシステム９１０の構成は、図１のシステム９００に、ネットワークＮＴに接続された別のコンピュータ１００ａを追加して得られる構成と、同じである。システム９１０の構成要素のうちの、図１のシステム９００の構成要素と同じ要素には、同じ符号が付されている。また、図４では、詳細な構成の図示が省略されている。例えば、第１コンピュータ１００とデバイスサーバ２００とは、図１のコンピュータ１００とデバイスサーバ２００と同じ構成を、それぞれ、有している。また、第２コンピュータ１００ａは、第１コンピュータ１００の構成（図１）と同じ構成を有している。これらのコンピュータ１００、１００ａは、デバイスサーバ２００を介してＵＳＢデバイス３００、３１０を利用可能である。ただし、第２実施例においては、各構成要素によって実行される処理の内容の一部が、第１実施例のものとは異なっている。
【００４６】
図５は、デバイスインタフェース制御部２３２（図１）によって実行される制御処理の手順を示すフローチャートである。第２実施例では、デバイスインタフェース制御部２３２は、起動中のコンピュータの総数が１以上である場合には、ＵＳＢデバイスを第１状態（デバイスサーバ２００と通信可能な状態）に維持する（以下、起動中のコンピュータの総数を「アクティブホスト数」とも呼ぶ）。そして、デバイスインタフェース制御部２３２は、アクティブホスト数が０である場合に、ＵＳＢデバイスを第２状態（消費電力が小さい状態）に維持する。
【００４７】
デバイスインタフェース制御部２３２は、以下のようにして、アクティブホスト数を算出する。各コンピュータ１００、１００ａは、それぞれ、起動時に第１データをデバイスサーバ２００に送信する。そして、各コンピュータ１００、１００ａは、それぞれ、シャットダウン時に第２データをデバイスサーバ２００に送信する。デバイスサーバ２００のデバイスインタフェース制御部２３２は、第１データ（起動時のデータ）を受信した回数から、第２データ（シャットダウン時のデータ）を受信した回数を減算することによって、アクティブホスト数を算出する。
【００４８】
第２実施例では、コンピュータ１００、１００ａが起動するよりも先に、デバイスサーバ２００が起動することとする。そして、デバイスインタフェース制御部２３２は、デバイスサーバ２００が起動した時点ではアクティブホスト数がゼロであることと仮定して、動作する。図４（Ａ）の状態は、全てのコンピュータ１００、１００ａが停止し、デバイスサーバ２００が起動している状態を示している。デバイスサーバ２００は、全てのＵＳＢポートのＶＢＵＳ端子への電力の供給を停止している。全てのＵＳＢデバイス３００、３１０の状態は、第２状態（消費電力が小さい状態）である。なお、デバイスインタフェース制御部２３２は、ユーザによって設定された値を、アクティブホスト数の初期値として利用してもよい。
【００４９】
図５の最初のステップＳ３１０では、デバイスサーバ２００のデバイスインタフェース制御部２３２（図１）は、受信したデータが第１データであるか否かを判定する。
【００５０】
受信したデータが第１データである場合には、ステップＳ３１２で、デバイスインタフェース制御部２３２は、現時点においてＶＢＵＳ端子からの電力供給が停止しているか否かを判定する。電力供給が停止している場合には、ステップＳ３１４で、デバイスインタフェース制御部２３２は、全てのＵＳＢポート（ＵＳＢポート２１２、２１４）のＶＢＵＳ端子への電力の供給を、ＵＳＢホストコントローラ２１８に開始させる。そして、デバイスインタフェース制御部２３２は、全てのＵＳＢデバイス（プリンタ３００、ＴＶチューナ３１０）との通信を開始する（第１状態）。電力供給が既に行われている場合には、ステップＳ３１４はスキップされる（Ｓ３１２：Ｎｏ）。
【００５１】
次のステップＳ３１６では、デバイスインタフェース制御部２３２は、ＵＳＢデバイスの起動完了を表すデータを含むパケットを、第１データを送信したコンピュータに送信する。この処理は、図２のステップＳ１６０の処理と同じである。なお、第２実施例では、コンピュータの仮想インタフェース制御部１３２（図１）は、ＵＳＢデバイスとの接続要求（図１のステップＳ１７０〜Ｓ１９０）を、自動的にではなく、ユーザの指示に応じて開始する。従って、第２実施例では、ユーザの指示が無ければ、コンピュータとＵＳＢデバイスとの間の論理的な通信経路（パイプ）は確立されない。ただし、ＵＳＢデバイスの状態は第１状態であるので、ＵＳＢデバイスを利用する場合には、ＵＳＢデバイスの準備完了を待つ時間が過剰に長くなる可能性を低減できる。
【００５２】
図４（Ｂ）は、図４（Ａ）の状態から第１コンピュータ１００が起動した状態を示している。この状態では、デバイスサーバ２００は、全てのＵＳＢポートに電力を供給するので、全てのＵＳＢデバイス３００、３１０の状態が、第１状態（デバイスサーバ２００と通信可能な状態）である。
【００５３】
次のステップＳ３１８では、デバイスサーバ２００のデバイスインタフェース制御部２３２（図１）は、アクティブホスト数を更新する。第１データを受信した場合には、デバイスインタフェース制御部２３２は、アクティブホスト数に１を加算する。図４（Ｂ）の状態では、アクティブホスト数が「１」に更新される。
【００５４】
図４（Ｃ）は、図４（Ｂ）の状態から第２コンピュータ１００ａが起動した状態を示している。デバイスサーバ２００は、既に全てのＵＳＢポートに電力を供給しているので、電力を供給する処理（図５：Ｓ３１４）を繰り返すことをせずに、アクティブホスト数を「２」に更新する。
【００５５】
起動中のコンピュータの仮想インタフェース制御部１３２（図１）は、ユーザの指示に応じて、ＵＳＢデバイスとの論理的な通信経路を確立する。この処理は、図２のステップＳ１７０〜Ｓ１９０と同様に行われる。これにより、そのコンピュータは、ＵＳＢデバイスを利用することができる。また、仮想インタフェース制御部１３２は、ユーザの指示に応じて、ＵＳＢデバイスとの論理的な通信経路を切断する。これにより、他のコンピュータが、そのＵＳＢデバイスを利用することができる。なお、デバイスサーバ２００のデバイスインタフェース制御部２３２は、コンピュータから切断指示を受けた場合も、デバイスサーバ２００とＵＳＢデバイスとの間の通信を維持することが好ましい。こうすれば、他のコンピュータから接続要求を受けた場合に、素速く、コンピュータとＵＳＢデバイスとの通信を開始できる。
【００５６】
図５の手順において、受信したデータが第２データである場合には、デバイスインタフェース制御部２３２は、処理をステップ３２２に進行させる（ステップＳ３１０：Ｎｏ、ステップＳ３２０：Ｙｅｓ）。ステップＳ３２２では、デバイスインタフェース制御部２３２は、アクティブホスト数を更新する。第２データを受信した場合には、デバイスインタフェース制御部２３２は、アクティブホスト数から１を減算する。
【００５７】
次のステップＳ３２４では、デバイスインタフェース制御部２３２は、更新後のアクティブホスト数がゼロであるか否かを判定する。更新後のアクティブホスト数がゼロである場合には、次のステップＳ３２６で、デバイスインタフェース制御部２３２は、全てのＵＳＢデバイスとの通信を切断する処理を開始する。そして、ステップＳ３２８で、デバイスインタフェース制御部２３２は、全てのＵＳＢポートのＶＢＵＳ端子への電力の供給を、ＵＳＢホストコントローラ２１８に停止させる。これらのステップＳ３２６〜Ｓ３２８は、図３のステップＳ２３０〜Ｓ２６０と同じである。このように、デバイスインタフェース制御部２３２は、起動中のコンピュータ（アクティブホスト）の数がゼロになった場合に、ＵＳＢデバイスの状態を第２状態（消費電力が小さい状態）に移行させる。
【００５８】
アクティブホスト数がゼロではない（１以上である）場合には、デバイスインタフェース制御部２３２は、ステップＳ３２６、Ｓ３２８をスキップする。このように、デバイスインタフェース制御部２３２は、起動中のコンピュータの数が１以上である場合には、ＵＳＢデバイスの状態を第１状態（デバイスサーバ２００と通信可能な状態）に維持する。
【００５９】
次のステップＳ３２９では、デバイスインタフェース制御部２３２は、ＵＳＢデバイスとの通信の切断が完了したことを、コンピュータ１００に通知する。このステップＳ３２９は、図３のステップＳ２７０と同じである。このステップＳ３２９を省略してもよい。
【００６０】
図４（Ｄ）は、図４（Ｃ）の状態から第１コンピュータ１００がシャットダウンした状態を示している。この状態では、更新後のアクティブホスト数が「１」であるので、デバイスインタフェース制御部２３２は、全てのＵＳＢポートへの電力供給を継続する。
【００６１】
図４（Ｅ）は、図４（Ｄ）の状態から第２コンピュータ１００ａがシャットダウンした状態を示している。この状態では、更新後のアクティブホスト数が「０」であるので、デバイスインタフェース制御部２３２は、全てのＵＳＢポートへの電力供給を停止している。
【００６２】
受信したデータが、第１データと第２データとのいずれでも無い場合には（Ｓ３１０：Ｎｏ、Ｓ３２０：Ｎｏ）、デバイスインタフェース制御部２３２は、起動とシャットダウンのための処理をスキップする。このような場合としては、例えば、デバイスサーバ２００が、コンピュータからＵＳＢデバイスに対するデータを受信した場合がある。
【００６３】
以上のように、第２実施例では、起動しているコンピュータの総数が１以上である場合には、ＵＳＢデバイスが第１状態に維持される。従って、ＵＳＢデバイスを利用し得るコンピュータの総数が複数である場合に、起動しているコンピュータが、複数のコンピュータのうちのいずれであっても、ＵＳＢデバイスが第１状態に維持される。これにより、ＵＳＢデバイスを利用するコンピュータが、複数のコンピュータのうちのいずれであっても、ＵＳＢデバイスの準備完了を待つ時間が過剰に長くなる可能性を低減できる。また、全てのコンピュータがシャットダウンした場合には、ＵＳＢデバイスの状態が第２状態に移行する。これにより、ＵＳＢデバイスが利用されない状況下において、消費電力を抑制することができる。
【００６４】
Ｃ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００６５】
変形例１：
上記各実施例において、デバイスインタフェース制御部２３２（図１）は、第１データとして、予め決められたデータに限らず、種々のデータを利用可能である。例えば、コンピュータの中には、起動時にＤＨＣＰを利用してネットワークに接続するものがある。このようなコンピュータを利用する場合には、デバイスインタフェース制御部２３２は、ＤＨＣＰのディスカバーメッセージを第１データとして利用してもよい。こうすれば、デバイスサーバ２００は、ディスカバーメッセージを利用して適切に動作することが可能である。そして、コンピュータから、デバイスサーバ２００を利用するためだけの専用の機能（第１データを送信する機能）を省略することができる。その結果、コンピュータの構成が過剰に複雑になる可能性を低減できる。ここで、デバイスインタフェース制御部２３２は、ディスカバーメッセージの送信元装置のネットワークアドレス（例えば、ＭＡＣアドレス）が、予め設定されたアドレス（「許可アドレス」と呼ぶ）と一致した場合にのみ、そのディスカバーメッセージを第１データとして利用してもよい。デバイスインタフェース制御部２３２は、ユーザの指示に応じて、許可アドレスを設定すればよい。
【００６６】
また、上記第１実施例において、仮想インタフェース制御部１３２（図１）は、コンピュータ１００とＵＳＢデバイスとの間の論理的な通信経路を、自動的ではなくユーザの指示に応じて確立してもよい。また、上記第２実施例において、仮想インタフェース制御部１３２は、コンピュータとＵＳＢデバイスとの間の論理的な通信経路を、自動的に確立してもよい。この場合には、デバイスインタフェース制御部２３２は、或るコンピュータとＵＳＢデバイスとの通信経路が確立している状態では、他のコンピュータとそのＵＳＢデバイスとの通信経路の確立を禁止してもよい。
【００６７】
また、上記各実施例において、仮想インタフェース制御部１３２および動作状態データ送信部１３４によってデバイスサーバ２００のネットワーク上のアドレスを特定する方法としては、種々の方法を採用可能である。例えば、予めユーザによってデバイスサーバ２００のアドレスが設定されてもよい。この代わりに、動作状態データ送信部１３４あるいは仮想インタフェース制御部１３２が、ネットワークをスキャンすることによって、デバイスサーバ２００のアドレスを特定してもよい。
【００６８】
変形例２：
上記各実施例において、周辺装置の第１状態としては、サーバ装置のデバイスインタフェースから電力供給を受ける状態に限らず、デバイスインタフェースと通信可能な任意の状態を採用可能である。「周辺装置の状態が、デバイスインタフェースと通信可能な状態である」とは、周辺装置とデバイスインタフェースとの少なくとも一方が、他方に対して、何らかのデータを供給した場合に、他方がそのデータに応じた処理を実行し得る状態を意味している。例えば、周辺装置が、デバイスインタフェースから受信した動作モード切替指示データに応じて、動作モードを切り替える場合には、周辺装置の状態は、デバイスインタフェースと通信可能な状態である。動作モード切替指示データは、例えば、ＵＳＢデバイスの状態を或る状態（例えば「Address状態」）から他の状態（例えば、「Configured状態」）へ切り替える指示データであり得る。また、周辺装置が、デバイスインタフェースから受信したデータ（例えば、画像データ）に応じて、受信したデータに応じた処理（例えば、画像の印刷）を実行する場合も、周辺装置の状態は、デバイスインタフェースと通信可能な状態である。また、デバイスインタフェースが、周辺装置から受信したデータ（例えば、マウスの移動量）に応じて、受信したデータをデバイスインタフェース制御部２３２に供給する場合も、周辺装置の状態は、デバイスインタフェースと通信可能な状態である（ここで、デバイスインタフェース制御部２３２は、デバイスインタフェースから受信したデータを、クライアント装置（例えば、デバイスドライバ）に送信してもよい）。通常は、周辺装置がデバイスインタフェースから電力供給を受けている場合には、周辺装置の状態は、デバイスインタフェースと通信可能な状態である。
【００６９】
周辺装置の第２状態としては、サーバ装置のデバイスインタフェースからの電力供給が停止した状態に限らず、第１状態と比べて周辺装置での消費電力が小さい任意の状態を採用可能である。例えば、第２状態は、デバイスインタフェースから電力の供給を受ける状態であってもよい。また、第２状態は、サーバ装置と通信可能な状態であってもよく、サーバ装置と通信できない状態であってもよい。例えば、ＵＳＢ規格のサスペンド状態を第２状態として採用してもよい。そして、サスペンド状態からレジュームされた状態（例えば、「Configured状態」）を第１状態として採用してもよい（ＵＳＢデバイスがサスペンド状態にある場合、ＵＳＢデバイスの状態は、サーバ装置（サーバ装置のデバイスインタフェース）と通信可能な状態であり、ＵＳＢデバイスの消費電力は、レジュームされた状態と比べて、小さい）。また、ＵＳＢ規格のサスペンド状態を第１状態として採用し、デバイスインタフェースからの電力供給が停止した状態を第２状態として採用してもよい。
【００７０】
変形例３：
上記各実施例において、デバイスインタフェース（周辺装置の接続インタフェース）としては、ＵＳＢインタフェースに限らず、他の任意のインタフェースを採用可能である。例えば、ＩＥＥＥ１３９４やｅＳＡＴＡ（External Serial ATA）に適合するインタフェースを採用してもよい。ＩＥＥＥ１３９４インターフェースは、ＵＳＢインタフェースと同様に、電力供給端子を含むので、ＩＥＥＥ１３９４インターフェースを採用すれば、電力供給の開始と停止とのよる制御が可能である。また、デバイスインタフェースとしては、有線のインタフェースに限らず、無線のインタフェースを採用してもよい。
【００７１】
変形例４：
上記各実施例において、デバイスサーバ２００を利用するクライアント装置としては、汎用のパーソナルコンピュータに限らず、任意の装置を採用可能である。例えば、クライアント装置が、携帯情報端末（Personal Digital Assistant）や、携帯電話や、タブレットコンピュータであってもよい。
【００７２】
変形例５：
上記各実施例において、デバイスサーバ２００のネットワークインタフェースは、有線のインタフェースであってもよく、無線のインタフェースであってもよい。同様に、クライアント装置のネットワークインタフェースも、有線のインタフェースであってもよく、無線のインタフェースであってもよい。
【００７３】
変形例６：
上記各実施例において、サーバ装置（デバイスインタフェース制御部２３２）による中継処理としては、種々の処理を採用可能である。例えば、デバイスインタフェース制御部２３２は、クライアント装置と周辺装置との間の通信を、何ら加工することなく中継してもよい。この代わりに、デバイスインタフェース制御部２３２は、サーバ装置と周辺装置との間の通信（デバイスインタフェース通信とも呼ぶ）に基づいて、デバイスインタフェース通信とは異なる方式の通信を仮想インタフェース制御部１３２と行ってもよい。
【００７４】
変形例７：
上記各実施例において、周辺装置としては、プリンタ３００とＴＶチューナ３１０とに限らず、スキャナやハードディスクドライブといった任意の周辺装置を採用可能である。また、デバイスサーバ２００に接続可能な周辺装置の総数は、１であってもよく、３以上であってもよい。
【００７５】
変形例８：
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図１のデバイスインタフェース制御部２３２の機能を、論理回路を有するハードウェア回路によって実現してもよい。
【００７６】
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア（コンピュータプログラム）は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【符号の説明】
【００７７】
１００...コンピュータ（第１コンピュータ）
１００ａ...第２コンピュータ
１１０...ネットワークポート
１２０...制御部
１３０...ＣＰＵ
１３２...仮想インタフェース制御部
１３４...動作状態データ送信部
１４０...メモリ
１５０...不揮発性メモリ
２００...デバイスサーバ
２１０...ネットワークポート
２２０...制御部
２３０...ＣＰＵ
２３２...デバイスインタフェース制御部
２４０...メモリ
２５０...不揮発性メモリ
３００...プリンタ
９００、９１０...システム
２１２...第１ＵＳＢポート２１２
２１４...第２ＵＳＢポート２１４
１３２ｉ...仮想ＵＳＢインタフェース
ＮＴ...ネットワーク
【図１】
0005143191.tif 000002
【図２】
0005143191.tif 000003
【図３】
0005143191.tif 000004
【図４】
0005143191.tif 000005
【図５】
0005143191.tif 000006