JP2015082139A - 駆動用プログラム、装置駆動方法及び情報処理装置 - Google Patents
駆動用プログラム、装置駆動方法及び情報処理装置 Download PDFInfo
- Publication number
- JP2015082139A JP2015082139A JP2013218436A JP2013218436A JP2015082139A JP 2015082139 A JP2015082139 A JP 2015082139A JP 2013218436 A JP2013218436 A JP 2013218436A JP 2013218436 A JP2013218436 A JP 2013218436A JP 2015082139 A JP2015082139 A JP 2015082139A
- Authority
- JP
- Japan
- Prior art keywords
- version
- information
- program
- driving
- driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させること。【解決手段】情報処理装置を介して利用可能なデバイスを駆動させるデバイスドライバであって、アプリケーションによるデバイスの駆動要求を取得するステップと、取得された駆動要求を行ったアプリケーションを識別する識別情報を取得するステップと、プラットフォームのバージョン情報であって、アプリケーションに対応するプラットフォームのバージョン情報を、取得された識別情報に基づいて取得するステップと、デバイスを動作させるためのプログラムであって全体制御プログラムのバージョンごとに複数設けられたバージョン別デバイスドライバのうち、取得されたバージョン情報に対応する前記バージョン別デバイスドライバを用いてデバイスを駆動させるステップとを情報処理装置に実行させることを特徴とする。【選択図】図5
Description
本発明は、駆動用プログラム、装置駆動方法及び情報処理装置に関し、特に、呼び出し元のアプリケーションに応じたバージョンのデバイスドライバの実行に関する。
近年、ソフトウェアやハードウェアを動作させるための基盤となるOS(Operating System)やミドルウェア等の計算機プラットフォームの進歩は著しく、頻繁にバージョンアップが行われている。そのため、あるバージョンのプラットフォーム(以下、OSを具体例とする)上で開発されたソフトウェア(アプリケーション)は、このバージョンのOSだけでなく、後継バージョンのOS上にも移植される場合が多くなっている。
上述のようにあるバージョンのOS(旧OS)上で開発されたアプリケーションを後継バージョンのOS(新OS)上に移植する際に、異なるバージョンのOS上で共通のバイナリコードを使用することができるバイナリ互換機能を利用することができ、旧OS上で開発されたソフトウェアを、新OS上で実行させることが可能になる。
また、プリンタ、コピー及びファックス機能等を有する複合機に搭載される各アプリケーションの共通部分を共通のシステムサービスとして括りだし、各アプリケーションの規模を縮小し、開発効率及び生産性を向上させる方法が提案されている(例えば、特許文献1を参照)。
しかしながら、このようなバイナリ互換機能を利用しても、新OS上で提供されるデバイスドライバは新OS向けのデバイスドライバなので、旧OS上で開発されたアプリケーションが新OS上で動作してデバイスドライバを呼び出すと、新OS向けのデバイスドライバによりデバイスが駆動されることになる。
そのため、旧OS向けのデバイスドライバによりデバイスを駆動させることを想定して開発されたアプリケーションを新OS上で実行させた場合、想定した動作タイミングと異なり意図した結果が得られなかったり、デバイスドライバに必要なパラメータが異なりデバイスが動作しなかったりする等、アプリケーションやデバイスが正常に動作しない場合がある。
なお、特許文献1に開示された技術は、プリンタ、コピー及びファックス機能等を有する複合機に搭載されるアプリケーションの開発効率の向上を目的としたものであり、OSによって制御される汎用的な情報処理装置において、デバイスドライバとアプリケーションとのバージョン違いによる互換性を対象とする本発明とは発明の意義が異なる。
本発明は、このような課題を解決するためになされたものであり、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させることを目的とする。
上記課題を解決するために、本発明の一態様は、情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムであって、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得するステップと、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得するステップと、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するステップと、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるステップとを前記情報処理装置に実行させることを特徴とする。
また、本発明の他の態様は、情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムによる装置駆動方法であって、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得し、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得し、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得し、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させることを特徴とする。
また、本発明の更に他の態様は、各種の処理を行う装置を利用可能な情報処理装置であって、前記装置を駆動させる駆動用プログラムを有し、前記駆動用プログラムは、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を駆動要求取得部と、取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得する識別情報取得部と、前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するバージョン取得部と、前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるバージョン別駆動用プログラム制御部とを含むことを特徴とする。
本発明によれば、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションが呼び出したデバイスドライバを正常に動作させることができる。
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、各種デバイスドライバがインストールされて使用される一般的な情報処理装置を例として説明する。
図1は、本実施形態に係る情報処理装置1のハードウェア構成を示すブロック図である。図1に示すように、本実施形態に係る情報処理装置1は、一般的なサーバやPC(Personal Computer)等と同様の構成を含む。
すなわち、本実施形態に係る情報処理装置は、CPU(Central Processing Unit)10、RAM(Random Access Memory)20、ROM(Read Only Memory)30、HDD(Hard Disk Drive)40及びI/F50がバス80を介して接続されている。また、I/F50にはLCD(Liquid Crystal Display)60及び操作部70が接続されている。
CPU10は演算手段であり、情報処理装置全体の動作を制御する。RAM20は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、CPU10が情報を処理する際の作業領域として用いられる。ROM30は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。HDD40は、情報の読み書きが可能な不揮発性の記憶媒体であり、OS(Operating System)や各種の制御プログラム、アプリケーション・プログラム等が格納される。
I/F50は、バス80と各種のハードウェアやネットワーク等を接続し制御する。LCD60は、ユーザが情報処理装置の状態を確認するための視覚的ユーザインタフェースである。操作部70は、キーボードやマウス等、ユーザが情報処理装置に情報を入力するためのユーザインタフェースである。
このようなハードウェア構成において、ROM30やHDD40若しくは図示しない光学ディスク等の記憶媒体に格納されたプログラムがRAM20に読み出され、CPU10がRAM20にロードされたプログラムに従って演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る情報処理装置1の機能を実現する機能ブロックが構成される。
次に、本実施形態に係る情報処理装置1において、本実施形態に係るデバイスドライバの実行に関する機能について説明する。図2は、本実施形態に係る情報処理装置1の機能のうち、本実施形態に係るデバイスドライバの実行に関する機能の構成を示すブロック図である。図2に示すように、本実施形態に係る情報処理装置1は、アプリケーション101、OS110、ネットワークI/F102及び各種のデバイスドライバ130を含む。
アプリケーション101は、ソフトウェアプログラムが情報処理装置1にインストールされて構成されるソフトウェアモジュールであり、ワープロソフト、表計算ソフト、画像編集ソフト等の一般的なアプリケーションソフトウェアである。すなわち、アプリケーション101は、予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部として機能する。アプリケーション101は、ユーザの操作に応じてデバイスドライバ130を呼び出し、デバイスドライバ130が対応するデバイスを駆動させる。
OS110は、情報処理装置1全体を制御する基本ソフトウェアである。また、OS110は、バイナリ互換機能を有し、アプリケーション101が開発されたOSのバージョンに関わらず、アプリケーション101を実行させることができる(詳細は、図3を参照して後述)。ネットワークI/F102は、情報処理装置1がネットワークを介して他の機器と通信するためのインタフェースである。
デバイスドライバ130は、情報処理装置1からUSB(Universal Serial Bus)やネットワークを介して接続されているプリンタやスキャナ等のデバイスを駆動させるための駆動用プログラム(ソフトウェアモジュール)であり、対応するソフトウェアプログラムが情報処理装置1にインストールされることによって構成される。例えば、プリンタドライバは、デバイスドライバ130の一例であり、プリンタの設定情報のためのUI(User Interface)画面の起動や、印刷制御等のプリンタの駆動制御を実行する。
図2に示すように、デバイスドライバ130は、様々なデバイス(装置)に対応して複数構成される。また、各デバイスドライバ130は、OSのバージョンに対応したバージョンごとのデバイスドライバ(以下、「バージョン別ドライバ」(バージョン別駆動用プログラム)とする)を有し、バージョン別ドライバのうち、呼び出し元のアプリケーション101が開発されたOSのバージョンに対応するデバイスドライバを選択してデバイスを駆動させる。このようなアプリケーション101が開発されたOSのバージョンに対応したデバイスドライバを利用することが、本発明の実施形態に係る要旨である。詳細は図5を参照して後述する。
なお、上記実施形態においては、情報処理装置1全体を制御するプログラムとしてOSを例として説明している。しかしながら、これは一例であり、OSの他、ミドルウェア等、情報処理装置1全体を制御する全体制御プログラムであればよい。
次に、本実施形態に係るOS110の機能のうち、アプリケーション101が開発されたOSバージョンに応じた動作互換機能について説明する。なお、以下の説明においては、OSバージョンは「新OS」及び新OSよりも古いバージョンである「旧OS」の2種類とし、本実施形態に係る情報処理装置1にインストールされているOSは「新OS」であるとする。
図3は、本実施形態に係るOS110の機能のうちOSバージョンに応じた動作互換機能に関する構成を例示するブロック図である。図3に示すように、本実施形態に係るOS110は、システムコールI/F111、バージョン取得部112、システムコールDB113、新OS動作制御部114及び旧OS互換動作制御部115を含む。
システムコールI/F111は、アプリケーション101により実行されたシステムコールを受け付けるインタフェースである。システムコールI/F111は、システムコールを受け付けると、バージョン取得部112に対して出力する。
バージョン取得部112は、システムコールI/F111から入力されたシステムコールに基づいて、入力されたシステムコールを実行したアプリケーション101が開発されたOSバージョンを取得する。具体的には、バージョン取得部112は、システムコールDB113に記憶されているシステムコールとそのシステムコールをサポートしているOSバージョンとを関連付けたシステムコールテーブルを参照して、入力されたシステムコールに関連付けられているOSバージョンを取得する。
図4は、システムコールDB113に記憶されているシステムコールテーブルを例示する図である。図4に示すように、システムコールテーブルにおいては、例えば、I/Oを多重化するためのシステムコール“pоll”が新OSでサポートされていることを示し、同様の機能を実装するシステムコール“select”が旧OSでサポートされていることを示す。すなわち、バージョン取得部112は、例えば、システムコールI/F111から入力されたシステムコールが“pоll”である場合、このシステムコールを実行したアプリケーション101が開発されたOSバージョンを「新OS」と特定する。
新OS動作制御部114は、バージョン取得部112により取得されたOSバージョンが「新OS」である場合、システムコールを実行したアプリケーション101を、新OS上で動作させるよう制御する。旧OS互換動作制御部115は、バージョン取得部112により取得されたOSバージョンが「旧OS」である場合、システムコールを実行したアプリケーション101を、新OS上でバイナリ互換機能により動作させるよう制御する。
上述のようなバイナリ互換機能により、旧OS上で開発されたアプリケーション101は、新OSがインストールされた情報処理装置1においても動作可能になる。しかしながら、従来は新OSがインストールされた情報処理装置1においては、新OS向けのデバイスドライバがインストールされているので、新OS上で動作している旧OS上で開発されたアプリケーション101がデバイスドライバを呼び出すと、新OS向けのデバイスドライバ(以降、「新OS対応ドライバ」とする)が呼び出され、旧OS向けデバイスドライバ(以降、「旧OS対応ドライバ」)を想定した動作とは異なる動作となり、アプリケーション101やデバイスが正常に動作しない場合がある。
そこで、本実施形態に係るデバイスドライバ130により、アプリケーション101が開発されたOSバージョンに応じたデバイスドライバを利用可能にすることが本発明の実施形態に係る要旨である。以下、本実施形態に係るデバイスドライバ130の機能のうち、OSバージョンに応じたデバイスドライバを利用可能にする機能について説明する。
図5は、本実施形態に係るデバイスドライバ130の機能のうち、OSバージョンに応じたデバイスドライバを利用可能にする機能に関する構成を例示するブロック図である。図5に示すように、本実施形態に係るデバイスドライバ130は、ドライバI/F131、プロセスID取得部132、バージョン取得部133、バージョン別ドライバ制御部134及びバージョン別ドライバ記憶部135を含む。
ドライバI/F131は、アプリケーション101によるデバイスドライバのコードを呼び出すためのインタフェースの呼び出しを受け付ける。ドライバのインタフェースは、例えば、“оpen”、“read”、“write”等のAPI(Application Programming Interface)である。例えば、デバイスドライバ130の一例であるプリンタドライバの“write”インタフェースを呼び出すと、プリンタによる印刷処理が実行される。すなわち、ドライバI/F131は、機能実行処理部であるアプリケーション101によるデバイスの駆動要求を取得する駆動要求取得部として機能する。
プロセスID取得部132は、ドライバI/F131がインタフェースの呼び出しを受け付けると、インタフェースを呼び出したアプリケーション101のプロセスIDを取得して、バージョン取得部133に対して出力する。プロセスID取得部132は、例えば、ドライバI/F131が受け付けたインタフェースの引数としてプロセスIDが設定されている場合は、設定されているプロセスIDを取得する。また、デバイスドライバ130において、ドライバI/F131が受け付けたインタフェースを介して自身のデバイスドライバ130にアクセスしているアプリケーション(クライアントアプリケーション)のプロセスIDを取得する関数が予め定められている場合、プロセスID取得部132は、その関数を利用してプロセスIDを取得してもよい。
バージョン取得部133は、プロセスID取得部132から入力されたプロセスIDに基づいて、入力されたプロセスIDに対応するアプリケーション101が開発されたOSのバージョンを取得してバージョン別ドライバ制御部134に対して出力する。具体的には、例えば、バージョン取得部133は、まず、図6に示したプロセスIDとそのプロセスIDに対応するアプリケーションのプログラムファイルの格納先及びプログラムファイル名とが関連付けられたプロセス管理情報を参照して、入力されたプロセスIDに関連付けられたプログラムファイルの格納先及びプログラムファイル名を取得する。なお、プロセス管理情報は、OS110により管理されているものとする。
次に、バージョン取得部133は、プログラムファイルの格納先及びプログラムファイル名から取得したプログラムファイルのファイル情報に基づいてOSバージョンを取得する。具体的には、例えば、バージョン取得部133は、プログラムファイルの実行フォーマットであるELF(Executable and Linkable Format)のNOTEタイプのヘッダ情報に格納されているOSバージョンを取得する。
バージョン別ドライバ制御部(バージョン別駆動用プログラム制御部)134は、バージョン取得部133から入力されたOSバージョンに対応するバージョン別ドライバをバージョン別ドライバ記憶部135から取得して、取得したバージョン別ドライバを制御してデバイスを駆動させる。
バージョン別ドライバ記憶部135は、例えば、新OS対応ドライバ及び旧OS対応ドライバのようにOSバージョンに対応するバージョン別ドライバが記憶される記憶媒体である。例えば、バージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「旧OS」である場合、バージョン別ドライバ記憶部135から旧OS対応ドライバを取得する。
次に、本実施形態に係るデバイスドライバ130における対応ドライバによる処理についての動作例を説明する。図7は、本実施形態に係るデバイスドライバ130における対応ドライバによる処理についての動作例を示すフローチャートである。図7に示すように、ドライバI/F131は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける(S700)。
ドライバI/F131によりデバイスの駆動要求が受け付けられると、プロセスID取得部132は、ドライバI/F131が受け付けた駆動要求を行ったアプリケーション101のプロセスIDを取得する(S701)。例えば、プロセスID取得部132は、プロセスID“P001”を取得したとする。
プロセスID取得部132からプロセスID“P001”が入力されたバージョン取得部133は、図6に示したプロセス管理情報を参照して、プログラムファイルを取得する(S702)。すなわち、バージョン取得部133は、図6に示したプロセス管理情報を参照して、プロセスID“P001”に関連付けられたプログラムファイル格納先の“・・・¥user¥app¥app1”ディレクトリに格納されている“app1”プログラムファイルを取得する。“app1”プログラムファイルを取得したバージョン取得部133は、取得した“app1”プログラムファイルのヘッダ情報からOSバージョンを取得する(S703)。
バージョン取得部133からOSバージョンが入力されたバージョン別ドライバ制御部134は、入力されたOSバージョンが「新OS」である場合(S704/YES)、新OS対応ドライバを用いて、S700において受け付けたデバイスの駆動処理を実行する(S705)。一方、バージョン別ドライバ制御部134は、入力されたOSバージョンが「旧OS」である場合(S704/NO)、旧OS対応ドライバを用いて、S700において受け付けたデバイスの駆動処理を実行する(S706)。
バージョン取得部133からOSバージョンが入力されたバージョン別ドライバ制御部134は、入力されたOSバージョンが「新OS」である場合(S704/YES)、新OS対応ドライバを用いて、S700において受け付けたデバイスの駆動処理を実行する(S705)。一方、バージョン別ドライバ制御部134は、入力されたOSバージョンが「旧OS」である場合(S704/NO)、旧OS対応ドライバを用いて、S700において受け付けたデバイスの駆動処理を実行する(S706)。
以上説明したように、本実施形態に係る情報処理装置1においては、情報処理装置1にインストールされたアプリケーション101が動作し、アプリケーション101により情報処理装置1にインストールされたデバイスドライバ130が呼び出されると、動作しているアプリケーション101が開発されたOSのバージョンに対応したバージョン別ドライバによりデバイスが駆動される。これにより、旧OS上で開発されたアプリケーション101がバイナリ互換機能により新OS上で動作している場合に、アプリケーション101がデバイスドライバ130を呼び出すと、旧OS対応ドライバによりデバイスが駆動される。すなわち、開発環境とは異なるバージョンのプラットフォームで実行されたアプリケーションがデバイスドライバを呼び出した場合に、デバイスドライバを正常に動作させることができる。
なお、上記実施形態においては、ドライバI/F131がデバイスドライバのインタフェースの呼び出しを受け付けたタイミングで、プロセスID取得部132がプロセスIDを取得し、バージョン取得部133が取得したプロセスIDに基づいてOSバージョンを取得する場合を例として説明した。その他、アプリケーション101が起動したタイミングで、OS110が起動したアプリケーション101のプロセスIDを取得して、取得されたプロセスIDに基づいてOSバージョンを取得してもよい。
この場合、取得されたOSバージョンは、例えば、図6に示したプロセス管理情報においてプロセスIDと関連付けて記憶され、ドライバI/F131がデバイスドライバのインタフェースを受け付けると、バージョン取得部133は、プロセス管理情報を参照して、プロセスID取得部132により取得されたプロセスIDと関連付けられたOSバージョンを取得する。このような構成により、ドライバI/F131がデバイスドライバのインタフェースの呼び出しを受け付けた際に、アプリケーション101のプログラムファイルからヘッダ情報を読み出すことなく、予めプロセスIDに関連付けられたOSバージョンを直接取得することができるので、処理時間を短縮することができる。
また、上記実施形態においては、プロセスID取得部132がアプリケーション101を識別する識別情報としてプロセスIDを取得し、バージョン取得部133が取得されたプロセスIDに基づいてアプリケーション101のプログラムファイル格納先及びプログラムファイル名を取得して、取得したプログラムファイルからOSバージョンを取得する場合を例として説明している。その他、プロセスID取得部132により取得されたプロセスIDに基づいて取得されたプログラムファイル格納先及びプログラムファイル名を識別情報とし、バージョン取得部133がこの識別情報に基づいて取得したプログラムファイルからOSバージョンを取得してもよい。すなわち、プロセスID取得部132は、アプリケーション101を識別する識別情報を取得する識別情報取得部として機能する。
次に、アプリケーション101がデバイスドライバ130を呼び出し、呼び出されたデバイスドライバ130がデバイスを駆動させた後、デバイスの処理が完了するまでデバイスドライバの処理がスリープ状態に入る場合の実施形態を説明する。デバイスドライバの処理がスリープ状態に入った後、デバイスの処理が完了するとデバイスからデバイスドライバへ割り込みが通知され、デバイスドライバの割り込みハンドラが起動しデバイスドライバの処理が再開される。
割り込み通知は、デバイスがデバイスドライバの割り込み要求インタフェースを呼び出すことにより行われるが、この割り込み要求インタフェースを呼び出すプロセスIDは割り込み専用に割り当てられている場合がある。そのため、割り込み要求インタフェースを呼び出すプロセスIDに基づいてアプリケーション101が開発されたOSバージョンを取得することができず、どのOSバージョンに対応するデバイスドライバの割り込みハンドラを用いればよいのか判断することができない場合がある。
そこで、以下、スリープ状態に入ったデバイスドライバの処理を再開させる場合において、デバイスドライバを呼び出したアプリケーション101が開発されたOSバージョンに対応するデバイスドライバの割り込みハンドラを用いる実施形態を説明する。図8は、このような実施形態におけるデバイスドライバ130の機能構成を例示する図である。図8に示すように、デバイスドライバ130は、図5に示した構成に加えて、プロセスID記憶処理部136、プロセスID記憶部137及び割り込み検知部138を含む。なお、図5において説明した構成と同様の処理については説明を省略する。
プロセスID取得部132は、取得したプロセスIDをプロセスID記憶処理部136に対して出力する。プロセスID記憶処理部136は、プロセスID取得部132から入力されたプロセスIDをプロセスID記憶部137に記憶させる。すなわち、プロセスID記憶部137には、ドライバI/F131が受け付けたインタフェースを呼び出したアプリケーション101のプロセスIDが記憶されている。
ドライバI/F131は、インタフェースの呼び出しを受け付けると、呼び出されたインタフェース情報(例えば、APIの関数名)を、割り込み検知部138に対して出力する。割り込み検知部138は、ドライバI/F131から入力されたインタフェース情報がデバイスからの割り込み要求インタフェースを示す場合、デバイスからの割り込みを検知した旨をバージョン取得部133及びバージョン別ドライバ制御部134に対して通知する。
バージョン取得部133は、割り込み検知部138から割り込みを検知した旨が通知されると、プロセスID記憶部137に記憶されているプロセスIDを取得し、取得したプロセスIDに基づいて図5において説明した場合と同様にOSバージョンを取得してバージョン別ドライバ制御部134に対して出力する。
バージョン別ドライバ制御部134は、割り込み検知部138から割り込みを検知した旨が通知されると、バージョン取得部133から入力されたOSバージョンに対応するバージョン別ドライバを、バージョン別ドライバ記憶部135から取得する。また、バージョン別ドライバ制御部134は、取得したバージョン別ドライバの割り込みハンドラを起動して、スリープ状態のデバイスハンドラの処理を再開させる。
次に、本実施形態に係るデバイスドライバ130におけるスリープ状態を含む場合の対応ドライバによる処理についての動作例を説明する。図9は、本実施形態に係るデバイスドライバ130におけるスリープ状態を含む場合の対応ドライバによる処理についての動作例を示すフローチャートである。図9に示すように、ドライバI/F131は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける(S900)。
ドライバI/F131によりデバイスの駆動要求が受け付けられると、プロセスID取得部132は、ドライバI/F131が受け付けた駆動要求を行ったアプリケーション101のプロセスIDを取得する(S901)。例えば、プロセスID取得部132は、プロセスID“P001”を取得したとする。
プロセスID取得部132より取得されたプロセスID“P001”がプロセスID記憶処理部136に入力されると、プロセスID記憶処理部136は、取得したプロセスID“P001”をプロセスID記憶部137に記憶させる(S902)。
プロセスID取得部132からプロセスID“P001”が入力されたバージョン取得部133は、図6に示したプロセス管理情報を参照して、プログラムファイルを取得する(S903)。すなわち、バージョン取得部133は、図6に示したプロセス管理情報を参照して、プロセスID“P001”に関連付けられたプログラムファイル格納先の“・・・¥user¥app¥app1”ディレクトリに格納されている“app1”プログラムファイルを取得する。“app1”プログラムファイルを取得したバージョン取得部133は、取得した“app1”プログラムファイルのヘッダ情報からOSバージョンを取得する(S904)。
バージョン取得部133からOSバージョンが入力されたバージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「新OS」である場合(S905/YES)、新OS対応ドライバを用いて、S900において受け付けたデバイスの駆動処理を実行する(S906)。一方、バージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「旧OS」である場合(S905/NO)、旧OS対応ドライバを用いて、S900において受け付けたデバイスの駆動処理を実行する(S907)。
S900において受け付けたデバイスの駆動処理を実行すると、駆動処理を実行したデバイスドライバは、割り込み検知部138がデバイスの処理完了すなわち割り込みが検知されるまで、スリープ状態に入る(S908/NO)。一方、割り込み検知部138がデバイスからの割り込みを検知すると(S908/YES)、バージョン取得部133は、プロセスID記憶部137に記憶されているプロセスID“P001”を取得する(S909)。
プロセスID“P001”を取得したバージョン取得部133は、図6に示したプロセス管理情報を参照して、プログラムファイルを取得する(S910)。すなわち、バージョン取得部133は、図6に示したプロセス管理情報を参照して、プロセスID“P001”に関連付けられたプログラムファイル格納先の“・・・¥user¥app¥app1”ディレクトリに格納されている“app1”プログラムファイルを取得する。“app1”プログラムファイルを取得したバージョン取得部133は、取得した“app1”プログラムファイルのヘッダ情報からOSバージョンを取得する(S911)。
バージョン取得部133からOSバージョンが入力されたバージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「新OS」である場合(S912/YES)、新OS対応ドライバの割り込みハンドラを起動して、スリープ状態のデバイスドライバの処理を再開させる(S913)。一方、バージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「旧OS」である場合(S912/NO)、旧OS対応ドライバの割り込みハンドラを起動して、スリープ状態のデバイスドライバの処理を再開させる(S914)。
このような構成により、デバイスドライバがスリープ状態に入った後、割り込みを検知すると、デバイスドライバを呼び出したアプリケーション101が開発されたOSバージョンに対応するデバイスドライバの割り込みハンドラを起動させることができるので、割り込み検知後の処理を正常に行うことができる。
なお、上記実施形態においては、プロセスIDをアプリケーション101の識別情報としてプロセスID記憶部137に記憶させる場合を例として説明している。しかしながら、これは一例であり、識別情報としてアプリケーション101のプログラムファイルの格納先及びプログラムファイル名を記憶させてもよし、バージョン取得部133がプロセスIDに基づいて取得したOSバージョン(又はOSバージョンを識別する値)を記憶媒体に記憶させてもよい。
次に、マルチコアに非対応のOS対応デバイスドライバをマルチコア対応のOS上で動作させる実施形態について説明する。以下、旧OS対応ドライバをマルチコアに非対応のOS対応デバイスドライバとし、新OS対応ドライバをマルチコア対応のOS対応デバイスドライバとする。旧OS対応ドライバは、シングルコアで動作することを前提として開発されているので、マルチコア環境のように複数のコアから同時にデバイスドライバの処理が実行されることを想定していない。そのため、本実施形態に係る情報処理装置1において、旧OS上で開発されたアプリケーション101をマルチコア対応の新OS上でバイナリ互換機能により動作させて、旧OS対応ドライバを呼び出すと、呼び出されたデバイスドライバが並列処理等に対応できず正常に動作しない場合がある。
そこで、以下、マルチコア対応OS上でマルチコアに非対応の旧OS対応ドライバを動作させる実施形態を説明する。図10は、このような実施形態におけるデバイスドライバ130の機能構成を例示する図である。図10に示すように、デバイスドライバ130は、図5に示した構成に加えて、並列動作制御部139を含む。なお、図5において説明した構成と同様の処理については説明を省略する。
ドライバI/F131は、インタフェースの呼び出しを受け付けると、呼び出されたインタフェース情報(例えば、APIの関数名)を、並列動作制御部139に対して出力する。並列動作制御部139は、ドライバI/F131からインタフェース情報が入力されると、他のアプリケーション101(プロセス)によりこのデバイスドライバ130が実行中であるか否かを示す実行判別情報であるフラグ値を参照する。なお、ここでは、他のアプリケーション101によりデバイスドライバ130が実行中である場合フラグ値を1、それ以外の場合フラグ値を0に設定する場合を例とする。また、フラグ値は、例えば並列動作制御部139の内部や図示しない記憶媒体に保持されているものとする。
並列動作制御部139は、フラグ値が1の場合フラグ値が0になるまで待機し、フラグ値が0の場合フラグ値を1に設定するとともに、プロセスID取得部132に対して、プロセスIDを取得するよう通知する。プロセスID取得部132は、並列動作制御部139からの通知を受けると、図5において説明した処理と同様の処理により、インタフェースを呼び出したアプリケーション101のプロセスIDを取得する。
また、バージョン別ドライバ制御部134は、図5において説明した処理と同様の処理により、バージョン別ドライバを制御してデバイスを駆動させると、並列動作制御部139に対して実行完了を通知する。並列動作制御部139は、バージョン別ドライバ制御部134から実行完了の通知を受けると、フラグ値を1から0にする。
次に、本実施形態に係るデバイスドライバ130における並列動作制御を伴う対応ドライバによる処理についての動作例を説明する。図11は、本実施形態に係るデバイスドライバ130における並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。図11に示すように、ドライバI/F131は、デバイスドライバのインタフェースの呼び出し、すなわちデバイスの駆動要求を受け付ける(S1100)。
ドライバI/F131によりデバイスの駆動要求が受け付けられると、並列動作制御部139は、フラグ値が1である場合(S1101/YES)、フラグ値が0になる(S1101/NO)まで待機する。一方、並列動作制御部139は、フラグ値が0である場合(S1101/NO)、フラグ値を1に設定する(S1102)。そして、プロセスID取得部132、バージョン取得部133及びバージョン別ドライバ制御部134は、図7に示したS701〜S706と同様の処理を行う(S1103〜S1108)。バージョン別ドライバ制御部134によりバージョン別ドライバが制御されデバイスが駆動されると、並列動作制御部139は、フラグ値を0に設定する(S1109)。
このような構成により、デバイスドライバ130がインタフェースの呼び出しを受け付けた際に、他のアプリケーション101によりこのデバイスドライバ130が実行中の場合、実行中のデバイスドライバ130の処理が完了するまで処理を待つので、マルチコアに非対応の旧OS対応ドライバがマルチコア対応の新OS上で動作した場合であっても、旧OS対応ドライバが並列処理されることはないので、旧OS対応ドライバを新OS上で正常に動作させることが可能になる。
なお、上記実施形態においては、並列動作制御部139は、ドライバI/F131がインタフェースの呼び出しを受け付けたタイミングで、フラグ値を参照してその後の処理を待機するか継続するかを判断している。しかしながら、これは一例であり、並列動作制御部139は、バージョン取得部133がバージョン情報を取得したタイミング等、バージョン別ドライバ制御部134がバージョン別ドライバを制御する前にフラグ値を参照すればよい。
また、上記実施形態においては、新OS対応ドライバ及び旧OS対応ドライバのいずれをマルチコア対応のOS上で動作させるかに関わらず、他のアプリケーション101によりデバイスドライバ130が実行中である場合、並列動作制御部139は実行中のデバイスドライバ130の処理が完了するまで待機していた。しかしながら、マルチコア対応の新OS対応ドライバは並列処理に対応可能であるので、並列動作制御部139は、旧OS対応ドライバを動作させる場合にのみ、待機するか否かを判断するようにしてもよい。
この場合、図12に示すように、バージョン取得部133がOSバージョンを取得して、並列動作制御部139に対して出力する。並列動作制御部139は、バージョン取得部133から入力されたOSバージョンが「旧OS」である場合、フラグ値を参照し、フラグ値が1である場合はフラグ値が0になるまで待機し、フラグ値が0である場合はフラグ値を1に設定するとともに、バージョン別ドライバ制御部134に対して、バージョン別ドライバを制御するよう通知する。また、並列動作制御部139は、バージョン取得部133から入力されたOSバージョンが「新OS」である場合、フラグ値を参照することなくバージョン別ドライバ制御部134に対して、バージョン別ドライバを制御するよう通知する。
なお、上記実施形態においては、OSバージョンが「新OS」である場合、並列動作制御部139がフラグ値を参照することなくバージョン別ドライバを制御するよう通知する場合を例として説明している。その他、バージョン別ドライバ制御部134は、バージョン取得部133から入力されたOSバージョンが「新OS」の場合、並列動作制御部139からの通知を受けることなくバージョン別ドライバを制御し、入力されたOSバージョンが「旧OS」の場合、並列動作制御部139からの通知を受けるまで待機するようにしてもよい。
次に、図12に示した構成のデバイスドライバ130における並列動作制御を伴う対応ドライバによる処理についての動作例を説明する。図13は、図12に示した構成のデバイスドライバ130における並列動作制御を伴う対応ドライバによる処理についての動作例を示すフローチャートである。図12に示すように、ドライバI/F131、プロセスID取得部132及びバージョン取得部133は、図7に示したS700〜S703と同様の処理を行う(S1300〜S1303)。
バージョン取得部133が取得したOSバージョンが「新OS」である場合、(S1304/YES)、バージョン別ドライバ制御部134は、新OS対応ドライバを用いて、S1300において受け付けたデバイスの駆動処理を実行する(S1305)。一方、並列動作制御部139は、入力されたOSバージョンが「旧OS」である場合であって(S1304/NO)、フラグ値が1である場合(S1306/YES)、フラグ値が0になる(S1306/NO)まで待機する。一方、並列動作制御部139は、フラグ値が0である場合(S1306/NO)、フラグ値を1に設定する(S1307)。
そして、バージョン別ドライバ制御部134は、旧OS対応ドライバを用いて、S1300において受け付けたデバイスの駆動処理を実行する(S1308)。バージョン別ドライバ制御部134により旧OS対応ドライバが制御されデバイスが駆動されると、並列動作制御部139は、フラグ値を0に設定する(S1309)。
このような構成により、マルチコアに非対応のOS対応デバイスドライバをマルチコア対応のOS上で動作させる場合にのみ、他のアプリケーション101によるデバイスドライバ130の実行状況に応じてデバイスドライバの処理を待機させるか否かが判断されるので、マルチコア対応のOS対応デバイスドライバを動作させる場合にはデバイスドライバを並列動作させ、より効率的なデバイスドライバの制御が可能になる。
なお、上記マルチコアに非対応のOS対応デバイスドライバをマルチコア対応のOS上で動作させるデバイスドライバ130の構成は、デバイスドライバがスリープ状態に入った後、割り込みハンドラによりデバイスドライバの処理が再開される実施態様においても同様に適用可能である。
また、上記各実施形態において、バージョン別ドライバを用いる際に適用される設定情報がバージョン別ドライバごとに異なる場合は、図14に示すように、バージョン別設定情報を、記憶媒体であるバージョン別設定情報記憶部140に記憶させる。図15は、バージョン別設定情報記憶部140に記憶されているバージョン別設定情報のテーブルを例示する図である。図15に示すように、「新OS」のバージョン別ドライバに適用する設定情報として、使用されるレジスタのアドレス“addr03”及び各種パラメータ1“param11”等が記憶され、「旧OS」のバージョン別ドライバに適用する設定情報として、レジスタのアドレス“addr02”及び各種パラメータ1“param12”等が記憶されている。
この場合、バージョン別ドライバ制御部134は、バージョン取得部133からOSバージョンが入力されると、入力されたOSバージョンに対応するバージョン別ドライバをバージョン別ドライバ記憶部135から取得するとともに、入力されたOSバージョンに対応するバージョン別設定情報をバージョン別設定情報記憶部140から取得して、取得したバージョン別ドライバに適用する。このような構成により、バージョン別ドライバごとに異なる設定が必要な場合に、動作させるデバイスドライバのバージョンに応じた設定情報をリアルタイムに適用することができる。
また、上記各実施形態においては、OSバージョンとして「新OS」及び「旧OS」の2種類を例として説明した。しかしながら、これは一例であり、3種類以上の異なるOSバージョンが存在する場合においても適用可能である。また、上記実施形態においては、バージョン別ドライバがデバイスドライバ130内の記憶媒体に記憶されている場合を例として説明したが、バージョン別ドライバがデバイスドライバ130の外部に記憶されていてもよい。
1 情報処理装置
10 CPU
20 RAM
30 ROM
40 HDD
50 I/F
60 LCD
70 操作部
80 バス
101 アプリケーション
102 ネットワークI/F
110 OS
111 システムコールI/F
112 バージョン取得部
113 システムコールDB
114 新OS動作制御部
115 旧OS互換動作制御部
130 デバイスドライバ
131 ドライバI/F
132 プロセスID取得部
133 バージョン取得部
134 バージョン別ドライバ制御部
135 バージョン別ドライバ記憶部
136 プロセスID記憶処理部
137 プロセスID記憶部
138 割り込み検知部
139 並列動作制御部
140 バージョン別設定情報
10 CPU
20 RAM
30 ROM
40 HDD
50 I/F
60 LCD
70 操作部
80 バス
101 アプリケーション
102 ネットワークI/F
110 OS
111 システムコールI/F
112 バージョン取得部
113 システムコールDB
114 新OS動作制御部
115 旧OS互換動作制御部
130 デバイスドライバ
131 ドライバI/F
132 プロセスID取得部
133 バージョン取得部
134 バージョン別ドライバ制御部
135 バージョン別ドライバ記憶部
136 プロセスID記憶処理部
137 プロセスID記憶部
138 割り込み検知部
139 並列動作制御部
140 バージョン別設定情報
Claims (9)
- 情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムであって、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得するステップと、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得するステップと、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するステップと、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるステップと
を前記情報処理装置に実行させることを特徴とする駆動用プログラム。 - 前記バージョン情報は、前記識別情報により識別される前記機能実行処理部に対応する前記専用プログラムのファイル情報に基づいて取得される
ことを特徴とする請求項1に記載の駆動用プログラム。 - 前記機能実行処理部が起動したタイミングで、前記バージョン情報が予め取得されて前記機能実行処理部の識別情報と関連付けて記憶媒体に記憶され、
前記記憶媒体から、前記駆動要求を行った前記機能実行処理部の識別情報に関連付けられた前記バージョン情報が取得される
ことを特徴とする請求項1又は2に記載の駆動用プログラム。 - 取得された前記識別情報を記憶媒体に記憶させるステップと、
駆動させた前記装置からの割り込みを検知すると、前記記憶媒体に記憶された前記識別情報に基づいて、前記全体制御プログラムのバージョン情報を取得するステップと、
取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムの割り込み制御プログラムを用いて、検知された前記割り込みに基づく処理を実行するステップと
を前記情報処理装置に実行させることを特徴とする請求項1〜3のいずれか1項に記載の駆動用プログラム。 - 前記情報処理装置における前記全体制御プログラムがマルチコアに対応し、
他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中であるか否かを示す実行判別情報を参照するステップと、
参照された前記実行判別情報が他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中ではないことを示すまで、前記バージョン別駆動用プログラムを用いた前記装置の駆動処理を待機させるステップと
を前記情報処理装置に実行させることを特徴とする請求項1〜4のいずれか1項に記載の駆動用プログラム。 - 取得された前記全体制御プログラムのバージョンがマルチコアに非対応である場合に、前記実行判別情報が他の前記機能実行処理部の前記装置の駆動要求により前記駆動用プログラムが実行中ではないことを示すまで、前記バージョン別駆動用プログラムを用いた前記装置の駆動処理を待機させるステップ
を前記情報処理装置に実行させることを特徴とする請求項5に記載の駆動用プログラム。 - 前記バージョン別駆動用プログラムそれぞれを用いる際に適用されるバージョン別設定情報のうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムに対応する前記バージョン別設定情報が適用される
ことを特徴とする請求項1〜6のいずれか1項に記載の駆動用プログラム。 - 情報処理装置を介して利用可能な装置を駆動させる駆動用プログラムによる装置駆動方法であって、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を取得し、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得し、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得し、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させる
ことを特徴とする装置駆動方法。 - 各種の処理を行う装置を利用可能な情報処理装置であって、
前記装置を駆動させる駆動用プログラムを有し、
前記駆動用プログラムは、
予め定められた機能を実現するための専用プログラムに従って演算装置が演算を行うことにより構成される機能実行処理部による前記装置の駆動要求を駆動要求取得部と、
取得された前記駆動要求を行った前記機能実行処理部を識別する識別情報を取得する識別情報取得部と、
前記情報処理装置全体を制御する全体制御プログラムのバージョン情報であって前記機能実行処理部に対応する前記全体制御プログラムのバージョン情報を、取得された前記識別情報に基づいて取得するバージョン取得部と、
前記装置を動作させるためのプログラムであって前記全体制御プログラムのバージョンごとに複数設けられたバージョン別駆動用プログラムのうち、取得された前記バージョン情報に対応する前記バージョン別駆動用プログラムを用いて前記装置を駆動させるバージョン別駆動用プログラム制御部と
を含む
ことを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013218436A JP2015082139A (ja) | 2013-10-21 | 2013-10-21 | 駆動用プログラム、装置駆動方法及び情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013218436A JP2015082139A (ja) | 2013-10-21 | 2013-10-21 | 駆動用プログラム、装置駆動方法及び情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015082139A true JP2015082139A (ja) | 2015-04-27 |
Family
ID=53012723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013218436A Pending JP2015082139A (ja) | 2013-10-21 | 2013-10-21 | 駆動用プログラム、装置駆動方法及び情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015082139A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909557A (zh) * | 2019-11-20 | 2020-03-24 | 上海中商网络股份有限公司 | 一种采集器开发平台 |
CN113961253A (zh) * | 2021-09-29 | 2022-01-21 | 阿里巴巴(中国)有限公司 | 驱动程序调用方法、装置、电子设备和存储介质 |
-
2013
- 2013-10-21 JP JP2013218436A patent/JP2015082139A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909557A (zh) * | 2019-11-20 | 2020-03-24 | 上海中商网络股份有限公司 | 一种采集器开发平台 |
CN110909557B (zh) * | 2019-11-20 | 2024-02-09 | 上海中商网络股份有限公司 | 一种采集器开发平台 |
CN113961253A (zh) * | 2021-09-29 | 2022-01-21 | 阿里巴巴(中国)有限公司 | 驱动程序调用方法、装置、电子设备和存储介质 |
CN113961253B (zh) * | 2021-09-29 | 2024-04-09 | 阿里巴巴(中国)有限公司 | 驱动程序调用方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI400652B (zh) | Dual operating system parallel processing methods, recording media and computer program products | |
WO2016177341A1 (zh) | 接口调用方法、装置及终端 | |
JP6787115B2 (ja) | 画像形成装置、機能追加方法、プログラム、 | |
US8891111B2 (en) | Adaptable printer driver | |
JP2011013809A (ja) | 情報処理装置、情報処理システムの制御方法およびプログラム | |
US9170763B2 (en) | Information processing apparatus and control method | |
US10089102B2 (en) | Information processing apparatus, method, and program | |
JP2014170515A (ja) | 機器、情報記録プログラム、及び情報記録方法 | |
JP6142527B2 (ja) | 設定情報管理プログラム、情報処理装置及び設定情報管理方法 | |
JP5782055B2 (ja) | 画像形成装置 | |
JP2018205967A (ja) | 情報処理装置、プログラム管理方法、及びプログラム | |
US20130081010A1 (en) | Template and server content download using protocol handlers | |
TWI511047B (zh) | 作業系統切換方法以及使用此方法的雙作業系統電子裝置 | |
EP3005094B1 (en) | Information processing device, information processing method, and program | |
JP2015082139A (ja) | 駆動用プログラム、装置駆動方法及び情報処理装置 | |
KR20130024667A (ko) | 소프트웨어를 자동으로 설치하는 방법 및 장치 | |
CN112445436A (zh) | 信息处理装置和用于信息处理装置的方法 | |
US20220129212A1 (en) | Image forming apparatus capable of preventing phenomenon that printing by schedule setting will not be started due to display of confirmation screen, control method for image forming apparatus, and storage medium | |
CN115357355A (zh) | 一种软件跨系统迁移的方法、装置、设备及可读存储介质 | |
US8762699B1 (en) | System, apparatus, and method for initiating a reboot of a personal computer system by pressing a button on an attached storage device and causing the operating system on the attached storage device to be booted | |
JP2009134610A (ja) | 周辺機器制御装置、プログラムインストール方法及びプログラム | |
JP2015060557A (ja) | 情報処理システム、情報処理装置、デバイス装置、ソフトウェア設置方法およびコンピュータプログラム | |
JP6078515B2 (ja) | 電子機器およびプログラム | |
JP2014010480A (ja) | ドライバ管理プログラム、及び、情報処理装置 | |
JP2011097365A (ja) | 画像形成装置 |