(57)【要約】【課題】開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させること。【解決手段】情報処理装置を介して利用可能なデバイスを駆動させるデバイスドライバであって、アプリケーションによるデバイスの駆動要求を取得するステップと、取得された駆動要求を行ったアプリケーションを識別する識別情報を取得するステップと、プラットフォームのバージョン情報であって、アプリケーションに対応するプラットフォームのバージョン情報を、取得された識別情報に基づいて取得するステップと、デバイスを動作させるためのプログラムであって全体制御プログラムのバージョンごとに複数設けられたバージョン別デバイスドライバのうち、取得されたバージョン情報に対応する前記バージョン別デバイスドライバを用いてデバイスを駆動させるステップとを情報処理装置に実行させることを特徴とする。【選択図】図５
2015082139.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムであって、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得するステップと、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得するステップと、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するステップと、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるステップと
を前記情報処理装置に実行させることを特徴とする駆動用プログラム。
【請求項２】
前記バージョン情報は、前記識別情報により識別される前記機能実行処理部に対応する前記専用プログラムのファイル情報に基づいて取得される
ことを特徴とする請求項１に記載の駆動用プログラム。
【請求項３】
前記機能実行処理部が起動したタイミングで、前記バージョン情報が予め取得されて前記機能実行処理部の識別情報と関連付けて記憶媒体に記憶され、
前記記憶媒体から、前記駆動要求を行った前記機能実行処理部の識別情報に関連付けられた前記バージョン情報が取得される
ことを特徴とする請求項１又は２に記載の駆動用プログラム。
【請求項４】
取得された前記識別情報を記憶媒体に記憶させるステップと、
駆動させた前記装置からの割り込みを検知すると、前記記憶媒体に記憶された前記識別情報に基づいて、前記全体制御プログラムのバージョン情報を取得するステップと、
取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムの割り込み制御プログラムを用いて、検知された前記割り込みに基づく処理を実行するステップと
を前記情報処理装置に実行させることを特徴とする請求項１〜３のいずれか１項に記載の駆動用プログラム。
【請求項５】
前記情報処理装置における前記全体制御プログラムがマルチコアに対応し、
他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中であるか否かを示す実行判別情報を参照するステップと、
参照された前記実行判別情報が他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中ではないことを示すまで、前記バージョン別駆動用プログラムを用いた前記装置の駆動処理を待機させるステップと
を前記情報処理装置に実行させることを特徴とする請求項１〜４のいずれか１項に記載の駆動用プログラム。
【請求項６】
取得された前記全体制御プログラムのバージョンがマルチコアに非対応である場合に、前記実行判別情報が他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中ではないことを示すまで、前記バージョン別駆動用プログラムを用いた前記装置の駆動処理を待機させるステップ
を前記情報処理装置に実行させることを特徴とする請求項５に記載の駆動用プログラム。
【請求項７】
前記バージョン別駆動用プログラムそれぞれを用いる際に適用されるバージョン別設定情報のうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムに対応する前記バージョン別設定情報が適用される
ことを特徴とする請求項１〜６のいずれか１項に記載の駆動用プログラム。
【請求項８】
情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムによる装置駆動方法であって、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得し、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得し、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得し、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させる
ことを特徴とする装置駆動方法。
【請求項９】
各種の処理を行う装置を利用可能な情報処理装置であって、
前記装置を駆動させる駆動用プログラムを有し、
前記駆動用プログラムは、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を駆動要求取得部と、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得する識別情報取得部と、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するバージョン取得部と、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるバージョン別駆動用プログラム制御部と
を含む
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、駆動用プログラム、装置駆動方法及び情報処理装置に関し、特に、呼び出し元のアプリケーションに応じたバージョンのデバイスドライバの実行に関する。
【背景技術】
【０００２】
近年、ソフトウェアやハードウェアを動作させるための基盤となるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やミドルウェア等の計算機プラットフォームの進歩は著しく、頻繁にバージョンアップが行われている。そのため、あるバージョンのプラットフォーム（以下、ＯＳを具体例とする）上で開発されたソフトウェア（アプリケーション）は、このバージョンのＯＳだけでなく、後継バージョンのＯＳ上にも移植される場合が多くなっている。
【０００３】
上述のようにあるバージョンのＯＳ（旧ＯＳ）上で開発されたアプリケーションを後継バージョンのＯＳ（新ＯＳ）上に移植する際に、異なるバージョンのＯＳ上で共通のバイナリコードを使用することができるバイナリ互換機能を利用することができ、旧ＯＳ上で開発されたソフトウェアを、新ＯＳ上で実行させることが可能になる。
【０００４】
また、プリンタ、コピー及びファックス機能等を有する複合機に搭載される各アプリケーションの共通部分を共通のシステムサービスとして括りだし、各アプリケーションの規模を縮小し、開発効率及び生産性を向上させる方法が提案されている（例えば、特許文献１を参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなバイナリ互換機能を利用しても、新ＯＳ上で提供されるデバイスドライバは新ＯＳ向けのデバイスドライバなので、旧ＯＳ上で開発されたアプリケーションが新ＯＳ上で動作してデバイスドライバを呼び出すと、新ＯＳ向けのデバイスドライバによりデバイスが駆動されることになる。
【０００６】
そのため、旧ＯＳ向けのデバイスドライバによりデバイスを駆動させることを想定して開発されたアプリケーションを新ＯＳ上で実行させた場合、想定した動作タイミングと異なり意図した結果が得られなかったり、デバイスドライバに必要なパラメータが異なりデバイスが動作しなかったりする等、アプリケーションやデバイスが正常に動作しない場合がある。
【０００７】
なお、特許文献１に開示された技術は、プリンタ、コピー及びファックス機能等を有する複合機に搭載されるアプリケーションの開発効率の向上を目的としたものであり、ＯＳによって制御される汎用的な情報処理装置において、デバイスドライバとアプリケーションとのバージョン違いによる互換性を対象とする本発明とは発明の意義が異なる。
【０００８】
本発明は、このような課題を解決するためになされたものであり、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の一態様は、情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムであって、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得するステップと、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得するステップと、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するステップと、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるステップとを前記情報処理装置に実行させることを特徴とする。
【００１０】
また、本発明の他の態様は、情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムによる装置駆動方法であって、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得し、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得し、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得し、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させることを特徴とする。
【００１１】
また、本発明の更に他の態様は、各種の処理を行う装置を利用可能な情報処理装置であって、前記装置を駆動させる駆動用プログラムを有し、前記駆動用プログラムは、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を駆動要求取得部と、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得する識別情報取得部と、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するバージョン取得部と、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるバージョン別駆動用プログラム制御部とを含むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係る情報処理装置のハードウェア構成を模式的に示すブロック図である。
【図２】本発明の実施形態に係る情報処理装置の構成を示す図である。
【図３】本発明の実施形態に係るＯＳの機能構成を示す図である。
【図４】本発明の実施形態に係るシステムコールテーブルを示す図である。
【図５】本発明の実施形態に係るデバイスドライバの機能構成を示す図である。
【図６】本発明の実施形態に係るプロセス管理情報を示す図である。
【図７】本発明の実施形態に係るデバイスドライバにおける対応ドライバによる処理についての動作例を示すフローチャートである。
【図８】本発明の実施形態に係るデバイスドライバの機能構成を示す図である。
【図９】本発明の実施形態に係るデバイスドライバにおけるスリープ状態を含む場合の対応ドライバによる処理についての動作例を示すフローチャートである。
【図１０】本発明の実施形態に係るデバイスドライバの機能構成を示す図である。
【図１１】本発明の実施形態に係るデバイスドライバにおける並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。
【図１２】本発明の実施形態に係るデバイスドライバの機能構成を示す図である。
【図１３】本発明の実施形態に係るデバイスドライバにおける並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。
【図１４】本発明の実施形態に係るデバイスドライバの機能構成を示す図である。
【図１５】本発明の実施形態に係るバージョン別設定情報を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、各種デバイスドライバがインストールされて使用される一般的な情報処理装置を例として説明する。
【００１５】
図１は、本実施形態に係る情報処理装置１のハードウェア構成を示すブロック図である。図１に示すように、本実施形態に係る情報処理装置１は、一般的なサーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等と同様の構成を含む。
【００１６】
すなわち、本実施形態に係る情報処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４０及びＩ／Ｆ５０がバス８０を介して接続されている。また、Ｉ／Ｆ５０にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）６０及び操作部７０が接続されている。
【００１７】
ＣＰＵ１０は演算手段であり、情報処理装置全体の動作を制御する。ＲＡＭ２０は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１０が情報を処理する際の作業領域として用いられる。ＲＯＭ３０は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。ＨＤＤ４０は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納される。
【００１８】
Ｉ／Ｆ５０は、バス８０と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ６０は、ユーザが情報処理装置の状態を確認するための視覚的ユーザインタフェースである。操作部７０は、キーボードやマウス等、ユーザが情報処理装置に情報を入力するためのユーザインタフェースである。
【００１９】
このようなハードウェア構成において、ＲＯＭ３０やＨＤＤ４０若しくは図示しない光学ディスク等の記憶媒体に格納されたプログラムがＲＡＭ２０に読み出され、ＣＰＵ１０がＲＡＭ２０にロードされたプログラムに従って演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る情報処理装置１の機能を実現する機能ブロックが構成される。
【００２０】
次に、本実施形態に係る情報処理装置１において、本実施形態に係るデバイスドライバの実行に関する機能について説明する。図２は、本実施形態に係る情報処理装置１の機能のうち、本実施形態に係るデバイスドライバの実行に関する機能の構成を示すブロック図である。図２に示すように、本実施形態に係る情報処理装置１は、アプリケーション１０１、ＯＳ１１０、ネットワークＩ／Ｆ１０２及び各種のデバイスドライバ１３０を含む。
【００２１】
アプリケーション１０１は、ソフトウェアプログラムが情報処理装置１にインストールされて構成されるソフトウェアモジュールであり、ワープロソフト、表計算ソフト、画像編集ソフト等の一般的なアプリケーションソフトウェアである。すなわち、アプリケーション１０１は、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部として機能する。アプリケーション１０１は、ユーザの操作に応じてデバイスドライバ１３０を呼び出し、デバイスドライバ１３０が対応するデバイスを駆動させる。
【００２２】
ＯＳ１１０は、情報処理装置１全体を制御する基本ソフトウェアである。また、ＯＳ１１０は、バイナリ互換機能を有し、アプリケーション１０１が開発されたＯＳのバージョンに関わらず、アプリケーション１０１を実行させることができる（詳細は、図３を参照して後述）。ネットワークＩ／Ｆ１０２は、情報処理装置１がネットワークを介して他の機器と通信するためのインタフェースである。
【００２３】
デバイスドライバ１３０は、情報処理装置１からＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やネットワークを介して接続されているプリンタやスキャナ等のデバイスを駆動させるための駆動用プログラム（ソフトウェアモジュール）であり、対応するソフトウェアプログラムが情報処理装置１にインストールされることによって構成される。例えば、プリンタドライバは、デバイスドライバ１３０の一例であり、プリンタの設定情報のためのＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面の起動や、印刷制御等のプリンタの駆動制御を実行する。
【００２４】
図２に示すように、デバイスドライバ１３０は、様々なデバイス（装置）に対応して複数構成される。また、各デバイスドライバ１３０は、ＯＳのバージョンに対応したバージョンごとのデバイスドライバ（以下、「バージョン別ドライバ」（バージョン別駆動用プログラム）とする）を有し、バージョン別ドライバのうち、呼び出し元のアプリケーション１０１が開発されたＯＳのバージョンに対応するデバイスドライバを選択してデバイスを駆動させる。このようなアプリケーション１０１が開発されたＯＳのバージョンに対応したデバイスドライバを利用することが、本発明の実施形態に係る要旨である。詳細は図５を参照して後述する。
【００２５】
なお、上記実施形態においては、情報処理装置１全体を制御するプログラムとしてＯＳを例として説明している。しかしながら、これは一例であり、ＯＳの他、ミドルウェア等、情報処理装置１全体を制御する全体制御プログラムであればよい。
【００２６】
次に、本実施形態に係るＯＳ１１０の機能のうち、アプリケーション１０１が開発されたＯＳバージョンに応じた動作互換機能について説明する。なお、以下の説明においては、ＯＳバージョンは「新ＯＳ」及び新ＯＳよりも古いバージョンである「旧ＯＳ」の２種類とし、本実施形態に係る情報処理装置１にインストールされているＯＳは「新ＯＳ」であるとする。
【００２７】
図３は、本実施形態に係るＯＳ１１０の機能のうちＯＳバージョンに応じた動作互換機能に関する構成を例示するブロック図である。図３に示すように、本実施形態に係るＯＳ１１０は、システムコールＩ／Ｆ１１１、バージョン取得部１１２、システムコールＤＢ１１３、新ＯＳ動作制御部１１４及び旧ＯＳ互換動作制御部１１５を含む。
【００２８】
システムコールＩ／Ｆ１１１は、アプリケーション１０１により実行されたシステムコールを受け付けるインタフェースである。システムコールＩ／Ｆ１１１は、システムコールを受け付けると、バージョン取得部１１２に対して出力する。
【００２９】
バージョン取得部１１２は、システムコールＩ／Ｆ１１１から入力されたシステムコールに基づいて、入力されたシステムコールを実行したアプリケーション１０１が開発されたＯＳバージョンを取得する。具体的には、バージョン取得部１１２は、システムコールＤＢ１１３に記憶されているシステムコールとそのシステムコールをサポートしているＯＳバージョンとを関連付けたシステムコールテーブルを参照して、入力されたシステムコールに関連付けられているＯＳバージョンを取得する。
【００３０】
図４は、システムコールＤＢ１１３に記憶されているシステムコールテーブルを例示する図である。図４に示すように、システムコールテーブルにおいては、例えば、Ｉ／Ｏを多重化するためのシステムコール“ｐоｌｌ”が新ＯＳでサポートされていることを示し、同様の機能を実装するシステムコール“ｓｅｌｅｃｔ”が旧ＯＳでサポートされていることを示す。すなわち、バージョン取得部１１２は、例えば、システムコールＩ／Ｆ１１１から入力されたシステムコールが“ｐоｌｌ”である場合、このシステムコールを実行したアプリケーション１０１が開発されたＯＳバージョンを「新ＯＳ」と特定する。
【００３１】
新ＯＳ動作制御部１１４は、バージョン取得部１１２により取得されたＯＳバージョンが「新ＯＳ」である場合、システムコールを実行したアプリケーション１０１を、新ＯＳ上で動作させるよう制御する。旧ＯＳ互換動作制御部１１５は、バージョン取得部１１２により取得されたＯＳバージョンが「旧ＯＳ」である場合、システムコールを実行したアプリケーション１０１を、新ＯＳ上でバイナリ互換機能により動作させるよう制御する。
【００３２】
上述のようなバイナリ互換機能により、旧ＯＳ上で開発されたアプリケーション１０１は、新ＯＳがインストールされた情報処理装置１においても動作可能になる。しかしながら、従来は新ＯＳがインストールされた情報処理装置１においては、新ＯＳ向けのデバイスドライバがインストールされているので、新ＯＳ上で動作している旧ＯＳ上で開発されたアプリケーション１０１がデバイスドライバを呼び出すと、新ＯＳ向けのデバイスドライバ（以降、「新ＯＳ対応ドライバ」とする）が呼び出され、旧ＯＳ向けデバイスドライバ（以降、「旧ＯＳ対応ドライバ」）を想定した動作とは異なる動作となり、アプリケーション１０１やデバイスが正常に動作しない場合がある。
【００３３】
そこで、本実施形態に係るデバイスドライバ１３０により、アプリケーション１０１が開発されたＯＳバージョンに応じたデバイスドライバを利用可能にすることが本発明の実施形態に係る要旨である。以下、本実施形態に係るデバイスドライバ１３０の機能のうち、ＯＳバージョンに応じたデバイスドライバを利用可能にする機能について説明する。
【００３４】
図５は、本実施形態に係るデバイスドライバ１３０の機能のうち、ＯＳバージョンに応じたデバイスドライバを利用可能にする機能に関する構成を例示するブロック図である。図５に示すように、本実施形態に係るデバイスドライバ１３０は、ドライバＩ／Ｆ１３１、プロセスＩＤ取得部１３２、バージョン取得部１３３、バージョン別ドライバ制御部１３４及びバージョン別ドライバ記憶部１３５を含む。
【００３５】
ドライバＩ／Ｆ１３１は、アプリケーション１０１によるデバイスドライバのコードを呼び出すためのインタフェースの呼び出しを受け付ける。ドライバのインタフェースは、例えば、“оｐｅｎ”、“ｒｅａｄ”、“ｗｒｉｔｅ”等のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）である。例えば、デバイスドライバ１３０の一例であるプリンタドライバの“ｗｒｉｔｅ”インタフェースを呼び出すと、プリンタによる印刷処理が実行される。すなわち、ドライバＩ／Ｆ１３１は、機能実行処理部であるアプリケーション１０１によるデバイスの駆動要求を取得する駆動要求取得部として機能する。
【００３６】
プロセスＩＤ取得部１３２は、ドライバＩ／Ｆ１３１がインタフェースの呼び出しを受け付けると、インタフェースを呼び出したアプリケーション１０１のプロセスＩＤを取得して、バージョン取得部１３３に対して出力する。プロセスＩＤ取得部１３２は、例えば、ドライバＩ／Ｆ１３１が受け付けたインタフェースの引数としてプロセスＩＤが設定されている場合は、設定されているプロセスＩＤを取得する。また、デバイスドライバ１３０において、ドライバＩ／Ｆ１３１が受け付けたインタフェースを介して自身のデバイスドライバ１３０にアクセスしているアプリケーション（クライアントアプリケーション）のプロセスＩＤを取得する関数が予め定められている場合、プロセスＩＤ取得部１３２は、その関数を利用してプロセスＩＤを取得してもよい。
【００３７】
バージョン取得部１３３は、プロセスＩＤ取得部１３２から入力されたプロセスＩＤに基づいて、入力されたプロセスＩＤに対応するアプリケーション１０１が開発されたＯＳのバージョンを取得してバージョン別ドライバ制御部１３４に対して出力する。具体的には、例えば、バージョン取得部１３３は、まず、図６に示したプロセスＩＤとそのプロセスＩＤに対応するアプリケーションのプログラムファイルの格納先及びプログラムファイル名とが関連付けられたプロセス管理情報を参照して、入力されたプロセスＩＤに関連付けられたプログラムファイルの格納先及びプログラムファイル名を取得する。なお、プロセス管理情報は、ＯＳ１１０により管理されているものとする。
【００３８】
次に、バージョン取得部１３３は、プログラムファイルの格納先及びプログラムファイル名から取得したプログラムファイルのファイル情報に基づいてＯＳバージョンを取得する。具体的には、例えば、バージョン取得部１３３は、プログラムファイルの実行フォーマットであるＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋａｂｌｅ  Ｆｏｒｍａｔ）のＮＯＴＥタイプのヘッダ情報に格納されているＯＳバージョンを取得する。
【００３９】
バージョン別ドライバ制御部（バージョン別駆動用プログラム制御部）１３４は、バージョン取得部１３３から入力されたＯＳバージョンに対応するバージョン別ドライバをバージョン別ドライバ記憶部１３５から取得して、取得したバージョン別ドライバを制御してデバイスを駆動させる。
【００４０】
バージョン別ドライバ記憶部１３５は、例えば、新ＯＳ対応ドライバ及び旧ＯＳ対応ドライバのようにＯＳバージョンに対応するバージョン別ドライバが記憶される記憶媒体である。例えば、バージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「旧ＯＳ」である場合、バージョン別ドライバ記憶部１３５から旧ＯＳ対応ドライバを取得する。
【００４１】
次に、本実施形態に係るデバイスドライバ１３０における対応ドライバによる処理についての動作例を説明する。図７は、本実施形態に係るデバイスドライバ１３０における対応ドライバによる処理についての動作例を示すフローチャートである。図７に示すように、ドライバＩ／Ｆ１３１は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける（Ｓ７００）。
【００４２】
ドライバＩ／Ｆ１３１によりデバイスの駆動要求が受け付けられると、プロセスＩＤ取得部１３２は、ドライバＩ／Ｆ１３１が受け付けた駆動要求を行ったアプリケーション１０１のプロセスＩＤを取得する（Ｓ７０１）。例えば、プロセスＩＤ取得部１３２は、プロセスＩＤ“Ｐ００１”を取得したとする。
【００４３】
プロセスＩＤ取得部１３２からプロセスＩＤ“Ｐ００１”が入力されたバージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プログラムファイルを取得する（Ｓ７０２）。すなわち、バージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プロセスＩＤ“Ｐ００１”に関連付けられたプログラムファイル格納先の“・・・￥ｕｓｅｒ￥ａｐｐ￥ａｐｐ１”ディレクトリに格納されている“ａｐｐ１”プログラムファイルを取得する。“ａｐｐ１”プログラムファイルを取得したバージョン取得部１３３は、取得した“ａｐｐ１”プログラムファイルのヘッダ情報からＯＳバージョンを取得する（Ｓ７０３）。 
バージョン取得部１３３からＯＳバージョンが入力されたバージョン別ドライバ制御部１３４は、入力されたＯＳバージョンが「新ＯＳ」である場合（Ｓ７０４／ＹＥＳ）、新ＯＳ対応ドライバを用いて、Ｓ７００において受け付けたデバイスの駆動処理を実行する（Ｓ７０５）。一方、バージョン別ドライバ制御部１３４は、入力されたＯＳバージョンが「旧ＯＳ」である場合（Ｓ７０４／ＮＯ）、旧ＯＳ対応ドライバを用いて、Ｓ７００において受け付けたデバイスの駆動処理を実行する（Ｓ７０６）。
【００４４】
以上説明したように、本実施形態に係る情報処理装置１においては、情報処理装置１にインストールされたアプリケーション１０１が動作し、アプリケーション１０１により情報処理装置１にインストールされたデバイスドライバ１３０が呼び出されると、動作しているアプリケーション１０１が開発されたＯＳのバージョンに対応したバージョン別ドライバによりデバイスが駆動される。これにより、旧ＯＳ上で開発されたアプリケーション１０１がバイナリ互換機能により新ＯＳ上で動作している場合に、アプリケーション１０１がデバイスドライバ１３０を呼び出すと、旧ＯＳ対応ドライバによりデバイスが駆動される。すなわち、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションがデバイスドライバを呼び出した場合に、デバイスドライバを正常に動作させることができる。
【００４５】
なお、上記実施形態においては、ドライバＩ／Ｆ１３１がデバイスドライバのインタフェースの呼び出しを受け付けたタイミングで、プロセスＩＤ取得部１３２がプロセスＩＤを取得し、バージョン取得部１３３が取得したプロセスＩＤに基づいてＯＳバージョンを取得する場合を例として説明した。その他、アプリケーション１０１が起動したタイミングで、ＯＳ１１０が起動したアプリケーション１０１のプロセスＩＤを取得して、取得されたプロセスＩＤに基づいてＯＳバージョンを取得してもよい。
【００４６】
この場合、取得されたＯＳバージョンは、例えば、図６に示したプロセス管理情報においてプロセスＩＤと関連付けて記憶され、ドライバＩ／Ｆ１３１がデバイスドライバのインタフェースを受け付けると、バージョン取得部１３３は、プロセス管理情報を参照して、プロセスＩＤ取得部１３２により取得されたプロセスＩＤと関連付けられたＯＳバージョンを取得する。このような構成により、ドライバＩ／Ｆ１３１がデバイスドライバのインタフェースの呼び出しを受け付けた際に、アプリケーション１０１のプログラムファイルからヘッダ情報を読み出すことなく、予めプロセスＩＤに関連付けられたＯＳバージョンを直接取得することができるので、処理時間を短縮することができる。
【００４７】
また、上記実施形態においては、プロセスＩＤ取得部１３２がアプリケーション１０１を識別する識別情報としてプロセスＩＤを取得し、バージョン取得部１３３が取得されたプロセスＩＤに基づいてアプリケーション１０１のプログラムファイル格納先及びプログラムファイル名を取得して、取得したプログラムファイルからＯＳバージョンを取得する場合を例として説明している。その他、プロセスＩＤ取得部１３２により取得されたプロセスＩＤに基づいて取得されたプログラムファイル格納先及びプログラムファイル名を識別情報とし、バージョン取得部１３３がこの識別情報に基づいて取得したプログラムファイルからＯＳバージョンを取得してもよい。すなわち、プロセスＩＤ取得部１３２は、アプリケーション１０１を識別する識別情報を取得する識別情報取得部として機能する。
【００４８】
次に、アプリケーション１０１がデバイスドライバ１３０を呼び出し、呼び出されたデバイスドライバ１３０がデバイスを駆動させた後、デバイスの処理が完了するまでデバイスドライバの処理がスリープ状態に入る場合の実施形態を説明する。デバイスドライバの処理がスリープ状態に入った後、デバイスの処理が完了するとデバイスからデバイスドライバへ割り込みが通知され、デバイスドライバの割り込みハンドラが起動しデバイスドライバの処理が再開される。
【００４９】
割り込み通知は、デバイスがデバイスドライバの割り込み要求インタフェースを呼び出すことにより行われるが、この割り込み要求インタフェースを呼び出すプロセスＩＤは割り込み専用に割り当てられている場合がある。そのため、割り込み要求インタフェースを呼び出すプロセスＩＤに基づいてアプリケーション１０１が開発されたＯＳバージョンを取得することができず、どのＯＳバージョンに対応するデバイスドライバの割り込みハンドラを用いればよいのか判断することができない場合がある。
【００５０】
そこで、以下、スリープ状態に入ったデバイスドライバの処理を再開させる場合において、デバイスドライバを呼び出したアプリケーション１０１が開発されたＯＳバージョンに対応するデバイスドライバの割り込みハンドラを用いる実施形態を説明する。図８は、このような実施形態におけるデバイスドライバ１３０の機能構成を例示する図である。図８に示すように、デバイスドライバ１３０は、図５に示した構成に加えて、プロセスＩＤ記憶処理部１３６、プロセスＩＤ記憶部１３７及び割り込み検知部１３８を含む。なお、図５において説明した構成と同様の処理については説明を省略する。
【００５１】
プロセスＩＤ取得部１３２は、取得したプロセスＩＤをプロセスＩＤ記憶処理部１３６に対して出力する。プロセスＩＤ記憶処理部１３６は、プロセスＩＤ取得部１３２から入力されたプロセスＩＤをプロセスＩＤ記憶部１３７に記憶させる。すなわち、プロセスＩＤ記憶部１３７には、ドライバＩ／Ｆ１３１が受け付けたインタフェースを呼び出したアプリケーション１０１のプロセスＩＤが記憶されている。
【００５２】
ドライバＩ／Ｆ１３１は、インタフェースの呼び出しを受け付けると、呼び出されたインタフェース情報（例えば、ＡＰＩの関数名）を、割り込み検知部１３８に対して出力する。割り込み検知部１３８は、ドライバＩ／Ｆ１３１から入力されたインタフェース情報がデバイスからの割り込み要求インタフェースを示す場合、デバイスからの割り込みを検知した旨をバージョン取得部１３３及びバージョン別ドライバ制御部１３４に対して通知する。
【００５３】
バージョン取得部１３３は、割り込み検知部１３８から割り込みを検知した旨が通知されると、プロセスＩＤ記憶部１３７に記憶されているプロセスＩＤを取得し、取得したプロセスＩＤに基づいて図５において説明した場合と同様にＯＳバージョンを取得してバージョン別ドライバ制御部１３４に対して出力する。
【００５４】
バージョン別ドライバ制御部１３４は、割り込み検知部１３８から割り込みを検知した旨が通知されると、バージョン取得部１３３から入力されたＯＳバージョンに対応するバージョン別ドライバを、バージョン別ドライバ記憶部１３５から取得する。また、バージョン別ドライバ制御部１３４は、取得したバージョン別ドライバの割り込みハンドラを起動して、スリープ状態のデバイスハンドラの処理を再開させる。
【００５５】
次に、本実施形態に係るデバイスドライバ１３０におけるスリープ状態を含む場合の対応ドライバによる処理についての動作例を説明する。図９は、本実施形態に係るデバイスドライバ１３０におけるスリープ状態を含む場合の対応ドライバによる処理についての動作例を示すフローチャートである。図９に示すように、ドライバＩ／Ｆ１３１は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける（Ｓ９００）。
【００５６】
ドライバＩ／Ｆ１３１によりデバイスの駆動要求が受け付けられると、プロセスＩＤ取得部１３２は、ドライバＩ／Ｆ１３１が受け付けた駆動要求を行ったアプリケーション１０１のプロセスＩＤを取得する（Ｓ９０１）。例えば、プロセスＩＤ取得部１３２は、プロセスＩＤ“Ｐ００１”を取得したとする。
【００５７】
プロセスＩＤ取得部１３２より取得されたプロセスＩＤ“Ｐ００１”がプロセスＩＤ記憶処理部１３６に入力されると、プロセスＩＤ記憶処理部１３６は、取得したプロセスＩＤ“Ｐ００１”をプロセスＩＤ記憶部１３７に記憶させる（Ｓ９０２）。
【００５８】
プロセスＩＤ取得部１３２からプロセスＩＤ“Ｐ００１”が入力されたバージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プログラムファイルを取得する（Ｓ９０３）。すなわち、バージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プロセスＩＤ“Ｐ００１”に関連付けられたプログラムファイル格納先の“・・・￥ｕｓｅｒ￥ａｐｐ￥ａｐｐ１”ディレクトリに格納されている“ａｐｐ１”プログラムファイルを取得する。“ａｐｐ１”プログラムファイルを取得したバージョン取得部１３３は、取得した“ａｐｐ１”プログラムファイルのヘッダ情報からＯＳバージョンを取得する（Ｓ９０４）。
【００５９】
バージョン取得部１３３からＯＳバージョンが入力されたバージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「新ＯＳ」である場合（Ｓ９０５／ＹＥＳ）、新ＯＳ対応ドライバを用いて、Ｓ９００において受け付けたデバイスの駆動処理を実行する（Ｓ９０６）。一方、バージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「旧ＯＳ」である場合（Ｓ９０５／ＮＯ）、旧ＯＳ対応ドライバを用いて、Ｓ９００において受け付けたデバイスの駆動処理を実行する（Ｓ９０７）。
【００６０】
Ｓ９００において受け付けたデバイスの駆動処理を実行すると、駆動処理を実行したデバイスドライバは、割り込み検知部１３８がデバイスの処理完了すなわち割り込みが検知されるまで、スリープ状態に入る（Ｓ９０８／ＮＯ）。一方、割り込み検知部１３８がデバイスからの割り込みを検知すると（Ｓ９０８／ＹＥＳ）、バージョン取得部１３３は、プロセスＩＤ記憶部１３７に記憶されているプロセスＩＤ“Ｐ００１”を取得する（Ｓ９０９）。
【００６１】
プロセスＩＤ“Ｐ００１”を取得したバージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プログラムファイルを取得する（Ｓ９１０）。すなわち、バージョン取得部１３３は、図６に示したプロセス管理情報を参照して、プロセスＩＤ“Ｐ００１”に関連付けられたプログラムファイル格納先の“・・・￥ｕｓｅｒ￥ａｐｐ￥ａｐｐ１”ディレクトリに格納されている“ａｐｐ１”プログラムファイルを取得する。“ａｐｐ１”プログラムファイルを取得したバージョン取得部１３３は、取得した“ａｐｐ１”プログラムファイルのヘッダ情報からＯＳバージョンを取得する（Ｓ９１１）。
【００６２】
バージョン取得部１３３からＯＳバージョンが入力されたバージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「新ＯＳ」である場合（Ｓ９１２／ＹＥＳ）、新ＯＳ対応ドライバの割り込みハンドラを起動して、スリープ状態のデバイスドライバの処理を再開させる（Ｓ９１３）。一方、バージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「旧ＯＳ」である場合（Ｓ９１２／ＮＯ）、旧ＯＳ対応ドライバの割り込みハンドラを起動して、スリープ状態のデバイスドライバの処理を再開させる（Ｓ９１４）。
【００６３】
このような構成により、デバイスドライバがスリープ状態に入った後、割り込みを検知すると、デバイスドライバを呼び出したアプリケーション１０１が開発されたＯＳバージョンに対応するデバイスドライバの割り込みハンドラを起動させることができるので、割り込み検知後の処理を正常に行うことができる。
【００６４】
なお、上記実施形態においては、プロセスＩＤをアプリケーション１０１の識別情報としてプロセスＩＤ記憶部１３７に記憶させる場合を例として説明している。しかしながら、これは一例であり、識別情報としてアプリケーション１０１のプログラムファイルの格納先及びプログラムファイル名を記憶させてもよし、バージョン取得部１３３がプロセスＩＤに基づいて取得したＯＳバージョン（又はＯＳバージョンを識別する値）を記憶媒体に記憶させてもよい。
【００６５】
次に、マルチコアに非対応のＯＳ対応デバイスドライバをマルチコア対応のＯＳ上で動作させる実施形態について説明する。以下、旧ＯＳ対応ドライバをマルチコアに非対応のＯＳ対応デバイスドライバとし、新ＯＳ対応ドライバをマルチコア対応のＯＳ対応デバイスドライバとする。旧ＯＳ対応ドライバは、シングルコアで動作することを前提として開発されているので、マルチコア環境のように複数のコアから同時にデバイスドライバの処理が実行されることを想定していない。そのため、本実施形態に係る情報処理装置１において、旧ＯＳ上で開発されたアプリケーション１０１をマルチコア対応の新ＯＳ上でバイナリ互換機能により動作させて、旧ＯＳ対応ドライバを呼び出すと、呼び出されたデバイスドライバが並列処理等に対応できず正常に動作しない場合がある。
【００６６】
そこで、以下、マルチコア対応ＯＳ上でマルチコアに非対応の旧ＯＳ対応ドライバを動作させる実施形態を説明する。図１０は、このような実施形態におけるデバイスドライバ１３０の機能構成を例示する図である。図１０に示すように、デバイスドライバ１３０は、図５に示した構成に加えて、並列動作制御部１３９を含む。なお、図５において説明した構成と同様の処理については説明を省略する。
【００６７】
ドライバＩ／Ｆ１３１は、インタフェースの呼び出しを受け付けると、呼び出されたインタフェース情報（例えば、ＡＰＩの関数名）を、並列動作制御部１３９に対して出力する。並列動作制御部１３９は、ドライバＩ／Ｆ１３１からインタフェース情報が入力されると、他のアプリケーション１０１（プロセス）によりこのデバイスドライバ１３０が実行中であるか否かを示す実行判別情報であるフラグ値を参照する。なお、ここでは、他のアプリケーション１０１によりデバイスドライバ１３０が実行中である場合フラグ値を１、それ以外の場合フラグ値を０に設定する場合を例とする。また、フラグ値は、例えば並列動作制御部１３９の内部や図示しない記憶媒体に保持されているものとする。
【００６８】
並列動作制御部１３９は、フラグ値が１の場合フラグ値が０になるまで待機し、フラグ値が０の場合フラグ値を１に設定するとともに、プロセスＩＤ取得部１３２に対して、プロセスＩＤを取得するよう通知する。プロセスＩＤ取得部１３２は、並列動作制御部１３９からの通知を受けると、図５において説明した処理と同様の処理により、インタフェースを呼び出したアプリケーション１０１のプロセスＩＤを取得する。
【００６９】
また、バージョン別ドライバ制御部１３４は、図５において説明した処理と同様の処理により、バージョン別ドライバを制御してデバイスを駆動させると、並列動作制御部１３９に対して実行完了を通知する。並列動作制御部１３９は、バージョン別ドライバ制御部１３４から実行完了の通知を受けると、フラグ値を１から０にする。
【００７０】
次に、本実施形態に係るデバイスドライバ１３０における並列動作制御を伴う対応ドライバによる処理についての動作例を説明する。図１１は、本実施形態に係るデバイスドライバ１３０における並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。図１１に示すように、ドライバＩ／Ｆ１３１は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける（Ｓ１１００）。
【００７１】
ドライバＩ／Ｆ１３１によりデバイスの駆動要求が受け付けられると、並列動作制御部１３９は、フラグ値が１である場合（Ｓ１１０１／ＹＥＳ）、フラグ値が０になる（Ｓ１１０１／ＮＯ）まで待機する。一方、並列動作制御部１３９は、フラグ値が０である場合（Ｓ１１０１／ＮＯ）、フラグ値を１に設定する（Ｓ１１０２）。そして、プロセスＩＤ取得部１３２、バージョン取得部１３３及びバージョン別ドライバ制御部１３４は、図７に示したＳ７０１〜Ｓ７０６と同様の処理を行う（Ｓ１１０３〜Ｓ１１０８）。バージョン別ドライバ制御部１３４によりバージョン別ドライバが制御されデバイスが駆動されると、並列動作制御部１３９は、フラグ値を０に設定する（Ｓ１１０９）。
【００７２】
このような構成により、デバイスドライバ１３０がインタフェースの呼び出しを受け付けた際に、他のアプリケーション１０１によりこのデバイスドライバ１３０が実行中の場合、実行中のデバイスドライバ１３０の処理が完了するまで処理を待つので、マルチコアに非対応の旧ＯＳ対応ドライバがマルチコア対応の新ＯＳ上で動作した場合であっても、旧ＯＳ対応ドライバが並列処理されることはないので、旧ＯＳ対応ドライバを新ＯＳ上で正常に動作させることが可能になる。
【００７３】
なお、上記実施形態においては、並列動作制御部１３９は、ドライバＩ／Ｆ１３１がインタフェースの呼び出しを受け付けたタイミングで、フラグ値を参照してその後の処理を待機するか継続するかを判断している。しかしながら、これは一例であり、並列動作制御部１３９は、バージョン取得部１３３がバージョン情報を取得したタイミング等、バージョン別ドライバ制御部１３４がバージョン別ドライバを制御する前にフラグ値を参照すればよい。
【００７４】
また、上記実施形態においては、新ＯＳ対応ドライバ及び旧ＯＳ対応ドライバのいずれをマルチコア対応のＯＳ上で動作させるかに関わらず、他のアプリケーション１０１によりデバイスドライバ１３０が実行中である場合、並列動作制御部１３９は実行中のデバイスドライバ１３０の処理が完了するまで待機していた。しかしながら、マルチコア対応の新ＯＳ対応ドライバは並列処理に対応可能であるので、並列動作制御部１３９は、旧ＯＳ対応ドライバを動作させる場合にのみ、待機するか否かを判断するようにしてもよい。
【００７５】
この場合、図１２に示すように、バージョン取得部１３３がＯＳバージョンを取得して、並列動作制御部１３９に対して出力する。並列動作制御部１３９は、バージョン取得部１３３から入力されたＯＳバージョンが「旧ＯＳ」である場合、フラグ値を参照し、フラグ値が１である場合はフラグ値が０になるまで待機し、フラグ値が０である場合はフラグ値を１に設定するとともに、バージョン別ドライバ制御部１３４に対して、バージョン別ドライバを制御するよう通知する。また、並列動作制御部１３９は、バージョン取得部１３３から入力されたＯＳバージョンが「新ＯＳ」である場合、フラグ値を参照することなくバージョン別ドライバ制御部１３４に対して、バージョン別ドライバを制御するよう通知する。
【００７６】
なお、上記実施形態においては、ＯＳバージョンが「新ＯＳ」である場合、並列動作制御部１３９がフラグ値を参照することなくバージョン別ドライバを制御するよう通知する場合を例として説明している。その他、バージョン別ドライバ制御部１３４は、バージョン取得部１３３から入力されたＯＳバージョンが「新ＯＳ」の場合、並列動作制御部１３９からの通知を受けることなくバージョン別ドライバを制御し、入力されたＯＳバージョンが「旧ＯＳ」の場合、並列動作制御部１３９からの通知を受けるまで待機するようにしてもよい。
【００７７】
次に、図１２に示した構成のデバイスドライバ１３０における並列動作制御を伴う対応ドライバによる処理についての動作例を説明する。図１３は、図１２に示した構成のデバイスドライバ１３０における並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。図１２に示すように、ドライバＩ／Ｆ１３１、プロセスＩＤ取得部１３２及びバージョン取得部１３３は、図７に示したＳ７００〜Ｓ７０３と同様の処理を行う（Ｓ１３００〜Ｓ１３０３）。
【００７８】
バージョン取得部１３３が取得したＯＳバージョンが「新ＯＳ」である場合、（Ｓ１３０４／ＹＥＳ）、バージョン別ドライバ制御部１３４は、新ＯＳ対応ドライバを用いて、Ｓ１３００において受け付けたデバイスの駆動処理を実行する（Ｓ１３０５）。一方、並列動作制御部１３９は、入力されたＯＳバージョンが「旧ＯＳ」である場合であって（Ｓ１３０４／ＮＯ）、フラグ値が１である場合（Ｓ１３０６／ＹＥＳ）、フラグ値が０になる（Ｓ１３０６／ＮＯ）まで待機する。一方、並列動作制御部１３９は、フラグ値が０である場合（Ｓ１３０６／ＮＯ）、フラグ値を１に設定する（Ｓ１３０７）。
【００７９】
そして、バージョン別ドライバ制御部１３４は、旧ＯＳ対応ドライバを用いて、Ｓ１３００において受け付けたデバイスの駆動処理を実行する（Ｓ１３０８）。バージョン別ドライバ制御部１３４により旧ＯＳ対応ドライバが制御されデバイスが駆動されると、並列動作制御部１３９は、フラグ値を０に設定する（Ｓ１３０９）。
【００８０】
このような構成により、マルチコアに非対応のＯＳ対応デバイスドライバをマルチコア対応のＯＳ上で動作させる場合にのみ、他のアプリケーション１０１によるデバイスドライバ１３０の実行状況に応じてデバイスドライバの処理を待機させるか否かが判断されるので、マルチコア対応のＯＳ対応デバイスドライバを動作させる場合にはデバイスドライバを並列動作させ、より効率的なデバイスドライバの制御が可能になる。
【００８１】
なお、上記マルチコアに非対応のＯＳ対応デバイスドライバをマルチコア対応のＯＳ上で動作させるデバイスドライバ１３０の構成は、デバイスドライバがスリープ状態に入った後、割り込みハンドラによりデバイスドライバの処理が再開される実施態様においても同様に適用可能である。
【００８２】
また、上記各実施形態において、バージョン別ドライバを用いる際に適用される設定情報がバージョン別ドライバごとに異なる場合は、図１４に示すように、バージョン別設定情報を、記憶媒体であるバージョン別設定情報記憶部１４０に記憶させる。図１５は、バージョン別設定情報記憶部１４０に記憶されているバージョン別設定情報のテーブルを例示する図である。図１５に示すように、「新ＯＳ」のバージョン別ドライバに適用する設定情報として、使用されるレジスタのアドレス“ａｄｄｒ０３”及び各種パラメータ１“ｐａｒａｍ１１”等が記憶され、「旧ＯＳ」のバージョン別ドライバに適用する設定情報として、レジスタのアドレス“ａｄｄｒ０２”及び各種パラメータ１“ｐａｒａｍ１２”等が記憶されている。
【００８３】
この場合、バージョン別ドライバ制御部１３４は、バージョン取得部１３３からＯＳバージョンが入力されると、入力されたＯＳバージョンに対応するバージョン別ドライバをバージョン別ドライバ記憶部１３５から取得するとともに、入力されたＯＳバージョンに対応するバージョン別設定情報をバージョン別設定情報記憶部１４０から取得して、取得したバージョン別ドライバに適用する。このような構成により、バージョン別ドライバごとに異なる設定が必要な場合に、動作させるデバイスドライバのバージョンに応じた設定情報をリアルタイムに適用することができる。
【００８４】
また、上記各実施形態においては、ＯＳバージョンとして「新ＯＳ」及び「旧ＯＳ」の２種類を例として説明した。しかしながら、これは一例であり、３種類以上の異なるＯＳバージョンが存在する場合においても適用可能である。また、上記実施形態においては、バージョン別ドライバがデバイスドライバ１３０内の記憶媒体に記憶されている場合を例として説明したが、バージョン別ドライバがデバイスドライバ１３０の外部に記憶されていてもよい。
【符号の説明】
【００８５】
１  情報処理装置
１０  ＣＰＵ
２０  ＲＡＭ
３０  ＲＯＭ
４０  ＨＤＤ
５０  Ｉ／Ｆ
６０  ＬＣＤ
７０  操作部
８０  バス
１０１  アプリケーション
１０２  ネットワークＩ／Ｆ
１１０  ＯＳ
１１１  システムコールＩ／Ｆ
１１２  バージョン取得部
１１３  システムコールＤＢ
１１４  新ＯＳ動作制御部
１１５  旧ＯＳ互換動作制御部
１３０  デバイスドライバ
１３１  ドライバＩ／Ｆ
１３２  プロセスＩＤ取得部
１３３  バージョン取得部
１３４  バージョン別ドライバ制御部
１３５  バージョン別ドライバ記憶部
１３６  プロセスＩＤ記憶処理部
１３７  プロセスＩＤ記憶部
１３８  割り込み検知部
１３９  並列動作制御部
１４０  バージョン別設定情報
【先行技術文献】
【特許文献】
【００８６】
【特許文献１】特開２００２−０８４３８３号公報
【図１】
2015082139.tif 000003
【図２】
2015082139.tif 000004
【図３】
2015082139.tif 000005
【図４】
2015082139.tif 000006
【図５】
2015082139.tif 000007
【図６】
2015082139.tif 000008
【図７】
2015082139.tif 000009
【図８】
2015082139.tif 000010
【図９】
2015082139.tif 000011
【図１０】
2015082139.tif 000012
【図１１】
2015082139.tif 000013
【図１２】
2015082139.tif 000014
【図１３】
2015082139.tif 000015
【図１４】
2015082139.tif 000016
【図１５】
2015082139.tif 000017