(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる、デバイスに関するドライバに指示を与える関数により、外部からの処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであるか否かを判断し、
（１）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので有るならば、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信し、
（２）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので無いならば、前記処理番号に対応してファームウェアの一部又は全部の内容を設定して送信する、
ファームウェアダウンロードドライバシステム。
【請求項２】
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて稼動するコンピュータプログラムであって、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる、デバイスに関するドライバに指示を与える関数により、外部からの処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであるか否かを判断する処理を行い、
（１）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので有るならば、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信する、処理を行い、
（２）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので無いならば、前記処理番号に対応してファームウェアの一部又は全部の内容を設定して送信する、処理を行う、
ファームウェアダウンロードドライバシステムにおいて稼動するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（ユニバーサルシリアルバス）制御装置にファームウェアをダウンロードするためのホストコンピュータにおけるファームウェアダウンロードドライバシステム、及びＵＳＢ制御装置の外部装置の機能拡張のためのホストコンピュータにおけるＵＳＢ機能拡張アプリケーションシステムに関する。
【背景技術】
【０００２】
一般に、ホストコンピュータに接続されたＵＳＢ制御装置が、ＵＳＢ制御装置として動作するには、接続時にホストコンピュータからファームウェアがダウンロードされなければならない。ここでのＵＳＢ制御装置の例として、Ｗｅｂカメラ（ネットワークカメラ、若しくはデジタルカメラ）が挙げられる（図１（１）参照）。
【０００３】
ホストコンピュータに接続するＵＳＢ制御装置は、ファームウェアのダウンロードを制御するダウンロード制御部（図示せず）及びファームウェアに係るプログラムを記憶するための内部記憶回路（図示せず）を含む。更に、ダウンロード制御部には、ＣＰＵ（図示せず）が含まれる。このダウンロード制御部及びＣＰＵと、ホストコンピュータとの通信により、ファームウェアが内部記憶回路へダウンロードされる。ファームウェアをダウンロードするためのＵＳＢ制御装置側の方法及び装置の例は、特許文献１に開示されている。
【０００４】
一方、上記ＵＳＢ制御装置と接続するホストコンピュータが標準的ＯＳ「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）の環境下で稼動するとき、当該ホストコンピュータには通常「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）のカーネルである「ＵＶＣ（ＵＳＢ  Ｖｉｄｅｏ  Ｃｌａｓｓ）標準ドライバ」が稼動する。このドライバの作用により、ＵＳＢ制御装置の標準的な制御が為されている。つまり、ＵＶＣ標準ドライバは、例えばＷｅｂカメラに対するホストコンピュータ側のドライバとして稼動する。
【０００５】
ところで、ホストコンピュータからファームウェアをダウンロードする際、オブジェクトであるファームウェアを介してＵＳＢ制御装置の機能に関する情報（プロパティ）を設定するページが、ホストコンピュータにおけるアプリケーションの一部の機能として用意されている（プロパティページ）。「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）におけるこのアプリケーションシステムは通常「キャプチャアプリケーション」と称される。上記プロパティのリソースとして、例えばＷｅｂカメラであるならば、「（画像の）明るさ」や「（画像の）コントラスト」などが挙げられる。
【０００６】
しかし、ＵＳＢ制御装置としてのＷｅｂカメラは、装備する機能が増加することが十分考えられる。また、そもそも、Ｗｅｂカメラが装備する機能に対して、プロパティページで設定するべき属性が十分に対応し切れていないことも想定される。これらのことから、拡張する機能に対応できる属性設定アプリケーションシステムが、簡易且つフレキシブルに開発されることが望まれている。
【特許文献１】特表２００２−５１０４１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ＵＳＢ制御装置の機能（プロパティ）を拡張し得る状況であるときに、ホストコンピュータで適切にそれら拡張に係る属性を設定可能とし、設定された属性がファームウェアにより随時ダウンロードされ得るＵＳＢ制御装置機能拡張アプリケーションシステム、及びファームウェアダウンロードドライバシステムを、ホストコンピュータに構築することを目的とする。更に、ファームウェアダウンロードドライバシステムにおいて、必要に応じて通信バスに関するコマンドを送受信し、又は、付加的にファームウェアの一部若しくは全部を送信することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項１に記載のファームウェアダウンロードドライバシステムは、
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムである。そのファームウェアダウンロードドライバシステムにおいて、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる、デバイスに関するドライバに指示を与える関数により、外部からの処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであるか否かを判断し、
（１）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので有るならば、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信し、
（２）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので無いならば、前記処理番号に対応してファームウェアの一部又は全部の内容を設定して送信する。
【０００９】
本発明に係る請求項２に記載のコンピュータプログラムは、
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて稼動するコンピュータプログラムであって、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる、デバイスに関するドライバに指示を与える関数により、外部からの処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであるか否かを判断する処理を行い、
（１）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので有るならば、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信する、処理を行い、
（２）前記処理要求の内容が、前記デバイスに関するドライバに指示を与える関数の対象の処理番号のものであり、且つ、通信バスに関するコマンドの内容を決定して当該コマンドを送信し若しくは受信することを要求するもので無いならば、前記処理番号に対応してファームウェアの一部又は全部の内容を設定して送信する、処理を行う。
【発明の効果】
【００１６】
本発明を利用することにより、拡張する外部装置の属性に対応できる属性設定アプリケーションシステムが簡易且つフレキシブルに開発され得るようになる。また、外部装置へのファームウェアダウンロード時に、ホストコンピュータにおける処理要求を監視することにより、通信バスに関するコマンドを送受信し、又は、付加的にファームウェアの一部若しくは全部を送信することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明に係る好適な実施形態を説明する。なお、以下の説明では、ホストコンピュータのＯＳを、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）（Ｍｉｃｒｏｓｏｆｔ社製）としている。このことは例示に過ぎず、他のＯＳであっても本発明は勿論適用可能であり、このことが本発明の内容を限定するものではない。また、ホストコンピュータに接続する外部装置であるＵＳＢ制御装置の例として、デジタルカメラ（ネットワークカメラ、若しくはＷｅｂカメラ）を取り上げている。このことも本発明の内容を限定するものではない。
【００１８】
［第１の実施形態］
図１（１）は、ＵＳＢ制御装置としてのデジタルカメラ６がＵＳＢ８及びＵＳＢポート１０を介してホストコンピュータ４に接続する様子を概略示す。図１（２）は、図１（２）を更に詳細にした図であり、特に本発明の第１の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの構成を示す図である。
【００１９】
ファームウェアダウンロードドライバは、カーネルに含まれるＵＶＣ標準ドライバに付属する。ファームウェアダウンロードドライバは、本発明に係るファームウェアダウンロード機能を行う。
【００２０】
また、アプリケーションとして、元来装備されているキャプチャアプリケーションだけでなく、本発明に係るカメラ機能拡張アプリケーションが用意されている。図１（２）に示すように、キャプチャアプリケーションは、ＵＶＣ標準ドライバの内容を規定しており、例えば、プロパティページによるリソースのデータの設定・格納を行う。カメラ機能拡張アプリケーションは、ファームウェアダウンロードドライバの内容を規定しており、例えば次のような機能を実施する。
【００２１】
まず、（１）オブジェクトとしてのウインドウ作成の監視を行う。また、（２）拡張プロパティページの追加登録を行う。また、（３）拡張プロパティページ処理を行う。更に、（４）ファームウェアダウンロードドライバ制御を行う（図１（２）参照）。このファームウェアダウンロードドライバ制御には、「ＵＳＢコマンド送受信」と「ファームウェアアップデート」とが少なくとも含まれる。上記の「拡張プロパティページ」は、本発明により、キャプチャアプリケーションのプロパティページに、追加されるページである。
【００２２】
上記の図１（２）におけるファームウェアダウンロードドライバ、及びカメラ機能拡張アプリケーションの処理について、次に説明する。
【００２３】
まず、ファームウェアダウンロードドライバの処理の概要を、図２に基づいて示す。概略、ファームウェアダウンロードドライバは、起動直後にファームウェアの送信を行う他、（カメラ機能拡張）アプリケーションからの要求に従って、ＵＳＢコマンドの送受信と一時的に使用されるファームウェアのアップデートとを行う。また、デジタルカメラなどをＵＳＢデバイス（即ち、ＵＳＢ制御装置）として動作させるように、標準的なＵＳＢデバイスに関する処理（電源管理等）も行う。
【００２４】
図２に示すように、ファームウェアダウンロードドライバが起動される（Ｓ０２）と、ＵＳＢデバイス（デジタルカメラ）をＵＳＢデバイスとして管理するためのデータを作成し登録する（Ｓ０４）。次に、ＵＳＢインタフェースを設定し（Ｓ０６）、ファームウェアを送信する（Ｓ０８）。
【００２５】
そして、処理要求に対して待機する（Ｓ１０）。処理要求が無ければ待機を続ける。処理要求が有れば、次に処理要求の内容を判断する（Ｓ１２）。処理要求の内容の判断では、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）のカーネルに備わる標準的関数であって、ドライバに指示を与える関数である「ＤｅｖｉｃｅＩｏＣｏｎｔｒｏｌ」が利用されることが好ましい。従って、Ｓ１２において、「ＤｅｖｉｃｅＩｏＣｏｎｔｒｏｌ」に処理番号が有るか否かが先ず判断される。
【００２６】
Ｓ１２にて、「ＤｅｖｉｃｅＩｏＣｏｎｔｒｏｌ」に処理番号が無ければ、標準的なＵＳＢデバイスに関する処理を行うということになる（Ｓ１４）。Ｓ１４の「該当処理」には、プラグアンドプレイ処理／電源管理処理／ドライバオブジェクトの作成／ドライバオブジェクトの破棄／ドライバのアンロード、などの一般的な処理が含まれる。「該当処理」がなされると、再び処理要求に対する待機状態となる（Ｓ１０）。
【００２７】
Ｓ１４にて、「ＤｅｖｉｃｅＩｏＣｏｎｔｒｏｌ」に処理番号が有ると判断されれば、更にＵＳＢコマンド送受信の要求か否かが処理要求番号から判断される（Ｓ１６）。ＵＳＢコマンド送受信の要求であるならば、処理要求番号に対応するＵＳＢコマンドの送受信が行われる（Ｓ１８）。ＵＳＢコマンド送受信の要求で無いならば、一時的に使用されるファームウェアのアップデートのための送信要求であることになり、処理要求番号に対応する（アップデートに関わる）ファームウェア送信が行われる（Ｓ２０）。
【００２８】
ＵＳＢコマンドの送受信（Ｓ１８）、若しくは（アップデートに関わる）ファームウェア送信（Ｓ２０）がなされると、やはり再び処理要求に対する待機状態となる（Ｓ１０）。
【００２９】
以上が、ファームウェアダウンロードドライバの処理の概要である。
【００３０】
続いて、カメラ機能拡張アプリケーションの処理の概要を、図３に基づいて示す。カメラ機能拡張アプリケーションは、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）におけるウインドウ作成に対するフックへ処理関数（フック関数）を登録することが主な処理となる。ここでのフックとは、任意の処理タイミングに対して呼び出される関数を登録することにより、機能を拡張する機能を示す。
【００３１】
まず、カメラ機能拡張アプリケーションが起動される（Ｓ３０）と、カメラプロパティダイアログ検出シーケンスを初期化する（Ｓ３２）。カメラプロパティダイアログ検出シーケンスについては後で詳しく説明する。
【００３２】
次に、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）がウインドウを作成するときに呼び出される関数（フック関数）を登録する（Ｓ３４）。このフック関数は図４に示すものである。フック関数については後で説明する。
【００３３】
カメラ機能拡張アプリケーションは、終了処理がなされるまで、上記フック関数を登録した状態を維持する（Ｓ３６）。
【００３４】
終了処理が為されると、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）がウインドウを作成するときに呼び出される関数（フック関数）の登録を破棄し（Ｓ３８）、処理を終了する。
【００３５】
以上が、カメラ機能拡張アプリケーションの処理の概要である。
【００３６】
続いて、ウインドウが作成されると呼び出されるように登録される本発明に係るフック関数の処理概要を、図４に基づいて示す。この関数はオブジェクトであるウインドウが作成される度に呼び出される。また、この関数が実行されるプロセスはウインドウが作成されるアプリケーションのプロセスである。
【００３７】
フック関数は、ウインドウの作成の検出を待機する（Ｓ６２）。ウインドウの作成が検出されると（Ｓ６２・ＹＥＳ）、カメラプロパティダイアログ検出シーケンス処理（Ｓ６４）を行う。カメラプロパティダイアログ検出シーケンスについては後で詳しく説明する。処理後、再びウインドウの作成の検出を待機する（Ｓ６２）。
【００３８】
以上が、カメラ機能拡張アプリケーションの処理の概要である。
【００３９】
次に、「カメラプロパティダイアログ検出シーケンス処理」の内容を説明する。まず、全体を以下の表１〜表４で示す。
【００４０】
【表１】
0005168792.tif 000002
【００４１】
【表２】
0005168792.tif 000003
【００４２】
【表３】
0005168792.tif 000004
【００４３】
【表４】
0005168792.tif 000005
【００４４】
［シーケンス１について］
シーケンス１は、前提条件が無く処理される。シーケンス１では、以下の条件に基づき処理を分ける。
（１）新しいウインドウが「ＳｙｓＴａｂＣｏｎｔｒｏｌ３２」クラスである。
（２）親ウインドウがダイアログウインドウである。
（３）兄弟ウインドウが「ＯＫ」「Ｃａｎｃｅｌ」「Ａｐｐｌｙ」「Ｈｅｌｐ」の各ＩＤを持つボタンウインドウである。
【００４５】
ここでの「ＳｙｓＴａｂＣｏｎｔｒｏｌ３２」クラスは、「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）が備えるウインドウのクラスであり、タブを作成し管理するウインドウのクラスである。
【００４６】
上記条件が全て「正」であれば、以下の処理を行う。
（４）「画像の調整」プロパティページのリソース情報を取得する。
（５）プロセスＩＤを取得する。
（６）シーケンス２へ移行する。
【００４７】
ここでの「「画像の調整」プロパティページ」とは、デジタルカメラの画像調整のためのプロパティのページの例である。リソース情報とは、そのページ例における調整項目であり、前述の「（画像の）明るさ」や「（画像の）コントラスト」が含まれる。また、「プロセスＩＤ」とはアプリケーションに付される固有番号である。シーケンス１では、リソース情報及びプロセスＩＤの取得が主たる処理となる。
【００４８】
また、上記条件のいずれかでも「否」であれば、
（７）シーケンス１を続行することになる。
【００４９】
［シーケンス２について］
シーケンス２は、
（１）シーケンス１で取得されたプロセスＩＤと同一のプロセスである
という前提条件の下で、シーケンス１を受けて行われる。
【００５０】
シーケンス２では、以下の条件に基づき処理を分ける。
（２）新しいウインドウがダイアログウインドウ（ダイアログに関するウインドウ）である。
【００５１】
上記条件が「正」であれば、以下の処理を行う。
（３）シーケンス３へ移行する。
【００５２】
上記条件が「否」であれば、以下の処理を行う。
（４）シーケンス１へ移行する。
【００５３】
つまり、シーケンス２では、プロセスＩＤが同じという状況の下で、作成されたウインドウが「ダイアログウインドウ（ダイアログに関するウインドウ）」となったならば、シーケンス３へ移行する、という処理を行うことになる。
【００５４】
［シーケンス３について］
シーケンス３は、
（１）シーケンス１で取得されたプロセスＩＤと同一のプロセスである
という前提条件の下で、シーケンス２を受けて行われる。
【００５５】
シーケンス３では、以下の条件（条件３−１）に基づき処理を分ける。
（２）新しいウインドウが「画像の調整」プロパティページのリソースであり、ウインドウの種類／タイトル／サイズについて一致するか判定を行う
【００５６】
上記条件（条件３−１）が「否」であれば、
（３）シーケンス１へ移行する。
【００５７】
上記条件（条件３−１）が「正」であれば、更に以下の条件（条件３−２）に基づいて処理を分ける。
（４）（「画像の調整」プロパティページの）全リソースに対応するウインドウ作成が完了している。
【００５８】
つまり、全リソースに対応するウインドウ作成が完了している状況で、シーケンス３の主たる処理が行われることになる。
【００５９】
上記条件（条件３−２）が「正」であれば、以下の処理を行う。
（５）拡張プロパティページを追加する。
（６）シーケンス１で取得した親ウインドウのメッセージ処理「ウインドウ破棄」に当シーケンスのリセット処理を追加する。
（７）「Ａｐｐｌｙ」ボタンのメッセージ処理「左マウスボタン押下」に選択中のプロパティが拡張プロパティの場合、更新要求メッセージを送信する処理を追加する。
（８）シーケンス４へ移行する。
【００６０】
拡張プロパティページは、デジタルカメラの拡張機能に対応するプロパティの値を具体的に設定するためのページである。キャプチャアプリケーションが元来提供するプロパティページに、付加的に追加される。また、「Ａｐｐｌｙ」ボタンは、プロパティページに具体的に設定された内容につき、メッセージ処理「左マウスボタン押下」により更新要求メッセージを送信するウインドウ（オブジェクト）である。
【００６１】
上記条件が「否」であれば、以下の処理を行う。
（９）判定対象のリソースを１つ進める。
（１０）シーケンス３を続行する。
【００６２】
［シーケンス４について］
シーケンス４は、
（１）シーケンス１で取得されたプロセスＩＤと同一のプロセスである、
（２）新しいウインドウがダイアログウインドウである、
（３）新しいウインドウの親ウインドウがシーケンス１で取得された親ウインドウと同一である、
という前提条件の下で、シーケンス３を受けて行われる。
【００６３】
シーケンス３では以下の処理を行う。
（４）作成されるウインドウのサイズを全プロパティページの最大サイズに調整する。
このことにより、拡張されたページも含めて全てのウインドウが、正しく表示されることになる。
【００６４】
［その他の実施形態］
以上において、本発明の第１の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの内容を示した。本発明は上記実施形態に限定されるものではない。例えば、ＵＳＢ制御装置として、デジタルカメラ以外の機器にも利用できる。また、ホストコンピュータのＯＳが「Ｗｉｎｄｏｗｓ  ＸＰ」（登録商標）以外のものであっても、勿論本発明は適用可能である。
【図面の簡単な説明】
【００６５】
【図１】ＵＳＢ制御装置としてのデジタルカメラ６がＵＳＢバス８及びＵＳＢポート１０を介してホストコンピュータ４に接続する様子を概略示す図（図１（１））と、本発明の第１の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの構成を示す図（図１（２））である。
【図２】本発明の第１の実施形態に係るファームウェアダウンロードドライバの処理の概要である。
【図３】本発明の第１の実施形態に係るカメラ機能拡張アプリケーションの処理の概要である。
【図４】本発明の第１の実施形態に係るフック関数の処理概要である。
【符号の説明】
【００６６】
４・・・ホストコンピュータ、６・・・デジタルカメラ、８・・・ＵＳＢ、１０・・・ＵＳＢポート。
【図１】
0005168792.tif 000006
【図２】
0005168792.tif 000007
【図３】
0005168792.tif 000008
【図４】
0005168792.tif 000009