(57)【要約】【課題】  一台のホスト機器に同じ種類の周辺機器が複数台、同時に接続された場合に、障害が発生しないようにする。【解決手段】  デバイスドライバ８０は、デバイス管理システム４０に問い合わせて、ポート名とデバイス名を取得し、これらを含む一意な共有オブジェクト名称を作成する。アプリケーションは、画像入出力管理システム７０に問い合わせて、アクセスしている周辺機器デバイスの接続ポート名と名称を取得し、これらを含む一意な共有オブジェクト名称を作成する。オブジェクト作成コマンドに対し、ＯＳは、その名称のオブジェクトが存在しない場合には、新たにその名前のオブジェクトを作成して、そのオブジェクトのハンドラを返し、オブジェクトが存在する場合には、そのオブ塾とのハンドラを返す。【選択図】  図２
2005258712.tif 000002
【特許請求の範囲】
【請求項１】
周辺機器と、前記周辺機器に接続可能なホストとからなり、前記周辺機器に対してアクセスするモジュール間で共有するオブジェクトを動的に生成するシステムにおいて、
前記周辺機器に固有の情報を自動取得し、取得した情報を前記オブジェクトの名称に含めることを特徴とするオブジェクト管理システム。
【請求項２】
前記固有の情報は、前記周辺機器が接続されているポート名を含むことを特徴とする請求項１に記載のオブジェクト管理システム。
【請求項３】
前記固有の情報は、周辺機器の名称又はＩＤ（識別番号）を含むことを特徴とする請求項１に記載のオブジェクト管理システム。
【請求項４】
前記複数のモジュールは、前記周辺機器の動作を制御するためのデバイスドライバモジュールと、前記周辺機器を利用した機能を実現するためのアプリケーションモジュールとを含むことを特徴とする請求項１に記載のオブジェクト管理システム。
【請求項５】
前記デバイスドライバモジュールと前記アプリケーションモジュールの一方において前記共通のオブジェクトが生成されている場合に、他方によるオブジェクト名の生成処理を停止することを特徴とする請求項４に記載のオブジェクト管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト管理システムに関し、特に、複数のモジュール間で共有するオブジェクトの名称を生成する処理に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータ（ＰＣ）のオペレーティングシステム（ＯＳ）が、標準でデジタルカメラ等の周辺機器デバイスをサポートするようになってきた。例えば、米国Ｍｉｃｒｏｓｏｆｔ社がＰＣ用に提供するオペレーティングシステムにおけるＷＩＡが挙げられる。
【０００３】
この場合、周辺機器デバイスのデバイスドライバは、ＯＳがサポートする規格に準拠したインターフェースを備えて作成されなければならない。これにより、周辺機器デバイスにアクセスするアプリケーションなどから見れば、様々な種類の周辺機器デバイスに対して一意のインターフェースが提供されることになる。つまり、周辺機器デバイスにアクセスするアプリケーションは、ＯＳが提供するインターフェースにアクセスするように作られていれば、様々な周辺機器デバイスに一意にアクセスできることになる。
【０００４】
しかし、アプリケーションによっては、ＯＳが提供しているインターフェースだけでは不十分で、周辺機器デバイスの機能でＯＳがサポートしていない機能を使用するために、デバイスドライバと直接、コミュニケーションする必要があるものもある。このような場合、一つの方法として、従来は、ドライバとアプリケーションとの間で共有する共有オブジェクトや共有メモリの名前を予め決めておき、それらを経由して、データのやり取りなどのコミュニケーションを図っていた。
【０００５】
この様な周辺機器とのインターフェースに関する技術が、例えば特許文献１に記載されている。
【特許文献１】特開２００３−３４８２８７公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、予め決められた名前の共有メモリ又は共有オブジェクトを使う方法には、次のような問題点がある。例えば、アプリケーションが対応する複数種類の周辺機器デバイスがコンピュータに同時に複数台、接続された場合、異なる周辺機器のデバイスドライバとコミュニケーションするための共有オブジェクトが同じ名前で生成され、コミュニケーションに障害が生じることがある。これを防ぐには、周辺機器の種類ごとに異なる名前を共有オブジェクトの名前に決めておけば、異なる周辺機器が複数接続されても障害を発生させないようにできる。しかし、この場合でも、一台のコンピュータに同じ種類の周辺機器が複数台、同時に接続された場合には、やはり同じような障害が発生する。
【０００７】
本発明は、このような不都合を解消し、複数のモジュール間で共通のオブジェクトを容易に生成可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
上記問題を解決するために、本発明に係る周辺機器と、前記周辺機器に接続可能なホストとからなり、前記周辺機器に対してアクセスするモジュール間で共有するオブジェクトを動的に生成するシステムにおいて、前記周辺機器に固有の情報を自動取得し、取得した情報を前記オブジェクトの名称に含めることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数のモジュールから共通に参照されるオブジェクト名を動的かつ固有のものにすることができる。これにより、いかなる種類の複数の周辺機器が同時に一台のコンピュータに接続された場合でも、それにアクセスするアプリケーションやドライバーの動作を安定して動作させることが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施例を詳細に説明する。
【実施例１】
【００１１】
図１は、本発明の一実施例の概略構成図を示す。ホスト機器としてのコンピュータ本体１０には、コンピュータ本体１０の出力を画像として表示するモニタ１２、マウス１４及びキーボード１８が接続する。マウス１４は、マウスボタン１６を具備する。周辺機器デバイスであるカメラ２０は、ＵＳＢ（ユニバーサル・シリアル・バス）データ転送ケーブル２２を介してコンピュータ本体１０と接続する。
【００１２】
図２は、本実施例の機能ブロック図を示す。コンピュータ本体１０では、周知の通り、ハードウエア内にオペレーティングシステム（ＯＳ）があり、その上にアプリケーションソフトウェアが位置する。実施例の構成を理解する上で直接、必要とされない要素、例えば、ＣＰＵ、及びオペレーティングシステムのメモリ管理システムなどは、省略してある。
【００１３】
３０は補助記憶装置としてのハードディスク、３２はオペレーティングシステムを構成するファイルシステムである。ファイルシステム３２は、アプリケーションソフトウェアがハードウエアを直接制御すること無しにファイルの入出力を可能にする機能を具備する。このようなファイルシステムは周知である。３４は、ファイルシステム３２がハードディスク３０にデータを読み書きするためのディスク入出力インターフェースである。
【００１４】
３６は、オペレーティングシステムに含まれる描画管理システムであり、アプリケーションソフトウェアがハードウエアを直接制御することなく画像を生成する機能を具備する。３８は、描画管理システム３６で生成される画像データをモニタ１２に適合するビデオ信号に変換するビデオインターフェースである。
【００１５】
４０は、オペレーティングシステムを構成するデバイス管理システムである。デバイス管理システム４０は、接続されているデバイスに適切なデバイスドライバを自動的に割り振り、また、デバイスドライバがハードウエアを直接制御することなく、ユーザの入力と周辺機器デバイスからの入出力を管理する手段を提供する。デバイス管理システム４０には、ＵＳＢ機器を使用するときのホストとなるＵＳＢホストシステムも含まれる。４２はキーボード１８が接続するキーボードインターフェース、４４はマウス１４が接続するマウスインターフェース、４６はＵＳＢインターフェースである。
【００１６】
電子カメラ２０は、ＵＳＢケーブル２２を介してＵＳＢインターフェース４６に接続し、デバイス管理システム４０を介して、電子カメラ用のデバイスドライバとの間で制御コマンド、状態信号及び画像データ等をやり取りできる。
【００１７】
５０は電子カメラ２０からの画像を取得するアプリケーションソフトウエアである。ソフトウエア５０は、後述する画像入出力管理システム７０にアクセスすることで電子カメラ２０と通信し、電子カメラ２０で撮影された画像を取得するカメラ画像取得手段５２、電子カメラ２０からの画像及びその他の情報をモニタ１２の画面上に表示させるデータ表示手段５６、並びに、電子カメラ２０から転送された撮影画像データをハードディスク３０に格納し管理するファイル管理手段５８を具備する。
【００１８】
６０はアプリケーションとドライバーで共有する共有オブジェクトで、具体的には、共有メモリ及び同期オブジェクトなどである。本実施例では、ＯＳの一部である画像入出力管理システム７０が提供しているインターフェースで実現可能な処理以外の処理も行うために、デバイスドライバ８０とアプリケーションソフトウェア５０との間でこの共有オブジェクト６０を介してコミュニケーションする。
【００１９】
ＯＳが提供する画像入出力管理システム７０には、基本的な処理を実現するためのインターフェースが提供されている。それには、アプリケーションとのインターフェースであるアプリケーションインターフェース７１と、デバイスドライバとのインターフェースであるデバイスインターフェース７２がある。画像入出力管理システムを使用するためには、ドライバはデバイスインターフェース７２の仕様に沿って作られていなければならない。また、アプリケーションは、画像入出力管理システム７０を使用して様々なデバイスにアクセスするためには、画像入出力管理システム７０が提供するアプリケーションインターフェース７１に対応して作られていなければならない。それらのインターフェースには、例えば、画像一覧を取得するためのインターフェース、画像を取得するためのインターフェース、及び、画像を消去するためのインターフェースなど、画像を操作するために必要となる基本的なものが定義されている。
【００２０】
このように、画像入出力管理システム７０により定義又は提供されているインターフェースを使用すると、アプリケーションは、画像を取り込む基本的な機能を実現できる。
【００２１】
しかし、これ以外の特別なことをしようとした場合、及び、カメラの機能のうち、画像デバイス管理システムで定義されていないような機能を使用する場合には、デバイスドライバとアプリケーションとが直接、コミュニケーションする必要がある。そのひとつの方法として、互いに共通してアクセスするメモリなどの共有オブジェクト６０を定義し、それを経由してデータのやり取りなどのコミュニケーションを行う方法がある。このときに問題となるのが、共有オブジェクト６０などに双方からアクセスする手段である。最も簡単な方法としては、予め共有オブジェクト６０の名前を決めておけば良いのだが、その場合、複数台の周辺機器が接続されると、それぞれのデバイスドライバが同じオブジェクトにアクセスし、その結果、障害が発生することがある。周辺機器ごとに予め異なった共有オブジェクトの名前を決めておく方法もあるが、その場合でも、周辺機器の種類が増えた場合の対応が面倒だったり、あるいは、同一種類の周辺機器が複数台接続された場合に、障害が発生したりすることになる。
【００２２】
そこで、本実施例では、共有オブジェクト６０の名前を動的に決定する共通のルールをデバイスドライバ８０とアプリケーションソフトウェア５０とで決めておくことにし、そのルールに従って、名前を生成する。そして、この名前でオブジェクトを作成し、このオブジェクトに互いがアクセスすることで互いのコミュニケーションを実現する。このルールでは、共有オブジェクト６０の名前がシステムで一意になるように、周辺機器デバイスが接続されているポート名及び周辺機器のシリアル番号から名前を生成する。
【００２３】
本実施例でのオブジェクト命名ルールでは、図６に示すように、共有オブジェクトの名前に、周辺機器が接続されているポート名と周辺機器名称を含める。
【００２４】
ポート名と周辺機器デバイス名を取得するために、デバイスドライバ８０はデバイス管理システム４０にこれらを問い合わせて調べる、アプリケーションソフトウェア５０は、画像入出力管理システム７０に問い合わせることで、これらの名前を取得が可能である。
【００２５】
本実施例での具体例を図３に示す。図３に示す例では、ポート名と周辺機器名の前に、修飾詞をつけている。この修飾詞は、用途によって変わる。修飾詞を変えることにより、複数の共有オブジェクトを作成できる。図３に示す例では、ドライバとアプリケーションとで共有するメモリオブジェクトであることを表す修飾詞「ＡＰＰ−ＤＲＶＲ−ＳＨＡＲＥ−ＭＥＭ」、ポート名「ＵＳＢ０００１」及び周辺機器名「ＰＳ１０」から、共有メモリオブジェクト名「ＡＰＰ−ＤＲＶＲ−ＳＨＡＲＥ−ＭＥＭ  ＵＳＢ０００１  ＰＳ１０」を作成している。
【００２６】
アプリケーションソフトウェア５０とデバイスドライバ８０の双方が、このルールに従い共有メモリオブジェクト名を作成し、この名称の共有メモリオブジェクトを作成する。アプリケーションソフトウェア５０では、図２に示す共有オブジェクト管理手段５３で、デバイスドライバー８０では、共有オブジェクト管理手段８１でこれらの処理が行われる。
【００２７】
本実施例でのＯＳでは、名前付きオブジェクト作成のコマンドを実行した場合、その名前のオブジェクトが存在していないときには、新規にオブジェクトを作成した上で、そのハンドルを返し、指定した名前のオブジェクトが既に存在するときには、その既存のオブジェクトのハンドルを返す。この仕組みにより、アプリケーションとデバイスドライバのどちらが先に共有オブジェクトの作成コマンドを実行しても、互いに共通のオブジェクトのハンドルを取得できる。この機能により、対象のオブジェクトが既に存在しているか否かはは、気にする必要はがい。この方法により作成されえた共有オブジェクトを経由することで、アプリケーションとデバイスドライバの間、ひいてはアプリケーションとカメラとのコミュニケーションが可能になる。
【００２８】
図４は、以上に説明した動作を示すフローチャートである。図４は、デバイスドライバ８０での共有オブジェクト管理手段８１の動作であって、デバイスドライバ８０がロードされて共有オブジェクト６０を作成するときの動作を示す。なお、デバイスドライバ８０のロードは、プラグ・アンド・プレイによりＯＳにより行われる。アプリケーションとのコミュニケーションを早急に可能にするため、共有オブジェクトの作成は、ドライバの初期化処理中の、可能な限り早い段階で行われる。
【００２９】
まず、ステップＳ１で、デバイス管理システム４０に問い合わせて、ポート名を取得する。ステップＳ２において、デバイス管理システム４０に問い合わせて、デバイス名を取得する。ステップＳ３において、図６に示したルールに則り、共有オブジェクト名称を作成する。ステップＳ４では、ステップＳ３で作成した名称で共有オブジェクトを作成する。
【００３０】
図５は、周辺機器デバイスにアクセスするアプリケーションでの動作フローを示す。アプリケーションは、周辺機器デバイスへのアクセスを開始後、できるだけ早い段階で以下の処理を行い、共有オブジェクトの作成を試みる。
【００３１】
ステップＳ１１では、まず、画像入出力管理システム７０に問い合わせて、アクセスしている周辺機器デバイスが接続されているポート名を取得する。ステップＳ１２において、同じく画像入出力管理システム７０から、接続中の周辺機器デバイスの名称を取得する。ステップＳ１３では、ステップＳ１１とステップＳ１２で取得したポート名及び周辺機器デバイス名を使い、図６に示すルールに従い、共有オブジェクト名称を生成する。ステップＳ１４では、ステップＳ１３で作成した名称で、共有オブジェクト６０の作成を試みる。
【００３２】
図４のステップＳ４及び図５のステップＳ１４ともに、同じ名称で共有オブジェクトを作成しようとすることになる。しかし、先にも述べたとおり、本実施例では、ＯＳの機能として、作成しようとする名称のオブジェクトが存在しない場合には、新規にオブジェクトを作成してそのハンドルを返し、作成しようとする名称のオブジェクトが既に存在する場合には、その名称のオブジェクトのハンドルを返すという機能があるため、結局、ドライバとアプリケーションは同じオブジェクトのハンドルを持つことになり、その結果、そのオブジェクトを共有できることになる。
【００３３】
このような機能がないＯＳの場合には、ドライバの動作を示す図４のステップＳ４では、オブジェクトを新規に作成し、アプリケーションの動作を示す図５のステップＳ１４では、指定した名称のオブジェクトのハンドルを取得する処理を行えばよい。なぜならば、プラグ・アンド・プレイで必ずドライバのロードが先に行われ、図４の処理が図５の処理より先に行われるからである。
【００３４】
以上、説明してきたように、本実施例では、周辺機器に関係する複数のドライバとアプリケーションから共通に参照されるオブジェクトの名称を周辺機器のポート名や機種名などを含めて動的に共通のルールで決めるようにしている。これにより、システム固有のオブジェクト名を動的に生成でき、その名前のオブジェクトをお互いに参照することにより、アプリケーションとデバイスドライバとの間のコミュニケーションを実現できる。
【００３５】
なお、本実施例では、周辺機器のポート名と機種名を共有オブジェクトの名称に含めるルールとしてあるが、本発明は、このの限りではなく、周辺機器のシリアル番号などの周辺機器に固有な情報をオブジェクト名に含めても良い。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施例でのシステムの概略構成図である。
【図２】本実施例でのシステムの機能ブロック図を示す。
【図３】本実施例での共有オブジェクト名の例を示す。
【図４】本実施例でのデバイスドライバーでの共有オブジェクト生成時の動作を示すフローチャートである。
【図５】本実施例でのアプリケーションソフトウェアでの共有オブジェクト生成時の動作を示すフローチャートである。
【図６】本実施例での共有オブジェクト名生成のルールを示す。
【符号の説明】
【００３７】
１０：コンピュータ本体（ホスト機器）
１２：モニタ
１４：マウス
１６：マウスボタン
１８：キーボード
２０：カメラ
２２：ＵＳＢ（ユニバーサル・シリアル・バス）データ転送ケーブル
３０：ハードディスク
３２：ファイルシステム
３４：ディスク入出力インターフェース
３６：描画管理システム
３８：ビデオインターフェース
４０：デバイス管理システム
４２：キーボードインターフェース
４４：マウスインターフェース
４６：ＵＳＢインターフェース
５０：アプリケーションソフトウエア
５２：カメラ画像取得手段
５３：共有オブジェクト管理手段
５６：データ表示手段
５８：ファイル管理手段
６０：共有オブジェクト
７０：画像入出力管理システム
８０：デバイスドライバ
７１：アプリケーションインターフェース
７２：デバイスインターフェース
【図１】
2005258712.tif 000003
【図２】
2005258712.tif 000004
【図３】
2005258712.tif 000005
【図４】
2005258712.tif 000006
【図５】
2005258712.tif 000007
【図６】
2005258712.tif 000008