(57)【特許請求の範囲】
【請求項１】
無線接続が可能な無線通信デバイスを複数の処理装置に共有させる無線通信デバイスの共有化方法であって、
前記無線通信デバイスのドライバの上位層を前記無線通信デバイスに非対応の第１の情報処理装置で実行し、
前記ドライバの下位層を前記無線通信デバイスに対応可能な第２の情報処理装置で実行し、
前記第１の情報処理装置と前記第２の情報処理装置との間で前記無線通信デバイスと異なる通信により無線接続を行ない、該無線接続を前記上位層と前記下位層との間に介在させて前記第１の情報処理装置で前記無線通信デバイスを共有する、
ことを特徴とする無線通信デバイスの共有化方法。
【請求項２】
無線接続が可能な無線通信デバイスを複数のコンピュータに共有させる無線通信デバイスの共有化プログラムであって、
前記無線通信デバイスのドライバの上位層を前記無線通信デバイスに非対応の第１の情報処理装置で実行し、
前記ドライバの下位層を前記無線通信デバイスに対応可能な第２の情報処理装置で実行し、
前記第１の情報処理装置と前記第２の情報処理装置との間で前記無線通信デバイスと異なる通信により無線接続を行ない、該無線接続を前記上位層と前記下位層との間に介在させて前記第１の情報処理装置で前記無線通信デバイスを共有する、
処理を前記コンピュータに実行させるための無線通信デバイスの共有化プログラム。
【請求項３】
無線接続が可能な無線通信デバイスを複数の処理装置に共有させる無線通信デバイスの共有化システムであって、
前記無線通信デバイスに非対応で、前記無線通信デバイスと異なる通信による無線接続が可能な第１の情報処理装置と、
前記無線通信デバイスと対応可能で、前記第１の情報処理装置と前記通信により無線接続が可能な第２の情報処理装置と、
を備え、前記無線通信デバイスのドライバの上位層を前記第１の情報処理装置で実行し、前記ドライバの下位層を前記第２の情報処理装置で実行し、前記上位層と前記下位層との間に前記第１の情報処理装置と前記第２の情報処理装置との無線接続を介在させ、前記第１の情報処理装置で前記無線通信デバイスを使用可能にすることを特徴とする無線通信デバイスの共有化システム。
【請求項４】
さらに、前記無線通信デバイス、前記第１の情報処理装置または前記第２の情報処理装置の固有情報のいずれかまたは２以上を記憶する記憶手段を備え、前記無線通信デバイスが使用可能な情報処理装置を管理する管理手段を備えることを特徴とする、請求項３に記載の無線通信デバイスの共有化システム。
【請求項５】
前記第１の情報処理装置と前記第２の情報処理装置との間の通信は暗号化通信であることを特徴とする、請求項３または請求項４に記載の無線通信デバイスの共有化システム。
【請求項６】
無線接続が可能な無線通信デバイスを共有する情報処理装置であって、
前記無線通信デバイスと異なる通信により、他の情報処理装置と無線接続が可能な通信部と、
前記無線通信デバイスのドライバより分割された上位層を実行し、前記ドライバの下位層を実行する前記他の情報処理装置との間の前記無線接続を前記上位層と前記下位層との間に介在させて前記無線通信デバイスに対応する処理部と、
を備えることを特徴とする情報処理装置。
【請求項７】
無線接続が可能な無線通信デバイスを共有する情報処理装置であって、
前記無線通信デバイスと異なる通信により、他の情報処理装置と無線接続が可能な通信部と、
前記無線通信デバイスのドライバより分割された下位層を実行し、前記ドライバの上位層を実行する前記他の情報処理装置との間の前記無線接続を前記下位層と前記上位層との間に介在させ、前記他の情報処理装置に前記無線通信デバイスを対応させる処理部と、
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
たとえば、ブルートゥース（Bluetooth ：登録商標）通信などの近距離無線通信で接続可能な無線通信デバイスの共有化方法、共有化プログラム、共有化システムおよび情報処理装置に関する。
【背景技術】
【０００２】
Bluetooth デバイスなど、特定の無線通信により接続される無線通信デバイスには、携帯端末装置やＰＣ（パーソナルコンピュータ）などの他に、ヘッドセットやプリンタなどが存在している。無線通信デバイスにはスマートフォン、スレートなどもある。
【０００３】
情報処理に用いられる情報処理装置の利用環境や利用形態は多様化し、様々な周辺機器も存在している。通信形態も公衆無線、有線通信、近距離無線通信、インターネットを媒介とするものなど多種に亘っている。また、利用する環境や形態も、個人または公用など様々である。通信形態についても既述のBluetooth 通信方式の他、各種のものが存在する。
【０００４】
情報処理装置に使用される周辺機器には多種の無線通信デバイスが存在する。無線通信デバイスでは通信形態が異なれば、無線通信デバイスを利用できない。Bluetooth デバイスには、既述したように携帯電話機、ヘッドセット、マウス、プリンタなどが普及している。Bluetooth デバイスはBluetooth 通信による無線接続を行ない、このBluetooth 通信を媒介として情報の授受を行う。このため、Bluetooth 通信に対応していないＰＣでは、Bluetooth デバイスの利用は困難である。
【０００５】
このような無線接続に関し、無線端末にBluetooth 機能を含む通信形態を選択可能にすることが知られている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２４８２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、インターネット接続によるデータ通信では、無線ＬＡＮ（Wireless Local Area Network ：ＷＬＡＮ）サービスを提供するホットスポットやモバイルルータを利用することができ、無線ＬＡＮによりインターネット接続が可能である。ホットスポットやモバイルルータの利用エリアは限定的であり、複数のサービスプロバイダが存在していても、どこでも利用できる環境にはない。モバイルルータやホットスポットの利用は契約による利用制限がある。
【０００８】
ユーザが属する企業などの特定のメールサーバにアクセスする場合ではデータ通信デバイスとして、たとえば、Bluetooth 携帯電話機が利用できる。斯かる携帯電話機のデータ通信デバイスとしての利用は、利用エリアに関係なく、ＰＣ（パーソナルコンピュータ）でインターネットに接続可能である。
【０００９】
ＰＣの移動先などでたとえば、Bluetooth デバイスであるプリンタ、ヘッドホン、マウスなどの周辺機器が存在していても、既述したように、ＰＣにBluetooth 通信機能が搭載されていなければ、それらの機能を利用できない。
【００１０】
たとえば、Bluetooth通信機能が搭載されていないＰＣでBluetooth 携帯電話機を利用する場合、第三者の所有するBluetooth 通信に対応するＰＣを経由すればBluetooth携帯電話機を用いることができる。この場合、Bluetooth 携帯電話機とBluetooth 通信に対応するＰＣをペアリングする必要がある。このペアリングには、Bluetooth 通信に対応するＰＣにＰＩＮ（Personal Identification Number）を入力する。ペアリングのために入力されたリンクキーは、ペアリングしたＰＣ上に保存される。つまり、そのリンクキーを取得したＰＣは、Bluetooth 携帯電話機の利用が拡大する反面、所有者に関係なく利用が可能となってしまうという課題がある。
【００１１】
たとえば、Bluetooth 携帯電話機を利用して、ＰＣの無線ＬＡＮ経由で第三者の所有するBluetooth通信に対応するＰＣを利用してインターネットにアクセスすることが可能である。つまり、ＰＣのソフトウェアルータとしての利用である。この場合、通信データがＰＣ上のマルウェアにより漏えいするという課題がある。
【００１２】
このような課題に鑑み、本開示の構成は、無線通信デバイス利用のセキュリティ性を維持しつつ、無線通信デバイスの共有化を拡張することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本開示の構成では、無線通信デバイスに非対応の第１の情報処理装置と、無線通信デバイスに対応可能な第２の情報処理装置が用いられる。無線通信デバイスのドライバは上位層と下位層に分割されている。上位層は第１の情報処理装置で実行し、下位層は第２の情報処理装置で実行する。第１の情報処理装置と第２の情報処理装置との間で無線通信デバイスと異なる通信により無線接続を行ない、上位層と下位層との間を無線通信により接続する。これにより、無線通信デバイスに非対応の第１の情報処理装置で無線通信デバイスを共有化している。
【発明の効果】
【００１４】
本開示の構成を用いれば、次のいずれかの効果が得られる。
【００１５】
(1) 無線通信デバイスに非対応の情報処理装置で無線通信デバイスを共有することができ、無線通信デバイスの共有化を拡張できる。
【００１６】
(2) 情報処理装置が無線通信デバイスのドライバを備えていない場合であっても、無線通信が可能で、無線通信デバイスに対応可能な情報処理装置があれば、該情報処理装置を媒介として無線通信デバイスを共有できる。
【００１７】
そして、本開示の構成について、他の目的、特徴および利点は、添付図面および各実施の形態を参照すれば一層明確になるであろう。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態に係る無線通信デバイスの共有化システムを示す図である。
【図２】無線通信デバイスを共有化する処理手順を示すフローチャートである。
【図３】第２の実施の形態に係る無線通信デバイスの共有化システムを示す図である。
【図４】無線通信デバイスの共有化システムの変形例を示す図である。
【図５】各ＰＣのハードウェアを示す図である。
【図６】サーバのハードウェアを示す図である。
【図７】デバイスおよび仮想化デバイスの情報管理テーブルを示す図である。
【図８】ユーザ・デバイス情報管理テーブルおよび位置情報テーブルを示す図である。
【図９】Bluetooth 機能のソフトウェアを示す図である。
【図１０】サービス検出時のソフトウェアを示す図である。
【図１１】サービス使用時のソフトウェアを示す図である。
【図１２】接続確立後のデータの流れを示す図である。
【図１３】接続確立後の仮想化デバイスとローカルデバイスの区別を示す図である。
【図１４】接続確立時の処理手順を示すフローチャートである。
【図１５】サービスを提供するＰＣ検出時の処理手順を示すフローチャートである。
【図１６】仮想Bluetooth サービスの問い合わせに対する応答処理の処理手順を示すフローチャートである。
【図１７】ＰＣ６−１側のBluetooth デバイスとの接続確立の処理手順を示すフローチャートである。
【図１８】仮想Bluetooth サービスの問い合わせに対する応答処理の処理手順を示すフローチャートである。
【図１９】仮想Bluetooth サービスの接続要求に対する応答処理の処理手順を示すフローチャートである。
【図２０】ＰＣ６−２側のBluetooth デバイスとの接続確立の処理手順を示すフローチャートである。
【図２１】Bluetooth デバイス側の通信接続の処理手順を示すフローチャートである。
【図２２】Bluetooth に非対応のＰＣとBluetooth デバイスとの接続形態を示す図である。
【発明を実施するための形態】
【００１９】
〔第１の実施の形態〕
【００２０】
図１のＡは、第１の実施の形態に係る無線通信デバイスの共有化システム２−１のソフトウェア構成を示している。
【００２１】
この共有化システム２−１では無線通信デバイス４が用いられているとともに、この無線通信デバイス４を共有化するパーソナルコンピュータ（以下「ＰＣ」と称する）６−１、６−２が備えられる。無線通信デバイス４は特定の無線通信たとえば、Bluetooth 通信などの近距離無線通信により接続（共有）が可能なデバイスである。ＰＣ６−１は、第１の情報処理装置の一例であり、無線通信デバイス４に非対応である。ＰＣ６−２は、第２の情報処理装置の一例であり、無線通信デバイス４に対応可能である。
【００２２】
ＰＣ６−１は、無線通信機能８および仮想処理機能１０−１を備えている。無線通信機能８は Bluetooth通信などの近距離通信と異なり、遠距離通信が可能な通信機能である。この無線通信機能８により、ＰＣ６−１がＰＣ６−２と無線接続１２が可能である。仮想処理機能１０−１はＰＣ６−２との無線接続１２を媒介としたトネリング（tunneling ）により、無線通信デバイス４に対応可能なＰＣ６−２を利用して無線通信デバイス４を共有化する機能である。トネリングは２点の通信拠点間を仮想的に結ぶ直結通信回線または回路を確立し、データの送受を行うことである。
【００２３】
ＰＣ６−２には、無線通信機能１４、仮想処理機能１０−２およびドライバ１６を備えている。無線通信機能１４は遠距離通信機能である。この無線通信機能１４により、ＰＣ６−１がＰＣ６−２と無線接続１２が可能である。仮想処理機能１０−２はＰＣ６−１との無線接続１２を媒介とした既述のトネリングにより、ＰＣ６−１に無線通信デバイス４を共有化させる機能である。
【００２４】
ドライバ１６は、無線通信デバイス４を駆動するドライバプログラムである。このドライバ１６は上位層である上位ドライバ１６−１と、その下位層である下位ドライバ１６−２とに分割されている。上位ドライバ１６−１は、たとえば、ＨＣＩ（Host Controller Interface ）ドライバの上位層のインターフェースを持つドライバであり、具体的にはＨＣＩコマンドとイベントのインターフェースである。下位ドライバ１６−２は、たとえば、ＨＣＩドライバの下位層のインターフェースを持つドライバであり、具体的にはＵＳＢ（Universal Serial Bus：インターフェース規格）などのトランスポートレイヤードドライバを経由して無線通信デバイス４を制御する。
【００２５】
ＰＣ６−２では下位ドライバ１６−２が無線通信デバイス４と無線通信１８により接続される。無線通信デバイス４は無線通信１８を媒介してデバイスの送受が可能なデバイスであり、たとえば、 Bluetoothデバイスである。無線通信１８は、無線通信デバイス４に特定される通信機能であり、既述の無線通信機能８とは異なる、たとえば、 Bluetooth通信などの近距離通信機能である。
【００２６】
図１のＢは、無線通信デバイス４の共有化システム２−１のハードウェア構成およびその動作を示している。
【００２７】
ＰＣ６−１は、通信部２０および処理部２２を備えている。通信部２０は既述の無線通信機能８を実現し、ＰＣ６−２との間で無線通信デバイス４との無線接続とは異なる無線通信１２を行う。処理部２２はたとえば、ＣＰＵ（Central Processing Unit ）などで構成され、既述の仮想処理機能１０−１およびドライバ１６の上位ドライバ１６−１を実行する。
【００２８】
ＰＣ６−２は第１の通信部２４、第２の通信部２６および処理部２８を備えている。通信部２４は、ＰＣ６−１との間で無線通信デバイス４との無線接続とは異なる無線通信を行う。処理部２８はたとえば、ＣＰＵ（Central Processing Unit ）などで構成され、既述の仮想処理機能１０−２および下位ドライバ１６−２を実行する。また、通信部２６は、処理部２８と無線通信デバイス４との間で特定の無線通信１８を行う。
【００２９】
斯かる構成では、ＰＣ６−１の処理部２２側の上位ドライバ１６−１の実行と、ＰＣ６−２の処理部２８側の下位ドライバ１６−２との間に、無線通信１２が介在している。つまり、この無線通信１２を介して上位ドライバ１６−１と下位ドライバ１６−２とが接続される。これにより、ドライバ１６がＰＣ６−１、ＰＣ６−２間で実行される。
【００３０】
処理部２８側には既述の通信部２６により無線通信デバイス４との間で特定の無線通信１８が実行される。実行中のドライバ１６により無線通信デバイス４が駆動する。これにより、無線通信デバイス４に非対応のＰＣ６−１で、ＰＣ６−２の介在により、無線通信デバイス４が共有される。
【００３１】
＜無線通信デバイス４の共有化の処理手順＞
【００３２】
図２は、無線通信デバイス４を共有する処理手順を示している。この処理手順は、本開示の共有化方法または共有化プログラムの一例である。
【００３３】
この処理手順では、ＰＣ６−１とＰＣ６−２との間で無線通信１２を開始し、仮想処理機能１０−１、１０−２を実行する（Ｓ１０１）。
【００３４】
ドライバ１６から分割された上位ドライバ１６−１をＰＣ６−１で実行する（Ｓ１０２）。
【００３５】
ドライバ１６から分割された下位ドライバ１６−２をＰＣ６−２で実行する（Ｓ１０３）。
【００３６】
このように個別に実行される上位ドライバ１６−１と下位ドライバ１６−２とを無線接続１２の介在により接続する（Ｓ１０４）。下位ドライバ１６−２側では、無線接続１８により無線通信デバイス４が接続される。
【００３７】
これにより、仮想処理機能１０−１、１０−２により非対応のＰＣ６−１で無線通信デバイス４が共有される。
【００３８】
このように、無線通信デバイス４に非対応のＰＣ６−１（情報処理装置）で無線通信デバイス４を共有することができる。これより、無線通信デバイス４を共有化の範囲が拡張され、無線通信デバイス４の利便性が高められる。
【００３９】
ＰＣ６−１のように、通信部６を備えていない場合であっても、無線通信１２が可能で、無線通信デバイス４に対応可能なＰＣ６−２（情報処理装置）があれば、このＰＣ６−２を媒介として無線通信デバイス４を共有できる。
【００４０】
〔第２の実施の形態〕
【００４１】
図３は、第２の実施の形態に係る共有化システム２−２の一例である。図３において、図１と同一部分には同一符号を付してある。
【００４２】
図３に示す共有化システム２−１では、グループＡとグループＢが含まれる。グループＡは、Bluetooth 機能に非対応のＰＣ６−１で、既述の仮想処理機能１０−１、１０−２の一例である仮想Bluetooth 機能によりBluetooth デバイス４０を利用する側である。グループＢは、Bluetooth デバイス４０に対応可能なＰＣ６−２からグループＡのＰＣ６−１に対し、Bluetooth デバイス４０を共有化する側である。つまり、ＰＣ６−１は、Bluetooth コントローラが搭載されておらず、Bluetooth デバイス４０のいずれかを利用するために仮想Bluetooth を利用する。この仮想Bluetooth は、ＰＣ６−１とＰＣ６−２との間で無線通信１２により利用される。
【００４３】
Bluetooth デバイス４０には一例として、 Bluetooth携帯電話機４０−１、４０−２、 Bluetoothマウス４０−３、 Bluetoothヘッドセット４０−４、 Bluetoothプリンタ４０−５が含まれている。携帯電話機４０−１はグループＡに属し、携帯電話機４０−２、マウス４０−３、ヘッドセット４０−４およびプリンタ４０−５がグループＢに属している。したがって、携帯電話機４０−１、４０−２、マウス４０−３、ヘッドセット４０−４、プリンタ４０−５に接続可能なＰＣ６−２は仮想Bluetooth デバイス４００を構成する。
【００４４】
Bluetooth 機能に非対応のＰＣ６−１と、Bluetooth 機能に対応可能なＰＣ６−２は、ともに無線通信１２を実行する遠距離通信機能として無線ＬＡＮ（Local Area Network）機能を備えている。この無線ＬＡＮ機能はたとえば、Ｗｉ−Ｆｉ（ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどによる無線ＬＡＮ）による通信機能である。つまり、ＰＣ６−１はＰＣ６−２と同様に無線通信１２を実行する通信手段としてＷｉ−Ｆｉ機能を有する。具体的にはＰＣ６−１はＷｉ−Ｆｉダイレクト（Direct）によりＰＣ６−２と通信が可能である。そこで、仮想処理機能１０−１を備えるＰＣ６−１はＷｉ−ＦｉDirect上で既述の仮想Bluetooth のクライアント機能を備える。このクライアント機能は、ＰＣ６−２の仮想処理機能１０−２より、Bluetooth デバイス４０から所望のデバイスたとえば、Bluetooth 対応のヘッドセット４０−４の接続の提供を受けることができる。
【００４５】
各ＰＣ６−１、６−２も対応している無線通信１２（既述のＷｉ−ＦｉDirect）を用いて、分割実行している無線通信デバイス４のドライバ１６の上位ドライバ１６−１と下位ドライバ１６−２との間を暗号化通信で接続する。
【００４６】
グループＡにおける携帯電話機４０−１は、Bluetooth デバイス４０のひとつであるから、グループＢのＰＣ６−２と無線通信１８であるBluetooth 通信により無線接続が可能である。この場合、グループＡにあるＰＣ６−１は仮想Bluetooth の機能により、グループＢのＰＣ６−２とBluetooth 通信（無線通信１８）により接続することができる。
【００４７】
斯かる構成によれば、たとえば、ヘッドセット４０−４を使用する場合にはヘッドセット４０−４のドライバ１６の上位ドライバ１６−１がＰＣ６−１で実行される。ＰＣ６−２では、その下位ドライバ１６−２が実行される。ＰＣ６−１、６−２の間ではＷｉ−ＦｉDirectによる無線通信１２が実行される。これにより上位ドライバ１６−１と下位ドライバ１６−２とが接続される。ＰＣ６−２側では無線通信１８が実行され、接続先であるヘッドセット４０−４が接続される。これにより、ＰＣ６−１がヘッドセット４０−４と接続され、ＰＣ６−１でヘッドセット４０−４を使用することができる。
【００４８】
＜無線通信デバイスの共有化システム２−２の変形例＞
【００４９】
図４は、無線通信デバイスの共有化システム２−３を示している。図４において、図１および図３と同一部分には同一符号を付してある。
【００５０】
この共有化システム２−３は、共有化システム２−２（図３）にグループＣが加わり、グループＡ、Ｂ、Ｃで編成されている。
【００５１】
(1) グループＡ
【００５２】
グループＡは、Bluetooth デバイス４０のデバイス利用サイドである。Bluetooth 機能を搭載していないＰＣ６−１からBluetooth デバイス４０を利用するために、仮想Bluetooth サービスを利用する。事前に会員制のデバイス共有化サービス（グループＣ）へ会員の登録およびデバイス登録を行う。ＰＣ６−１では、Bluetooth 機能には対応していないが、Ｗｉ−Ｆｉの通信機能を備え、Ｗｉ−ＦｉDirectによりＰＣ６−２と無線通信による接続が可能である。
【００５３】
このグループＡには一例としてBluetooth デバイス４０の一つである携帯電話機４０−１が含まれている。この携帯電話機４０−１は、Bluetooth サービスを受けるBluetooth デバイス４０として事前に会員制のデバイス共有サービス（グループＣ）へ登録されている。この携帯電話機４０−１はＷｉ−ＦｉDirect上の仮想Bluetooth サービスのクライアント機能を備える。会員制デバイス共有サービス（グループＣ）から、デバイスを識別するための固有情報（たとえば、ＢＤＡ：Bluetooth Device Address ）と、他の端末との通信に必要な暗号鍵を入手する。提供可能な複数のサービスの中から、デバイス共有サービスに登録されている利用対象デバイス（この場合、携帯電話機４０−１）への接続を提供するサービスを自動的に選択する。
【００５４】
(2) グループＢ
【００５５】
グループＢは仮想 Bluetoothバスサービスの提供サイドである。このグループＢにはBluetooth 機能に対応するＰＣ６−２が含まれる。このＰＣ６−２は事前に会員制のデバイス共有サービス（グループＣ）に会員登録をし、デバイス登録を行っている。たとえば、このＰＣ６−２は、 Bluetoothデバイス４０に対し、近い場所（たとえば、同一店内や事務所など、Bluetooth 通信が可能な数十ｍの範囲内）に存在している。
【００５６】
このＰＣ６−２は Bluetooth機能を備えるとともに、Ｗｉ−Ｆｉ機能を備え、Ｗｉ−ＦｉDirectによりＰＣ６−１との通信が可能である。
【００５７】
グループＢには、ＰＣ６−２と Bluetooth通信が可能な範囲に Bluetoothデバイス４０が存在している。 Bluetoothデバイス４０は一例として携帯電話機４０−２、マウス４０−３、ヘッドセット４０−４およびプリンタ４０−５である。この Bluetoothデバイス４０は、ＰＣ６−２から数十ｍの範囲内にあり、 Bluetooth通信による通信接続が可能である。 Bluetoothデバイス４０としては上記デバイスに限定されない。
【００５８】
ＰＣ６−２は、Ｗｉ−ＦｉDirect上の仮想 Bluetoothのサーバ機能を備える。つまり、ＰＣ６−２がデバイス共有サービスサーバ（以下単に「サーバ」と称する）５０のサーバ機能を備えればよい。このサーバ機能は次の通りである。
【００５９】
ａ）通信可能な複数の Bluetoothデバイス４０（携帯電話機４０−２、マウス４０−３、ヘッドセット４０−４およびプリンタ４０−５）の固有情報（ＢＤＡ）のリストを作成する。
【００６０】
ｂ）会員制デバイス共有サービス（グループＣ）からＰＣ６−１との間の通信に必要な暗号鍵を入手する。
【００６１】
ｃ）仮想 Bluetoothバスサービスの提供をクライアントＰＣ（たとえば、ＰＣ６−１）に公開する。
【００６２】
ｄ）通信可能なデバイスの固有情報リストを公開する。
【００６３】
(3) グループＣ
【００６４】
グループＣは、デバイス共有サービスを提供する。このデバイス共有サービスは、サーバ５０により実行される。このサーバ５０は無線通信デバイスが使用可能な情報処理装置であるＰＣ６−１、６−２などを管理する管理手段の一例である。このサーバ５０により実行されるデバイス共有サービスは次の通りである。
【００６５】
ａ）Bluetooth デバイス４０を共有するＰＣ６−１、６−２などや、Bluetooth デバイス４０を管理する。
【００６６】
ｂ）会員のＰＣ６−１、６−２などが提供するサービスたとえば、Bluetooth バス、利用したいBluetooth デバイス４０を登録する。
【００６７】
ｃ）ＰＣ６−１、６−２間など、ＰＣ間で通信の安全を確保するため、ＰＣ６−１、６−２などに対し共通暗号鍵を提供する。
【００６８】
ｄ）予め登録されたBluetooth デバイス４０などを表す固有情報を利用するＰＣに提供する。
【００６９】
この共有化システム２−３では、仮想 Bluetoothサービスをサーバ５０を媒介として構築している。仮想 Bluetoothサービスを公開する際に、通信可能な Bluetoothデバイス４０のＢＤＡが公開される。接続対象である Bluetoothデバイス４０と通信できるＰＣ６−２とＰＣ６−１との間でＷｉ−ＦｉDirectによる接続を確立する。
【００７０】
このように Bluetoothデバイス４０（無線通信デバイス４）のドライバ１６をＰＣ６−１とＰＣ６−２とで分割実行する。ドライバ１６は上位ドライバ１６−１と下位ドライバ１６−２に分割している。そして、各ＰＣ６−１、６−２のいずれも対応している通信手段であるＷｉ−ＦｉDirectを用いることにより、上位ドライバ１６−１と下位ドライバ１６−２を暗号化通信で接続する。ＰＣ６−１側では、 Bluetoothデバイス４０の上位ドライバ１６−１が動作し、ＰＣ６−２側では下位ドライバ１６−２が動作する。
【００７１】
Bluetooth通信に対応する周辺機器である Bluetoothデバイス４０利用する際には、別の通信手段を用いて、その無線通信に対応しかつ周辺機器と通信できるＰＣ６−２を検索する。この場合、ＰＣ６−２はＷｉ−ＦｉDirectに対応しかつ Bluetooth通信が可能である。そこで、周辺機器の固有情報が事前にＰＣ６−１に登録されていれば、その固有情報をダウンロードし、専用のサーバ５０へ事前登録した情報であれば、その情報をダウンロードする。ＰＣ６−１側で周辺機器と通信できるＰＣ６−２が発見できたら、そのサービスを提供するＰＣ６−２へＰＣ６−１から接続を行ない、上位ドライバ１６−１と下位ドライバ１６−２の暗号化による通信接続を行う。
【００７２】
このような Bluetooth共有サービスの利用中、サービスを提供するＰＣ６−２側で、ＰＣ６−２上で利用可能な Bluetoothデバイス４０（無線通信デバイス４）と、 Bluetooth共有サービスが適用される Bluetoothデバイス４０のいずれかのデバイス固有情報で識別する。そして、 Bluetoothデバイス４０のたとえば、携帯電話機４０−２、マウス４０−３、ヘッドセット４０−４およびプリンタ４０−５についてそれぞれ適切な上位ドライバ１６−１とデータの送受を行う。
【００７３】
このように Bluetoothデバイス４０のドライバ１６を上位ドライバ１６−１、下位ドライバ１６−２に分割して実行するので、ＰＣ６−１で Bluetoothデバイス４０を共有できる。上位ドライバ１６−１と下位ドライバ１６−２とを暗号化通信で接続するので、ＰＣ６−１側の情報がＰＣ６−２に漏洩することを防止できる。
【００７４】
ＰＩＮ入力や周辺機器とのペアリングなどのセキュリティに関する操作がＰＣ６−２では無く、ＰＣ６−１上で実行できる。ＰＩＮやペアリング後のリンクキーを防護することができる。ＰＣ６−２側での周辺機器の不正利用を防止できる。また、サービスを提供するＰＣ６−２側で利用する Bluetoothデバイス４０と、ドライバ１６の分割実行の対象デバイスを、ＰＣ６−２側で同時に利用することも可能である。
【００７５】
そして、 Bluetooth通信はＷｉ−ＦｉDirectに比較して通信距離が短い。このため、ＰＣ６−１が仮に、 Bluetooth機能を搭載していたとしても、 Bluetoothデバイス４０が Bluetooth通信の通信距離を超えていれば、無線接続することができない。この場合、利用したい Bluetoothデバイス４０の近傍にＰＣ６−２が存在していれば、このＰＣ６−２を利用した Bluetoothデバイス４０の共有化が可能である。つまり、Ｗｉ−ＦｉDirectの通信を媒介として Bluetooth通信の通信距離を超えた Bluetoothデバイス４０の共有化が可能となる。
【００７６】
利用するデバイスの指定について、共有化システム２−２（図３）ではＰＣ６−１で行う必要があり、個別管理である。これに対し、共有化システム２−３（図４）では、会員制デバイス共有サーバ５０の利用により、会員のコントロールやアプリケーションなどの効率的な集中管理が可能である。
【００７７】
＜ＰＣ６−１のハードウェア＞
【００７８】
図５のＡは、ＰＣ６−１のハードウェアを示している。このＰＣ６−１には、ＣＰＵ（Central Processing Unit ）５２、ＲＡＭ（Random-Access Memory）５４、ＨＤＤ（Hard Disc Drive ）５６、ＷＬＡＮ（Wireless LAN）コントローラ５８を備える。
【００７９】
ＣＰＵ５２は、ＨＤＤ５６にあるＯＳ（Operating System）の実行とともに、本開示の共有化プログラムを実行する。この実行により、Bluetooth デバイス４０の無線通信１８とは別の無線通信１２の制御を行う。ＲＡＭ５４はワークエリアを構成する。
【００８０】
ＨＤＤ５６は、記憶手段の一例であり、ＯＳのほか、共有プログラムなどのアプリケーションプログラムなどを格納する。
【００８１】
ＷＬＡＮコントローラ５８は、既述の通信部２０（図１のＡ）の一例であり、既述の無線通信１２を行う。この無線通信１２は、ＰＣ６−２との共通の通信手段である。この無線通信１２の無線接続により、ＰＣ６−１はＰＣ６−２およびサーバ５０と無線ネットワークが構成される。そして、ＰＣ６−１およびＰＣ６−２間では、仮想 Bluetoothサービスを実行するためのＷｉ−ＦｉDirectによる無線接続が構築される。
【００８２】
＜ＰＣ６−２のハードウェア＞
【００８３】
図５のＢは、ＰＣ６−２のハードウェアを示している。このＰＣ６−２は、Bluetooth デバイス４０に対応する。このＰＣ６−２には、ＣＰＵ６０、ＲＡＭ６２、ＨＤＤ６４、ＷＬＡＮコントローラ６６、Bluetooth コントローラ６８を備える。
【００８４】
ＣＰＵ６０は、ＨＤＤ６４にあるＯＳの実行とともに、本開示の共有化プログラムを実行する。この実行により、Bluetooth デバイス４０の無線通信１８とは別の無線通信１２の制御を行う。ＲＡＭ６２はワークエリアを構成する。
【００８５】
ＨＤＤ６４は、記憶手段の一例であり、ＯＳのほか、共有化プログラムなどのアプリケーションプログラムなどを格納する。このＨＤＤ６４には既述のリストがテーブルとして格納される。
【００８６】
ＷＬＡＮコントローラ６６は、既述の通信部２４（図１のＢ）の一例であり、無線通信１２を実行する。この無線通信１２は、ＰＣ６−１との共通の通信手段である。既述したように、ＰＣ６−２はこの無線通信１２の無線接続により、ＰＣ６−１およびサーバ５０と無線ネットワークを構成する。
【００８７】
Bluetooth コントローラ６８は、Bluetooth デバイス４０との間でBluetooth 通信を行う。
【００８８】
＜サーバ５０のハードウェア＞
【００８９】
図６は、サーバ５０のハードウェアを示している。このサーバ５０は、Bluetooth デバイス４０に非対応のＰＣ６−１、Bluetooth デバイス４０に対応可能なＰＣ６−２に対し、既述のデバイス共有サービスを提供する。
【００９０】
このサーバ５０は、ＣＰＵ７０、ＲＡＭ７２、ＨＤＤ７４、ＬＡＮコントローラ７６を備える。
【００９１】
ＣＰＵ７０は、ＨＤＤ７４にあるＯＳの実行とともに、本開示の共有化プログラムを実行する。この実行により、Bluetooth デバイス４０の無線通信１８とは別の無線通信１２の制御を行う。ＲＡＭ７２はワークエリアを構成する。
【００９２】
ＨＤＤ７４は、記憶手段の一例であり、ＯＳのほか、共有化プログラムなどのアプリケーションプログラムなどを格納する。このＨＤＤ７４には、ユーザ・デバイス情報管理テーブル９０（図８のＡ）や、位置情報テーブル１００（図８のＢ）が格納される。
【００９３】
＜デバイス情報管理テーブル＞
【００９４】
図７のＡは、ＰＣ６−１側にあるデバイス情報管理テーブル８０を示している。このデバイス情報管理テーブル８０は、ＨＤＤ５６に構築されているデータベースに格納される。
【００９５】
このデバイス情報管理テーブル８０には、デバイス固有情報８２と、デバイスクラス８４とが格納されている。デバイス固有情報８２は、デバイスを識別する固有情報であり、この固有情報にはBluetooth デバイスアドレス（既述のＢＤＡ）、ＭＡＣ（Media Access Control）アドレスなどが含まれる。ＢＤＡは、Bluetooth デバイス４０の製造中に割り当てられる固有情報であり、変更不可の情報である。デバイスクラス８４は、デバイスの種類を示すＩＤであり、デバイスが所属するクラスを表す情報である。このクラスはインプットデバイス、プリンタなどであり、 MajorＩＤと MinorＩＤとのペアで定義されている。
【００９６】
＜仮想化デバイス情報管理テーブル＞
【００９７】
図７のＢは、ＰＣ６−２側で所有する仮想化デバイス情報管理テーブル８６を示している。
【００９８】
この仮想化デバイス情報管理テーブル８６には、デバイス固有情報８８が含まれる。このデバイス固有情報８８はデバイスを識別する固有情報である。このデバイス固有情報８８には、ＢＤＡ、ＭＡＣアドレスなどが含まれる。
【００９９】
＜ユーザ・デバイス情報管理テーブル＞
【０１００】
図８のＡは、ユーザ・デバイス情報管理テーブル９０を示している。このユーザ・デバイス情報管理テーブル９０はサーバ５０のＨＤＤ７４のデータベース上に設定される。つまり、サーバ５０は既述のように、デバイス共有会員制サイトを構成する。
【０１０１】
このユーザ・デバイス情報管理テーブル９０には、ユーザ名９２、デバイス固有情報９４、デバイスクラス９６、通信確立用情報９８が含まれる。ユーザ名９２は、ユーザを識別する一意のＩＤ（IDentification）である。デバイス固有情報９４は、デバイスを識別する固有情報であり、この固有情報にはＢＤＡ、ＭＡＣアドレスなどが含まれる。デバイスクラス９６は、デバイスの所属するクラスを表す情報である。このクラスはインプットデバイス、プリンタなどである。通信確立用情報９８は、他のＰＣとの接続確立用情報である。
【０１０２】
＜位置情報テーブル＞
【０１０３】
図８のＢは、サーバ５０にある位置情報テーブル１００を示している。
【０１０４】
この位置情報テーブル１００には、緯度１０２および経度１０４が含まれる。緯度１０２はＰＣ６−２の緯度情報であり、経度１０４はＰＣ６−２の経度情報である。
【０１０５】
＜Bluetooth 機能のソフトウェア＞
【０１０６】
図９は、 Bluetooth機能のソフトウェアを示している。
【０１０７】
ＰＣ６−２はBluetooth デバイス４０に対応している。このＰＣ６−２にはBluetooth デバイス４０を駆動するハードウェア１０６と、ソフトウェア１０８とを備えている。ハードウェア１０６には、Bluetooth コントローラ６８が備えられている。Bluetooth コントローラ６８は物理層である。このBluetooth コントローラ６８が無線通信１８によりBluetooth デバイス４０に無線接続される。
【０１０８】
ソフトウェア１０８には、下層から上層に向かってドライバ１６、Ｌ２ＣＡＰ（Logical Link Control and Adaptive Protocol：通信プロトコル）１１０、ＳＤＰ（Service Discovery Protocol）１１２、ＲＦＣＯＭＭ（Radio Frequency Communication ）１１４などが備えられ、最上位層にアプリ１１６が備えられている。
【０１０９】
ドライバ１６はたとえば、ＨＣＩドライバであり、Bluetooth デバイス４０を駆動するためのデバイスドライバであり、Bluetooth コントローラ６８を制御するプログラムである。Ｌ２ＣＡＰ１１０は、Bluetooth 通信により接続するデバイス同士のデータ伝送路（論理チャネル）を設定する通信プロトコルであり、Bluetooth のアダプション・レイヤの階層に属する。たとえば、ＯＳＩ（Open Systems Interconnection：標準化通信規格）参照モデルでは、データリンク層レイヤに位置するプロトコルである。
【０１１０】
ＳＤＰ１１２は、Bluetooth 通信で利用するサービスの通知をするための通信プロトコルであり、Bluetooth デバイス４０がどのようなサービスをサポートしているかの検索に利用される。
【０１１１】
ＲＦＣＯＭＭ１１４は、ＲＳ−２３２Ｃシリアルポートをエミュレートする通信プロトコルである。これにより、有線通信によるデータ転送が無線通信に置換される。アプリ１１６は、Bluetooth デバイス４０を機能させるためのアプリケーションプログラムである。
【０１１２】
このようにＰＣ６−２は、Bluetooth デバイス４０の一つでもあり、Bluetooth デバイス４０とBluetooth 通信により無線接続される。これにより、Bluetooth デバイス４０をＰＣ６−２の支配下で機能させることができる。
【０１１３】
＜サービス検出時のソフトウェア＞
【０１１４】
図１０は、サービス検出時のソフトウェア、共有化システム２−１で用いられるＰＣ６−２のソフトウェア構成を示している。
【０１１５】
ＰＣ６−２のハードウェア１０６には、既述のBluetooth コントローラ６８およびＷＬＡＮコントローラ６６が設置されている。ＷＬＡＮコントローラ６６は、ＰＣ６−１との無線接続のための既述の無線通信１２に用いられる。
【０１１６】
Bluetooth コントローラ６８側のソフトウェア１０８には既述のドライバ１６が設置されている。このドライバ１６は既述のＨＣＩドライバであり、上位ドライバ１６−１と下位ドライバ１６−２に分割されている。上位ドライバ１６−１はドライバ１６の上位層であり、下位ドライバ１６−２はドライバ１６の下位層である。このように、ドライバ１６を上位ドライバ１６−１と、下位ドライバ１６−２とに分割（または分離する）するには、種々の形態があるが、本実施の形態ではＨＣＩドライバを分割している。
【０１１７】
上位ドライバ１６−１はＨＣＩ（Host Controller Interface ）ドライバの上位層のインターフェースを持つドライバであり、具体的にはＨＣＩコマンドとイベントのインターフェースを実装している。この上位ドライバ１６−１は、仮想Bluetooth サービスを経由して下位ドライバ１６−２と通信を行う。この下位ドライバ１６−２との通信インターフェースはデータの送信と受信で定義される。
【０１１８】
下位ドライバ１６−２はＨＣＩドライバの下位層のインターフェースを持つドライバであり、ＵＳＢなどのトランスポートレイヤドライバを経由してBluetooth コントローラ６８を制御する。この下位ドライバ１６−２は、上位ドライバ１６−１からコマンドを受信し、既述のトランスポートレイヤ経由でBluetooth コントローラ６８から受信したデータを上位ドライバ１６−１へ送信する。
【０１１９】
仮想Bluetooth は、Bluetooth コントローラ６８を搭載しないＰＣ６−１がBluetooth コントローラ６８を搭載しているかのように動作させるための仕組みである。この仮想Bluetooth が、既述のBluetooth サービス、上位ドライバ１６−１および下位ドライバ１６−２で構成される。
【０１２０】
仮想Bluetooth サービスは、Bluetooth コントローラ６８を搭載しないたとえば、ＰＣ６−１と、Bluetooth コントローラ６８を搭載しているＰＣ６−２との無線接続を管理するサービスである。サービス利用側つまり、ＰＣ６−１側と、サービス提供側つまり、ＰＣ６−２側の二種類の機能を備えている。つまり、サービス利用側の仮想Bluetooth サービスと、サービス提供側の仮想Bluetooth サービスである。
【０１２１】
サービス利用側の仮想Bluetooth サービスは、対象となるBluetooth デバイス４０の固有情報である既述のＢＤＡおよびデバイスクラスを管理する。通信可能なＰＣに対して仮想Bluetooth サービスを搭載しているかどうかのサービスの問い合わせを実行する。仮想Bluetooth サービス間の通信を確立する。
【０１２２】
サービス提供側の仮想Bluetooth サービスは、通信可能なBluetooth デバイス４０の固有情報である既述のＢＤＡおよびデバイスクラスを管理する。既述のサービス利用側からの仮想Bluetooth サービスの問い合わせに応答する。つまり、仮想Bluetooth サービス間の通信を確立する。
【０１２３】
ＷＬＡＮコントローラ６６側のＷＬＡＮドライバ１１８は、ＷＬＡＮコントローラ６６を駆動するためのドライバプログラムである。
【０１２４】
ネットワークスタック１２０は、ツリー構造やメッシュ構造を実現するためのライブラリソフトウェアである。Ｗｉ−ＦｉDirectＳＤＰ１２２は、無線ＬＡＮの規格であるＷｉ−ＦｉDirect上で通信相手デバイスがどのようなサービスをサポートしているかを検索するソフトウェアである。Ｗｉ−ＦｉDirectサービス用アプリ１２４は、Ｗｉ−ＦｉDirectを媒介として Bluetoothデバイス４０を動作させるアプリ（アプリケーションプログラム）である。
【０１２５】
＜サービス使用時のソフトウェア＞
【０１２６】
図１１は、サービス使用時のソフトウェアを示している。
【０１２７】
ＰＣ６−１のソフトウェア１０８では、既述の上位ドライバ１６−１、Ｌ２ＣＡＰ１１０、ＳＤＰ１１２、ＲＦＣＯＭＭ１１４およびアプリ１１６を動作させる。
【０１２８】
これに対し、ＰＣ６−２のソフトウェア１０８では、下位ドライバ１６−２を動作させる。下位ドライバ１６−２からのコマンドが Bluetoothコントローラ６８に提供され、 Bluetoothコントローラ６８と Bluetoothデバイス４０との間で Bluetooth通信が実行される。
【０１２９】
斯かる構成により、Ｗｉ−ＦｉDirectで接続が確立されたら、 Bluetoothのドライバ１６の上位ドライバ１６−１と下位ドライバ１６−２を接続する。上位ドライバ１６−１と下位ドライバ１６−２は、仮想 Bluetoothサービスを経由して無線ＬＡＮ（ＷＬＡＮ）のＷｉ−ＦｉDirect通信を行う。ＰＣ６−１の上位ドライバ１６−１から、ＰＣ６−２へ接続対象の Bluetoothデバイス４０のＢＤＡとともに接続要求が送られると、ＰＣ６−２側の仮想化デバイス情報管理テーブル８６（図７のＢ）にＢＤＡを記録する。そして、データ暗号化に必要な暗号鍵を交換し、上位ドライバ１６−１と下位ドライバ１６−２の接続を確立させる。
【０１３０】
＜接続確立後のデータの流れ＞
【０１３１】
図１２は、接続確立後のデータの流れを示している。つまり、このデータの流れは上位ドライバ１６−１と下位ドライバ１６−２の接続確立後のサービス使用時のデータの流れである。
【０１３２】
Bluetoothコントローラ６８からのデータは Bluetooth通信により下位ドライバ１６−２に提供される。このデータは下位ドライバ１６−２から仮想 Bluetoothサービス１２８−２を介してネットワークスタック１２０に伝達され、ＷＬＡＮドライバ１１８に提供される。ＷＬＡＮドライバ１１８はＷＬＡＮコントローラ６６を駆動し、既述のデータがＷｉ−ＦｉDirectによりＰＣ６−１側のＷＬＡＮコントローラ５８に提供される。この場合の通信が既述の無線通信１８である。
【０１３３】
このように、 Bluetoothコントローラ６８から出たデータはＷＬＡＮドライバ１３０に到達し、ネットワークスタック１３２を経て仮想 Bluetoothサービス１２８−１に到達する。この仮想 Bluetoothサービス１２８−１から上位ドライバ１６−１に到達したデータは、 Bluetoothスタック１３４を経てアプリ１１６に到達する。
【０１３４】
つまり、ＰＣ６−２の下位ドライバ１６−２とＰＣ６−１の上位ドライバ１６−１が通信する。ＰＣ６−２上では、下位ドライバ１６−２の上位でサービスアプリケーション（Ｗｉ−ＦｉDirectサービス用アプリ１２４）が動作し、通常のネットワークスタック１２０を経由して、ＰＣ６−１上のクライアントアプリケーションと、暗号化されたデータを送受信する。クライアントアプリケーションは上位ドライバ１６−１と暗号化されたデータを送受信する。
【０１３５】
Bluetoothデバイス４０とＰＣ６−１の接続を確立するため、ペアリングを行う。つまり、ＰＩＮ入力による Bluetoothデバイス４０のペアリングでは、ＰＩＮ入力がＰＣ６−１から行われる。入力されたＰＩＮは Bluetoothスタック１３４から上位ドライバ１６−１へ渡され、暗号化処理される。ＰＣ６−１およびＰＣ６−２の仮想 Bluetoothサービス１２８−１、１２８−２はネットワークスタック１２０、１３２を経由して通信し、ＰＣ６−２の下位ドライバ１６−２へ暗号化されたＰＩＮデータが渡される。
【０１３６】
Bluetoothコントローラ６８を経由して Bluetoothデバイス４０へ送信される。このように、ＰＩＮデータは、 Bluetoothデバイス４０への送信直前まで暗号化されているので、この暗号化により防護されている。また、ペアリングにより交換されるリンクキーは、中継手段としてのＰＣ６−２ではなく、 Bluetoothデータ４０のクライアントであるＰＣ６−１内に保存される。ＰＣ６−２にペアリングにより交換されるリンクキーが残留しないので、ＰＣ６−１側の特定情報のセキュリティが確保される。
【０１３７】
＜接続確立後の仮想サービス用デバイスとローカルデバイスの区別＞
【０１３８】
図１３は、接続確立後の仮想化デバイスとローカルデバイスの区別を示している。ＰＣ６−２には分割された上位ドライバ１６−１と下位ドライバ１６−２との間に仮想 Bluetoothサービス１２８−２が接続されているとともに、ＷＬＡＮドライバ１１８側のネットワークスタック１２０が接続されている。
【０１３９】
ネットワークスタック１２０にはＷＬＡＮドライバ１１８が接続されている。つまり、下位ドライバ１６−２と区別されてＷＬＡＮドライバ１１８が設置されている。このＷＬＡＮドライバ１１８の実行によりＷＬＡＮコントローラ６６が駆動される。
【０１４０】
このように、 Bluetoothコントローラ６８に接続される下位ドライバ１６−２は、ＰＣ６−２側の上位ドライバ１６−１を介して Bluetoothスタック１２６に接続されているとともに、仮想 Bluetoothサービス１２８−２に接続されている。このような接続形態により、ＰＣ６−２側とＰＣ６−１側のデバイスがデバイス固有情報により区別されており、仮想化すべきデバイスか否かを判定する。つまり、仮想化すべき Bluetoothデバイス４０であれば、サービスアプリケーションへ通知され、そうでなければローカルの上位ドライバ１６−１に送る（つまり、ディスパッチする）。ＰＣ６−２上で管理している仮想化デバイスのデータ構造は、既述した通り、仮想化デバイス情報管理テーブル８６（図７のＢ）により管理されている。斯かる処理により、ＰＣ６−２側では、 Bluetoothデバイス４０を使用するとともに、ＰＣ６−１側でもその Bluetoothデバイス４０を利用することができる。つまり、双方利用が可能である。
【０１４１】
＜接続確立時の処理手順＞
【０１４２】
図１４は、デバイス共有サーバの処理手順を示している。
【０１４３】
この処理手順は本開示のデバイス共有化方法の一例を示している。この処理手順では、ＰＣ検出処理（Ｓ２００：図１５）が実行される。このＰＣ検出処理（Ｓ２００）ではBluetooth デバイス４０に非対応のＰＣ６−１が周囲にあるBluetooth デバイス４０に対応可能なＰＣ６−２に対して問い合わせを行う（Ｓ２０１）。この問い合わせはＷｉ−ＦｉDirectのＳＤＰにより実行し、その内容はＰＣ６−２が提供可能なサービスの問い合わせである。
【０１４４】
問い合わせを受けたＰＣ６−２は通信可能なBluetooth デバイス４０の固有情報（Bluetooth ＢＤＡ）とデバイスクラスをBluetooth デバイス４０に問い合わせる（Ｓ２０２）。これにより、ＰＣ６−２は通信可能なBluetooth デバイス４０からBluetooth ＢＤＡおよびデバイスクラスを取得する（Ｓ２０３）。
【０１４５】
ＰＣ６−２が仮想Bluetooth サービスをＷｉ−ＦｉDirect上のＳＤＰで公開し、その際に通信可能なBluetooth デバイス４０のBluetooth ＢＤＡとデバイスクラス情報を付加する（Ｓ２０４）。つまり、ＰＣ６−２がＰＣ６−１に対し、問い合わせの応答としてBluetooth ＢＤＡとデバイスクラス情報をＰＣ６−１に公開する。
【０１４６】
ＰＣ６−１では、ＰＣ６−１側で所有するBluetooth デバイス４０のBluetooth ＢＤＡとデバイスクラスを用いることにより、ＰＣ６−２から提供された仮想Bluetooth を経由してBluetooth デバイス４０が利用可能か否かを判断する。この判断は自動的に行う。ＰＣ６−１にはデバイス情報（図７のＡ）を所有している。このデバイス情報は、図７のＡに示すデータ構造で記録されており、このデータ構造からBluetooth デバイス４０のデバイス情報を選択することができる。このデバイス情報が未登録の場合には、ＰＣ６−１からマニュアル選択すればよい。
【０１４７】
ＰＣ６−１とＰＣ６−２をＷｉ−ＦｉDirectで接続を確立する（Ｓ２０５）。接続確立のための情報（ＰＩＮコード）は予め登録されているか、登録されていない場合には入力すればよい。
【０１４８】
そして、ＰＣ６−１とBluetooth デバイス４０の仮想Bluetooth 接続を確立する（Ｓ２０６）。この接続確立の後、ＰＣ６−１とBluetooth デバイス４０との間で通常のBluetooth デバイスとしてペアリングを実行し、接続を確立する（Ｓ２０７）。これにより、Bluetooth 非対応のＰＣ６−１にＰＣ６−２を介してBluetooth デバイス４０が共有化される。この例では、Bluetooth デバイス４０はプリンタ４０−５である。
【０１４９】
＜サービス提供ＰＣの検出時の処理手順＞
【０１５０】
図１５は、図１４に示す処理手順（Ｓ２００）のサービス提供ＰＣの検出時の処理手順を示している。
【０１５１】
この事前処理では、会員制デバイス共有サービスの会員サイトであるサーバ５０からデバイスの固有情報（Bluetooth ＢＤＡとデバイスクラス）と通信接続確立のための情報をダウンロードする（Ｓ３０１）。つまり、会員サイトから自分の持っているデバイスのＢＤＡをダウンロードする。
【０１５２】
サーバ５０側で記録されているデータ構造をユーザ・デバイス情報管理テーブル９０（図８のＡ）に示す。会員サイトではＰＣ６−２の位置情報を地図上で確認する。この位置情報は、ＰＣ６−２にインストールされている仮想Bluetooth サービスが定期的にサーバ５０へ通知する。仮想Bluetooth サービスは位置情報をＰＣ６−２に内蔵のＧＰＳや無線ＬＡＮアクセスポイントから取得する。位置情報のデータ構造である位置情報テーブル１００（図８のＢ）に示す。
【０１５３】
サービス利用時には、Ｗｉ−ＦｉDirectを利用して、周囲の通信可能なＰＣへ提供可能なサービスを問い合わせる（Ｓ３０２）。この問い合わせにより、Bluetooth サービス提供があるか否かを判定する（Ｓ３０３）。
【０１５４】
周囲にあるＰＣがBluetooth 共有サービスを提供している場合には（Ｓ３０３のＹＥＳ）、そのＰＣの通信可能なBluetooth 対応デバイスのBluetooth ＢＤＡとＰＣ６−１に同一のＢＤＡが含まれているか否かを調べる（Ｓ３０４）。Bluetooth ＢＤＡが含まれている場合には（Ｓ３０４のＹＥＳ）、サービス提供可能なＰＣであると判定する（Ｓ３０５）。Bluetooth ＢＤＡが含まれていない場合には（Ｓ３０４のＮＯ）、サービス提供可能なＰＣではないと判定し、Ｓ３０２に戻る。
【０１５５】
＜仮想Bluetooth 通信接続確立の処理手順＞
【０１５６】
図１６は、仮想Bluetooth サービスの問い合わせに対する応答処理の処理手順を示している。この処理手順は、通信接続確立の処理手順であり、開始事前にサーバ５０からデバイス情報管理テーブル８０（図７のＡ）にあるデータをダウンロードしてあることが前提である。
【０１５７】
周囲のＰＣへサービスを問い合わせる（Ｓ４０１）。これにより、応答があるか否かを判断する（Ｓ４０２）。応答があれば（Ｓ４０２のＹＥＳ）、仮想Bluetooth サービスか否かを判断する（Ｓ４０３）。仮想Bluetooth サービスでなければ（Ｓ４０３のＮＯ）、Ｓ４０２に戻る。
【０１５８】
デバイス情報管理テーブル８０（図７のＡ）のデータを参照し、対象デバイスのＢＤＡおよびデバイスクラスであるかをチェックする（Ｓ４０４）。ＰＣ６−２が該当するＢＤＡおよびデバイスクラスでなければ（Ｓ４０４のＮＯ）、Ｓ４０２に戻る。ＰＣ６−２が該当するＢＤＡおよびデバイスクラスであれば（Ｓ４０４のＹＥＳ）、これにより、仮想Bluetooth サービスを提供するＰＣ６−２を特定する（Ｓ４０５）。
【０１５９】
ＰＣ６−２の仮想Bluetooth サービスへ接続を要求する（Ｓ４０６）。この接続要求に対し、応答があるか否かを判断する（Ｓ４０７）。応答があれば（Ｓ４０７のＹＥＳ）、  ユーザ・デバイス情報管理テーブル９０（図８のＡ）の通信確立用情報を利用してチャレンジアンドレスポンスで認証、仮想Bluetooth 接続の暗号化通信を確立し、デバイス情報管理テーブル８０の情報を渡す（Ｓ４０８）。これにより応答処理を終了する。
【０１６０】
Ｓ４０２およびＳ４０７で応答がなければ（Ｓ４０７のＮＯ）仮想Bluetooth サービスを提供できるＰＣは存在しないと判断する（Ｓ４０９）。これにより応答処理を終了する。
【０１６１】
＜ＰＣ６−１側の Bluetoothデバイスとの接続処理＞
【０１６２】
図１７はＰＣ６−１側の Bluetoothデバイスとの接続確立の処理手順を示している。
【０１６３】
この処理手順では、ＰＣ６−１が問い合わせ要求（HCI inquiry ＿Command ）を発する（Ｓ５０１）。これに対する問い合わせ結果通知（HCI inquiry ＿Result＿Event ）を受信する（Ｓ５０２）。これにより接続要求（HCI Create＿Connection）を行う（Ｓ５０３）。これに続いてリンクキー要求（HCI Link＿Key ＿Request ＿Event ）を発する（Ｓ５０４）。これに続いてＰＩＮコード入力（HCI Pin ＿Code＿Request ＿Event ）を行う（Ｓ５０５）。これに基づき、リンクキーを受信する（Ｓ５０６）。これにより暗号化を実行し（Ｓ５０７）、接続完了に移行し（Ｓ５０８）、この処理を終了する。
【０１６４】
＜仮想Bluetooth サービス問い合わせに対する応答処理＞
【０１６５】
図１８は、仮想Bluetooth サービス問い合わせに対する応答処理の処理手順を示している。
【０１６６】
ＰＣ６−１からサービス問い合わせを受信し（Ｓ６０１）、周囲のBluetooth デバイスを問い合わせ（Inquiry ）を行う（Ｓ６０２）。この問い合わせに対する応答があるか否かを判断する（Ｓ６０３）。応答があれば（Ｓ６０３のＹＥＳ）Bluetooth デバイスのＢＤＡとデバイスクラスを仮想化デバイス情報管理テーブル８６（図７のＢ）のリストに追加し（Ｓ６０４）、Ｓ６０３に戻る。
【０１６７】
Ｓ６０３において、応答がなければ（Ｓ６０３のＮＯ）、仮想Bluetooth サービスと通信可能なBluetooth デバイスのＢＤＡとデバイスクラスのリストを返し（Ｓ６０５）、この処理を終了する。
【０１６８】
＜仮想Bluetooth サービスに対する接続要求への応答処理＞
【０１６９】
図１９は、仮想Bluetooth サービスに対する接続要求への応答処理の処理手順を示している。
【０１７０】
ＰＣ６−１から仮想Bluetooth への接続要求を受信する（Ｓ７０１）。この受信に基づき、ユーザ・デバイス情報管理テーブル９０（図８のＡ）のデータを利用し、チャレンジアンドレスポンスで接続要求元が同じサービスを利用していることを認証する（Ｓ７０２）。
【０１７１】
認証がＯＫであるかを判断し（Ｓ７０３）、認証ＯＫであれば、通信用暗号鍵を交換する（Ｓ７０４）。この暗号鍵に基づいて暗号化による通信接続を確立する（Ｓ７０５）。そして、デバイス情報管理テーブル８０（図７のＡ）から情報を受け取り、仮想化デバイス情報管理テーブル８６（図７のＢ）に追加し（Ｓ７０６）、この処理を終了する。
【０１７２】
＜ＰＣ６−２側の Bluetoothデバイスとの接続確立の処理手順＞
【０１７３】
図２０はＰＣ６−２側の Bluetoothデバイスとの接続確立の処理手順を示している。
【０１７４】
問い合わせ要求（HCI inquiry ＿Command ）を行ない（Ｓ８０１）、問い合わせ要求状態（HCI Command ＿Status＿Event ）となり（Ｓ８０２）、問い合わせ結果通知（HCI inquiry ＿Result＿Event ）を受ける。
【０１７５】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するか否かを判断する（Ｓ８０４）。受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８０４のＹＥＳ）、要求充足（HCI inquiry ＿Complete＿Event ）となり（Ｓ８０５）、接続要求（HCI Create＿Connection）を行う（Ｓ８０６）。
【０１７６】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８０７）。受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８０７のＹＥＳ）、問い合わせ要求状態（HCI Command ＿Status＿Event ）となり（Ｓ８０８）、リンクキー要求（HCI Link＿Key ＿Request ＿Event ）を実行する（Ｓ８０９）。
【０１７７】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８１０）。受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８１０のＹＥＳ）、リンクキー処理（HCI Link＿Key ＿Request ＿Negative＿Reply ）を経て（Ｓ８１１）、受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかの判断をする（Ｓ８１２）。
【０１７８】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８１２のＹＥＳ）、要求充足（HCI Command ＿Complete＿Event ）となり（Ｓ８１３）、ＰＩＮコード入力（HCI Pin ＿Code＿Request ＿Event ）を行う（Ｓ８１４）。
【０１７９】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８１５）。受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８１５のＹＥＳ）、処理（HCI Code＿Request ＿Reply ）を経て（Ｓ８１６）、受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８１７）。
【０１８０】
受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば（Ｓ８１７のＹＥＳ）、処理（HCI Command ＿Complete＿Event ）を経て（Ｓ８１８）、認証を行う（Ｓ８１９）。
【０１８１】
リンクキーの設定（Ｓ８２０）、処理（HCI Link＿Key ＿Notification＿Event ）を経て（Ｓ８２１）、受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８２２）。
【０１８２】
暗号化（Ｓ８２３）を経て接続完了（Ｓ８２４）、処理（HCI Connection＿Complete＿Event ）（Ｓ８２５）により、受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致するかを判断する（Ｓ８２６）。受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致すれば、この処理を終了する。
【０１８３】
また、Ｓ８０４、Ｓ８０７、Ｓ８１０、Ｓ８１２、Ｓ８１５、Ｓ８１７、Ｓ８２２、Ｓ８２６で、受信情報（BD＿ADDR）が仮想化デバイス情報管理テーブル８６（図７のＢ）のＢＤＡと一致しなければ（Ｓ８０４、Ｓ８０７、Ｓ８１０、Ｓ８１２、Ｓ８１５、Ｓ８１７、Ｓ８２２およびＳ８２６のＮＯ）、Ｓ８２７に移行する。この場合、仮想Bluetooth 接続のデバイスではないためＰＣ６−２上の上位ドライバ１６−１に渡し（Ｓ８２７）、この処理を終了する。
【０１８４】
＜ Bluetoothデバイス側の通信接続の処理手順＞
【０１８５】
図２１は、Bluetoothデバイス側の通信接続の処理手順を示している。
【０１８６】
この処理手順では、接続要求（HCI Connection＿Request ＿Event ）により（Ｓ９０１）、接続要求の受入れ要求（HCI Accept＿Connection＿Request ）を実行する（Ｓ９０２）。      
【０１８７】
これにより、処理（HCI Command ＿Status＿Event ）を実行し（Ｓ９０３）、ＰＩＮコード入力（HCI Pin ＿Code＿Request ＿Event ）を実行し（Ｓ９０４）、ＰＩＮコード処理（HCI Code＿Request ＿Reply ）を実行する（Ｓ９０５）。処理（HCI Command ＿Complete＿Event ）の実行（Ｓ９０６）の後、認証を行う（Ｓ９０７）。
【０１８８】
リンクキーの設定を行ない（Ｓ９０８）、リンクキー処理（HCI Link＿Key ＿Notification＿Event ）を実行する（Ｓ９０９）。リンクキーにより暗号化を実行し（Ｓ９１０）、接続完了（Ｓ９１１）、接続完了処理（HCI Connection＿Complete＿Event ）により（Ｓ９１２）、この処理を終了する。
【０１８９】
＜ Bluetoothに非対応のＰＣと Bluetoothデバイスとの接続形態＞
【０１９０】
図２２のＡ、Ｂ、ＣおよびＤは、ＰＣ６−２を媒介としたＰＣ６−１の Bluetoothデバイス４０との接続形態を示している。
【０１９１】
図２２のＡに示す形態では、ＰＣ６−１にＰＣ６−２を介して Bluetooth携帯電話機４０−２が無線接続されている。この場合、 Bluetooth携帯電話機４０−２にはＰＣ６−２がBluetooth 通信により接続されている。このＰＣ６−２には遠距離通信機能を備えるBluetooth 非対応ＰＣ６−１が接続されている。斯かる構成ではＰＣ６−２を経由し、つまり、無線ＬＡＮ（Local Area Networkたとえば、Ｗｉ−Ｆｉ）上でBluetooth のトネリング（tunneling ）を行う。これにより、ＰＣ６−１に Bluetooth携帯電話機４０−２が共有化することができる。
【０１９２】
同様の処理を行えば、図２２のＢ、Ｃ、Ｄに示すように、Bluetooth ヘッドセット４０−３、Bluetooth マウス４０−４、Bluetooth プリンタ４０−５をＰＣ６−１に共有化することができる。
【０１９３】
〔他の実施の形態〕
【０１９４】
(1) 上記実施の形態では、 Bluetoothデバイス４０として携帯電話機、ヘッドセット、マウス、プリンタを例示したが、これらに限定されるものではない。このような Bluetoothデバイスなどの無線接続可能なデバイスには、電子ゲーム機やカメラなどであってもよい。
【０１９５】
(2) 情報処理装置の一例としてＰＣ（パーソナルコンピュータ）を例示したが、携帯電話機やスマートフォン、タブレット端末などの情報処理機能と無線通信機能を備えていればテレビ受像機などの電子機器であってもよい。
【０１９６】
以上説明したように、無線通信デバイスの共有化方法、共有化プログラム、共有化システムおよび情報処理装置の最も好ましい実施の形態等について説明した。本開示の構成は、上記記載に限定されるものではない。特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能である。斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【０１９７】
２−１、２−２、２−３  共有化システム
４  無線通信デバイス
６−１、６−２  ＰＣ
８、１４  無線通信機能
１０−１、１０−２  仮想処理機能
１２、１８  無線通信
１６  ドライバ
１６−１  上位ドライバ
１６−２  下位ドライバ
２０、２４、２６  通信部
２２、２８  処理部
４０  Bluetooth デバイス
４０−１、４０−２   Bluetooth携帯電話機
４０−３   Bluetoothマウス
４０−４   Bluetoothヘッドセット
４０−５   Bluetoothプリンタ
４００  仮想Bluetooth デバイス
５０  サーバ
５２  ＣＰＵ
５４  ＲＡＭ
５６  ＨＤＤ
５８  ＷＬＡＮコントローラ
６０  ＣＰＵ
６２  ＲＡＭ
６４  ＨＤＤ
６６  ＷＬＡＮコントローラ
６８  Bluetooth コントローラ
７０  ＣＰＵ
７２  ＲＡＭ
７４  ＨＤＤ
７６  ＬＡＮコントローラ
８０  デバイス情報管理テーブル
８２  デバイス固有情報
８４  デバイスクラス
８６  仮想化デバイス情報管理テーブル
８８  デバイス固有情報
９０  ユーザ・デバイス情報管理テーブル
９２  ユーザ名
９４  デバイス固有情報
９６  デバイスクラス
９８  通信確立用情報
１００  位置情報テーブル
１０２  緯度
１０４  経度
１０６  ハードウェア
１０８  ソフトウェア
１１０  Ｌ２ＣＡＰ
１１２  ＳＤＰ
１１４  ＲＦＣＯＭＭ
１１６  アプリ
１１８  ＷＬＡＮドライバ
１２０  ネットワークスタック
１２２  ＷｉＦｉ Direct ＳＤＰ
１２４  ＷｉＦｉ Direct サービス用アプリ
１２６  Bluetooth スタック
１２８−１、１２８−２  仮想Bluetooth サービス
１３０  ＷＬＡＮドライバ
１３２  ネットワークスタック
１３４  Bluetooth スタック
１３６  アプリケーション
【図１】
0005817604.tif 000002
【図２】
0005817604.tif 000003
【図３】
0005817604.tif 000004
【図４】
0005817604.tif 000005
【図５】
0005817604.tif 000006
【図６】
0005817604.tif 000007
【図７】
0005817604.tif 000008
【図８】
0005817604.tif 000009
【図９】
0005817604.tif 000010
【図１０】
0005817604.tif 000011
【図１１】
0005817604.tif 000012
【図１２】
0005817604.tif 000013
【図１３】
0005817604.tif 000014
【図１４】
0005817604.tif 000015
【図１５】
0005817604.tif 000016
【図１６】
0005817604.tif 000017
【図１７】
0005817604.tif 000018
【図１８】
0005817604.tif 000019
【図１９】
0005817604.tif 000020
【図２０】
0005817604.tif 000021
【図２１】
0005817604.tif 000022
【図２２】
0005817604.tif 000023