【文献】
"USBデバイスサーバ SX-DS-3000WAN",[Online],日本,サイレックス・テクノロジー株式会社,[2017年4月12日検索], <URL: http://www.silex.jp/products/usbdeviceserver/sxds3000wan.html>
(58)【調査した分野】(Int.Cl.,DB名)
少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバを備える周辺機器サーバシステムのデバイス制御方法であって、
前記USBデバイスの各デバイスを検出するデバイス検出ステップと、
前記検出された各デバイスのUSBディスクリプタ情報を取得し、当該USBディスクリプタ情報を保持するデバイス情報取得ステップと、
前記クライアントから通知を受けると、ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスの前記USBディスクリプタ情報を1つの複合デバイスとして再構成し、当該再構成したUSBディスクリプタ情報を保持し、前記クライアントへ当該再構成したUSBディスクリプタ情報を送信する制御ステップと、
前記クライアントと前記USBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するステップと
前記クライアントとの間でデータ入出力を制御するUSBディスクリプタ情報を前記クライアントへ通知するステップと
を含むデバイス制御方法。
【発明を実施するための形態】
【0017】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0018】
なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、構成要素、構成要素の接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。
【0019】
<従来の周辺機器サーバシステムの構成>
はじめに、従来の周辺機器サーバの接続システムについて、
図7を用いて説明する。
【0020】
図7は、従来の周辺機器サーバの接続システムの構成図を示している。
【0021】
図7で示す周辺機器サーバシステムでは、周辺機器サーバ710にUSBケーブル730でUSBデバイス720が接続され、クライアントPC700はネットワーク740経由で、周辺機器サーバ710に接続されたUSBデバイス(プリンタ)720を制御する。
【0022】
つぎに従来の周辺機器サーバシステムについて説明する。
図8は、従来の周辺機器サーバシステムにおけるクライアントPC700および周辺機器サーバ710の機能ブロック図を示したものである。
【0023】
クライアントPC700は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、CPU、入力部、表示部、メモリ、記憶装置、ネットワークI/Fなど(図示しない)が内部バスで接続されている。また、クライアントPC700は、周辺機器サーバ710を介してUSBデバイス720との間でTCP接続確立(以後、コネクション確立と呼ぶ)を行い、入出力データを送受信することが可能となる。
【0024】
クライアントPC700には、アプリケーション800と接続ユーティリティ810とデバイスドライバ820とUSBクラスドライバ830と仮想USBポートドライバ840と通信制御部1050がソフトウェア部品として存在している。この他のソフトウェア部品としては、図示しないOS(Operating System)などがあり、制御に必要な各種データと共に記憶装置に格納されている。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
【0025】
接続ユーティリティ810は、データの監視、制御などを担う。つまり、仮想USBポートドライバ840を介して、ネットワーク740経由で周辺機器サーバ710と送受信を行うことにより、周辺機器サーバ710に接続されたUSBデバイス720を認識する。
【0026】
接続ユーティリティ810は、さらにUSBデバイス720のデバイス情報を受信し、受信したデバイス情報をもとに、USBデバイス720とのデータ入出力に必要なドライバソフトウェア部品を特定する。
【0027】
デバイスドライバ820は、OSやアプリケーション800など上位層のソフトウェアの指示により、USBデバイス720に対する制御コマンドを生成する一方、この制御コマンドに対するUSBデバイスからの応答を待ち、周辺機器サーバ710から当該応答を上位層のソフトウェアへ通知する。
【0028】
USBクラスドライバ830は、それぞれのUSBデバイスが備えている機能(HID、プリンタ、ストレージなど)に応じたドライバであり、周辺機器サーバ710に接続されたUSBデバイスに対応するクラスドライバがロードされる。
【0029】
仮想USBポートドライバ840は、アプリケーションプログラム800、デバイスドライバ820、USBクラスドライバ830を経由するデータあるいはコマンドのやりとりについて、ネットワーク740を介して周辺機器サーバ710の仮想USBポートドライバ870との間で入出力制御を行う。また、ネットワーク740を介してUSBデバイス720との間で送受信されるIPパケットをカプセル化・デカプセル化することで、USBデバイス720がクライアントPC700に直結しているかのように動作することを提供する。
【0030】
通信制御部850は、仮想USBポートドライバ840から要求されるデータ入出力について、ネットワーク740を介して周辺機器サーバ710と送受信するソフトウェアである。仮想USBポートドライバ840からデータ入出力を要求された場合、USBデバイス720に対してTCP接続し、通信を開始する。また、通信を完了するとTCP接続を切断する。
【0031】
つぎに、従来の周辺機器サーバ710について説明する。
【0032】
周辺機器サーバ710のハードウェア構成は、CPU、メモリ、記憶装置、ネットワークI/F、USB規格に準拠したI/Fなど(図示しない)が内部バスで接続されている。
【0033】
周辺機器サーバ710は、通信制御部860、仮想USBポートドライバ870、デバイス情報取得部880、デバイス検出部890を備えている。これら各機能は、CPUの制御に従い、メモリ上に読み出されて各種制御を実行する。
【0034】
デバイス検出部890は、周辺機器サーバ710に接続されたデバイスを検出する機能部である。
【0035】
デバイス情報取得部880は、USBデバイス720からUSB規格に準拠したI/F(図示しない)を介して、後述するデバイス識別情報、デバイス構成情報及び機能識別情報を取得し、メモリに保持する機能部である。
【0036】
仮想USBポートドライバ870は、ネットワーク740を介して、クライアントPC700の仮想USBポートドライバ840との間で入出力制御を行う。また、ネットワーク740を介して送受信されるIPパケットをカプセル化・デカプセル化することで、USBデバイス720がクライアントPC700と直結しているかのように動作することを可能にするネットワーク仮想制御ソフトウェアである。
【0037】
通信制御部860は、仮想USBポートドライバ870が受け付けたデータ入出力要求(通信路の確保と解放)に応じてUSBデバイス720との通信路を制御する機能部である。
【0038】
ここで、デバイス情報取得部がUSBデバイスから取得するデバイス情報とは、デバイス識別情報、デバイス構成情報、機能識別情報などのデバイスに関する情報のことであり、データ・テーブルの形で階層的に記述されている。つまり、USBデバイスにおいてはUSBディスクリプタ情報に相当する。
【0039】
具体的には、デバイス識別情報とは、デバイスメーカーを識別するために製造したメーカー毎に割り当てられたベンダーID、機種ID・モデルを識別するために機種毎に割り当てられた製品ID、機器毎に割り当てられたシリアル番号、コンフィギュレーションの数などに相当し、これらはデバイスディスクリプタに記載されている。また、デバイス構成識別情報とは、デバイスが備えるインタフェースの数などに相当し、これらはコンフィギュレーションディスクリプタに記載され、多くのデバイスはコンフィギュレーションが1 つとなっている。さらに、機能識別情報とは、各デバイスが備える機能(たとえば、キーボード、マウスなどのインターフェイスクラス)情報、インタフェース自身の番号、そのインタフェースのバリエーションの番号、エンドポイントの数などに相当し、これらはインタフェースディスクリプタに記載されている。
また、デバイス情報には、その他にもエンドポイントのデータ転送種別・転送方向・パケットサイズ、ポーリング時間を記載したエンドポイントディスクリプタが含まれ、さらに必須ではないが文字列を格納するストリングディスクリプタ、ハイスピード対応USBデバイスで使用される各種ディスクリプタなども適宜含まれる。
【0040】
つぎに、本発明における周辺機器サーバシステムについて、詳細に説明する。
【0041】
<本発明における周辺機器サーバシステムの構成>
図1は、本発明を実現するための周辺機器サーバシステムの接続構成図を示している。
【0042】
クライアンPC100とクライアントPC101と周辺機器サーバ102とUSBデバイス104、106、108および110から構成される。
【0043】
図1で示すように、周辺機器サーバ102に複数のUSBデバイス104、106、108および110をUSB規格のインタフェースに準拠した接続ケーブル105、107、109、111で接続しており、クライアントPC100、101は、有線又は無線によってネットワーク103を介して接続している。クライアントPCは、システムの実態により、1つでも複数でも構わない。
【0044】
つぎに、周辺機器サーバシステムを構成する各装置について説明する。
<クライアントPC100の構成>
クライアントPC100のハードウェア構成について、
図2aを用いて説明する。
【0045】
クライアントPC100は、CPU200、入力部201、メモリ202、記憶装置203、通信I/F部204から構成され、各々が内部バス205で接続されている。
【0046】
CPU200は、所定の制御プログラムを実行するプロセッサであり、クライアントPC100を全体的に制御する。
【0047】
入力部201は、各種入力、ユーザの指示操作などを行なうための操作部であり、例えばキーボードやマウスなどで構成される。
【0048】
メモリ202は、ROM(Read Only Memory)およびRAM(Random Access Memory)で構成される記憶領域であり、所定のプログラムやデータを格納する。
【0049】
記憶装置203は、OS(Operating System)206、アプリケーションプログラム207、接続ユーティリティ208、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211、通信制御部212を備えたソフトウェアプログラムを格納する。
【0050】
通信I/F部204は、IEEE802.3規格に準拠した有線ネットワーク、またはIEEE802.11規格に準拠した無線ネットワークなど、ネットワーク103に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、周辺機器サーバ102とデータ通信を行うことで、クライアントPC100から入出力データを送受信することが可能となる。
【0051】
つぎに、クライアントPC100の機能ブロックについて、
図2bを用いて説明する。
【0052】
デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211は、接続ユーティリティ208からUSBデバイス104、106、108および110のデバイス情報を取得、登録することにより、動的に生成されるドライバである。
【0053】
アプリケーションプログラム207は、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211の各ドライバソフトウェア部品が生成された後、USBデバイス104、106、108および110に対して、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211を介して、通信制御部212にデータの入出力を要求するアプリケーションソフトウェアである。
【0054】
接続ユーティリティ208は、OS206が起動している間、常に待機および動作しているソフトウェアである。ネットワーク103上にある周辺機器サーバ102と送受信を行うことにより、周辺機器サーバ102に接続されたUSBデバイス104、106、108および110を認識し、さらにそのデバイス情報を受信してこれをもとに、デバイス104、106、108および110とのデータ入出力に必要なドライバを特定する。
【0055】
デバイスドライバ209は、OS206やアプリケーションプログラム207など上位層のソフトウェアの指示により、USBデバイス104、106、108および110に対する制御コマンドを生成し、この制御コマンドに対するUSBデバイスからの応答を待ち、周辺機器サーバ102を経由したこのUSBデバイス応答を上位層のソフトウェアへ通知するソフトウェアである。
【0056】
USBクラスドライバ210は、プラグアンドプレイイベントを生成し、また、制御コマンドを送受信するためのUSBポートを作成する。また、その上位にデバイスドライバ209をロードし、さらに、デバイスドライバ209で生成される制御コマンドをUSBパケットに変換し、またはUSBパケットを制御コマンドに変換するソフトウェアである。
【0057】
仮想USBポートドライバ211は、アプリケーションプログラム207、デバイスドライバ209、USBクラスドライバ210を経由するデータあるいはコマンドのやりとりについて、ネットワーク103を介して周辺機器サーバ102の仮想USBポートドライバ308との間で入出力制御を行う。また、ネットワーク103を介してUSBデバイスとの間で送受信されるIPパケットをカプセル化・デカプセル化することで、クライアントPC100がUSBデバイス104、106、108および110に直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【0058】
通信制御部212は、仮想USBポートドライバ211から要求されるデータ入出力について、通信I/F部経由で、ネットワークを介して周辺機器サーバ102と送受信するソフトウェアである。仮想USBポートドライバ211からデータ入出力を要求された場合、USBデバイス104、106、108および110に対してTCP接続し、通信を開始する。また、通信を完了するとTCP接続を切断する。
【0059】
<周辺機器サーバ102の構成>
つぎに、周辺機器サーバ102のハードウェア構成について、
図3aを用いて説明する。
【0060】
周辺機器サーバ102は、CPU300、メモリ301、記憶装置302、通信I/F部303などから構成されており、これらが内部バス304で接続されている。
【0061】
CPU300は、所定の制御プログラムを実行するプロセッサであり、周辺機器サーバ102を全体的に制御する。
【0062】
メモリ301は、ROMおよびRAMで構成される記憶領域であり、所定のプログラムやデータを格納する。
【0063】
記憶装置302は、デバイス検出部305、デバイス情報取得部306、接続情報制御部307、通信制御部308を備えた機能ブロックなどが格納されている。
【0064】
通信I/F部303は、IEEE802.3規格に準拠した有線ネットワーク、またはIEEE802.11規格に準拠した無線ネットワークなど、ネットワーク103に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、ネットワーク103を介することで、クライアントPC100とUSBデバイス104、106、108および110との間で入出力データを送受信することが可能となる。
【0065】
つぎに、周辺機器サーバ102の機能ブロックについて、
図3bを用いて説明する。
【0066】
デバイス検出部305は、周辺機器サーバ102に接続されたデバイスを検出する機能部である。
【0067】
デバイス情報取得部306は、USBデバイス104、106、108および110から通信I/F部303を介してデバイス識別情報、デバイス構成情報および機能識別情報を取得し、メモリ301に保持する機能部である。
【0068】
接続情報制御部307は、クライアントPC100からの要求に応じて、デバイス情報取得部306が取得したUSBデバイス104、106、108および110のデバイス識別情報、デバイス構成情報及び機能識別情報をもとに、後述する情報の再構成を行い、メモリ301に保持し、クライアントPC100に対して通知し、クライアントPC100からのデータ入出力要求を受け付ける機能部であり、本発明の最も重要な構成要素である。
【0069】
仮想USBポートドライバ308は、上位層の接続情報制御部307へデータ入出力を行い、ネットワーク103を介して、クライアントPC100の仮想USBポートドライバ211との間で入出力制御を行う。また、ネットワーク103を介して送受信されるIPパケットをカプセル化・デカプセル化することで、クライアントPC100と直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【0070】
通信制御部309は、仮想USBポートドライバ308が受け付けたデータ入出力要求(通信路の確保と解放)に応じてUSBデバイス104、106、108および110との通信路を制御する機能部である。
【0071】
上述したデバイス情報取得部306と接続情報制御部307によって、クライアントPC100から受信するデータ入出力要求に対して、プロトコル上に指定されているUSBデバイス104、106、108および110を識別するための情報(デバイス識別情報)とUSBデバイス104、106、108および110が備える各機能の情報(機能識別情報)を基に判断し、通信制御部309を介して、クライアントPC100がデータ入出力を求めるUSBデバイス104、106、108および110の機能を特定する。これによって、1台または複数のデバイスとの間でデータ入出力の制御が可能となる。
【0072】
図4を用いて、クライアントPC100と周辺機器サーバ102とUSBデバイス(デバイス104、106、108および110)との間のコネクション確立とプラグアンドプレイ完了までのシーケンス図を説明する。
【0073】
ステップS400では、デバイス検出部305が周辺機器サーバに接続されたデバイスの検出を行う。デバイス情報取得部306は、デバイス検出部305で検出したデバイス情報を取得し、メモリ301に保持する。
【0074】
ステップS401では、クライアントPC100の接続ユーティリティ208を介して周辺機器サーバ102と周辺機器サーバ102に接続しているUSBデバイスに対し、ブロードキャスト通信、マルチキャスト通信または特定の周辺機器サーバに接続されているUSBデバイスに対するユニキャスト通信を行い、各デバイスのデバイス情報を取得し、メモリ202に保持する。
【0075】
また、デバイス情報の取得は、上述の各種通信からではなく、サーバにあらかじめ使用可能であるデバイス情報を製品出荷の段階でメモリ301に書き込んでおいてもよいし、メモリ301に書き込まれた初期出荷時からの内容にアップデート処理によって行われてもよい。
【0076】
ステップS402では、クライアントPC100の接続ユーティリティ208からユーザが利用したいデバイスの指示を行う、あるいは接続ユーティリティ208に予め設定されたデバイス情報をもとに、周辺機器サーバ102に対し、クライアントPCが接続を希望する複数のUSBデバイスを特定した「複数USBデバイス接続」要求コマンドを送信することで指定されたデバイス全体を一つとするコネクション確立要求を行う。
【0077】
ステップS403では、周辺機器サーバ102の接続情報制御部307が、クライアントPC100の仮想USBポートドライバ211へ「複数USBデバイス接続」要求コマンドに対する応答を通知する。
【0078】
ステップS404では、クライアントPC100の仮想USBポートドライバ211が、周辺機器サーバ102からの「複数USBデバイス接続」要求コマンドの応答を受け、接続しようとするすべてのデバイスに対し、まとめて(一度に)コネクション確立の完了を通知する。
【0079】
ステップS405では、周辺機器サーバ102の接続情報制御部307が、仮想USBポートドライバ308を介して、ステップS404のクライアントPC100からの通知を受けて、取得しているデバイス情報を後で詳細に説明するように、1つの複合デバイスとしてデバイス情報を再構成し、メモリ301に保持する。
【0080】
ステップS406では、周辺機器サーバ102の接続情報制御部307が、ステップS405で再構成されたデバイス情報をクライアントPC100に応答する。
【0081】
ステップS407では、クライアントPC100の仮想USBポートドライバ211がステップS406での応答を受けたのち、OS206がデバイス情報に対応するデバイスドライバ209、USBクラスドライバ210をメモリ202へロード(搭載)し、仮想USBポートドライバ211との間でプラグアンドプレイ(Plug and Play)を完了する。
【0082】
このように、1つの複合デバイスとして、接続したいデバイスとの間でプラグアンドプレイを完了し、USBデバイスの利用が可能となる。
【0083】
ディスクリプタ情報を再構成することについて説明する。
<ディスクリプタ情報の再構成について>
【0084】
まず、従来の周辺機器サーバシステムにおいて、
図1に示す接続システムであった場合のディスクリプタ情報の構成について、
図5を用いて説明する。
【0085】
クライアントPCから接続ユーティリティを経由して、従来の周辺機器サーバに接続したデバイスにおけるディスクリプタ情報は、
図5に示すような構成になっている。
【0086】
ここで、デバイス104は、スピーカに相当し、デバイスディスクリプタ500と識別される。
【0087】
デバイス106は、スキャナに相当し、デバイスディスクリプタ501と識別される。
【0088】
デバイス108は、マウス付キーボードに相当し、デバイスディスクリプタ502と識別される。
ここで、デバイス108は後述する複合デバイスの体をなしており、
図5に示すとおり、デバイスディスクリプタ502の下位層にコンフィギュレーションディスクリプタ502aを有し、さらに下位層にキーボード機能を備えるインタフェースディスクリプタ502a(インタフェース0番)とマウス機能を備えるインタフェースディスクリプタ502b(インタフェース1番)とを備えるディスクリプタ構成になっている。
【0089】
デバイス110は、外部記憶装置に相当し、デバイスディスクリプタ503と識別される。
【0090】
ここで、USBデバイスを認識する際にOSが対応している複合デバイスについて説明をする。
通常、ディスクリプタ情報は、コンフィギュレーション1個に、1個のインタフェースで定義される1つの機能だけとなり、この機能の中には、いくつかのエンドポイントが含まれ、これがUSB通信の対象なる。しかし、複合デバイスでは、コンフィギュレーション1個に、インタフェースが複数定義され、それぞれ独立の動作をする機能ブロックごとにディスクリプタ情報が構成されており、複数の機能を持った複合のデバイスとして定義することができる。1つのデバイスディスクリプタの下に、コンフィギュレーションディスクリプタ内に含まれるインタフェース数に1以上の数値が記載され、インタフェースディスクリプタは、インタフェース自身の番号(例えば0、1、2など)が記載される。このように、1つのハードウェアに対し、複数のインタフェースを持つことで、動的にインタフェースを切り替えて異なった機能を持たせることもできる。
【0091】
つまり、デバイス108は、複合デバイスとしてOSが認識可能であり、従来の周辺機器サーバシステムのディスクリプタ情報の構成は、周辺機器サーバに接続したデバイスは各々1つのディスクリプタを備え、さらに複合デバイス(デバイス108)においては、その具備する機能各々に対してもインタフェースディスクリプタをそれぞれ備えている(
図5の階層参照)。
【0092】
このような階層構成をクライアントPC700のOSが認識し、周辺機器サーバ710に接続している各デバイスに対し、デバイスディスクリプタごと(1つのデバイスごと)にコネクション確立手順とプラグアンドプレイ手順を接続したい台数回、繰り返す。このことで、クライアントPCがネットワーク740を介して、周辺機器サーバに接続した各デバイスとの間で入出力転送を開始できるようになる。
【0093】
つぎに、本発明における周辺機器サーバシステムにおいて、
図1に示す接続システムであった場合のディスクリプタ情報の構成について、
図6を用いて説明する。
【0094】
周辺機器サーバ102の接続情報制御部307で、クライアントPC100の接続ユーティリティ208から
図4のステップS404のコネクション確立応答(「複数USBデバイス接続」コマンド送信)を受けて、接続指定されたデバイス全体を1つの複合デバイスとして、ディスクリプタ情報を再構成する。
【0095】
すなわち、従来の例と異なり、個々に独立したデバイスとその独立したデバイスに具備している機能も含め、クライアントから接続指定された任意の複数のデバイスを組み合わせて1つの複合デバイスとみなし、クライアントPC100とネットワーク103を介して、周辺機器サーバ102に接続したUSBデバイス104、106、108および110と入出力転送が行えるようにする。
【0096】
つまり、
図6に示すとおり周辺機器サーバに接続しているデバイスの階層構成を再構成し、複合デバイスディスクリプタ600とみなし、複合デバイスのコンフィギュレーションディスクリプタ600aの下位層に、スピーカのオーディオ機能のインタフェースディスクリプタ600aとスキャナのスキャン/イメージング機能のインタフェースディスクリプタ600bとマウス付キーボードのキーボード機能のインタフェースディスクリプタ600cとマウス付キーボードのマウス機能のインタフェースディスクリプタ600dと外部記憶装置のストレージ機能のインタフェースディスクリプタ600eとで構成され、各々のインタフェースディスクリプタに、インタフェースディスクリプタ600aがインタフェース0番、インタフェースディスクリプタ600bがインタフェース1番、インタフェースディスクリプタ600cがインタフェース2番、インタフェースディスクリプタ600dがインタフェース3番、インタフェースディスクリプタ600eがインタフェース4番に各々相当する構成になり、複合デバイスにおけるインタフェースディスクリプタと同じ構成になる。(
図6の階層参照)。
【0097】
また、これら各々のディスクリプタ下位層に位置するエンドポイントディスクリプタなどは、各インタフェースディスクリプタの下位層に順次構成される(
図5、
図6には図示しない)。
【0098】
以上のことから、本発明の特徴である、周辺機器サーバが自身に接続しているデバイスのデバイス情報(ディスクリプタ情報)を取得するとともに、クライアントPCが通知する「複数USBデバイス接続」要求コマンドに基づいて、ディスクリプタ情報を再構成することにより、通常のデバイス情報取得により構成されたディスクリプタ構成情報と周辺機器サーバ内で生成される再構成後のディスクリプタ構成情報の2つのディスクリプタ構成情報を周辺機器サーバ内に保持する。このうち一方の再構成後のディスクリプタ構成情報を利用することで、あたかもクライアントPCが接続を要求するデバイス全てを1つの複合デバイスと擬制(同様の形態)することが可能となり、クライアントPCのOSは、周辺機器サーバに接続を要求したデバイス全体を1つの複合デバイスと認識することができ、その結果、従来よりも短時間で、クライアントPCとネットワークを介して、周辺機器サーバに接続したデバイスとの間でデータ入出力転送を開始できるようになる(プラグアンドプレイ完了)ため、ユーザの利便性向上に有用である。