(57)【要約】【課題】電子デバイスが情報処理装置に実装された場合に、インストールメディアを準備しなくても情報処理装置に対する最新のデバイス機能プログラムを適切にインストールして、電子デバイスの機能を正確に実現すること。【解決手段】実施形態の情報処理装置は、記憶部と、デバイス検出部と、装置情報取得部と、判断部と、特定部と、プログラム取得部と、実行部とを備えた。特定部は、記憶部に、接続が検出された電子デバイスに対応するデバイス機能プログラムがインストールされていない場合に、接続が検出された電子デバイスから、取得された装置情報に対応する格納場所を特定する。プログラム取得部は、特定された格納場所からデバイス機能プログラムを取得する。【選択図】図１
2015076015.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
記憶部と、
前記情報処理装置に関する一または複数の機器情報ごとに電子デバイスの機能を実現するためのデバイス機能プログラムの格納場所が記憶された前記電子デバイスの接続を検出するデバイス検出部と、
前記電子デバイスの接続が検出された場合に、前記情報処理装置に関する装置情報を取得する装置情報取得部と、
前記電子デバイスが接続されたことが検出された場合に、前記記憶部に、接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされているか否かを判断する判断部と、
前記記憶部に、前記接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされていない場合に、前記接続が検出された電子デバイスから、取得された装置情報に対応する前記格納場所を特定する特定部と、
特定された前記格納場所からデバイス機能プログラムを取得するプログラム取得部と、
取得したデバイス機能プログラムを実行する実行部と、
を備えた情報処理装置。
【請求項２】
前記装置情報は、前記情報処理装置のハードウェアに関するハードウェア情報と、前記情報処理装置にインストールされているオペレーティングシステムに関するＯＳ情報とを含む、
請求項１に記載の情報処理装置。
【請求項３】
前記デバイス機能プログラムは、前記ハードウェア情報または前記ＯＳ情報に依存する実行可能形式のバイナリコードを含む、
請求項２に記載の情報処理装置。
【請求項４】
前記デバイス機能プログラムは、さらに、前記ハードウェア情報および前記ＯＳ情報に依存しない中間言語コードを含み、
前記特定部は、前記接続が検出された電子デバイスから、取得された装置情報である前記ハードウェア情報および前記ＯＳ情報に対応する前記格納場所が検索されなかった場合には、前記接続が検出された電子デバイスから、前記中間言語コードの格納場所を取得し、
前記プログラム取得部は、取得され格納場所から前記中間言語コードを取得し、
前記情報処理装置は、
取得された前記中間言語コードをコンパイルして実行可能形式のバイナリコードを生成するコンパイラ、を備え、
前記実行部は、コンパイラより生成されたバイナリコードを実行する、
請求項３に記載の情報処理装置。
【請求項５】
前記デバイス機能プログラムは、さらに、前記ハードウェア情報および前記ＯＳ情報に依存しない中間言語コードを含み、
前記特定部は、前記接続が検出された電子デバイスから、取得された装置情報である前記ハードウェア情報および前記ＯＳ情報に対応する前記格納場所が検索されなかった場合には、前記接続が検出された電子デバイスから、前記中間言語コードの格納場所を取得し、
前記プログラム取得部は、取得された格納場所から前記中間言語コードを取得し、
前記情報処理装置は、
取得された前記中間言語コードを逐次実行するインタプリタ、
をさらに備えた請求項３に記載の情報処理装置。
【請求項６】
前記格納場所は、前記電子デバイス内の記憶媒体を示す、
請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
前記格納場所は、ネットワークに接続される外部装置のアドレスを示し、
前記プログラム取得部は、前記アドレスにアクセスして、前記外部装置から前記デバイス機能プログラムをダウンロードする、
請求項１〜６のいずれか一つに記載の情報処理装置。
【請求項８】
前記デバイス機能プログラムは、カーネルモードで動作するデバイスドライバプログラムを含む、
請求項１〜７のいずれか一つに記載の情報処理装置。
【請求項９】
前記デバイス機能プログラムは、ユーザモードで動作するデバイス用プログラムを含む、
請求項１〜８のいずれか一つに記載の情報処理装置。
【請求項１０】
情報処理装置で実行されるインストール方法であって、
前記情報処理装置に関する一または複数の装置情報ごとに電子デバイスの機能を実現するためのデバイス機能プログラムの格納場所が記憶された前記電子デバイスの接続を検出し、
前記電子デバイスの接続が検出された場合に、前記情報処理装置に関する装置情報を取得し、
前記電子デバイスが接続されたことが検出された場合に、記憶部に、接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされているか否かを判断し、
前記記憶部に、前記接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされていない場合に、前記接続が検出された電子デバイスから、取得された装置情報に対応する前記格納場所を特定し、
特定された前記格納場所からデバイス機能プログラムを取得するプログラム取得部と、
取得したデバイス機能プログラムを実行する、
ことを含むインストール方法。
【請求項１１】
コンピュータで実行させるためのインストールプログラムであって、
前記コンピュータに関する一または複数の装置情報ごとに電子デバイスの機能を実現するためのデバイス機能プログラムの格納場所が記憶された前記電子デバイスの接続を検出し、
前記電子デバイスの接続が検出された場合に、前記コンピュータに関する装置情報を取得し、
前記電子デバイスが接続されたことが検出された場合に、記憶部に、接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされているか否かを判断し、
前記記憶部に、前記接続が検出された電子デバイスに対応する前記デバイス機能プログラムがインストールされていない場合に、前記接続が検出された電子デバイスから、取得された装置情報に対応する前記格納場所を特定し、
特定された前記格納場所からデバイス機能プログラムを取得するプログラム取得部と、
取得したデバイス機能プログラムを実行する、
ことを前記コンピュータに実行させるためのインストールプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、インストール方法およびインストールプログラムに関する。
【背景技術】
【０００２】
コンピュータに拡張カード等の電子デバイスを新規に実装して電子デバイスを機能させるためには、ユーザは、電子デバイスに対応したデバイスドライバ等のデバイス機能プログラムをインストールする必要がある。このようなデバイス機能プログラムは、電子デバイスに添付されたインストールメディアで提供される。このようなデバイス機能プログラムは、通常、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｙｔｅｍ，以下、「ＯＳ」という。）に対応して提供される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−６１１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、インストールメディアの紛失等により、ユーザがインストールメディアを準備できない場合には、電子デバイスが実装されていたとしても電子デバイスの機能をコンピュータで実現することができない。
【０００５】
また、ユーザがインストールメディアを保持していても、保持しているインストールメディアに格納されたデバイス機能プログラムが最新バージョンより古いバージョンである場合がある。このような場合には、古いバージョンのデバイス機能プログラムがコンピュータにインストールされた現在のハードウェアやＯＳのバージョンに対応していない等が原因で、拡張カード等の電子デバイスを正しく機能させることができない場合がある。
【課題を解決するための手段】
【０００６】
実施形態の情報処理装置は、記憶部と、デバイス検出部と、装置情報取得部と、判断部と、特定部と、プログラム取得部と、実行部とを備えた。デバイス検出部は、情報処理装置に関する一または複数の機器情報ごとに電子デバイスの機能を実現するためのデバイス機能プログラムの格納場所が記憶された電子デバイスの接続を検出する。装置情報取得部は、電子デバイスの接続が検出された場合に、情報処理装置に関する装置情報を取得する。判断部は、電子デバイスが接続されたことが検出された場合に、記憶部に、接続が検出された電子デバイスに対応するデバイス機能プログラムがインストールされているか否かを判断する。特定部は、記憶部に、接続が検出された電子デバイスに対応するデバイス機能プログラムがインストールされていない場合に、接続が検出された電子デバイスから、取得された装置情報に対応する格納場所を特定する。プログラム取得部は、特定された格納場所からデバイス機能プログラムを取得する。実行部は、取得したデバイス機能プログラムを実行する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態１にかかる情報処理システムの構成を示すブロック図である。
【図２】図２は、実施形態１のコンフィグレーション情報のデータ構造の一例を示す図である。
【図３】図３は、実施形態１にかかるケーパビリティ詳細情報のデータ構造の一例を示す図である。
【図４】図４は、実施形態１のコンフィグレーション情報の一例を示す図である。
【図５】図５は、実施形態１にかかるデバイス機能プログラムのインストール処理の手順の一例を示すフローチャートである。
【図６】図６は、実施形態２にかかる情報処理システムの構成を示すブロック図である。
【図７】図７は、実施形態２にかかるデバイス機能プログラムのインストール処理の手順の一例を示すフローチャートである。
【図８】図８は、実施形態２にかかるデバイス機能プログラムのインストール処理の手順の一例を示すフローチャートである。
【図９】図９は、実施形態２にかかるデバイス機能プログラムをインタプリタを用いて実行する例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、情報処理装置、インストール方法およびインストールプログラムの実施形態を詳細に説明する。
【０００９】
（実施形態１）
本実施形態の情報処理システムは、図１に示すように、情報処理装置１００と、サーバ装置２００とがインターネット等のネットワークで接続された構成となっている。
【００１０】
サーバ装置２００は、情報処理装置１００からアクセスされ、内部に、デバイス機能プログラムとしてのデバイスドライバ、デバイス用プログラムを格納している。
【００１１】
情報処理装置１００は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の通常のコンピュータが該当するがこれに限定されるものではなく、例えば、タブレット端末やスレート端末等を情報処理装置１００として用いてもよい。情報処理装置１００は、図１に示すように、ハードウェア構成として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７１と、チップセット１７２と、メモリ１７３と、複数の電子デバイス１５０（以下、「デバイス１５０」という。）と、補助記録装置１６０とを主に備えている。
【００１２】
ＣＰＵ１７１は、補助記録装置１６０等に格納されたプログラムを読み出して実行したり、情報処理装置１００全体を制御する。メモリ１７３は、プログラムの実行時における作業領域等として機能する。チップセット１７２は、ＣＰＵ１７１の外部バスと、メモリ１７３やデバイス１５０等を接続する標準バスとのバスブリッジなどを統合した集積回路である。
【００１３】
補助記録装置１６０は、ハードディスクドライブ装置（ＨＤＤ）等の記憶媒体であり、デバイス機能プログラムであるデバイスドライバやデバイス用プログラムがインストールされている。補助記録装置１６０は、記憶部の一例である。
【００１４】
デバイス１５０は、拡張カードや周辺機器を接続するためのインタフェース機器等であり、情報処理装置１００に接続したり、非接続とすることが可能である。本実施形態のデバイス１５０は、図１に示すように、コンフィグレーション情報１５１が記憶されている。
【００１５】
コンフィグレーション情報１５１は、デバイス１５０に関する情報とデバイス機能プログラムに関する情報が登録されたデータである。ここで、デバイス機能プログラムは、デバイス１５０の機能を情報処理装置１００で実現するためのプログラムである。デバイス機能プログラムには、オペレーティングシステム１３０（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：以下、「ＯＳ１３０」という。）のカーネルモードで動作するデバイスドライバプログラム（以下、「デバイスドライバ」という。）と、ユーザモードで動作するデバイス用プログラムの二種類がある。
【００１６】
コンフィグレーション情報１５１は、図２に示すように、基本情報と、一または複数のケーパビリティ情報とから構成される。図２では、コンフィグレーション情報はｍ＋１個のケーパビリティ情報＃０〜＃ｍを含む例を示しているが、これに限定されるものではない。
【００１７】
基本情報は、デバイス１５０に関する情報であり、デバイスＩＤと、メモリベースアドレス情報＃０〜＃ｎと、ケーパビリティリスト情報とから構成される。デバイスＩＤは、デバイスを一意に識別するための識別情報である。
【００１８】
メモリベースアドレス情報＃０〜＃ｎは、デバイス１５０内部のメモリ領域のベースアドレス（先頭アドレス）が、メモリ領域＃０〜＃ｎごとに格納されている。ここで、メモリベース情報＃０〜＃ｎ自体をインデックスという。図２の例では、メモリベースアドレス情報＃０がデバイス１５０内部のメモリ領域＃０のベースアドレス（先頭アドレス）を指し、メモリベースアドレス情報＃ｎがデバイス１５０内部のメモリ領域＃ｎのベースアドレスを指すことを示している。
【００１９】
ケーパビリティリスト情報は、一または複数のケーパビリティ情報のうち、先頭のケーパビリティ情報への先頭アドレスである。
【００２０】
ケーパビリティ情報は、デバイス機能プログラムに関する情報であり、ハードウェア情報およびＯＳ情報ごとに別個に存在するデバイス機能プログラムごとに設けられている。ケーパビリティ情報は、図２に示すように、ケーパビリティＩＤと、Ｎｅｘｔポインタと、ケーパビリティ詳細情報とから構成される。ケーパビリティＩＤは、ケーパビリティ情報を一意に識別するための識別情報である。Ｎｅｘｔポインタは、次のケーパビリティ情報へのポインタ（すなわち、次のケーパビリティ情報の先頭アドレス）である。
【００２１】
ケーパビリティ詳細情報は、図３に示すように、デバイスプログラム情報と、プログラム種類と、ＵＲＬ情報と、プログラム情報と、データとから構成される。ここで、データはオプションであり、ケーパビリティ詳細情報に含まれない場合もある。
【００２２】
デバイスプログラム情報は、デバイス機能プログラムが、情報処理装置１００のハードウェアやＯＳ１３０に依存する実行可能形式のバイナリコードであるか、当該ハードウェアやＯＳ１３０に依存しない中間言語コードであるかを示すデータである。デバイスプログラム情報において、デバイス機能プログラムがバイナリコードであることを示す場合には、デバイスプログラム情報には、さらに、サポート環境が登録される。ただし、実施形態１では、デバイス機能プログラムはバイナリコードのみであることを前提としている。従って、デバイスプログラム情報にはバイナリコードである旨が登録される。
【００２３】
サポート環境には、情報処理装置１００の装置情報としてのハードウェア情報とＯＳ情報が含まれる。ハードウェア情報としては、ＣＰＵ１７１の製造元や名称等が該当し、ＯＳ情報としては、ＯＳ１３０の製造元や名称、バージョンが該当する。言い換えれば、コンフィグレーション情報は、このデバイスプログラム情報のサポート環境として設定される装置情報ごとにケーパビリティ情報を有している。ただし、サポート環境としては、これらに限定されるものではない。
【００２４】
プログラム種類は、デバイス機能プログラムの種類を示すものであり、本実施形態では、デバイスドライバか、デバイス用プログラムか、あるいはその他ツールかを示すものである。
【００２５】
ＵＲＬ情報は、デバイス機能プログラムの格納場所が、ネットワーク上のサーバ装置２００等の外部装置である場合に、当該外部装置のＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を保存している領域のアドレスに関する情報を示すものである。
【００２６】
ＵＲＬ情報のメモリベース情報は、ＵＲＬが格納されているメモリ領域のベース情報であり、コンフィグレーション情報の基本情報におけるメモリベースアドレス情報のインデックス（メモリベース情報＃０等）か、あるいは本ケーパビリティ情報内か、のいずれかの情報が格納される。ＵＲＬ情報のメモリオフセットは、ＵＲＬが格納されているメモリ領域のオフセット情報であり、メモリベース情報が示す基本情報のメモリベースアドレス情報のインデックスが指すベースアドレスからのオフセットが格納される。ＵＲＬ情報の使用メモリサイズは、ＵＲＬが格納されているメモリの使用サイズが格納される。
【００２７】
プログラム情報は、デバイス機能プログラムの格納場所が、デバイス１５０内である場合に、デバイス機能プログラムを保存している領域のアドレスに関する情報を示すものである。
【００２８】
プログラム情報のメモリベース情報は、デバイス機能プログラム情報が格納されているメモリ領域のベース情報であり、コンフィグレーション情報の基本情報におけるメモリベースアドレス情報のインデックス（メモリベース情報＃０等）か、あるいは本ケーパビリティ情報内か、のいずれかの情報が格納される。プログラム情報のメモリオフセットは、デバイス機能プログラムが格納されているメモリ領域のオフセット情報であり、メモリベース情報が示す基本情報のメモリベースアドレス情報のインデックスが指すベースアドレスからのオフセットが格納される。プログラム情報の使用メモリサイズは、デバイス機能プログラムが格納されているメモリの使用サイズが格納される。
【００２９】
データは、ＵＲＬ情報のメモリベース情報が本ケーパビリティ情報内を示している場合に、本ケーパビリティ情報内に、デバイス機能プログラムが格納されているＵＲＬ、デバイス機能プログラムが格納される。データは、プログラム情報のメモリベース情報が本ケーパビリティ情報内を示している場合に、本ケーパビリティ情報内に、デバイス機能プログラムが格納される。
【００３０】
図１に戻り、情報処理装置１００のソフトウェア構成について説明する。本実施形態の情報処理装置１００は、ソフトウェア構成として、ＯＳ１３０と、デバイスプログラムマネージャ１２０と、デバイスプログラムマネージャ１２０により起動されるデバイス用プログラム１１１と、デバイスプログラムマネージャ１２０によりＯＳ１３０内で起動されるデバイスドライバ１１２とを備えている。
【００３１】
デバイスプログラムマネージャ１２０は、デバイス機能プログラム（デバイスドライバ１１２、デバイス用プログラム１１１）の取得、起動および実行を制御する。デバイスプログラムマネージャ１２０は、図１に示すように、装置情報取得部１２１と、デバイス検出部１２２と、判断部１２５と、特定部１２３と、プログラム取得部１２４と、実行部１２６とを備えている。
【００３２】
装置情報取得部１２１は、情報処理装置１００のメモリ１７３等に設定されている装置情報、すなわち、ハードウェア情報とＯＳ情報を取得する。ここで、ハードウェア情報とＯＳ情報は、装置情報の一例である。ハードウェア情報は、ＣＰＵ１７１の製造元や名称等であり、ＯＳ情報は、ＯＳ１３０の製造元や名称、バージョン等である。
【００３３】
デバイス検出部１２２は、情報処理装置１００にデバイス１５０が接続された場合に、接続されたデバイス１５０のデバイスＩＤを含むイベント通知をＯＳ１３０から受信することによりデバイス１５０の接続を検出する。また、デバイス検出部１２２は、デバイス１５０が情報処理装置１００から取り外された場合に、ＯＳ１３０からのイベント通知等によりデバイス１５０の非接続を検出する。
【００３４】
判断部１２５は、デバイス検出部１２２によってデバイス１５０の接続が検出された場合に、補助記録装置１６０に、接続が検知されたデバイス１５０に対応し、かつ装置情報取得部１２１により取得したハードウェア情報およびＯＳ情報に対応するデバイス機能プログラム（デバイスドライバ、デバイス用プログラム）がインストールされているか否かを判断する。ここで、判断部１２５は、インストールされているか否かを、デバイス機能プログラムを構成する少なくとも一部のファイルの有無により判断する。
【００３５】
特定部１２３は、判断部１２５によって、補助記録装置１６０に、接続が検知されたデバイス１５０に対応し、かつ装置情報取得部１２１により取得したＯＳ情報およびハードウェア情報に対応するデバイス機能プログラムがインストールされていないと判断された場合には、接続が検出されたデバイス１５０から、当該ＯＳ情報およびハードウェア情報に対応するデバイス機能プログラムの格納場所を検索して特定する。
【００３６】
具体的には、特定部１２３は、接続が検出されたデバイス１５０に保存されているコンフィグレーション情報の一または複数のケーパビリティ情報の中から、当該ＯＳ情報およびハードウェア情報に一致する当該ＯＳ情報およびハードウェア情報のデバイスプログラム情報を含むケーパビリティ情報を検索する。そして、特定部１２３は、検索されたケーパビリティ情報のプログラム種別から、デバイス機能プログラムがデバイスドライバかデバイス用プログラムかを特定し、さらに、ＵＲＬ情報またはプログラム情報から、デバイス機能プログラムの格納場所を特定する。
【００３７】
すなわち、特定部１２３は、ＵＲＬ情報のメモリベース情報とメモリオフセットと使用メモリサイズで示される領域からＵＲＬ情報を取得して、当該ＵＲＬをデバイス機能プログラムの格納場所と特定する。ここで、ＵＲＬ情報のメモリベース情報に「本ケーパビリティ情報内」と格納されている場合には、特定部１２３は、当該ケーパビリティ情報のデータの領域に格納されているＵＲＬを格納場所と特定する。
【００３８】
特定部１２３は、プログラム情報のメモリベース情報とメモリオフセットと使用メモリサイズが示す領域をデバイス機能プログラムの格納場所と特定する。ここで、プログラム情報のメモリベース情報に「本ケーパビリティ情報内」と格納されている場合には、特定部１２３は、当該ケーパビリティ情報のデータの領域をデバイス機能プログラムの格納場所と特定する。特定部１２３は、特定した格納場所と、プログラム種類で示されるデバイス機能プログラムの種類（デバイスドライバか、デバイス用プログラムか）とを、プログラム取得部１２４に送出する。
【００３９】
一例をあげて説明すると、図４のコンフィグレーション情報の例では、ケーパビリティ情報＃０において、プログラム情報から、デバイス機能プログラムがデバイスドライバであり、デバイスプログラム情報から、このデバイスドライバは、バイナリコードで提供され、ハードウェアとしてｉ社のｘｘｘｘのＣＰＵに対応し、ｍ社のｘｘｘｘのＶｅｒ．２．０のＯＳに対応したものであることがわかる。また、図４の例では、ＵＲＬ情報のメモリベース情報が本ケーパビリティ内であることから、特定部１２３は、ケーパビリティ情報のデータの領域に格納されたＵＲＬを、デバイスドライバのバイナリコードの格納場所と特定する。
【００４０】
また、図４の例では、プログラム情報のメモリベース情報がメモリベースアドレス情報＃０で、メモリオフセットがｙｙｙであることから、特定部１２３は、デバイス内部のメモリベースアドレス情報＃０が指すメモリ領域＃０のベースアドレスからオフセットｙｙｙのアドレスを開始アドレスとしてサイズｚｚｚまでの領域を、デバイスドライバのバイナリコードの格納場所と特定する。
【００４１】
図１に戻り、プログラム取得部１２４は、特定部１２３で特定された格納場所からデバイス機能プログラムを取得してインストールする。具体的には、特定された格納場所がＵＲＬである場合には、プログラム取得部１２４は、ネットワークを介してＵＲＬが示すサーバ装置２００等にアクセスして、当該サーバ装置２００等に格納されているデバイス機能プログラムをダウンロードしてインストールする。また、特定された格納場所がデバイス１５０内のメモリ領域である場合には、プログラム取得部１２４は、特定されたメモリ領域に格納されているデバイス機能プログラムを取得してインストールする。ここで、プログラム取得部１２４は、特定部１２３から受け取ったプログラム種類が示す種類のデバイス機能プログラムを格納場所から取得する。
【００４２】
実行部１２６は、プログラム取得部１２４が取得したバイナリコードのデバイス機能プログラムを起動して実行する。
【００４３】
次に、以上のように構成された本実施形態のデバイス機能プログラムのインストール処理について図５を用いて説明する。
【００４４】
まず、デバイス検出部１２２がデバイス１５０の接続を検出し、接続されたデバイス１５０のデバイスＩＤをＯＳ１３０から取得すると（ステップＳ１１）、装置情報取得部１２１は、メモリ１７３等に設定されている情報処理装置１００のハードウェア情報およびＯＳ情報を取得する（ステップＳ１２）。
【００４５】
次に、判断部１２５は、補助記録装置１６０から、ステップＳ１２で取得したハードウェア情報およびＯＳ情報に一致するハードウェア情報およびＯＳ情報のデバイス機能プログラムを検索し（ステップＳ１３）、検索されたか否かにより補助記録装置１６０に当該デバイス機能プログラムがインストール済みか否かを判断する（ステップＳ１４）。
【００４６】
そして、既にインストール済みの場合には（ステップＳ１４：Ｙｅｓ）、補助記録装置１６０にインストールされているデバイス機能プログラム（バイナリコード）を実行して、デバイス機能プログラムを起動する（ステップＳ２１）。
【００４７】
一方、ステップＳ１４において、補助記録装置１６０にデバイス機能プログラムがインストールされていないと判断された場合には（ステップＳ１４：Ｎｏ）、特定部１２３は、ステップＳ１１で取得されたデバイスＩＤのデバイス１５０、すなわち接続が検知されたデバイス１５０に保存されているコンフィグレーション情報から、ステップＳ１２で取得したハードウェア情報およびＯＳ情報に該当するハードウェア情報およびＯＳ情報がデバイスプログラム情報に登録されているケーパビリティ情報を取得する（ステップＳ１５）。
【００４８】
次に、特定部１２３は、取得したケーパビリティ情報のＵＲＬ情報およびプログラム情報を参照する（ステップＳ１６）。そして、特定部１２３は、上述のように、参照したプログラム情報でデバイス機能プログラムの格納場所を特定し、特定できた場合には（ステップＳ１７：Ｙｅｓ）、プログラム取得部１２４は、プログラム情報から特定されたメモリ領域からデバイス機能プログラムを取得してインストールする（ステップＳ１８）。
【００４９】
一方、ステップＳ１７で、特定部１２３は、プログラム情報でデバイス機能プログラムの格納場所を特定することができない場合には（ステップＳ１７：Ｎｏ）、特定部１２３は、参照したＵＲＬ情報でデバイス機能プログラムの格納場所を特定し、特定できた場合には（ステップＳ１９：Ｙｅｓ）、プログラム取得部１２４は、ＵＲＬ情報で特定されたＵＲＬの示すサーバ装置２００からデバイス機能プログラムをダウンロードしてインストールする（ステップＳ２０）。
【００５０】
そして、実行部１２６は、ステップＳ１８またはステップＳ２０で取得されたデバイス機能プログラム（バイナリコード）を実行して、デバイス機能プログラムを起動する（ステップＳ２１）。
【００５１】
ステップＳ１９において、特定部１２３が、参照したＵＲＬ情報でデバイス機能プログラムの格納場所を特定できない場合には（ステップＳ１９：Ｎｏ）、ＣＰＵ１７１は、表示装置等（不図示）にエラー表示を行う（ステップＳ２３）。そして、処理は終了する。
【００５２】
このように本実施形態では、デバイス１５０は、デバイス機能プログラムの格納場所をＵＲＬ情報、プログラム情報として格納したケーパビリティ情報がハードウェア情報およびＯＳ情報ごとに登録されたコンフィグレーション情報を記憶している。また、本実施形態では、情報処理装置１００は、このようなデバイス１５０の接続が検出された場合で、補助記録装置１６０に、接続が検知されたデバイス１５０に対応したデバイス機能プログラムがインストールされていない場合に、デバイス１５０のコンフィグレーション情報から、情報処理装置１００のハードウェア情報およびＯＳ情報と一致するハードウェア情報およびＯＳ情報のケーパビリティ情報から、デバイス機能プログラムの格納場所を特定して、特定した格納場所からデバイス機能プログラムを取得してインストールする。このため、本実施形態によれば、情報処理装置１００に新たに接続した拡張カード等のデバイス１５０に対応するインストールメディアが存在しない場合でも、情報処理装置１００のハードウェアやＯＳ１３０に適したデバイス機能プログラムを適切にインストールすることができる。
【００５３】
また、本実施形態では、情報処理装置１００は、情報処理装置１００のハードウェア情報およびＯＳ情報と一致するハードウェア情報およびＯＳ情報のデバイス機能プログラムを取得してインストールしているので、常に情報処理装置１００のハードウェアやＯＳ１３０に適した最新バージョンのデバイス機能プログラムを取得できる。このため、本実施形態によれば、人為的にバージョン管理を行う必要はなく、かつ、誤ったバージョンのデバイス機能プログラムのインストールによりデバイス１５０が正しく機能しないことを回避することができる。
【００５４】
このように本実施形態では、デバイス１５０が情報処理装置１００に実装された場合に、インストールメディアを準備しなくても情報処理装置１００に対する最新のデバイス機能プログラムを適切にインストールして、デバイス１５０の機能を正確に実現することができる。
【００５５】
（実施形態２）
実施形態１では、デバイス機能プログラムは、ハードウェアやＯＳ１３０に依存するバイナリコードが前提であったが、この実施形態２では、デバイス機能プログラムがバイナリコードの他、ハードウェアやＯＳ１３０に依存しない中間言語コードである場合も含んでいる。
【００５６】
本実施形態の情報処理システムは、図６に示すように、情報処理装置６００と、サーバ装置２００とがインターネット等のネットワークで接続された構成となっている。ここで、サーバ装置２００の機能、構成については実施形態１と同様である。
【００５７】
本実施形態のデバイス機能プログラムは、実行可能形式のバイナリコードで提供される他、ハードウェア情報およびＯＳ情報に依存しない中間言語コードでも提供される。このため、コンフィグレーション情報には、バイナリコードに対応するケーパビリティ情報の他、中間言語コードに対応するケーパビリティ情報も含まれる。そして、ケーパビリティ情報のデバイスプログラム情報には、バイナリコードであるか、中間言語コードであるかが格納される。ここで、中間言語コードは、ハードウェアやＯＳに依存しないため、デバイスプログラム情報に中間言語コードが登録されている場合には、サポート環境は格納されない。
【００５８】
情報処理装置６００のハードウェア構成は実施形態１と同様である。情報処理装置６００は、ソフトウェア構成として、ＯＳ１３０と、デバイスプログラムマネージャ６２０と、デバイスプログラムマネージャ６２０により起動されるデバイス用プログラム１１１と、デバイスプログラムマネージャ６２０によりＯＳ１３０内で起動されるデバイスドライバ１１２とを備えている。
【００５９】
デバイスプログラムマネージャ６２０は、デバイス機能プログラム（デバイスドライバ１１２、デバイス用プログラム１１１）の取得、起動および実行を制御する。デバイスプログラムマネージャ６２０は、図６に示すように、装置情報取得部１２１と、デバイス検出部１２２と、判断部１２５と、特定部６２３と、プログラム取得部１２４と、実行部１２６と、コンパイラ６２５と、インタプリタ６２６とを備えている。
【００６０】
特定部６２３は、実施形態１と同様に、判断部１２５によって、補助記録装置１６０に、接続が検知されたデバイス１５０に対応し、かつ装置情報取得部１２１により取得したＯＳ情報およびハードウェア情報に対応するデバイス機能プログラムがインストールされていないと判断された場合には、接続が検出されたデバイス１５０から、当該ＯＳ情報およびハードウェア情報に対応するデバイス機能プログラムの格納場所を検索する。
【００６１】
そして、特定部６２３は、デバイス検出部１２２で接続が検出されたデバイス１５０から、装置情報取得部１２１で取得された装置情報であるハードウェア情報およびＯＳ情報に対応する格納場所が検索されなかった場合には、接続が検出されたデバイス１５０から、中間言語コードの格納場所を特定する。
【００６２】
具体的には、特定部６２３は、接続が検出されたデバイス１５０に保存されているコンフィグレーション情報の一または複数のケーパビリティ情報の中から、「中間言語コード」が登録されているデバイスプログラム情報を含むケーパビリティ情報を検索する。そして、特定部６２３は、検索されたケーパビリティ情報のプログラム種別から、デバイス機能プログラムがデバイスドライバかデバイス用プログラムかを特定し、さらに、ＵＲＬ情報またはプログラム情報から、デバイス機能プログラムの格納場所を特定する。ここで、プログラム情報、ＵＲＬ情報からの格納場所の特定手法については実施形態１と同様である。
【００６３】
プログラム取得部１２４は、実施形態１と同様であるが、中間言語コードのデバイスプログラム情報を含むケーパビリティ情報のＵＲＬ情報やプログラム情報から格納場所が特定された場合には、格納場所から中間言語コードのデバイス機能プログラムを取得する。
【００６４】
コンパイラ６２５は、プログラム取得部１２４で取得したデバイス機能プログラムである中間言語コードをコンパイルして、実行可能形式のバイナリコードを生成する。生成されたバイナリコードは、実行部１２６によって実行され、デバイス機能プログラムが起動する。
【００６５】
インタプリタ６２６は、プログラム取得部１２４で取得したデバイス機能プログラムである中間言語コードを解釈しながら逐次実行する。
【００６６】
次に、以上のように構成された本実施形態のデバイス機能プログラムのインストール処理について図７，８を用いて説明する。
【００６７】
デバイス１５０の接続の検出から取得したハードウェア情報およびＯＳ情報に一致するハードウェア情報およびＯＳ情報のデバイス機能プログラムの検索までの処理（ステップＳ１１〜Ｓ１３）は、実施形態１と同様に行われる。そして、判断部１２５は、検索されたか否かにより補助記録装置１６０に当該デバイス機能プログラムがインストール済みか否かを判断する（ステップＳ１４）。
【００６８】
そして、既にインストール済みの場合には（ステップＳ１４：Ｙｅｓ）、補助記録装置１６０にインストールされているデバイス機能プログラム（バイナリコード）を実行して、デバイス機能プログラムを起動する（ステップＳ３８）。
【００６９】
一方、ステップＳ１４において、補助記録装置１６０にデバイス機能プログラムがインストールされていないと判断された場合には（ステップＳ１４：Ｎｏ）、特定部６２３は、ステップＳ１１で取得されたデバイスＩＤのデバイス１５０、すなわち接続が検知されたデバイス１５０に保存されているコンフィグレーション情報から、ステップＳ１２で取得したハードウェア情報およびＯＳ情報に該当するハードウェア情報およびＯＳ情報がデバイスプログラム情報に登録されているケーパビリティ情報を検索する（ステップＳ３１）。
【００７０】
そして、特定部６２３は検索結果の有無を判断し（ステップＳ３２）、ケーパビリティ情報が検索された場合には（ステップＳ３２：Ｙｅｓ）、実施形態１と同様に、検索されたケーパビリティ情報、すなわち、ステップＳ１２で取得したハードウェア情報およびＯＳ情報に該当するハードウェア情報およびＯＳ情報がデバイスプログラム情報に登録されているケーパビリティ情報のＵＲＬ情報ＵＲＬ情報およびプログラム情報を参照する（ステップＳ３４）。
【００７１】
一方、ステップＳ３２で、ステップＳ１２で取得したハードウェア情報およびＯＳ情報に該当するハードウェア情報およびＯＳ情報がデバイスプログラム情報に登録されているケーパビリティ情報が検索されなかった場合には（ステップＳ３２：Ｎｏ）、特定部６２３は、現在のハードウェア構成およびＯＳ１３０に対応するデバイス機能プログラムはないと判断し、コンフィグレーション情報から、中間言語コードの旨がデバイスプログラム情報に登録されているケーパビリティ情報を取得する（ステップＳ３３）。そして、特定部６２３は、このケーパビリティ情報のＵＲＬ情報およびプログラム情報を参照する（ステップＳ３４）。
【００７２】
そして、ステップＳ１７からＳ２３までの、デバイス機能プログラムの格納場所の特定およびデバイス機能プログラムの取得の処理は実施形態１と同様に行われる。
【００７３】
ステップＳ１８またはＳ２０でプログラム取得部１２４がデバイス機能プログラムを取得したら、実行部１２６は、ケーパビリティ情報のデバイスプログラム情報の内容を判断する（ステップＳ３５）。そして、デバイスプログラム情報に「バイナリコード」が登録されている場合には、実行部１２６は、ステップＳ１８またはＳ２０で取得されたバイナリコードを実行してデバイス機能プログラムを起動する（ステップＳ３８）。
【００７４】
ステップＳ３５でデバイスプログラム情報に「中間言語コード」が登録されている場合には、コンパイラ６２５は、ステップＳ１８またはＳ２０で取得された中間言語コードをコンパイルしてバイナリコードを生成する（ステップＳ３６）。そして、実行部１２６は、生成されたバイナリコードを実行してデバイス機能プログラムを起動する（ステップＳ３７）。
【００７５】
ここで、コンパイラ６２５で中間言語コードをコンパイルしてバイナリコードにしてから実行部１２６で実行する代わりに、取得した中間言語コードをインタプリタ６２６で逐次実行することにより、デバイス機能プログラムを実行してもよい。
【００７６】
図９は、実施形態２にかかるデバイス機能プログラムをインタプリタを用いて実行する例を示すフローチャートである。ステップＳ３５までの処理、Ｓ３８の処理については、上記図８における処理と同様である。
【００７７】
ステップＳ３５でデバイスプログラム情報に「中間言語コード」が登録されている場合には、実行部１２６はインタプリタ６２６を起動する（ステップＳ５１）。そして、インタプリタ６２６が中間言語コードを逐次実行して、これによりデバイス機能プログラムを起動する（ステップＳ５２）。
【００７８】
このように本実施形態では、情報処理装置６００のハードウェア情報およびＯＳ情報に一致するハードウェア情報およびＯＳ情報のデバイスプログラム情報を含むケーパビリティ情報がデバイス１５０のコンフィグレーション情報に存在しなかった場合には、情報処理装置６００は、情報処理装置６００のハードウェア情報およびＯＳ情報に対応するバイナリコードのデバイス機能プログラムが存在しないと判断する。そして、本実施形態では、情報処理装置６００は、ハードウェア情報およびＯＳ情報に依存しない中間言語コードのデバイス機能プログラムの格納場所を特定して、当該中間言語コードを取得し、コンパイラ６２５やインタプリタ６２６を用いてデバイス機能プログラムを起動している。このため、本実施形態では、運用するハードウェアやＯＳに対応したデバイス機能プログラムが用意されていない場合でも、デバイス１５０を正しく機能させることができる。また、本実施形態によれば、デバイス１５０の開発側にとって別途目的のＯＳに対応したデバイス機能プログラムを新規に作成し続ける必要もなくなる。
【００７９】
上記実施形態１，２では、特定部１２３，６２３は、デバイス１５０のケーパビリティ情報においてプログラム情報によりデバイス機能プログラムの格納場所を特定できない場合に、ＵＲＬ情報によりネットワーク上の格納場所を特定していたが、特定する順としてはこれに限定されるものではない。例えば、ＵＲＬ情報によりデバイス機能プログラムのネットワーク上の格納場所を特定できない場合に、プログラム情報によりでデバイス１５０内部の格納場所を特定するように構成してもよい。
【００８０】
また、特定部１２３，６２３がプログラム情報とＵＲＬ情報の双方によりデバイス機能プログラムの格納場所を特定できる場合には、いずれか一方の格納場所を優先的に特定するように特定部１２３，６２３を構成することができる。
【００８１】
上記実施形態１，２では、ＵＲＬ情報から特定されるデバイス機能プログラムの格納場所であるＵＲＬとして、ネットワーク上のサーバ装置２００のＵＲＬを例にあげて説明したが、これに限定されるものではなく、ネットワーク上の任意の場所やサイトのＵＲＬを格納場所として用いることができる。
【００８２】
上記実施形態１，２では、デバイス１５０に、一または複数のケーパビリティ情報を含むコンフィグレーション情報を記憶した構成としているが、ハードウェア情報、ＯＳ情報に対応したデバイス機能プログラムごとに、その格納場所が登録された構成であれば、上記コンフィグレーション情報のデータ構造以外の構造であってもよい。
【００８３】
実施形態１、２の情報処理装置１００で実行されるインストールプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００８４】
また、実施形態１、２の情報処理装置１００で実行されるインストールプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、実施形態１、２の情報処理装置１００で実行されるインストールプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００８５】
また、実施形態１、２の情報処理装置１００で実行されるインストールプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００８６】
実施形態１、２の情報処理装置１００で実行されるインストールプログラムは、上述した各部（装置情報取得部１２１、デバイス検出部１２２、判断部１２５、特定部１２３、６２３、プログラム取得部１２４、実行部１２６、コンパイラ６２５、インタプリタ６２６）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１７１が上記記憶媒体からインストールプログラムを読み出して実行することにより上記各部がメモリ１７３上にロードされ、装置情報取得部１２１、デバイス検出部１２２、判断部１２５、特定部１２３、６２３、プログラム取得部１２４、実行部１２６、コンパイラ６２５、インタプリタ６２６がメモリ１７３上に生成されるようになっている。
【００８７】
さらに、ここに記述されたシステムの種々のモジュールは、ソフトウェア・アプリケーション、ハードウェアおよび／またはソフトウェア・モジュール、あるいはサーバのような1台以上のコンピュータ上のコンポーネントとしてインプリメントすることができる。種々のモジュールは、別々に説明されているが、それらは同じ根本的なロジックかコードのうちのいくつかあるいはすべてを共有してもよい。
【００８８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８９】
１００，６００  情報処理装置
１１１  デバイス用プログラム
１１２  デバイスドライバ
１２０  デバイスプログラムマネージャ
１２１  装置情報取得部
１２２  デバイス検出部
１２３、６２３  特定部
１２４  プログラム取得部
１２５  判断部
１２６  実行部
１３０  オペレーティングシステム
１５１  コンフィグレーション情報
１６０  補助記録装置
１７１  ＣＰＵ
１７２  チップセット
１７３  メモリ
２００  サーバ装置
６２５  コンパイラ
６２６  インタプリタ
【図１】
2015076015.tif 000003
【図２】
2015076015.tif 000004
【図３】
2015076015.tif 000005
【図４】
2015076015.tif 000006
【図５】
2015076015.tif 000007
【図６】
2015076015.tif 000008
【図７】
2015076015.tif 000009
【図８】
2015076015.tif 000010
【図９】
2015076015.tif 000011