(57)【要約】【課題】  接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にする。【解決手段】  複合装置１００は、ゲストＯＳ２０と、ゲストＯＳ２０を実現するホストＯＳ１０と、を備え、ゲストＯＳ２０は、外部機器１を制御するためのドライバプログラムに基づいて特定される外部機器１を特定するための機器情報をホストＯＳ１０に伝達する伝達処理部２４を備え、ホストＯＳ１０は、伝達された機器情報と、当該機器情報を伝達してきたゲストＯＳ２０を特定するためのＯＳ情報と、を関連付けた関連付情報を記憶する関連付情報記憶部１２と、外部機器１が接続されることに応じて、関連付情報により外部機器１と関連付けられたゲストＯＳ２０に外部機器１の制御権限を付与する権限付与部１４と、を備える。【選択図】        図３
2019114025.tif 000002
【特許請求の範囲】
【請求項１】
ゲストオペレーティングシステムと、
前記ゲストオペレーティングシステムを実現するホストオペレーティングシステムと、を備え、
前記ゲストオペレーティングシステムは、
外部機器を制御するためのドライバプログラムに基づいて特定される前記外部機器を特定するための機器情報を前記ホストオペレーティングシステムに伝達する伝達処理手段を備え、
前記ホストオペレーティングシステムは、
前記伝達された機器情報と、当該機器情報を伝達してきた前記ゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報を記憶する関連付情報記憶手段と、
前記外部機器が接続されることに応じて、前記関連付情報により前記外部機器と関連付けられた前記ゲストオペレーティングシステムに前記外部機器の制御権限を付与する権限付与手段と、を備える、情報処理装置。
【請求項２】
前記ゲストオペレーティングシステムおよび前記ホストオペレーティングシステムのいずれか一方は、前記関連付情報を生成する、請求項１に記載の情報処理装置。
【請求項３】
前記伝達処理手段は、１以上の外部機器にそれぞれ対応する１以上のドライバプログラムがインストールされている場合、前記１以上のドライバプログラムのいずれかがユーザーにより選択されることに応じて、前記選択されたドライバプログラムに対応する前記機器情報を送信する、請求項１または２に記載の情報処理装置。
【請求項４】
前記伝達処理手段は、前記外部機器を制御するための前記ドライバプログラムがインストールされることに応じて、前記機器情報を送信する、請求項１または２に記載の情報処理装置。
【請求項５】
前記ゲストオペレーティングシステムは、さらに、
前記ドライバプログラムがアンインストールされた場合、前記ホストオペレーティングシステムに通知する通知処理手段を備え、
前記ホストオペレーティングシステムは、さらに、
前記通知に応答して、アンインストールされた前記ドライバプログラムに対応する前記関連付情報を前記関連付情報記憶手段から削除する削除処理手段を備える、請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
ゲストオペレーティングシステムを実現するホストオペレーティングシステムを備える情報処理装置で実行される情報処理方法であって、
外部機器を制御するためのドライバプログラムに基づいて特定される前記外部機器を特定するための機器情報を前記ゲストオペレーティングシステムにより前記ホストオペレーティングシステムに伝達するステップと、
前記伝達された機器情報と、当該機器情報を伝達してきた前記ゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報を前記ホストオペレーティングシステムにより記憶するステップと、
前記外部機器が接続されることに応じて、前記関連付情報により前記外部機器と関連付けられた前記ゲストオペレーティングシステムに前記外部機器の制御権限を前記ホストオペレーティングシステムにより付与するステップと、を含む、情報処理方法。
【請求項７】
ゲストオペレーティングシステムを実現するホストオペレーティングシステムを備える情報処理装置で実行される情報処理プログラムであって、
外部機器を制御するためのドライバプログラムに基づいて特定される前記外部機器を特定するための機器情報を前記ゲストオペレーティングシステムにより前記ホストオペレーティングシステムに伝達するステップと、
前記伝達された機器情報と、当該機器情報を伝達してきた前記ゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報を前記ホストオペレーティングシステムにより記憶するステップと、
前記外部機器が接続されることに応じて、前記関連付情報により前記外部機器と関連付けられた前記ゲストオペレーティングシステムに前記外部機器の制御権限を前記ホストオペレーティングシステムにより付与するステップと、を前記情報処理装置に実行させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、情報処理方法および情報処理プログラムに関し、特に、外部機器が接続可能な情報処理装置、その情報処理装置で実行される情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
ホストＯＳ（オペレーティングシステム）により複数のゲストＯＳを実現する情報処理装置が知られている。情報処理装置に接続された外部機器は、当該外部機器に対応したゲストＯＳによる制御により動作可能である。このような情報処理装置として、特開２０１７−１３４５８７号公報には、ハードウェア上で動作するハイパーバイザーを有する情報処理装置の情報処理方法であって、ハイパーバイザーによって実現された複数の仮想マシンの各々に対応する、情報処理装置に接続される外部機器の機器識別情報と該機器識別情報によって識別される外部機器に対する優先度とを含む利用条件情報を、取得する取得ステップと、利用条件情報における、情報処理装置に接続された外部機器の機器識別情報に対応する、最も高い優先度に対応する仮想マシンに、ハードウェアの排他的利用権を割当てる割当ステップと、を含む情報処理方法が記載されている。利用条件情報は、仮想マシンの構成および設定の少なくとも一方に基づいて生成される。
【０００３】
しかしながら、特開２０１７−１３４５８７号公報においては、情報処理装置に外部機器が接続される前に、その外部機器に対応する利用条件情報を複数の仮想マシンごとにホストＯＳに設定しておく必要がある。このため、ユーザーは、情報処理装置に接続される予定の外部機器のすべてに、それぞれ対応する利用条件情報が設定する必要があり、利用条件情報が設定されていない場合には、接続された外部機器を情報処理装置により利用できない場合がある。
【特許文献１】特開２０１７−１３４５８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の一つは、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理装置を提供することである。
【０００５】
この発明の他の目的は、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理方法を提供することである。
【０００６】
この発明のさらに他の目的は、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理プログラムを提供することである。
【課題を解決するための手段】
【０００７】
この発明は上述した問題点を解決するためになされたもので、この発明のある局面によれば、情報処理装置は、ゲストオペレーティングシステムと、ゲストオペレーティングシステムを実現するホストオペレーティングシステムと、を備え、ゲストオペレーティングシステムは、外部機器を制御するためのドライバプログラムに基づいて特定される外部機器を特定するための機器情報をホストオペレーティングシステムに伝達する伝達処理手段を備え、ホストオペレーティングシステムは、伝達された機器情報と、当該機器情報を伝達してきたゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報を記憶する関連付情報記憶手段と、外部機器が接続されることに応じて、関連付情報により外部機器と関連付けられたゲストオペレーティングシステムに外部機器の制御権限を付与する権限付与手段と、を備える。
【０００８】
この局面に従えば、外部機器を制御するためのドライバプログラムに基づいて特定される外部機器を特定するための機器情報が、ゲストオペレーティングシステムからホストオペレーティングシステムに伝達される。これにより、ホストオペレーティングシステムにおいて、伝達された機器情報と、当該機器情報を伝達してきたゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報が記憶され、外部機器が接続されることに応じて、関連付情報により外部機器と関連付けられたゲストオペレーティングシステムに外部機器の制御権限が付与される。このため、接続される予定の外部機器が接続される場合にその外部機器を確実に利用することが可能になる。また、ユーザーは、外部機器と、その外部機器を制御するゲストオペレーティングシステムを特定する情報との関連付けをホストオペレーティングシステムに設定する必要がない。その結果、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理装置を提供することができる。
【０００９】
好ましくは、ゲストオペレーティングシステムおよびホストオペレーティングシステムのいずれか一方は、関連付情報を生成する。
【００１０】
この局面に従えば、ホストオペレーティングシステムに、関連付情報を設定するユーザーによる操作が不要となる。
【００１１】
好ましくは、伝達処理手段は、１以上の外部機器にそれぞれ対応する１以上のドライバプログラムがインストールされている場合、１以上のドライバプログラムのいずれかがユーザーにより選択されることに応じて、選択されたドライバプログラムに対応する機器情報を送信する。
【００１２】
この局面に従えば、ゲストオペレーティングシステムにインストールされた１以上のドライバプログラムからユーザーにより選択されたドライバプログラムに対応して関連付情報がホストオペレーティングシステムに記憶される。これにより、ユーザーは、ゲストオペレーティングシステムに対してインストールされたドライバプログラムを選択する操作をすればよく、ホストオペレーティングシステムに関連情報を設定するユーザーによる操作が不要となる。
【００１３】
好ましくは、伝達処理手段は、外部機器を制御するためのドライバプログラムがインストールされることに応じて、機器情報を送信する。
【００１４】
この局面に従えば、ユーザーは、所望のドライバプログラムをゲストオペレーティングシステムにインストールすることにより、当該ドライバプログラムに対応する関連付情報がホストオペレーティングシステムに記憶される。これにより、ユーザーは、ドライバプログラムをインストールする操作をすればよく、ホストオペレーティングシステムに関連情報を設定するユーザーによる操作が不要となる。
【００１５】
好ましくは、ゲストオペレーティングシステムは、さらに、ドライバプログラムがアンインストールされた場合、ホストオペレーティングシステムに通知する通知処理手段を備え、ホストオペレーティングシステムは、さらに、通知に応答して、アンインストールされたドライバプログラムに対応する関連付情報を関連付情報記憶手段から削除する削除処理手段を備える。
【００１６】
この局面に従えば、外部機器の制御権限が誤って付与されることを防止することができる。
【００１７】
この発明の他の局面によれば、情報処理方法は、ゲストオペレーティングシステムを実現するホストオペレーティングシステムを備える情報処理装置で実行される情報処理方法であって、外部機器を制御するためのドライバプログラムに基づいて特定される外部機器を特定するための機器情報をゲストオペレーティングシステムによりホストオペレーティングシステムに伝達するステップと、伝達された機器情報と、当該機器情報を伝達してきたゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報をホストオペレーティングシステムにより記憶するステップと、外部機器が接続されることに応じて、関連付情報により外部機器と関連付けられたゲストオペレーティングシステムに外部機器の制御権限をホストオペレーティングシステムにより付与するステップと、を含む。
【００１８】
この局面に従えば、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理方法を提供することができる。
【００１９】
この発明のさらに他の局面によれば、情報処理プログラムは、ゲストオペレーティングシステムを実現するホストオペレーティングシステムを備える情報処理装置で実行される情報処理プログラムであって、外部機器を制御するためのドライバプログラムに基づいて特定される外部機器を特定するための機器情報をゲストオペレーティングシステムによりホストオペレーティングシステムに伝達するステップと、伝達された機器情報と、当該機器情報を伝達してきたゲストオペレーティングシステムを特定するためのオペレーティングシステム情報と、を関連付けた関連付情報をホストオペレーティングシステムにより記憶するステップと、外部機器が接続されることに応じて、関連付情報により外部機器と関連付けられたゲストオペレーティングシステムに外部機器の制御権限をホストオペレーティングシステムにより付与するステップと、を情報処理装置に実行させる。
【００２０】
この局面に従えば、接続される予定の外部機器を利用可能とするためのユーザーによる設定操作を容易にした情報処理プログラムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態の１つにおける複合装置の外観を示す斜視図である。
【図２】複合装置のハードウェア構成の概要を示すブロック図である。
【図３】複合装置が備えるＣＰＵが有する機能の一例を示す図である。
【図４】ゲストＯＳによる情報処理の流れの一例を示すフローチャートである。
【図５】ホストＯＳによる情報処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００２３】
図１は、本発明の実施の形態の１つにおける複合装置の外観を示す斜視図である。図２は、複合装置のハードウェア構成の概要を示すブロック図である。図１および図２を参照して、情報処理装置として機能する複合装置１００は、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であり、メイン回路１１０と、原稿を読み取るための原稿読取部１３０と、原稿を原稿読取部１３０に搬送するための自動原稿搬送装置１２０と、原稿読取部１３０が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部１４０と、画像形成部１４０に用紙を供給するための給紙部１５０と、ユーザーインターフェースとしての操作パネル１６０とを含む。
【００２４】
メイン回路１１０は、ＣＰＵ（中央演算装置）１１１と、通信インターフェース（Ｉ／Ｆ）部１１２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１４と、大容量記憶装置としてのハードディスクドライブ（ＨＤＤ）１１５と、ファクシミリ部１１６と、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）１１８が装着される外部記憶装置１１７と、コネクタ部１１９と、を含む。ＣＰＵ１１１は、自動原稿搬送装置１２０、原稿読取部１３０、画像形成部１４０、給紙部１５０、および操作パネル１６０と接続され、複合装置１００の全体を制御する。
【００２５】
ＲＯＭ１１３は、ＣＰＵ１１１が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。ＲＡＭ１１４は、ＣＰＵ１１１がプログラムを実行する際の作業領域として用いられる。
【００２６】
通信Ｉ／Ｆ部１１２は、複合装置１００をネットワークに接続するためのインターフェースである。ＣＰＵ１１１は、通信Ｉ／Ｆ部１１２を介して、ネットワークに接続されたコンピューターとの間で通信し、データを送受信する。また、通信Ｉ／Ｆ部１１２は、ネットワークを介してインターネットに接続されたコンピューターと通信が可能である。
【００２７】
ファクシミリ部１１６は、公衆交換電話網（ＰＳＴＮ）に接続され、ＰＳＴＮにファクシミリデータを送信、またはＰＳＴＮからファクシミリデータを受信する。ファクシミリ部１１６は、受信したファクシミリデータを、ＨＤＤ１１５に記憶、または画像形成部１４０に出力する。画像形成部１４０は、ファクシミリ部１１６により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部１１６は、ＨＤＤ１１５に記憶されたデータをファクシミリデータに変換して、ＰＳＴＮに接続されたファクシミリ装置に送信する。
【００２８】
外部記憶装置１１７には、ＣＤ−ＲＯＭ１１８が装着される。ＣＰＵ１１１は、外部記憶装置１１７を介してＣＤ−ＲＯＭ１１８にアクセス可能である。ＣＰＵ１１１は、外部記憶装置１１７に装着されたＣＤ−ＲＯＭ１１８に記憶されたプログラムをＲＡＭ１１４にロードして実行する。なお、ＣＰＵ１１１が実行するプログラムを記憶する媒体としては、ＣＤ−ＲＯＭ１１８に限られず、光ディスク（ＭＯ（Ｍａｇｎｅｔｉｃ  Ｏｐｔｉｃａｌ  ｄｉｓｃ）／ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ）／ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ））、ＩＣカード、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）などの半導体メモリであってもよい。
【００２９】
また、ＣＰＵ１１１が実行するプログラムは、ＣＤ−ＲＯＭ１１８に記憶されたプログラムに限られず、ＨＤＤ１１５に記憶されたプログラムをＲＡＭ１１４にロードして実行するようにしてもよい。この場合、ネットワークに接続された他のコンピューターが、複合装置１００のＨＤＤ１１５に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、複合装置１００が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをＨＤＤ１１５に記憶するようにしてもよい。ここでいうプログラムは、ＣＰＵ１１１が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００３０】
コネクタ部１１９は、外部機器１が接続される１以上の接続ポートを含む。１以上の接続ポートのそれぞれは、通信ポートである。通信ポートは、例えばシリアル通信ポートであり、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートである。この場合、外部機器１は、例えばＵＳＢデバイスである。具体的には、外部機器１は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードリーダ、ＩＣカードライタ、ＵＳＢメモリ、ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）、マウス、デジタルカメラ、キーボード、通信機器等を含む。通信機器は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ケーブルに接続される通信機器、赤外線（ＩｒＤＡ）通信が可能な通信機器、Ｂｌｏｏｔｏｏｔｈ（登録商標）規格に従った通信などの無線通信が可能な通信機器である。コネクタ部１１９に接続された外部機器１の動作はＣＰＵ１１１により制御される。
【００３１】
操作パネル１６０は、表示部１６１と操作部１６３とを含む。表示部１６１は、例えば、液晶表示装置（ＬＣＤ）または有機ＥＬ表示装置（ｏｒｇａｎｉｃ  ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ  ｄｉｓｐｌａｙ）であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部１６３は、タッチパネル１６５と、ハードキー部１６７とを含む。タッチパネル１６５は、静電容量方式である。なお、タッチパネル１６５は、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。ハードキー部１６７は、複数のハードキーを含む。ハードキーは、例えば接点スイッチである。
【００３２】
図３は、複合装置が備えるＣＰＵが有する機能の一例を示す図である。図３に示す機能は、複合装置１００が備えるＣＰＵ１１１が、ＲＯＭ１１３、ＨＤＤ１１５またはＣＤ−ＲＯＭ１１８に記憶された情報処理プログラムを実行することにより、ＣＰＵ１１１に形成される機能である。ここでいう情報処理プログラムは、ＣＰＵ１１１により直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００３３】
図３を参照して、ＣＰＵ１１１は、ホストＯＳ（オペレーティングシステム）１０と、ホストＯＳ１０上で実現される複数のゲストＯＳ２０と、ホストＯＳ１０上で実現されるエミュレート部３０と、を含む。ホストＯＳ１０およびゲストＯＳ２０それぞれは、ＣＰＵ１１１が一般的なオペレーティングシステムプログラムを実行するプロセスである。なお、ここでは、ゲストＯＳ２０が複数の場合を例に説明するが、ゲストＯＳ２０は、１以上であればよい。エミュレート部３０は、ホストＯＳ１０による制御に基づいて、コネクタ部１１９をエミュレートする。なお、エミュレート部３０は、ホストＯＳ１０上でゲストＯＳ２０を実現するための仮想化プログラムを、ＣＰＵ１１１が実行するタスクである。
【００３４】
複数のゲストＯＳ２０のそれぞれは、例えばコンテナであり、インストール部２１と、機器情報生成部２２と、選択受付部２３と、伝達処理部２４と、アンインストール部２５と、通知処理部２６と、機器制御部２７と、を含む。インストール部２１は、ユーザーの操作に基づいて、ゲストＯＳ２０に外部機器１を制御するためのドライバプログラムをインストールする。これにより、ドライバプログラムの実行ファイル（ドライバ情報）がＨＤＤ１１５に記憶され、ゲストＯＳ２０にドライバ（機器制御部２７）が形成される。
【００３５】
機器情報生成部２２は、インストール部２１によりインストールされたドライバプログラムから、対応する機器制御部２７が制御対象とする外部機器１を特定するための機器情報を取得する。ドライバプログラムから取得される機器情報は、制御対象となる外部機器１の機種を識別できればよい。機器情報は、例えば、その外部機器１の機種を識別するためのデバイス識別子を少なくとも含む。機器情報は、外部機器１を提供する提供者を識別するためのベンダ識別子を含んでもよい。また、機器情報生成部２２は、取得された機器情報と、当該機器情報生成部２２を含むゲストＯＳ２０を特定するためのＯＳ情報と、を関連付けることにより、関連付情報を生成する。
【００３６】
選択受付部２３は、インストール部２１によりインストールされた複数のドライバプログラムのいずれかの選択をユーザーから受け付ける。選択受付部２３は、インストールされた１以上のドライバプログラムの一覧を表示部１６１に表示する。ユーザーは、インストール部２１によりインストールされた複数のドライバプログラムのうち、所望のドライバプログラムを表示部１６１に表示された一覧から選択することができる。
【００３７】
伝達処理部２４は、機器情報生成部２２により生成された複数の関連付情報のうち、選択受付部２３を介してユーザーにより選択されたドライバプログラムに対応する関連付情報をホストＯＳ１０に伝達する。
【００３８】
アンインストール部２５は、ユーザーの指示に基づいて、インストール部２１によりインストールされたドライバプログラムのいずれかをアンインストールする。ユーザーは、インストール部２１によりインストールされたドライバプログラムのうち、不要なドライバプログラムのアンインストールを指示することができる。アンインストール部２５は、ドライバプログラムのいずれかがアンインストールされた場合、対応するドライバ情報をＨＤＤ１１５から削除する。また、通知処理部２６は、アンインストールされたドライバプログラムをホストＯＳ１０に通知する。
【００３９】
ホストＯＳ１０は、情報更新処理部１１と、関連付情報記憶部１２と、コネクタ部１１９を制御する接続受付部１３と、権限付与部１４と、削除処理部１５と、を含む。
【００４０】
情報更新処理部１１は、複数のゲストＯＳ２０のそれぞれの伝達処理部２４により伝達される関連付情報を関連付情報記憶部１２に記憶する。また、情報更新処理部１１は、複数のゲストＯＳ２０のそれぞれの伝達処理部２４により伝達される関連付情報に基づいて、関連付情報記憶部１２に記憶された関連付情報を更新する。関連付情報記憶部１２は、ＣＰＵ１１１が備える内部レジスタであってもよいし、ＨＤＤ１１５の予め定められた領域であってもよい。
【００４１】
例えば、同一の外部機器１を制御するための第１および第２のドライバプログラムが同一のゲストＯＳ２０にインストールされていることを想定する。ここで、ユーザーにより第１のドライバプログラムが選択され、第１のドライバプログラムに対応する関連付情報がゲストＯＳ２０から伝達された場合には、情報更新処理部１１は、当該関連付情報を関連付情報記憶部１２に記憶する。その後、ユーザーにより第２のドライバプログラムが選択され、第２のドライバプログラムに対応する関連付情報がゲストＯＳ２０から伝達された場合には、情報更新処理部１１は、関連付情報記憶部１２に記憶された関連付情報を第２のドライバプログラムに対応する関連付情報に更新する。
【００４２】
あるいは、同一の外部機器１を制御するための同一のドライバプログラムが第１および第２のゲストＯＳ２０にそれぞれインストールされていることを想定する。ここで、ユーザーにより第１のゲストＯＳ２０にインストールされたドライバプログラムが選択され、ドライバプログラムに対応する関連付情報が第１のゲストＯＳ２０から伝達された場合には、情報更新処理部１１は、当該関連付情報を関連付情報記憶部１２に記憶する。その後、ユーザーにより第２のゲストＯＳ２０にインストールされたドライバプログラムが選択され、ドライバプログラムに対応する関連付情報が第２のゲストＯＳ２０から伝達された場合には、情報更新処理部１１は、関連付情報記憶部１２に記憶された関連付情報を第２のゲストＯＳ２０から伝達された関連付情報に更新する。
【００４３】
接続受付部１３は、コネクタ部１１９の１以上の接続ポートのいずれかで外部機器１が接続されたことを検出する場合、外部機器１の接続が検出された接続ポートを介して、外部機器１と通信し、外部機器１から機器情報を取得する。接続受付部１３は、外部機器１から取得された機器情報を権限付与部１４に通知する。
【００４４】
権限付与部１４は、接続受付部１３からコネクタ部１１９に接続された外部機器１の機器情報を取得する。権限付与部１４は、接続受付部１３から取得した機器情報を含む関連付情報が関連付情報記憶部１２に記憶されているか否かを判定する。権限付与部１４は、関連付情報が関連付情報記憶部１２に記憶されている場合には、関連付情報記憶部１２に記憶された当該関連付情報に含まれるＯＳ情報に基づいて、複数のゲストＯＳ２０のうちから外部機器１を制御するゲストＯＳ２０を特定する。権限付与部１４は、外部機器１を制御するゲストＯＳ２０を特定する場合、コネクタ部１１９に接続された外部機器１の制御権限を、特定されたゲストＯＳ２０に付与する。具体的には、権限付与部１４は、エミュレート部３０を制御して、コネクタ部１１９の１以上の接続ポートのうち外部機器１が接続された接続ポートを、特定されたゲストＯＳ２０に割り当てさせる。エミュレート部３０は、特定されたゲストＯＳ２０のためにコネクタ部１１９をエミュレートする仮想コネクタの状態を、外部機器１が接続された状態に設定する。これにより、エミュレート部３０によって、外部機器１が接続された接続ポートが特定されたゲストＯＳ２０に割り当てられるので、特定されたゲストＯＳ２０の機器制御部２７が外部機器１を排他的に制御することが可能となる。
【００４５】
ゲストＯＳ２０の機器制御部２７は、ＣＰＵ１１１がＨＤＤ１１５に記憶された実行ファイルを実行するタスクであり、権限付与部１４から権限が付与されることを条件として、制御対象の外部機器１を制御する機能を有する。具体的には、権限付与部１４により権限が付与されたゲストＯＳ２０の機器制御部２７は、エミュレート部３０がコネクタ部１１９をエミュレートする仮想コネクタに外部機器１が接続されたことを検出するので、エミュレート部３０およびコネクタ部１１９を介して、コネクタ部１１９に接続された外部機器１との間でセッションを確立し、外部機器１を制御する。なお、権限付与部１４または接続受付部１３が、権限付与部１４によって権限が付与されたゲストＯＳ２０の機器制御部２７がセッションの確立に必要な外部機器１の機器情報を、エミュレート部３０を介して、そのゲストＯＳ２０の機器制御部２７に通知するようにしてもよい。
【００４６】
削除処理部１５は、通知処理部２６からの通知に応答して、関連付情報記憶部１２に記憶されている関連付情報を検索し、アンインストールされたドライバプログラムに対応する関連付情報が関連付情報記憶部１２に記憶されているか否かを判定する。削除処理部１５は、該当する関連付情報が関連付情報記憶部１２に記憶されている場合には、当該関連付情報を関連付情報記憶部１２から削除する。
【００４７】
図４は、ゲストＯＳによる情報処理の流れの一例を示すフローチャートである。ゲストＯＳ２０による情報処理は、ＣＰＵ１１１が、ＲＯＭ１１３、ＨＤＤ１１５またはＣＤ−ＲＯＭ１１８に記憶されたゲストＯＳプログラムを実行することにより、ＣＰＵ１１１により実行される処理である。ゲストＯＳプログラムは、情報処理プログラムの一部である。
【００４８】
図４を参照して、ＣＰＵ１１１は、ゲストＯＳ２０にドライバプログラムがインストールされたか否かを判断する（ステップＳ０１）。ドライバプログラムがインストールされたならば処理をステップＳ０２に進めるが、そうでなければ処理をステップＳ０４に進める。ここでは、外部機器１を制御するためのドライバプログラムがインストールされる場合を例に説明する。
【００４９】
ステップＳ０２においては、インストールされたドライバプログラムから、対応する機器制御部２７が制御対象とする装置の種類を特定するための機器情報を取得し、処理をステップＳ０３に進める。ここでは、外部機器１の種類を特定するための機器情報が取得される。ステップＳ０３においては、取得された機器情報と、当該ゲストＯＳ２０を特定するためのＯＳ情報と、を関連付けることにより関連付情報を生成し、処理をステップＳ０４に進める。
【００５０】
ステップＳ０４においては、ゲストＯＳ２０にインストールされたドライバプログラムがユーザーにより選択されたか否かを判断する。ドライバプログラムが選択されたならば処理をステップＳ０５に進めるが、そうでなければ処理をステップＳ０６に進める。ステップＳ０５においては、選択されたドライバプログラムに対応する関連付情報をホストＯＳ１０に伝達し、処理をステップＳ０６に進める。
【００５１】
ステップＳ０６においては、コネクタ部１１９への外部機器１の接続が検出されたか否かを判断する。具体的には、エミュレート部３０がコネクタ部１１９をエミュレートするコネクタの複数の接続ポートのいずれかで外部機器１の接続が検出されたか否かを判断する。外部機器１の接続が検出されたならば処理をステップＳ０７に進めるが、そうでなければ処理をステップＳ０９に進める。
【００５２】
ステップＳ０７においては、エミュレート部３０を介して外部機器１との間でセッションを確立し、処理をステップＳ０８に進める。ステップＳ０８においては、セッションが確立された外部機器１を制御し、処理をステップＳ０９に進める。
【００５３】
ステップＳ０９においては、ゲストＯＳ２０からドライバプログラムがアンインストールされたか否かを判断する。ドライバプログラムがアンインストールされたならば処理をステップＳ１０に進めるが、そうでなければ処理をステップＳ０１に戻す。ステップＳ１０においては、アンインストールされたドライバプログラムをホストＯＳ１０に通知し、処理をステップＳ０１に戻す。
【００５４】
図５は、ホストＯＳによる情報処理の流れの一例を示すフローチャートである。ホストＯＳ１０による情報処理は、ＣＰＵ１１１が、ＲＯＭ１１３、ＨＤＤ１１５またはＣＤ−ＲＯＭ１１８に記憶されたホストＯＳプログラムを実行することにより、ＣＰＵ１１１により実行される処理である。ホストＯＳプログラムは、情報処理プログラムの一部である。
【００５５】
図５を参照して、ＣＰＵ１１１は、ゲストＯＳ２０から関連付情報が伝達されたか否かを判断する（ステップＳ２１）。関連付情報が伝達されたならば処理をステップＳ２２に進めるが、そうでなければ処理をステップＳ２３に進める。ステップＳ２２においては、複数のゲストＯＳ２０のいずれかから伝達された関連付情報を関連付情報記憶部１２に記憶し、処理をステップＳ２３に進める。同一の外部機器１を制御するためのドライバプログラムに対応する関連付情報が既に関連付情報記憶部１２に記憶されている場合には、関連付情報記憶部１２に記憶された関連付情報を伝達された最新の関連付情報に更新する。その後、処理をステップＳ２３に進める。
【００５６】
ステップＳ２３においては、コネクタ部１１９の１以上の接続ポートのいずれかに装置が接続されたか否かを判断する。装置が接続されたならば処理をステップＳ２４に進めるが、そうでなければ処理をステップＳ２９に進める。ここでは、コネクタ部１１９の１以上の接続ポートのいずれかに外部機器１が接続される場合を例に説明する。
【００５７】
ステップＳ２４においては、外部機器１の接続が検出された接続ポートを介して、外部機器１と通信し、外部機器１から機器情報を取得し、処理をステップＳ２５に進める。ステップＳ２５においては、取得された機器情報と同じ機器情報を含む関連付情報が関連付情報記憶部１２に記憶されているか否かを判断する。関連付情報が記憶されているならば処理をステップＳ２７に進めるが、そうでなければ処理をステップＳ２６に進める。
【００５８】
ステップＳ２６においては、関連付情報記憶部１２に取得された機器情報を含む関連付情報が記憶されていないことをユーザーに通知し、処理をステップＳ２１に戻す。例えば、取得された機器情報と同じ機器情報を含む関連付情報が関連付情報記憶部１２に記憶されていないことを示すメッセージを表示部１６１に表示する。あるいは、複合装置１００にスピーカ等の音声出力部が設けられている場合には、音声により通知するようにしてもよい。
【００５９】
ユーザーは、通知を受けることにより、関連付情報記憶部１２に外部機器１の機器情報を含む関連付情報が記憶されていないことを認識し、複数のゲストＯＳ２０のいずれかにインストールされたドライバプログラムを選択することができる。これにより、ステップＳ２１において選択されたドライバプログラムに対応する関連付情報が、ゲストＯＳ２０からホストＯＳ１０に伝達され、ステップＳ２２において関連付情報記憶部１２に記憶される。
【００６０】
ステップＳ２７においては、ステップＳ２４において取得された機器情報と同じ機器情報を含む関連付情報に含まれるＯＳ情報に基づいて、外部機器１に対応するゲストＯＳ２０を特定し、処理をステップＳ２８に進める。ステップＳ２８においては、特定されたゲストＯＳ２０に外部機器１の接続が検出された接続ポートを割り当てる。具体的には、エミュレート部３０を制御して、コネクタ部１１９の１以上の接続ポートのうち外部機器１が接続された接続ポートを、特定されたゲストＯＳ２０に割り当てさせる。エミュレート部３０は、ゲストＯＳ２０のためにコネクタ部１１９をエミュレートする仮想コネクタの状態を、外部機器１が接続された状態に設定する。これにより、特定されたゲストＯＳ２０の機器制御部２７に外部機器１を排他的に制御する権限が付与される。その後、処理をステップＳ２９に進める。
【００６１】
ステップＳ２９においては、アンインストールされたドライバプログラムが通知されたか否かを判断する。ドライバプログラムが通知されたならば処理をステップＳ３０に進めるが、そうでなければ処理をステップＳ２１に戻す。
【００６２】
ステップＳ３０においては、関連付情報記憶部１２に記憶された関連付情報を検索し、関連付情報記憶部１２に通知されたドライバプログラムに対応する関連付情報が記憶されているか否かを判断する。関連付情報が記憶されているならば処理をステップＳ３１に進めるが、そうでなければ処理をステップＳ２１に戻す。ステップＳ３１においては、関連付情報記憶部１２からドライバプログラムに対応する関連付情報を削除し、処理をステップＳ２１に戻す。
【００６３】
＜変形例＞
上述した実施の形態における複合装置１００は、関連付情報をゲストＯＳ２０で生成するようにしたが、ホストＯＳ１０で生成してもよい。例えば、ホストＯＳ１０が、複数のゲストＯＳ２０のいずれかから機器情報を取得し、取得された機器情報と、複数のゲストＯＳ２０のうち当該機器情報を伝達してきたゲストＯＳのＯＳ情報とを関連付けることにより関連付情報を生成してもよい。
【００６４】
上述した実施の形態における複合装置１００は、ゲストＯＳ２０にドライバプログラムがインストールされたタイミングで当該ドライバプログラムに対応する関連付情報が生成され、ゲストＯＳ２０にインストールされた１以上のドライバプログラムの一覧からドライバプログラムのいずれかがユーザーにより選択されたタイミングで当該ドライバプログラムに対応する関連付情報がホストＯＳ１０に伝達されるようにした。しかしながら、ゲストＯＳ２０にドライバプログラムがインストールされたタイミングでは当該ドライバプログラムに対応する関連付情報が生成されず、ゲストＯＳ２０にインストールされた１以上のドライバプログラムの一覧からドライバプログラムのいずれかがユーザーにより選択されたタイミングで当該ドライバプログラムに対応する関連付情報が生成されるとともにホストＯＳ１０に伝達されてもよい。
【００６５】
上述した実施の形態における複合装置１００は、ゲストＯＳ２０にインストールされた１以上のドライバプログラムの一覧からドライバプログラムのいずれかがユーザーにより選択されることにより、選択されたドライバプログラムに対応する関連付情報がホストＯＳ１０に伝達されるようにしたが、ゲストＯＳ２０にドライバプログラムがインストールされたタイミングで当該ドライバプログラムに対応する関連付情報が生成されるとともにホストＯＳ１０に伝達されてもよい。この場合、ゲストＯＳ２０は選択受付部２３を含まない。また、ゲストＯＳ２０による情報処理におけるステップＳ０４がスキップされる。
【００６６】
以上説明したように本実施の形態における複合装置１００は、情報処理装置として機能し、ゲストＯＳ２０が、外部機器１を制御するためのドライバプログラムに基づいて特定される外部機器１を特定するための機器情報をホストＯＳ１０に伝達し、ホストＯＳ１０が、ゲストＯＳ２０から伝達された機器情報とゲストＯＳ２０を特定するためのＯＳ情報と、を関連付けた関連付情報を記憶し、コネクタ部１１９が備える複数の接続ポートのいずれかに外部機器１が接続されることに応じて、関連付情報により外部機器１と関連付けられたゲストＯＳ２０に外部機器１の制御権限を付与する。これにより、コネクタ部１１９が備える複数の接続ポートのいずれかに外部機器１が接続されることに応じて、関連付情報により外部機器１と関連付けられたゲストＯＳ２０に外部機器１の制御権限が付与されるので、コネクタ部１１９が備える複数の接続ポートのいずれかに接続される予定の外部機器１が接続される場合にその外部機器１を確実に利用することが可能になる。また、ユーザーは、外部機器１と、複数のゲストＯＳ２０のうち外部機器１を制御するゲストＯＳ２０を特定する情報との関連付けをホストＯＳ１０に設定する必要がない。したがって、コネクタ部１１９が備える複数の接続ポートのいずれかに接続される予定の外部機器１を利用可能とするためのユーザーによる設定操作を容易にすることができる。
【００６７】
また、ゲストＯＳ２０およびホストＯＳ１０のいずれか一方は、関連付情報を生成する。そのため、ホストＯＳ１０に、関連付情報を設定するユーザーによる操作が不要となる。
【００６８】
また、インストール部２１に１以上の外部機器１にそれぞれ対応する１以上のドライバプログラムがインストールされている場合、伝達処理部２４は、表示部１６１に表示された一覧から１以上のドライバプログラムのいずれかがユーザーにより選択受付部２３を介して選択されることに応じて、選択されたドライバプログラムに対応する機器情報を送信する。そのため、インストール部２１にインストールされた１以上のドライバプログラムからユーザーにより選択されたドライバプログラムに対応して関連付情報が関連付情報記憶部１２に記憶される。これにより、ユーザーは、選択受付部２３に対してインストールされたドライバプログラムを選択する操作をすればよく、ホストＯＳ１０に関連情報を設定するユーザーによる操作が不要となる。
【００６９】
あるいは、伝達処理部２４は、情報更新処理部１１を制御するためのドライバプログラムがインストール部２１にインストールされることに応じて、機器情報を送信する。そのため、ユーザーは、所望のドライバプログラムをインストール部２１にインストールすることにより、当該ドライバプログラムに対応する関連付情報が関連付情報記憶部１２に記憶される。これにより、ユーザーは、ドライバプログラムをインストール部２１にインストールする操作をすればよく、ホストＯＳ１０に関連情報を設定するユーザーによる操作が不要となる。
【００７０】
また、ゲストＯＳ２０は、さらに、ドライバプログラムがアンインストール部２５によりアンインストールされた場合、ホストＯＳ１０に通知する通知処理部２６を備え、ホストＯＳ１０は、さらに、通知に応答して、アンインストールされたドライバプログラムに対応する関連付情報を関連付情報記憶部１２から削除する削除処理部１５を備える。そのため、外部機器１の制御権限が誤って付与されることを防止することができる。
【００７１】
なお、本実施の形態においては、情報処理装置の一例として、複合装置１００を例に説明したが、図４および図５に示した情報処理プログラムを、コンピューターに実行させるための情報処理方法、また、その情報処理方法をコンピューターに実行させるための情報処理プログラムとして発明を捉えることができるのは言うまでもない。
【００７２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００７３】
１  外部機器、１０  ホストＯＳ、１１  情報更新処理部、１２  関連付情報記憶部、１３  接続受付部、１４  権限付与部、１５  削除処理部、２０  ゲストＯＳ、２１  インストール部、２２  機器情報生成部、２３  選択受付部、２４  伝達処理部、２５  アンインストール部、２６  通知処理部、２７  機器制御部、３０  エミュレート部、１００  複合装置、１１０  メイン回路、１１１  ＣＰＵ、１１２  通信Ｉ／Ｆ部、１１３  ＲＯＭ、１１４  ＲＡＭ、１１５  ＨＤＤ、１１６  ファクシミリ部、１１７  外部記憶装置、１１８  ＣＤ−ＲＯＭ、１１９  コネクタ部、１２０  自動原稿搬送装置、１３０  原稿読取部、１４０  画像形成部、１５０  給紙部、１６０  操作パネル、１６１  表示部、１６３  操作部、１６５  タッチパネル、１６７  ハードキー部
【図１】
2019114025.tif 000003
【図２】
2019114025.tif 000004
【図３】
2019114025.tif 000005
【図４】
2019114025.tif 000006
【図５】
2019114025.tif 000007