(57)【要約】      （修正有）【課題】汎用的なドライバを使用せずに、接続される外部機器に特化したドライバを自動的にメモリにロードし使用することで、処理速度を向上させ、ドライバのプログラムサイズの肥大化を防ぐことができる情報処理装置、外部機器、情報処理プログラム及び制御プログラムを提供する。【解決手段】ＣＰＵ１１は、複数の外部機器と、その機器毎の専用のドライバとを対応させてＨＤ１３で管理し、複数の外部機器の少なくとも１つの装着を検出し、該検出された外部機器の専用のドライバをＨＤ１３から取得し、該取得されたドライバをメモリ１２にロードし、上記検出された外部機器を制御する。【選択図】図１
2006172130.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段を備え、複数の外部機器に接続可能な情報処理装置であって、
前記複数の外部機器と、その機器毎の専用のドライバとを対応させて管理する管理手段と、
前記複数の外部機器の少なくとも１つの装着を検出する検出手段と、
該検出された外部機器の専用のドライバを前記管理手段から取得する取得手段と、
前記取得手段により取得されたドライバを前記記憶手段にロードし、前記検出された外部機器を制御する制御手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記検出手段が前記複数の外部機器の少なくとも１つの取り外しを検出した場合に、前記制御手段は、該検出された外部機器の専用のドライバを前記記憶手段から削除することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、ダイレクトメモリアクセスコントローラを備え、前記制御手段が前記検出された外部機器を制御する際に、前記ドライバは前記記憶手段及び前記ダイレクトメモリアクセスコントローラを拘束し、前記検出手段が前記複数の外部機器の少なくとも１つの取り外しを検出した場合に、前記ドライバは前記記憶手段及び前記ダイレクトメモリアクセスコントローラを解放することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記外部機器の専用のドライバは、外部機器の専用のデータ入出力を制御する最下位ドライバであることを特徴とする請求項１乃至３のいずれか１項記載の情報処理装置。
【請求項５】
複数種類の情報処理装置に接続可能な外部機器であって、
前記複数種類の情報処理装置と、その種類毎の専用のドライバとを対応させて管理する管理手段と、
前記複数種類の情報処理装置の１つから接続要求を受信する受信手段と、
該接続要求を送信した情報処理装置に対応する専用のドライバを前記管理手段から取得する取得手段と、
前記取得手段により取得されたドライバを使って、前記接続要求を送信した情報処理装置と接続する接続手段とを備えることを特徴とする外部機器。
【請求項６】
記憶手段を備え、複数の外部機器に接続可能なコンピュータで実行される情報処理プログラムであって、
前記複数の外部機器と、その機器毎の専用のドライバとを対応させて管理する管理モジュールと、
前記複数の外部機器の少なくとも１つの装着を検出する検出モジュールと、
該検出された外部機器の専用のドライバを取得する取得モジュールと、
前記取得モジュールにより取得されたドライバを前記記憶手段にロードし、前記検出された外部機器を制御する制御モジュールとを備えることを特徴とする情報処理プログラム。
【請求項７】
複数種類の情報処理装置に接続可能な外部機器に使用される制御プログラムであって、
前記複数種類の情報処理装置と、その種類毎の専用のドライバとを対応させて管理する管理モジュールと、
前記複数種類の情報処理装置の１つから接続要求を受信する受信モジュールと、
該接続要求を送信した情報処理装置に対応する専用のドライバを取得する取得モジュールと、
前記取得モジュールにより取得されたドライバを使って、前記接続要求を送信した情報処理装置と接続する接続モジュールとを備えることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接続される外部機器に特化したドライバを自動的にメモリにロードし使用する情報処理装置、外部機器、情報処理プログラム及び制御プログラムに関する。
【背景技術】
【０００２】
従来は、コンピュータの外部接続ポート（例えばＵＳＢ）に複数の外部機器が接続されている場合に、プロトコルレベルの機器別ドライバは互いに異なることがある（例えば特許文献１参照）。一方、データ入出力を実行する最下位のドライバプログラムについては複数の外部機器で共通のものを使用していた。
【特許文献１】特開２０００−１３２３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、複数の外部機器で最下位ドライバが共通である場合は、ハードウエア資源の使用の調停や該使用状態の判別やＤＭＡ（ダイレクトメモリアクセス）などに関して、最下位ドライバを汎用的に作らなければならなくなるため、最下位ドライバのプログラムサイズが増大したり処理速度が遅くなってしまう可能性があった。
【０００４】
特に使用できるハードウエア資源に制限がある場合、汎用的に造られた最下位ドライバでは、上記の様な原因で、求められる性能及びプログラムサイズを実現するのが困難であった。
【０００５】
具体的には、外部機器にプリンタが使用された場合、ＤＭＡはデータ出力に特化されるのが最良である。また、外部機器にスキャナが接続された場合はＤＭＡはデータ入力に特化されるのが最良である。
【０００６】
しかし、汎用的な最下位ドライバを使用していると、ＤＭＡを利用したデータ入出力に優先度をつけるのが難しく、また優先度をつけたとしても処理が複雑になり最下位ドライバのプログラムサイズが増大し、処理スピードも低下する問題があった。
【０００７】
よって、本発明の目的は、汎用的なドライバを使用せずに、接続される外部機器に特化したドライバを自動的にメモリにロードし使用することで、処理速度を向上させ、ドライバのプログラムサイズの肥大化を防ぐことができる情報処理装置、外部機器、情報処理プログラム及び制御プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、請求項１の情報処理装置は、記憶手段を備え、複数の外部機器に接続可能な情報処理装置であって、前記複数の外部機器と、その機器毎の専用のドライバとを対応させて管理する管理手段と、前記複数の外部機器の少なくとも１つの装着を検出する検出手段と、該検出された外部機器の専用のドライバを前記管理手段から取得する取得手段と、前記取得手段により取得されたドライバを前記記憶手段にロードし、前記検出された外部機器を制御する制御手段とを備えることを特徴とする。
【０００９】
請求項５の外部機器は、複数種類の情報処理装置に接続可能な外部機器であって、前記複数種類の情報処理装置と、その種類毎の専用のドライバとを対応させて管理する管理手段と、前記複数種類の情報処理装置の１つから接続要求を受信する受信手段と、該接続要求を送信した情報処理装置に対応する専用のドライバを前記管理手段から取得する取得手段と、前記取得手段により取得されたドライバを使って、前記接続要求を送信した情報処理装置と接続する接続手段とを備えることを特徴とする。
【００１０】
請求項６の情報処理プログラムは、記憶手段を備え、複数の外部機器に接続可能なコンピュータで実行される情報処理プログラムであって、前記複数の外部機器と、その機器毎の専用のドライバとを対応させて管理する管理モジュールと、前記複数の外部機器の少なくとも１つの装着を検出する検出モジュールと、該検出された外部機器の専用のドライバを取得する取得モジュールと、前記取得モジュールにより取得されたドライバを前記記憶手段にロードし、前記検出された外部機器を制御する制御モジュールとを備えることを特徴とする。
【００１１】
請求項７の制御プログラムは、複数種類の情報処理装置に接続可能な外部機器に使用される制御プログラムであって、前記複数種類の情報処理装置と、その種類毎の専用のドライバとを対応させて管理する管理モジュールと、前記複数種類の情報処理装置の１つから接続要求を受信する受信モジュールと、該接続要求を送信した情報処理装置に対応する専用のドライバを取得する取得モジュールと、前記取得モジュールにより取得されたドライバを使って、前記接続要求を送信した情報処理装置と接続する接続モジュールとを備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、汎用的なドライバを使用せずに、接続される外部機器毎に専用設計されたドライバを自動的にロードし使用するので、処理速度を向上させ、ドライバのプログラムサイズの肥大化を防ぐことができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１４】
図１は、本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【００１５】
同図において、１１はＣＰＵであり、この情報処理装置の構成要素の全てを管理している。１２はメモリであり、ＣＰＵ１１からの指示を受けて必要に応じてデータの読み書きが実行される。１３はハードディスク（以下「ＨＤ」という）であり、ＣＰＵ１１からの指示を受けて必要に応じてデータの読み書きが実行される。また、ＨＤ１３には最下位ドライバ、プロトコルドライバ、デバイス定義値、ドライバ管理データや外部接続ポート監視プログラムが格納されている。外部接続ポート監視プログラムは情報処理装置の電源オンから電源オフまで実行され、外部接続ポート１５にどんな外部機器が接続されるかを監視する。ＨＤ１３は、ハードディスクに限らず、光磁気ディスクやＣＤ−ＲＷ等の読み書き可能な外部記憶装置であってもよい。１４はＤＭＡコントローラであり、外部機器とメモリ１２との間でデータ転送を実行する。１５は外部接続ポートである。これは、外部機器と接続するためのポートであり、Ｂｌｕｅｔｏｏｔｈ、ＵＳＢ又はＩＥＥＥ１３９４等の規格化されたポートである。接続ポート１５は有線通信用のポートでも無線通信用のポートでもよい。
【００１６】
図２は、外部機器に対応した最下位ドライバ及びプロトコルドライバを管理するドライバ管理データの構造を表した図であり、（Ａ）は最下位ドライバ情報の構造を示し、（Ｂ）はプロトコルドライバ情報の構造を示し、（Ｃ）はデバイス定義値を示す。
【００１７】
同図において、最下位ドライバ情報２１は、最下位ドライバが格納されているＨＤ１３にアクセスするためのパスに対応するポインタ（例えば、０ｘ１０００００００）を保持している。最下位ドライバ情報２１は配列になっており、デバイス定義値２５（図２（Ｃ））によってアクセスされる。また、この配列の要素が０（ＮＵＬＬ）である外部機器は、この情報処理装置ではサポートされないと判別される。最下位パス文字列２２はＨＤ１３に格納されている最下位ドライバの絶対パス文字列である。ＣＰＵ１１がＨＤ１３に格納されている外部接続ポート監視プログラムを実行するときには、この最下位ドライバの絶対パス文字列を使用して、最下位ドライバをＨＤ１３からメモリ１２上にロードする。
【００１８】
プロトコルドライバ情報２３は、プロトコルドライバが格納されているＨＤ１３にアクセスするためのパスに対応するポインタ（例えば、０ｘ１０００１０００）を保持している。プロトコルドライバ情報２３は配列になっており、デバイス定義値２５によってアクセスされる。また、この配列の要素が０（ＮＵＬＬ）である外部機器は、この情報処理装置ではサポートされないと判別される。プロトコルパス文字列２４はＨＤ１３に格納されているプロトコルドライバの絶対パス文字列である。
【００１９】
ＣＰＵ１１が外部接続ポート監視プログラムを実行するときは、このプロトコルドライバへの絶対パス文字列を使用して、プロトコルドライバをＨＤ１３からメモリ１２上にロードする。デバイス定義値２５は、上記２つの配列にアクセスするための値を定義している。ＣＰＵ１１が外部接続ポート監視プログラムを実行すると、外部機器種別の判別後、このデバイス定義値２５を使用して、使用すべき最下位ドライバとプロトコルドライバへのパスを取得する。
【００２０】
最下位ドライバ情報２１、下位パス文字列２２、プロトコルドライバ情報２３、プロトコルパス文字列２４及びデバイス定義値２５は、情報処理装置において固定であるため、情報処理装置の起動時にメモリ１２のグローバル領域に作成され、監視プログラムが自由にアクセスすることができる。
【００２１】
図３は、外部接続ポート監視プログラムの初期化処理を表したフローチャートである。本処理は、情報処理装置の起動時の早い段階でＣＰＵ１１によって実行されるが、図２のドライバ管理データ構造の作成よりは後で実行される。
【００２２】
まず、ＣＰＵ１１は、外部接続ポート１５の初期設定を行う（ステップＳ３１）。外部接続ポート１５は様々なインターフェースがあるため、設定内容を詳細に記述しないが、一般に、外部機器の接続検出の割込み設定と、その他外部機器毎に異なった初期設定とがある。
【００２３】
その後、外部機器の接続を検出するために外部接続ポート１５の監視を開始する（ステップＳ３２）。この監視（検出）は割込みによって行われるが、ハードウエアの仕様によっては外部接続ポートをポーリング処理で監視する場合もある。
【００２４】
以上のステップＳ３１〜Ｓ３２の処理によって、外部接続ポート監視プログラムによる外部機器の接続の検出ができる。
【００２５】
図４は、外部接続ポートに接続された外部機器に対応した、最下位ドライバとプロトコルドライバの自動ロードを実現する処理を表したフローチャートである。
【００２６】
本処理は、外部接続ポート監視プログラムの一部分でＣＰＵ１１により実行される処理であり、外部接続ポート１５からの割込みによって実行される。尚、外部接続ポート監視プログラムのポーリング処理によって実行されるようにしてもよい。
【００２７】
まず、外部接続ポート１５に接続された外部機器の種別を判別する処理を実行する（ステップＳ４１）。この処理は外部接続ポート１５の種類によって様々であるため、ここでは述べない。一般的には、判別する手法が規格化されているので、それに沿った処理を実行すれば良い。例えば、接続された外部機器に問合せコマンドを発して、応答を得るなどすればよい。
【００２８】
次いで、ステップＳ４１で取得した外部機器の種別に基づいてデバイス定義２５の値を決定し、この値をインデックスにして、最下位ドライバ情報２１の配列より最下位ドライバのパスを取得し、ローカル変数path_lowに保存する（ステップＳ４２）。
【００２９】
次に、ローカル変数path_lowの値が０（ＮＵＬＬ）であるか否かを判別する（ステップＳ４３）。ローカル変数path_lowの値が０（ＮＵＬＬ）である場合には、情報処理装置でサポートされない外部機器なので、本処理を中止する一方、ローカル変数path_lowの値が０（ＮＵＬＬ）でない場合には、プロトコルドライバ情報２３の配列よりプロトコルドライバのパスを取得し、ローカル変数path_protoに保存する（ステップＳ４４）。
【００３０】
次に、ステップＳ４４で保存されたローカル変数path_protoの値が０（ＮＵＬＬ）であるか否かを判別する（ステップＳ４５）。ローカル変数path_protoの値が０（ＮＵＬＬ）である場合には、情報処理装置でサポートされない外部機器なので、本処理を中止する一方、ローカル変数path_protoの値が０（ＮＵＬＬ）でない場合には、ローカル変数path_lowに保存されたパスにあるドライバを最下位ドライバとしてＨＤ１３からメモリ１２へロードする。これらドライバのロードと処理開始をオペレーティングシステムに要求する（ステップＳ４６）。さらに、ローカル変数path_protoに保存されたパスにあるドライバをプロトコルドライバとしてＨＤ１３からメモリ１２へロードする。これらドライバのロードと処理開始をオペレーティングシステムに要求し（ステップＳ４７）、本処理を終了する。
【００３１】
以上の処理で、外部機器に対応した専用ドライバがメモリ１２にロードされる。そしてオペレーティングシステムは、外部接続ポート監視プログラムからメモリ１２にロードされたドライバに制御を移す。このあと外部接続ポート監視プログラムは、外部機器の取外しの監視を開始し、メモリ１２にロードされたドライバは外部機器との入出力処理を開始する。
【００３２】
メモリ１２にロードされたドライバは、接続された外部機器に特化したドライバである。ロードされたドライバがデータ出力がメインであるプリンタ用であるならば、ＤＭＡはデータ出力に優先使用されるように設計されており、データ入力がメインであるスキャナ用であるならば、ＤＭＡはデータ入力に優先使用されるように設計されている。このように、専用設計された最下位ドライバを接続機器に合わせて使用するので、処理スピードとプログラムサイズが改善される。
【００３３】
図５は、メモリ１２にロードされた専用ドライバを開放する処理を表したフローチャートである。
【００３４】
本処理は、外部接続ポート監視プログラムでＣＰＵ１１により実行される処理であり、外部機器の取外しの検出又はユーザによる入出力処理終了の指示によって実行される。
【００３５】
まず、外部接続ポート１５から外部機器が取外されたことを検出した場合、又はユーザによる入出力処理終了の指示が入力された場合に、ＣＰＵ１１は最下位ドライバに対して外部機器との入出力処理の終了を通知する（ステップＳ５１）。外部機器との入出力処理の終了が通知された最下位ドライバは、使用していたメモリ１２やＤＭＡコントローラ１４等の資源を解放し、外部機器との入出力処理を終える。その後、最下位ドライバを開放するようにオペレーティングシステムに要求する（ステップＳ５２）。オペレーティングシステムはこの要求を受けて、最下位ドライバをメモリ１２から削除する。
【００３６】
次に、プロトコルドライバに対して外部機器との入出力処理の終了を通知する（ステップＳ５３）。外部機器との入出力処理の終了が通知されたプロトコルドライバは、使用していたメモリ１２等の資源を解放し、外部機器との入出力処理を終える。その後、プロトコルドライバを開放するようにオペレーティングシステムに要求する（ステップＳ５４）。オペレーティングシステムはこの要求を受けて、プロトコルドライバをメモリ１２から削除し、本処理は終了する。
【００３７】
以上の処理で、外部接続ポート監視プログラムによりロードされた専用ドライバの開放が終了するが、外部接続ポート監視プログラムは、外部機器の再接続を検出するために、外部接続ポート１５の監視を再開する。
【００３８】
以上詳細に説明したように、本実施の形態によれば、汎用的なドライバを使用せずに、接続される外部機器毎に専用設計されたドライバを自動的にロードし使用するので、処理速度を向上させ、ドライバのプログラムサイズの肥大化を防ぐことができる。
【００３９】
上記実施の形態で説明したのは、情報処理装置に外部機器が接続された場合の情報処理装置側（ホスト側）の処理であるが、外部機器側（デバイス側）でも本発明を活用できる。かかる場合は、外部機器が、複数種類の情報処理装置とその種類毎の専用の最下位ドライバとを対応させて管理する管理手段（図２のドライバ管理データと同様の構造を持つドライバ管理データを記憶する記憶部やＣＰＵ）と、複数種類の情報処理装置の１つから接続要求を受信する受信手段（情報処理装置と接続するためのインターフェース）と、該接続要求を送信した情報処理装置に対応する専用の最下位ドライバを管理手段から取得する取得手段（ＣＰＵ）と、取得手段により取得された最下位ドライバを使って、前記接続要求を送信した情報処理装置と接続する接続手段（情報処理装置と接続するためのインターフェース）とを備えることが必要となる。
【００４０】
これにより、ホスト側の特性又は要求に応じた、最適な外部機器側（デバイス側）のドライバを、外部機器側自らのROM又は外部記憶装置等からロードし又は選択して利用することで、情報処理装置は特別な処理を必要とせずに、処理速度を向上させ、ドライバのプログラムサイズの肥大化を防ぐことができる。
【００４１】
また、ドライバのロード元はローカルな記憶装置とは限らない。ネットワークが常時使用できる環境であれば、ドライバ供給元から最新の最下位ドライバをロードして利用することができるのは言うまでも無い。
【００４２】
また、本発明の目的は、上記実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【００４３】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００４５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００４６】
また、上記プログラムは、上述した実施の形態の機能をコンピュータで実現することができればよく、その形態は、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給されるスクリプトデータ等の形態を有するものでもよい。
【００４７】
プログラムを供給する記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＭＯ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ）、磁気テープ、不揮発性のメモリカード、他のＲＯＭ等を用いることができる。或いは、上記プログラムは、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】外部機器に対応した最下位ドライバ及びプロトコルドライバを管理するドライバ管理データの構造を表した図であり、（Ａ）は最下位ドライバ情報の構造を示し、（Ｂ）はプロトコルドライバ情報の構造を示し、（Ｃ）はデバイス定義値を示す。
【図３】外部接続ポート監視プログラムの初期化処理を表したフローチャートである。
【図４】外部接続ポートに接続された外部機器に対応した最下位ドライバとプロトコルドライバの自動ロードを実現する処理を表したフローチャートである。
【図５】メモリにロードされた専用ドライバを開放する処理を表したフローチャートである。
【符号の説明】
【００４９】
１１  ＣＰＵ
１２  メモリ
１３  ハードディスク（ＨＤ）
１４  ＤＭＡコントローラ
１５  外部接続ポート
【図１】
2006172130.tif 000003
【図２】
2006172130.tif 000004
【図３】
2006172130.tif 000005
【図４】
2006172130.tif 000006
【図５】
2006172130.tif 000007