(57)【要約】【課題】プログラム作成者の負担を軽減し、ウインドウによりメッセージを受信できないアプリケーションプログラムであってもＵＳＢ機器の挿抜検知を行う。【解決手段】ＵＳＢ機器１１が接続されるホスト装置１は、アプリケーションプログラム１０３を実行するにあたり、ウインドウメッセージを受信すると、その種別を判定し、ウインドウメッセージが、ＵＳＢ機器１１が挿入されたことを示す場合に、ＵＳＢデバイスドライバ１０２をオープンする処理を実行し、ウインドウメッセージが、ＵＳＢ機器１１が抜かれたことを示す場合に、ＵＳＢデバイスドライバ１０２をクローズする処理を実行するＤＬＬ（ＵＳＢ挿抜処理プログラム１０４）を読み出して実行する。【選択図】図１
2012173956.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ機器の挿抜が割り込みによりＵＳＢデバイスドライバ経由でＯＳに通知され、前記ＯＳがウインドウメッセージにより前記ＵＳＢ機器の挿抜をアプリケーションプログラムに通知するプログラム構造を有する、前記ＵＳＢ機器が接続されるホスト装置であって、
前記ウインドウメッセージを受信すると、前記ウインドウメッセージの種別を判定し、前記ウインドウメッセージが、前記ＵＳＢ機器が挿入されたことを示す場合に、前記ＵＳＢデバイスドライバをオープンする処理を実行し、前記ウインドウメッセージが、前記ＵＳＢ機器が抜かれたことを示す場合に、前記ＵＳＢデバイスドライバをクローズする処理を実行する、前記アプリケーションプログラムによってシェアされるプログラムを読み出して実行するプログラム実行手段、
を有することを特徴とするＵＳＢ機器が接続されるホスト装置。
【請求項２】
前記プログラム実行手段は、
前記ＵＳＢデバイスドライバのオープンまたはクローズ処理を行う前に、呼び出し先の関数の引数としてコールバック関数への参照情報を引き渡すことを特徴とする請求項１記載のＵＳＢ機器が接続されるホスト装置。
【請求項３】
前記プログラム実行手段は、
前記アプリケーションプログラムによりスレッドが起動されると、ウインドウを生成して前記ウインドウメッセージの受信待ちを行い、前記ウインドウメッセージを受信すると、受信した前記ウインドウメッセージの種別を判定して前記ＵＳＢデバイスドライバのオープン処理又はクローズ処理を実行する前記ダイナミックリンクライブラリを読み出し、前記アプリケーションプログラムにリンクすることを特徴とする請求項１または２記載のＵＳＢ機器使用装置。
【請求項４】
ＵＳＢ機器の挿抜が割り込みによりＵＳＢデバイスドライバ経由でＯＳに通知され、前記ＯＳがウンイドウメッセージを生成して前記ＵＳＢ機器の挿抜を前記アプリケーションプログラムに通知する前記ＵＳＢ機器が接続されるホスト装置に用いられるプログラムであって、
前記アプリケーションプログラムによりスレッドが起動されるとウインドウを生成して前記ウインドウメッセージの受信待ちを行う第１のステップと、
前記ウインドウメッセージを受信すると前記受信したウインドウメッセージの種別を判定する第２のステップと、
前記ウインドウメッセージが、前記ＵＳＢ機器が挿入されたことを示す場合に、前記ＵＳＢデバイスドライバのオープン処理を実行する第３のステップと、
前記ウインドウメッセージが、前記ＵＳＢ機器が抜かれたことを示す場合に、前記ＵＳＢデバイスドライバのクローズ処理を実行する第４のステップと、
前記アプリケーションプログラムから終了要求を受信すると、前記受信待ちループを抜けて終了処理を実行する第５のステップと、
をコンピュータに実行させることを特徴とするプログラム。
【請求項５】
前記第３のステップは、
前記オープン処理を実行する前に、前記アプリケーションプログラムにコールバック関数への参照情報を引き渡すサブステップを有することを特徴とする請求項４記載のプログラム。
【請求項６】
前記第４のステップは、
前記クローズ処理を実行する前に、前記アプリケーションプログラムにコールバック関数への参照情報を引き渡すサブステップを有することを特徴とする請求項４記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ機器の挿抜が割り込みによりＵＳＢデバイスドライバ経由でＯＳに通知され、ＯＳがウンイドウメッセージを生成してＵＳＢ機器の挿抜をアプリケーションプログラムに通知するプログラム構造を有する、ＰＣ等、ＵＳＢ機器が接続されるホスト装置およびそのプログラムに関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）は、シリアル伝送路の規格の一つであり、ホストとなるＰＣ（Personal Computer）と周辺機器との間を接続する伝送路として多用されている。この規格を用いてＰＣ等のホスト装置に着脱自在に接続されるＵＳＢ機器は、ホットプラグ機能を有する。このため、ホスト装置に実装される基本ソフトＯＳ（Operating System）は、ＵＳＢデバイスドライバを使用してＵＳＢ機器の挿抜検知を行ない、その種類を認識して使用するアドレス割り付け、又は一端割り付けたアドレスを他のリソースに解放する等の処理を行う（例えば、特許文献１参照）。
【０００３】
この種のＵＳＢ機器とホスト装置との接続例及び動作を図４に模式図で示してある。図４に示す例では、ＰＣの分野でＯＳとして標準的に使用されている、米国マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）に準拠したＵＳＢ機器２００が、ホスト装置としてのＰＣ本体３００に不図示のコネクタ経由で実装される例が示されている。
【０００４】
図４によれば、（ａ）ユーザがコネクタを介してＵＳＢ機器２００を挿抜すると、（ｂ）そのイベントはハードウエア割り込みによりＵＳＢデバイスドライバ３０２経由でＯＳ（３０５）に通知される。これを受けたらＯＳ（３０５）は、アプリケーションプログラム３０３のウインドウに対してＵＳＢ機器２００が挿抜されたことをウインドウメッセージにより通知する。（ｄ）続いてアプリケーションプログラム３０３は、ウインドウメッセージを受信することによりＵＳＢデバイスドライバ３０３のオープン又はクローズ処理を実行する。
【０００５】
ここで、「ウインドウメッセージ」とは、ＯＳ（３０３）が、公開されたＡＰＩ（Application
Program Interface）により作成されるアプリケーションプログラム３０３のウインドウやスレッドに対して送る通知のことである。ここで使用されるＯＳでは、ユーザによるマウスを使ったボタン操作やメニュー操作、あるいはＵＳＢ機器２００の挿抜を含めてＯＳによりイベントとして検知され、そのイベントをそれぞれのメッセージでアプリケーションプログラム３０３に通知する。アプリケーションプログラム３０３は、このメッセージによりユーザがどのような入力を行ったか、あるいはハードウエアの状態を知ることができ、そのメッセージに応じた様々な処理を行うものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２７３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記したＵＳＢ機器２００が接続されるホスト装置によれば、アプリケーションプログラム３０３の作成者は、アプリケーションプログラム３０３を作成する毎にＵＳＢ機器２００の挿抜処理プログラムを作成する必要がある。図４では、これをＵＳＢ機器の挿抜処理プログラム３０４としてアプリケーションプログラム中に実装されている様子が示されている。また、ウインドウによりメッセージを受信する機構を持たないアプリケーションプログラムではメッセージ受信ができないため、ＵＳＢ機器２００の挿抜を検知することができないといった課題を有していた。
【０００８】
本発明は上記の課題を解決するためになされたものであり、プログラム作成者の負担を軽減すると共に、ウインドウによりメッセージを受信できないアプリケーションプログラムであってもＵＳＢ機器の挿抜検知が可能な、ＵＳＢ機器が接続されるホスト装置及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために本発明は、ＵＳＢ機器の挿抜が割り込みによりＵＳＢデバイスドライバ経由でＯＳに通知され、前記ＯＳがウインドウメッセージにより前記ＵＳＢ機器の挿抜をアプリケーションプログラムに通知するプログラム構造を有する、前記ＵＳＢ機器が接続されるホスト装置であって、前記ウインドウメッセージを受信すると、前記ウインドウメッセージの種別を判定し、前記ウインドウメッセージが、前記ＵＳＢ機器が挿入されたことを示す場合に、前記ＵＳＢデバイスドライバをオープンする処理を実行し、前記ウインドウメッセージが、前記ＵＳＢ機器が抜かれたことを示す場合に、前記ＵＳＢデバイスドライバをクローズする処理を実行する、前記アプリケーションプログラムによってシェアされるプログラムを読み出して実行するプログラム実行手段、を有することを特徴とする。
【００１０】
本発明によれば、プログラム実行手段は、アプリケーションプログラムによりスレッドが起動されるとウインドウを生成し、ウインドウメッセージを受信するとその種別を判定して、ＵＳＢデバイスドライバのオープン或いはクローズ処理を実行する。このため、アプリケーションプログラムはＵＳＢ機器の挿抜処理に関する負担から解放され、したがって、プログラム作成者の負担が軽減される。
【００１１】
本発明において、前記プログラム実行手段は、前記ＵＳＢデバイスドライバのオープンまたはクローズ処理を行う前に、呼び出し先の関数の引数としてコールバック関数への参照情報を引き渡すことを特徴とする。本発明によれば、プログラム実行手段は、ＵＳＢデバイスドライバのオープン処理あるいはクローズ処理を実行する前に、アプリケーションプログラムに対してコールバック関数への参照情報を引き渡す。このため、アプリケーションプログラムは別スレッドで他の処理を実行することができるため。システム全体としてのスループットが向上する。
【００１２】
本発明において、前記プログラム実行手段は、前記アプリケーションプログラムによりスレッドが起動されると、ウインドウを生成して前記ウインドウメッセージの受信待ちを行い、前記ウインドウメッセージを受信すると、受信した前記ウインドウメッセージの種別を判定して前記ＵＳＢデバイスドライバのオープン処理又はクローズ処理を実行する前記ダイナミックリンクライブラリを読み出し、前記アプリケーションプログラムにリンクすることを特徴とする。本発明によれば、プログラム実行手段は、ウインドウを生成してウインドウメッセージの受信待ちを行い、ＵＳＢデバイスドライバのオープン又はクローズ処理を実行するＤＬＬを読み出してアプリケーションプログラムにリンクして実行する。このため、アプリケーションプログラムは、メッセージ受信にウインドウを必要とせず、したがって、ウインドウによりメッセージを受信できないアプリケーションプログラムでもＵＳＢ機器の挿抜検知が可能になる。
【００１３】
本発明は、ＵＳＢ機器の挿抜が割り込みによりＵＳＢデバイスドライバ経由でＯＳに通知され、前記ＯＳがウンイドウメッセージを生成して前記ＵＳＢ機器の挿抜を前記アプリケーションプログラムに通知するＵＳＢ使用装置に用いられるプログラムであって、前記アプリケーションプログラムによりスレッドが起動されるとウインドウを生成して前記ウインドウメッセージの受信待ちを行う第１のステップと、前記ウインドウメッセージを受信すると前記受信したウインドウメッセージの種別を判定する第２のステップと、前記ウインドウメッセージが、前記ＵＳＢ機器が挿入されたことを示す場合に、前記ＵＳＢデバイスドライバのオープン処理を実行する第３のステップと、前記ウインドウメッセージが、前記ＵＳＢ機器が抜かれたことを示す場合に、前記ＵＳＢデバイスドライバのクローズ処理を実行する第４のステップと、前記アプリケーションプログラムから終了要求を受信すると、前記受信待ちループを抜けて終了処理を実行する第５のステップと、をコンピュータに実行させることを特徴とする。
【００１４】
本発明によれば、アプリケーションプログラムによりスレッドが起動されると、アプリケーションプログラムにリンクしたＤＬＬが、ウインドウを生成し、ウインドウメッセージを受信するとその種別を判定して、ＵＳＢデバイスドライバのオープン或いはクローズ処理を実行する。このため、アプリケーションプログラムは、ＵＳＢ機器の挿抜処理に関する負担から解放され、したがって、プログラム作成者の負担が軽減される。また、アプリケーションプログラムは、メッセージ受信にウインドウを必要とせず、したがって、ウインドウによりメッセージを受信できないアプリケーションプログラムでもＵＳＢ機器の挿抜検知が可能になる。
【００１５】
本発明において、前記第３のステップは、前記オープン処理を実行する前に、前記アプリケーションプログラムにコールバック関数への参照情報を引き渡すサブステップを有することを特徴とする。本発明によれば、アプリケーションプログラムは別スレッドで他の処理を実行することができるため、システム全体としてのスループットが向上する。
【００１６】
本発明において、前記第４のステップは、前記クローズ処理を実行する前に、前記アプリケーションプログラムにコールバック関数への参照情報を引き渡すサブステップを有することを特徴とする。本発明によれば、アプリケーションプログラムは別スレッドで他の処理を実行することができるため、システム全体としてのスループットが向上する。
【発明の効果】
【００１７】
本発明のＵＳＢ機器が接続されるホスト装置およびそのプログラムによれば、プログラム作成者の負担を軽減すると共に、ウインドウによりメッセージを受信できないアプリケーションプログラムであってもＵＳＢ機器の挿抜検知が可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形の形態に係るＵＳＢ機器が接続されるホスト装置の構成を示す図である。
【図２】本発明の実施の形態に係る形の態に係るＵＳＢ機器が接続されるホスト装置の動作を示すフローチャートである。
【図３】本発明の実施の形態に係る形の態に係るＵＳＢ機器が接続されるホスト装置の構成および動作を模式的に示した図である。
【図４】従来のＵＳＢ機器が接続されるホスト装置の構成及び動作を模式的に示した図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して本発明を実施するための実施の形態（以下、単に本実施形態という）について詳細に説明する。
【００２０】
（実施形態の構成）
図１は、本実施形態に係るＵＳＢ機器が接続されるホスト装置の構成を示す図である。ここではホスト装置１としてＰＣが例示されている。図１に示されるように、ＰＣは、ＣＰＵ／ＭＭＵ（主記憶）からなるＰＣ本体１０をシステムの制御中枢とし、このＰＣ本体１０に、ＵＳＢ機器１１と、ＵＩ（User Interface）装置１２と、外部メモリ１３とが、アドレス、データ、コントロールのための信号線が複数本からなるシステムバス１４経由で共通接続され、構成される。
【００２１】
ＵＳＢ機器１１は、不図示のコネクタを介してＰＣ本体１０に着脱自在とした実装構造を有し、ＵＳＢ規格に基づきＰＣ本体１０と通信を行う周辺機器である。ＵＳＢ機器１１は、例えば、不揮発性メモリ、マウス、ハードディスク、プリンタ等のＵＳＢ対応周辺機器である。ＵＩ装置１２は、キーボードやＬＣＤ（Liquid Crystal Device）モニタ等、ＰＣ本体１０とのマンマシンとなる入出力デバイスである。外部メモリ１３は、例えば、大容量のハードディスク装置であり、ＰＣ本体１０に収容しきれない各種プログラムやデータが格納される。以降で説明するＤＬＬ（Dynamic Link Library）も多数格納され、必要に応じてＰＣ本体１０に読み出され実行される。
【００２２】
ここで、ＤＬＬとは、動的リンクを使ったライブラリのことであり、複数のプログラム（アプリケーションプログラム）から共通して使用できるように、種々の機能をメインのプログラムとは分離して実装されるモジュール化されたプログラムのことをいう
【００２３】
ＰＣ本体１０は、図１に、実行するプログラムの構造が機能的に展開されて示されているように、ＯＳ（１０１）と、ＵＳＢデバイスドライバ１０２と、アプリケーションプログラム１０３と、ＵＳＢ挿抜処理を行うスレッド（ＵＳＢ挿抜処理プログラム１０４）とを含み構成される。ここでは、ＯＳ（１０１）として、マルチスレッドをサポートし、ＵＳＢ機器１１の挿抜を含む入力イベントをウインドウメッセージで通知するＷｉｎｄｏｗｓ（登録商標）が実装されている。
【００２４】
ＯＳ（１０１）は、ＵＳＢデバイスドライバ１０２を含むこともある。アプリケーションプログラム１０３は、例えば、文書作成、画像処理等の各種ユーザプログラムであり、スレッドを生成し、ＯＳ（１０１）と協働して動作することによりＵＳＢ機器１１を使用して所望の処理を実行する。ここで関係するスレッドは、アプリケーションプログラム１０３により適宜読み出されリンクされるＵＳＢ挿抜処理プログラム１０４であり、このＵＳＢ挿抜処理プログラム１０４は、アプリケーションプログラム１０３によりリンクされるＤＬＬとして実装される。
【００２５】
ＰＣ本体１０は、このＤＬＬにしたがい、ウインドウメッセージを受信すると、ウインドウメッセージの種別を判定し、ウインドウメッセージが、ＵＳＢ機器１１が挿入されたことを示す場合に、ＵＳＢデバイスドライバ１０２をオープンする処理を実行し、ウインドウメッセージが、ＵＳＢ機器１１が抜かれたことを示す場合に、ＵＳＢデバイスドライバ１０２をクローズする処理を実行する。このため、ＰＣ本体１０は、アプリケーションプログラムによってシェアされるＤＬＬを読み出して実行する「プログラム実行手段」、として機能する。
【００２６】
（実施形態の動作）
以下、図２のフローチャートを参照しながら、図１に示す、本実施形態に係るＵＳＢ機器が接続されるホスト装置の動作について詳細に説明する。
【００２７】
図２において、ＵＳＢ挿抜処理を行うスレッド（ＵＳＢ挿抜処理プログラム１０４）を実行するＰＣ本体１０は、アプリケーションプログラム１０３によりそのスレッドが起動されると（ステップＳ１０１“ＹＥＳ”）、表示されないウインドウを生成し（ステップＳ１０２）、ウインドウメッセージの受信待ちを行う（ステップＳ１０３）。具体的に、アプリケーションプログラム１０３は、ＤＬＬに含まれるＩｎｉｔｉａｌｉｚｅ関数（初期化コード）をコールすることで、ＵＳＢ機器１１の挿抜を検知するスレッド、およびその処理ルーチンを起動させることができる。
【００２８】
続いて、ＰＣ本体１０は、ウインドウメッセージを受信すると（ステップＳ１０３“ＹＥＳ”）、受信したウインドウメッセージが、ＵＳＢ機器１１の挿抜状態のいずれの状態を示すかを判定する（ステップＳ１０４）。ＰＣ本体１０は、ウインドウメッセージが、ＵＳＢ機器１１がＰＣ本体１０に挿入されたことを示す場合に（ステップＳ１０５“挿”）、ＵＳＢデバイスドライバ１０２のオープン処理を実行するが（ステップＳ１０７）、その前に、コールバック関数への参照情報の引き渡しを行う（ステップＳ１０６）。
【００２９】
ここで、「コールバック関数」とは、呼び出し先の関数の引数としてコールバック関数への参照情報を引き渡すことで、呼び出し先から任意のコールバック関数を実行させ、コールバック関数に実行制御を移すことをいう。このコールバック関数は、呼び出し先で何らかのイベントが発生した場合の処理を指定する目的で使用される。ここでは、アプリケーションプログラム１０３に、別スレットでＵＳＢ再生等、他の処理を行なわせるための配慮で用いられる。コールバック関数が設定されていない場合は、コールバック関数は当然に呼ばれない。
【００３０】
一方、ウインドウメッセージが、ＵＳＢ機器１１が抜かれたことを示す場合に（ステップＳ１０５“抜”）、ＵＳＢデバイスドライバ１０２のクローズ処理を実行するが（ステップＳ１０９）、その前に、コールバック関数への参照情報の引き渡しを行う（ステップＳ１０８）。なお、ここでいうオープン処理、クローズ処理とは、ＵＳＢデバイスドライバ１０２が認識したＵＳＢ機器１１に対し、アドレスを新規に割り当て、あるいは割り当てたアドレスを他のリソースに解放する処理をいう。
【００３１】
最後に、ＰＣ本体１０は、アプリケーションプログラム１０３から終了要求を受信すると（ステップＳ１１０“ＹＥＳ”）、受信待ちループを抜け、アプリケーションプログラム１０３に処理を委ねる終了処理を実行して（ステップＳ１１１）、ＤＬＬによるＵＳＢ挿抜処理動作を終了する。アプリケーションプログラム１０３は、ＵＳＢ挿抜処理を行うためのスレッドを終了させるためにＦｉｎａｌｉｚｅ関数を用意している。Ｆｉｎａｌｉｚｅ関数を呼ぶことで、Ｗｉｎｄｏｗｓのメッセージを受信するループから抜け、スレッドにより処理は終了する。
【００３２】
以下、図３に示す模式図を参照しながら、図４に模式図で示す従来例との差異を説明する。図３によれば、（ａ）ユーザがコネクタを介してＵＳＢ機器１１を挿抜すると、（ｂ）そのイベントはハードウエア割り込みによりＵＳＢデバイスドライバ１０２経由でＯＳ（１０５）に通知される。これを受けたらＯＳ（１０５）は、アプリケーションプログラム１０３のウインドウに対してＵＳＢ機器１１が挿抜されたことをウインドウメッセージにより通知する。（ｄ）続いてアプリケーションプログラム１０３は、ウインドウを生成してＵＳＢ機器１１の挿抜処理を行うＤＬＬをリンクし、このＤＬＬの中でウインドウメッセージを受信することによってＵＳＢデバイスドライバ１０２のオープン又はクローズ処理を実行する。
【００３３】
なお、（ａ）〜（ｃ）の吹き出し内に示す処理は、図４の（ａ）〜（ｃ）で示す手順と同様であり、（ｄ）の手順のみ異なる。
【００３４】
このように、ベンダ作成のＵＳＢデバイスドライバ１０２をアプリケーションプログラム１０３が使用する場合、その挿抜検知は、自身でポーリングを行なってＵＳＢ機器１１の挿抜状態を確認する場合以外には必ず必要になる。ＵＳＢデバイスドライバ１０２がオープンされた後に、ＰＣ本体１０からＵＳＢ機器１１を抜くと、ＵＳＢデバイスドライバ１０２との整合を取るために、ＵＳＢデバイスドライバ１０２をクローズしなければならない。しかながら、アプリケーションプログラム１０３にＵＳＢ機器１１が抜かれたことか通知されていなければ、アプリケーションプログラム１０３は、ＵＳＢデバイスドライバ１０２をクローズするタイミングが不明である。
【００３５】
このため、本実施形態に係るＵＳＢ機器が接続されるホスト装置では、上記したウインドウメッセージを利用するものであり、上記したスレッド１０４の中でＵＳＢ挿抜処理を行う。ここで行われる処理は、ベンダ作成のＵＳＢデバイスドライバ１０２をアプリケーションプログラム１０３の中で使用する場合に必ず必要になる。具体的に、図４に（ｄ）の吹き出しで示すように、従来、アプリケーションプログラム毎に作成する必要のあったＵＳＢ挿抜処理が、図３に（ｄ）の吹き出しで示すように、この処理をＤＬＬ化することで都度作成する必要がなくなる。
【００３６】
（実施形態の効果）
以上説明のように、本実施形態に係るＵＳＢ機器が接続されるホスト装置１によれば、ＰＣ本体１０は、アプリケーションプログラム１０３によりスレッド（スレッド挿抜処理プログラム１０４）が起動されると、ウインドウを生成し、ウインドウメッセージを受信するとその種別を判定して、ＵＳＢデバイスドライバ１０２のオープン或いはクローズ処理を実行する。このため、アプリケーションプログラム１０３は、ＵＳＢ機器１１の挿抜処理に関する負担から解放され、したがって、プログラム作成者の負担が軽減される。また、アプリケーションプログラム１０３は、メッセージ受信にウインドウを必要とせず、したがって、ウインドウによりメッセージを受信できないアプリケーションプログラムでもＵＳＢ機器１１の挿抜検知が可能になる。
【００３７】
更に、ＵＳＢデバイスドライバ１０２のオープンあるいはクローズ処理を実行する前に、アプリケーションプログラム１０３にてコールバック関数への参照情報を引き渡す機構を付加することで、アプリケーションプログラム１０３は、別スレッドで他の処理を実行することができるため、システム全体としてのスループットが向上する。
【００３８】
なお、本実施形態に係るプログラムは、例えば、図１に示されるように、ＵＳＢ機器１１の挿抜が割り込みによりＵＳＢデバイスドライバ１０２経由でＯＳ（１０１）に通知され、前記ＯＳ（１０１）がウンイドウメッセージを生成して前記ＵＳＢ機器１１の挿抜を前記アプリケーションプログラム１０３に通知する前記ＵＳＢ機器１１が接続されるホスト装置１に用いられるプログラムである。そして、そのプログラムは、例えば、図２にフローチャートで示されるように、前記アプリケーションプログラムによりスレッドが起動されるとウインドウを生成して前記ウインドウメッセージの受信待ちを行う第１のステップ（Ｓ１０１〜Ｓ１０３）と、前記ウインドウメッセージを受信すると前記受信したウインドウメッセージの種別を判定する第２のステップ（Ｓ１０３“ＹＥＳ”〜Ｓ１０４）と、前記ウインドウメッセージが、前記ＵＳＢ機器が挿入されたことを示す場合に、前記ＵＳＢデバイスドライバのオープン処理を実行する第３のステップ（Ｓ１０５“挿”〜Ｓ１０７）と、前記ウインドウメッセージが、前記ＵＳＢ機器が抜かれたことを示す場合に、前記ＵＳＢデバイスドライバのクローズ処理を実行する第４のステップ（Ｓ１０５“抜”〜Ｓ１０９）と、前記アプリケーションプログラムから終了要求を受信すると、前記受信待ちループを抜けて終了処理を実行する第５のステップ（Ｓ１１０“ＹＥＳ”〜Ｓ１１１）と、をコンピュータに実行させることを特徴とするものである。
【００３９】
本実施形態に係るプログラムによれば、アプリケーションプログラム１０３によりスレッドが起動されると、アプリケーションプログラム１０３にリンクしたＤＬＬ（ＵＳＢ挿抜処理プログラム１０４）が、ウインドウを生成し、ウインドウメッセージを受信するとその種別を判定して、ＵＳＢデバイスドライバ１０２のオープン或いはクローズ処理を実行するものであり、このため、アプリケーションプログラム１０３は、ＵＳＢ機器１１の挿抜処理に関する負担から解放され、したがって、プログラム作成者の負担が軽減される。また、アプリケーションプログラム１０３は、メッセージ受信にウインドウを必要とせず、したがって、ウインドウによりメッセージを受信できないアプリケーションプログラムでもＵＳＢ機器１１の挿抜検知が可能になる。
【００４０】
更に、ＵＳＢデバイスドライバ１０２のオープンあるいはクローズ処理を実行する前に、アプリケーションプログラム１０３にてコールバック関数への参照情報を引き渡すことで、アプリケーションプログラム１０３は、別スレッドで他の処理を実行することができるため、システム全体としてのスループットが向上する。
【００４１】
なお、上記した本実施形態では、ＵＳＢ機器１１が接続されるホスト装置１としてＰＣのみ例示したが、ＰＣのみならず、ウインドウメッセージによりＵＳＢ機器１１の挿抜イベントの通知を行うＯＳを実装した組み込み製品を含む全てのＵＳＢ利用装置に適用可能である。
【００４２】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されないことは言うまでもない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。またそのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【００４３】
１・・ホスト装置、１０・・ＰＣ本体（ＣＰＵ／ＭＭＵ）、１１・・ＵＳＢ機器、１２・・ＵＩ装置、１３・・外部メモリ、１４・・システムバス、１０１・・ＯＳ、１０２・ＵＳＢデバイスドライバ、１０３・アプリケーションプログラム、１０４・・スレッド（ＵＳＢ挿抜処理プログラム）
【図１】
2012173956.tif 000003
【図２】
2012173956.tif 000004
【図３】
2012173956.tif 000005
【図４】
2012173956.tif 000006