(57)【要約】【課題】 ＰＣ起動後にＩＣカードリーダをＰＣに接続しても、ＩＣカードリーダが正常に動作するＩＣカードリーダ用のドライバプログラムを提供する。【解決手段】  ＰＣ１にインストールされたドライバプログラム１０は、常駐ドライバ１００と非常駐ドライバ１０１を備えている。常駐ドライバ１００は、ＯＳと共に起動し、ＩＣカードリーダ２のデバイスファイル１０２を作成することで、ＩＣカードマネージャ１１に、ＩＣカードリーダ２がＰＣ１に接続しているものと認識させる。デバイスファイル１０２の作成後は、常駐ドライバ１００は非常駐ドライバ１０１の起動を常に監視する。非常駐ドライバ１０１は、ＩＣカードリーダ２がＰＣ１に接続された時点で起動し、常駐ドライバ１００は、実際にＩＣカードリーダ２がＰＣ１に接続されたことを認識し、ＩＣカード３のＩＣカードリーダ２への装着状態を、デバイスファイル１０２に反映させることができる。【選択図】      図２
2006338381.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータのソフトウェア階層において、ＩＣカードリーダ用のドライバプログラムよりも上位になる上位プログラムに、ＩＣカードリーダのコンピュータへの接続状態を認識させる方法であって、
ドライバプログラムの起動直後に、少なくとも一つの前記ＩＣカードリーダ用のデバイスファイルを生成し、前記デバイスファイルをＩＣカードが未装着の状態に設定することで、前記ＩＣカードリーダが前記コンピュータに接続／未接続であるかに関わらず、前記上位プログラムに、前記ＩＣカードリーダが前記コンピュータに接続されていると認識させることを特徴とするＩＣカードリーダの認識方法。
【請求項２】
請求項１に記載のＩＣカードリーダの認識方法において、実際に、前記ＩＣカードリーダが前記コンピュータに接続された場合は、ＩＣカードの前記ＩＣカードリーダへの接続状態を確認し、実際のＩＣカードの前記ＩＣカードリーダへの接続状態を前記デバイスファイルに反映させることで、前記上位システムに実際のＩＣカードの前記ＩＣカードリーダへの接続状態を認識させることを特徴とするＩＣカードリーダの認識方法。
【請求項３】
コンピュータにインストールされたオペレーティングシステム上で動作し、前記コンピュータに接続されるＩＣカードリーダを動作させる機能を有し、前記コンピュータのソフトウェア階層において上位になる上位プログラムから操作されるドライバプログラムにおいて、
前記ドライバプログラムは、前記オペレーティングシステムと共に起動する第１のドライバプログラムと、前記ＩＣカードリーダが前記コンピュータに接続すると立ちあがり、前記ＩＣカードリーダが前記コンピュータから取り外されると終了する第２のドライバプログラムとから構成され、
前記第１のドライバプログラムは、起動直後に実行され、少なくとも一つの前記ＩＣカードリーダ用のデバイスファイルを生成するステップ１と、
前記ステップ１が処理された後に実行され、前記第２のドライバプログラムの起動を監視することで、前記ＩＣカードリーダが前記コンピュータに接続されたことを監視し、前記第２のドライバプログラムの起動していないときは、前記デバイスファイルをＩＣカードが未装着の状態に設定するステップ２と、
前記ステップ２において、前記第２のドライバプログラムが起動しているときに実行され、前記ＩＣカードリーダに前記ＩＣカードが装着されていることを確認し、ＩＣカードの前記ＩＣカードリーダへの装着状態に合わせて、前記デバイスファイルの状態を設定するステップ３を実行する手順を含むことを特徴とするドライバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードとデータ通信するためのデバイスであるＩＣカードリーダを動作させるために必要なプログラムであるドライバプログラム、および、コンピュータ内において、このドライバプログラムよりも上位になるプログラムがＩＣカードリーダを認識する方法に関する。
【背景技術】
【０００２】
一般的に、パーソナルコンピュータ（PC: Personal Computer）に組み込まれたアプリケーションからＩＣカードを利用する場合は、ＰＣ側に、ＩＣカードとデータ通信するためのデバイスとしてＩＣカードリーダと、ＩＣカードリーダを利用するためのプログラムとして、ＩＣカードマネージャと称されるプログラムおよびＩＣカードリーダ用のドライバプログラムが必要になる。
【０００３】
ＩＣカードマネージャとは、例えば非特許文献１で記述されているような、ＰＣのＯＳ（OS: Operating System）側から提供されるプログラムである。ＩＣカードマネージャはＩＣカードとデータ通信するための関数を有し、アプリケーションの開発者は、ＩＣカードの知識がなくとも、この関数を利用することで、容易にＩＣカードを利用したアプリケーションを開発できる。
【０００４】
実際に、直接、アプリケーションからＩＣカードリーダを操作しようとすると、アプリケーションの開発者はＩＣカードの伝送制御プロトコルに関する知識を備えていなければならないが、ＩＣカードマネージャを利用することで、アプリケーションの開発者は、ＩＣカードの伝送制御プロトコルを意識することなく、アプリケーションの開発を行える。
【０００５】
ＩＣカードリーダ用のドライバプログラムとは、非特許文献２で記述されているように、ＩＣカードリーダメーカもしくはＩＣカードシステムメーカから提供されるプログラムで、ＩＣカードマネージャでは吸収できないＩＣカードリーダごとの独自仕様を吸収する。
【０００６】
ドライバプログラムは、ＩＣカードリーダごとの独自仕様を吸収し、ＩＣカードマネージャに対して、ＰＣに接続されているＩＣカードリーダのソフト的なインターフェースとなるデバイスファイルを提供する。ＩＣカードマネージャは、このデバイスファイルをソフト的に操作することで、ＩＣカードリーダとデータ通信することができる。
【０００７】
しかしながら、従来のＩＣカードマネージャは、ＯＳと共に起動し、起動するとすぐに、ＰＣに接続されているＩＣカードリーダのデバイスファイルを確認し、起動後は、起動時に接続されていたＩＣカードリーダのデバイスファイルを常に監視するため、起動時にＩＣカードリーダがＰＣに未接続の場合や、一旦、ＩＣカードリーダがＰＣから取り外された場合は、ＰＣ起動後や、ＩＣカードリーダがＰＣから取り外された後に再度ＩＣカードリーダをＰＣに接続しても、ＩＣカードマネージャがＩＣカードリーダを認識しないため、ＩＣカードリーダが正常に動作しない問題がある。
【非特許文献１】以下のＵＲＬで開示されている情報        非特許文献１のＵＲＬ：          http://msdn.microsoft.com/library/default.asp?url=/library          /en-us/secauthn/security/smart#card#resource#manager.asp
【非特許文献２】以下のＵＲＬで開示されている情報        非特許文献２のＵＲＬ：          http://www.dnp.co.jp/bf/ic#card/products/nws.html
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで上述した問題を鑑みて、本発明は、ＰＣ起動後（すなわち、ＩＣカードマネージャが起動後）にＩＣカードリーダがＰＣに接続された場合でも、ＩＣカードリーダが正常に動作することで、利用者の利便性を高めることができるＩＣカードリーダの認識方法、および、ＩＣカードリーダ用ドライバプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決する第１の発明は、コンピュータのソフトウェア階層において、ＩＣカードリーダ用のドライバプログラムよりも上位になる上位プログラムに、ＩＣカードリーダのコンピュータへの接続状態を認識させる方法であって、ドライバプログラムの起動直後に、少なくとも一つの前記ＩＣカードリーダ用のデバイスファイルを生成し、前記デバイスファイルをＩＣカードが未装着の状態に設定することで、前記ＩＣカードリーダが前記コンピュータに接続／未接続であるかに関わらず、前記上位プログラムに、前記ＩＣカードリーダが前記コンピュータに接続されていると認識させることを特徴とするＩＣカードリーダの認識方法である。
【００１０】
また、第１の発明に記載のＩＣカードリーダの認識方法において、実際に、前記ＩＣカードリーダが前記コンピュータに接続された場合は、ＩＣカードの前記ＩＣカードリーダへの接続状態を確認し、実際のＩＣカードの前記ＩＣカードリーダへの接続状態を前記デバイスファイルに反映させることで、前記上位システムに実際のＩＣカードの前記ＩＣカードリーダへの接続状態を認識させることが好ましい。
【００１１】
第１の発明によれば、オペレーティングシステムの起動直後に、ＩＣカードリーダ用のデバイスファイルを作成することで、前記上位プログラムは、常に、ＩＣカードリーダがＰＣに接続されていると認識するため、オペレーティングシステムの起動直後（すなわち、ＰＣ起動後）にＩＣカードリーダがＰＣに接続された場合でも、ＩＣカードリーダは正常に動作する。
【００１２】
更に、実際に、ＩＣカードがＩＣカードリーダに装着されるまでは、ＩＣカードリーダの状態をＩＣカードが未装着にすることで、実際にＩＣカードがＩＣカードリーダに装着されるまでは、前記上位プログラムがＩＣカードの処理（例えば、リセット動作）を行うことを防止できる。
【００１３】
また、上述した課題を解決する第２の発明は、コンピュータにインストールされたオペレーティングシステム上で動作し、前記コンピュータに接続されるＩＣカードリーダを動作させる機能を有し、前記コンピュータのソフトウェア階層において上位になる上位プログラムから操作されるドライバプログラムにおいて、前記ドライバプログラムは、前記オペレーティングシステムと共に起動する第１のドライバプログラムと、前記ＩＣカードリーダが前記コンピュータに接続すると立ちあがり、前記ＩＣカードリーダが前記コンピュータから取り外されると終了する第２のドライバプログラムとから構成され、前記第１のドライバプログラムは、起動直後に実行され、少なくとも一つの前記ＩＣカードリーダ用のデバイスファイルを生成するステップ１と、前記ステップ１が処理された後に実行され、前記第２のドライバプログラムの起動を監視することで、前記ＩＣカードリーダが前記コンピュータに接続されたことを監視し、前記第２のドライバプログラムの起動していないときは、前記デバイスファイルをＩＣカードが未装着の状態に設定するステップ２と、前記ステップ２において、前記第２のドライバプログラムが起動しているときに実行され、前記ＩＣカードリーダにＩＣカードが装着されていることを確認し、前記ＩＣカードの前記ＩＣカードリーダへの装着状態に合わせて、前記デバイスファイルの状態を設定するステップ３を実行する手順を含むことを特徴とするドライバプログラムである。
【００１４】
第２の発明に記載のドライバプログラムをコンピュータに組み込むことで、第１の発明が実施できる。
【発明の効果】
【００１５】
上述した発明によれば、ＰＣ起動後にＩＣカードリーダがＰＣに接続された場合でも、ＩＣカードリーダが正常に動作することで、利用者の利便性を高めることができるＩＣカードリーダの認識方法、および、ＩＣカードリーダ用ドライバプログラムを提供できる。
【発明を実施するための最良の形態】
【００１６】
ここから、本発明に係るドライバプログラムについて、図を参照しながら詳細に説明する。図１は、本発明に係るドライバプログラムがインストールされたＰＣを説明する図である。
【００１７】
図１に示したＰＣ１には、ＩＣカード３とデータ通信するデバイスであるＩＣカードリーダ２が備えられ、加えて、ＰＣ１に組み込まれたＯＳ（OS: Operating System）上で動作するプログラムとして、ＩＣカード３を利用するアプリケーション（例えば、ネットワークへのログイン管理プログラム）、ＩＣカードマネージャ、および、ＩＣカードリーダ２用のドライバプログラムが、ＰＣ１の情報記憶装置（例えば、ハードディスク）に記憶されている。
【００１８】
図２は、図１で示したＰＣ１のアーキテクチャを説明する図である。図２に示したように、ＩＣカード３とデータ通信するＩＣカードリーダ２は、ＰＣ１のＩ／Ｏポート１４（例えば、ＵＳＢ）に接続され、ＰＣ１にはＩ／Ｏポート１４を制御するプログラムであるＩ／Ｏコントローラ１３が備わっている。
【００１９】
図２において、アプリケーション１２とは、ＩＣカード３を利用したある特定の用途（例えば、ネットワークへのログイン管理プログラム）のために設計されプログラムである。アプリケーション１２は、後述するＩＣカードマネージャ１１とドライバプログラム１０によって、Ｉ／Ｏポート１４に接続されたＩＣカードリーダ２を介して、ＩＣカード３とデータ通信することができる。
【００２０】
図２において、ＩＣカードマネージャ１１とは、ＩＣカード３を利用したアプリケーション１２を容易に開発できるように、ＯＳ側によって提供され、アプリケーション１２とドライバプログラム１０とを仲介する機能を有するプログラムである。ＩＣカードマネージャ１１としては、「Ｗｉｎｄｏｗｓ（登録商標）」上で動作する「Ｓｍａｒｔ  Ｃａｒｄ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｒ」が広く知られている。
【００２１】
一般的に、ＩＣカードマネージャ１１は、ＯＳの起動直後に、ＰＣ１に接続されているＩＣカードリーダ２を確認する。ＩＣカードリーダ２が接続されている場合は、そのＩＣカードリーダ２に対応するデバイスファイルを常に監視し、ＩＣカードリーダ２にＩＣカードが装着されると、ＩＣカードをリセットし、ＩＣカードからＡＴＲ(ATR: Answer To Reset)を取得することで、ＩＣカード３との通信が可能になる。
【００２２】
しかしながら、ＯＳの起動直後に、ＩＣカードリーダ２がＰＣ１に接続されていないと、ＩＣカードマネージャ１１が監視するデバイスファイルがないため、ＰＣ１起動後に、ＩＣカードリーダ２がＰＣ１に接続されても、接続されたＩＣカードリーダ２のデバイスファイルはＩＣカードマネージャ１１に認識されることはなく、ＩＣカードリーダ２は正常に動作しない。
【００２３】
図２において、ＩＣカードリーダ２用のドライバプログラム１０とは、上述した問題を解決するために、本発明が適用されたプログラムで、ＩＣカードリーダ２に対応するソフトウェア的なインターフェースとなるデバイスファイル１０２を生成し、Ｉ／Ｏコントローラ１３を操作することでＩ／Ｏポート１４に接続されたＩＣカードリーダ２とデータ通信し、デバイスファイル１０２への要求に対応した処理を行うプログラムである。
【００２４】
図２のドライバプログラム１０は、本発明を実現するために、ＯＳと共に起動し、ＰＣ１のメインメモリに常駐する常駐ドライバ１００と、Ｉ／Ｏポート１４にＩＣカードリーダ２が接続された時点で立ち上がり、ＩＣカードリーダ２がＰＣ１に非接続となると、ＰＣ１のメインメモリから消去される非常駐ドライバ１０１とから構成されている。
【００２５】
ドライバプログラム１０の常駐ドライバ１００は、少なくとも、起動直後に、ＩＣカードリーダ２のＰＣ１への接続／未接続に関わらず、ＩＣカードリーダ２用のデバイスファイル１０２を生成する機能と、実際にＩＣカードリーダ２がＰＣ１に接続されたことを確認する機能と、実際にＩＣカードリーダ２にＩＣカード３が装着されたことを確認する機能とを備える。
【００２６】
常駐ドライバ１００は、ＯＳと共に起動すると、ＩＣカードリーダ２のＰＣ１への接続／未接続に関わらず、予め設定された数だけ、ＩＣカードリーダ２用のデバイスファイル１０２を作成する。
【００２７】
ＯＳの起動直後に、ＩＣカードリーダ２用のデバイスファイル１０２を作成することで、常駐ドライバ１００は、ＩＣカードマネージャ１１にＩＣカードリーダ２がＰＣ１に接続されていると認識させ、常に、ＩＣカードマネージャ１１にデバイスファイル１０２を監視させることで、オペレーティングシステムの起動直後（すなわち、ＰＣ１起動後）にＩＣカードリーダ２がＰＣ１に接続された場合でも、ＩＣカードリーダ２は正常に動作する。
【００２８】
加えて、常駐ドライは、後述する非常駐ドライバ１０１の起動を監視し、非常駐ドライバ１０１が起動すると、ＩＣカード３がＩＣカードリーダ２に装着されていることを確認し、実際に、ＩＣカード３がＩＣカードリーダ２に装着されると、ＩＣカード３が装着されたＩＣカードリーダ２に対応するデバイスファイル１０２に、ＩＣカード３がＩＣカードリーダ２に装着されたことを反映させる。
【００２９】
ＩＣカード３がＩＣカードリーダ２に装着されるまでは、常駐ドライバ１００が、ＩＣカードリーダ２の状態をＩＣカード３が未装着にすることで、実際に、ＩＣカード３がＩＣカードリーダ２に装着されるまでは、ＩＣカードマネージャ１１がＩＣカード３の処理（例えば、リセット動作）を行うことを防止する。
【００３０】
非常駐ドライバ１０１は、ＩＣカードリーダ２がＰＣ１に接続された時点で起動し、ＩＣカードリーダ２がＰＣ１から取り外されると終了するドライバプログラム１０で、常駐ドライバ１００が非常駐ドライバ１０１の起動を監視することで、常駐ドライバ１００は、実際に、ＩＣカードリーダ２がＰＣ１に接続されたことを確認できる。なお、非常駐ドライバ１０１が起動／終了する機能は、ＯＳ側の機能（例えば、Ｗｉｎｄｏｗｓ（登録商標）のプラグアンドプレイ）によって実現されている。
【００３１】
ここから、ドライバプログラム１０の常駐ドライバ１００の動作について、図を参照しながら詳細に説明する。図３は、起動直後における常駐ドライバ１００の動作を説明するフロー図で、図４は、常駐ドライバ１００が非常駐ドライバ１０１を監視する動作について説明する図である。
【００３２】
まず、図３を参照しながら、起動時の常駐ドライバ１００の動作について説明する。この動作の最初のステップＳ１０は、常駐ドライバ１００が起動するステップである。常駐ドライバ１００は、ＯＳと共に起動する。
【００３３】
次のステップＳ１１は、常駐ドライバ１００が、ＩＣカードリーダ２のＰＣ１への接続／未接続に関わらず、予め設定された数だけ、ＩＣカードリーダ２用のデバイスファイル１０２を生成するステップである。
【００３４】
このステップＳ１１で、常駐ドライバ１００が、ＯＳの起動時に、ＩＣカードリーダ２用のデバイスファイル１０２を作成することで、ＰＣ１にＩＣカードリーダ２が接続／未接続であるかに関わらず、常駐ドライバ１００はＩＣカードマネージャ１１に、ＩＣカードリーダ２がＰＣ１に接続されていると認識させる。なお、このステップＳ１１で、常駐ドライバ１００が、複数個のデバイスファイル１０２を生成することで、ＰＣ１に複数台のＩＣカードリーダ２を接続することが可能となる。
【００３５】
次のステップＳ１２は、常駐ドライバ１００が、作成したデバイスファイル１０２の数だけ、非常駐ドライバ１０１を監視するスレッドを実行するステップである。常駐ドライバ１００がこのスレッドを実行し、非常駐ドライバ１０１を監視することで、常駐ドライバ１００は、実際にＰＣ１にＩＣカードリーダ２が接続されたことや、ＩＣカードリーダ２にＩＣカード３が装着されたことを認識することができる。このステップＳ１２をもって、起動時のドライバプログラム１０の動作は終了する。
【００３６】
次に、図４を参照しながら、ほぼ一定の周期で、常駐ドライバ１００が非常駐ドライバ１０１を監視する動作について説明する。この動作の最初のステップＳ２０は、常駐ドライバ１００が、非常駐ドライバ１０１の起動を確認するステップである。非常駐ドライバ１０１は、ＩＣカードリーダ２がＰＣ１に接続された時点で起動するため、非常駐ドライバ１０１が起動していることは、ＩＣカードリーダ２がＰＣ１に接続されていることを意味する。
【００３７】
ステップＳ２０において、非常駐ドライバ１０１が起動しているときはステップＳ２２に進み、非常駐ドライバ１０１が起動していないときは、ステップＳ２１で、常駐ドライバ１００が、ＩＣカードリーダ２にＩＣカード３が未装着であることを、デバイスファイル１０２に反映させ、一連の動作を終了する。
【００３８】
ステップＳ２１で、デバイスファイル１０２の状態をＩＣカード３が未装着にすることで、たとえ、ＩＣカードマネージャ１１が、ＩＣカードリーダ２はＰＣ１に接続していると認識していても、ＩＣカードマネージャ１１はＩＣカード３の処理（例えば、リセット動作）を実行しない。
【００３９】
ステップＳ２０において、非常駐ドライバ１０１が起動しているときに、常駐ドライバ１００が実行するステップＳ２２は、ＩＣカード３がＩＣカードリーダ２に挿入されているか、常駐ドライバ１００が確認するステップである。
【００４０】
ステップＳ２２において、ＩＣカード３がＩＣカードリーダ２に装着されているときはステップＳ２４に進み、装着されていないときはステップＳ２３において、常駐ドライバ１００はＩＣカード３が未装着であることをデバイスファイル１０２に反映させ、一連の動作を終了する。
【００４１】
ステップＳ２２でＩＣカード３がＩＣカードリーダ２に装着であるときに、常駐ドライバ１００はステップＳ２４で、ＩＣカード３が装着であることをデバイスファイル１０２に反映し、一連の動作を終了する。そして、ステップＳ２４で、ＩＣカード３が装着であることをデバイスファイル１０２に反映させると、ＩＣカードマネージャ１１はＩＣカード３の処理（例えば、リセット動作）を開始する。
【図面の簡単な説明】
【００４２】
【図１】本発明に係るドライバプログラムがインストールされたＰＣを説明する図。
【図２】図１で示したＰＣのアーキテクチャを説明する図。
【図３】起動時の常駐ドライバの動作を説明する図。
【図４】常駐ドライバが非常駐ドライバを監視する動作を説明する図。
【符号の説明】
【００４３】
１  パーソナルコンピュータ
１０  ＩＣカードリーダ用のドライバプログラム
１００  常駐ドライバ
１０１  非常駐ドライバ
１０２  デバイスファイル
１１  ＩＣカードマネージャ
１２  アプリケーション
１３  Ｉ／Ｏコントローラ
１４  Ｉ／Ｏポート
２  ＩＣカードリーダ
３  ＩＣカード
【図１】
2006338381.tif 000003
【図２】
2006338381.tif 000004
【図３】
2006338381.tif 000005
【図４】
2006338381.tif 000006