JP2007279966A - 情報処理装置,アプリケーション調停方法及びプログラム - Google Patents

情報処理装置,アプリケーション調停方法及びプログラム Download PDF

Info

Publication number
JP2007279966A
JP2007279966A JP2006104308A JP2006104308A JP2007279966A JP 2007279966 A JP2007279966 A JP 2007279966A JP 2006104308 A JP2006104308 A JP 2006104308A JP 2006104308 A JP2006104308 A JP 2006104308A JP 2007279966 A JP2007279966 A JP 2007279966A
Authority
JP
Japan
Prior art keywords
application
reader
writer
device driver
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006104308A
Other languages
English (en)
Other versions
JP4407662B2 (ja
Inventor
Yoshihiro Yoneda
好博 米田
Rei Wakatsuki
玲 若月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006104308A priority Critical patent/JP4407662B2/ja
Priority to MYPI20070478A priority patent/MY145246A/en
Priority to US11/727,725 priority patent/US8573485B2/en
Priority to EP07251406A priority patent/EP1843251A3/en
Priority to SG200702386-4A priority patent/SG136109A1/en
Priority to CN200710129251XA priority patent/CN101149782B/zh
Publication of JP2007279966A publication Critical patent/JP2007279966A/ja
Priority to HK08105761.8A priority patent/HK1111249A1/xx
Application granted granted Critical
Publication of JP4407662B2 publication Critical patent/JP4407662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】複数のICカード用アプリケーションが同時にリーダ/ライタを使用する場合において,アプリケーション間の調停を好適に実現すること。
【解決手段】リーダ/ライタ2を介してICカード3に接続可能な情報処理装置1において,ICカード3用の複数のアプリケーションで共用される基本機能を各アプリケーションに提供するミドルウェアと,リーダ/ライタ2に対応して設けられ,複数のアプリケーションがリーダ/ライタ2に同時にアクセスできるように,複数のアプリケーションからミドルウェアを介して受け取った複数のコマンドを受け取り順に順次処理して,リーダ/ライタ2を制御するデバイスドライバと,を備える。
【選択図】図1

Description

本発明は,情報処理装置,アプリケーション調停方法及びプログラムに関する。
ICカードの普及とともに,ICカードに情報を読み書きするリーダ/ライタの設置環境が急速に広がりつつある。ICカードが導入開始された初期段階では,業務用機器での利用が中心であったが,近年では,一般消費者が所有するコンシューマエレクトロニクス機器(以下,CE機器)用途の低価格なリーダ/ライタが普及し始めており,このため,ICカードを利用したアプリケーションも急速に拡大している。
特に,パーソナルコンピュータ(以下,PC)や携帯電話などのCE機器では,予めリーダ/ライタ機能が予め組み込まれた機器も急速に増え始めており,さらに,このようなリーダ/ライタが予め組み込まれたCE機器に,別途のリーダ/ライタを外部接続させるケースも想定される。このようなCE機器では,ICカードを利用するための多数のアプリケーションが予め組み込まれたり,ユーザが後から自由にアプリケーションをCE機器に追加したりすることができるため,1つのCE機器内にICカード用の複数のアプリケーションが共存する機会が増大しつつある。
特開2003−16403号公報
しかしながら,上記CE機器等の情報処理装置で動作する従来のICカード用アプリケーションは,1つのアプリケーションが1つのリーダ/ライタを専有することを前提としたアーキテクチャーであった。従って,あるアプリケーションがリーダ/ライタを使用している間は,他のアプリケーションはリーダ/ライタを使用することができなかった。例えば,あるアプリケーションによりICカード内の電子マネーの残高や購入履歴情報を表示している最中に,別のアプリケーションにより当該ICカード内の乗車券の履歴情報を表示させることができなかった。このように,従来のICカードを利用する情報処理装置においては,マルチアプリケーション対応がなされておらず,複数のアプリケーション間の調停を好適に実行することができないという問題があった。
なお,特許文献1には,ICカードに複数のアプリケーションを組み込んで,このICカード内のアプリケーション毎にアクセス権を設定する技術が記載されている。しかし,この特許文献1の技術はICカード内に複数のアプリケーションが設けられている場合を想定しているが,アプリケーションを組み込まずに,CE機器側からのコマンドに応じてデータを読み書きするだけのICカードでは,上記マルチアプリケーション対応を実現できなかった。
そこで,本発明は,上記問題に鑑みてなされたものであり,本発明の目的とするところは,複数のICカード用アプリケーションが同時にリーダ/ライタを使用する場合において,アプリケーション間の調停を好適に実現することが可能な,新規かつ改良された情報処理装置,アプリケーション調停方法及びプログラムを提供することにある。
上記課題を解決するために,本発明のある観点によれば,リーダ/ライタを介してICカードに接続可能な情報処理装置であって,ICカード用の複数のアプリケーションで共用される基本機能を各アプリケーションに提供するミドルウェアと,リーダ/ライタに対応して設けられ,複数のアプリケーションがリーダ/ライタに同時にアクセスできるように,複数のアプリケーションからミドルウェアを介して受け取った複数のコマンドを受け取り順に順次処理して,リーダ/ライタを制御するデバイスドライバと,を備えることを特徴とする,情報処理装置が提供される。
かかる構成により,各アプリケーションは,ミドルウェアから提供された複数のアプリケーションで共用される基本機能を用いて,デバイスドライバに対してコマンドの実行要求を行い,デバイスドライバは,複数のアプリケーションからミドルウェアを介して受け取った複数のコマンドを,受け取り順に順次処理して,リーダ/ライタを制御して,ICカードにコマンドを送信できる。これにより,複数のアプリケーションが同一のリーダ/ライタを同時に使用できるようになるので,アプリケーション間の調停を好適に実現できる。
また,デバイスドライバは,複数のアプリケーションがリーダ/ライタに同時にアクセス可能な共有モードと,1つのアプリケーションのみがリーダ/ライタにアクセス可能な専有モードとを切り替えて設定可能であるようにしてもよい。
また,ミドルウェアは,アプリケーションが共有モード又は専有モードを選択できるようなアプリケーションプログラミングインターフェースをアプリケーションに提供し,デバイスドライバは,アプリケーションからのモード選択に基づいて,共有モードと専有モードとを切り替えるようにしてもよい。
また,共有モードに設定されている場合に,デバイスドライバは,あるアプリケーションからの要求に応じて,リーダ/ライタに対するアクセス権を当該アプリケーションに付与し,当該アプリケーションにアクセス権が付与されている間は,当該アプリケーションから受け取ったコマンドのみを処理し,他のアプリケーションから受け取ったコマンドを処理待ち状態にするようにしてもよい。
また,ミドルウェアは,アプリケーションがデバイスドライバに対してアクセス権の付与を要求できるようなアプリケーションプログラミングインターフェースをアプリケーションに提供するようにしてもよい。
また,デバイスドライバは,あるアプリケーションからのコマンドの処理中に,他のアプリケーションからのコマンドを受け取った場合,当該コマンドの受け取り時から所定のタイムアウト時間が経過するまでは他のアプリケーションからのコマンドを処理待ち状態とし,タイムアウト時間が経過したときには他のアプリケーションにタイムアウトエラーを通知するようにしてもよい。
また,デバイスドライバは,アプリケーションごとにタイムアウト時間を設定可能であるようにしてもよい。
また,デバイスドライバは,1つのリーダ/ライタに同時にアクセス可能なアプリケーションの数を所定の最大アクセス数以下に制限するようにしてもよい。
また,デバイスドライバは,各アプリケーションとリーダ/ライタとの間の通信情報を,アプリケーションごとに保持する通信情報記憶部を有するようにしてもよい。
また,情報処理装置にはリーダ/ライタが複数接続されており,ミドルウェアは,アプリケーションからの使用要求に応じて,複数のリーダ/ライタのうちから1つのリーダ/ライタを選択し,当該選択されたリーダ/ライタに対応するデバイスドライバに対し,アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするよう要求し,デバイスドライバは,ミドルウェアからの要求に応じて,当該選択されたリーダ/ライタがアプリケーションによりアクセス可能な状態であるか否かを判定し,アクセス可能な状態であると判定すれば,アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするようにしてもよい。
また,ミドルウェアは,複数のリーダ/ライタのうちアプリケーションが使用可能な1又は2以上のリーダ/ライタのリストを保持しており,リスト内のリーダ/ライタを順次選択して,当該選択された各リーダ/ライタに対応する各デバイスドライバに対し,アプリケーションが当該選択された各リーダ/ライタを使用可能な状態にするよう順次要求するようにしてもよい。
また,上記課題を解決するために,本発明の別の観点によれば,リーダ/ライタを介してICカードに接続可能な情報処理装置において,ICカード用の複数のアプリケーションを調停するアプリケーション調停方法であって,リーダ/ライタに対応して設けられたデバイスドライバは,複数のアプリケーションがリーダ/ライタに同時にアクセスできるように,複数のアプリケーションから,複数のアプリケーションで共用される基本機能を各アプリケーションに提供するミドルウェアを介して,複数のコマンドを受け取り,当該受け取った複数のコマンドを受け取り順に順次処理して,リーダ/ライタを制御することを特徴とする,アプリケーション調停方法が提供される。
また,デバイスドライバは,複数のアプリケーションがリーダ/ライタに同時にアクセス可能な共有モードと,1つのアプリケーションのみがリーダ/ライタにアクセス可能な専有モードとを切り替えて設定可能であるようにしてもよい。
また,ミドルウェアは,アプリケーションが共有モード又は専有モードを選択できるようなアプリケーションプログラミングインターフェースをアプリケーションに提供し,デバイスドライバは,アプリケーションからのモード選択に基づいて,共有モードと専有モードとを切り替えるようにしてもよい。
また,共有モードに設定されている場合に,デバイスドライバは,あるアプリケーションからの要求に応じて,リーダ/ライタに対するアクセス権を当該アプリケーションに付与し,当該アプリケーションにアクセス権が付与されている間は,当該アプリケーションから受け取ったコマンドのみを処理し,他のアプリケーションから受け取ったコマンドを処理待ち状態にするようにしてもよい。
また,ミドルウェアは,アプリケーションがデバイスドライバに対してアクセス権の付与を要求できるようなアプリケーションプログラミングインターフェースをアプリケーションに提供するようにしてもよい。
また,デバイスドライバは,あるアプリケーションからのコマンドの処理中に,他のアプリケーションからのコマンドを受け取った場合,当該コマンドの受け取り時から所定のタイムアウト時間が経過するまでは他のアプリケーションからのコマンドを処理待ち状態とし,タイムアウト時間が経過したときには他のアプリケーションにタイムアウトエラーを通知するようにしてもよい。
また,デバイスドライバは,アプリケーションごとにタイムアウト時間を設定可能であるようにしてもよい。
また,デバイスドライバは,1つのリーダ/ライタに同時にアクセス可能なアプリケーションの数を所定の最大アクセス数以下に制限するようにしてもよい。
また,デバイスドライバは,各アプリケーションとリーダ/ライタとの間の通信情報を,アプリケーションごとに保持する通信情報記憶部を有するようにしてもよい。
また,情報処理装置にはリーダ/ライタが複数接続されており,ミドルウェアは,アプリケーションからの使用要求に応じて,複数のリーダ/ライタのうちから1つのリーダ/ライタを選択し,当該選択されたリーダ/ライタに対応するデバイスドライバに対し,アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするよう要求し,デバイスドライバは,ミドルウェアからの要求に応じて,当該選択されたリーダ/ライタがアプリケーションによりアクセス可能な状態であるか否かを判定し,アクセス可能な状態であると判定すれば,アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするようにしてもよい。
また,ミドルウェアは,複数のリーダ/ライタのうちアプリケーションが使用可能な1又は2以上のリーダ/ライタのリストを保持しており,リスト内のリーダ/ライタを順次選択して,当該選択された各リーダ/ライタに対応する各デバイスドライバに対し,アプリケーションが当該選択された各リーダ/ライタを使用可能な状態にするよう順次要求するようにしてもよい。
また,上記課題を解決するために,本発明の別の観点によれば,コンピュータを,リーダ/ライタを介してICカードに接続可能な情報処理装置であって,ICカード用の複数のアプリケーションで共用される基本機能を各アプリケーションに提供するミドルウェアと,リーダ/ライタに対応して設けられ,複数のアプリケーションがリーダ/ライタに同時にアクセスできるように,複数のアプリケーションから受け取った複数のコマンドを受け取り順に順次処理して,リーダ/ライタを制御するデバイスドライバと,を備えた情報処理装置として機能させるためのプログラムが提供される。
以上説明したように本発明によれば,複数のICカード用アプリケーションが同時にリーダ/ライタを使用する場合において,アプリケーション間の調停を好適に実現することができる。
以下に添付図面を参照しながら,本発明の好適な実施の形態について詳細に説明する。なお,本明細書及び図面において,実質的に同一の機能構成を有する構成要素については,同一の符号を付することにより重複説明を省略する。
まず,図1を参照して,本発明の第1の実施形態にかかるリーダ/ライタを介してICカードに接続可能な情報処理装置の概略構成について説明する。なお,図1は,本実施形態にかかる情報処理装置1がリーダ/ライタ2を介してICカード3に接続する状態を示す概略図である。
図1に示すように,本実施形態にかかる情報処理装置1は,例えば,複数のリーダ/ライタ2A,2B(以下,リーダ/ライタ2と総称する場合もある。)を介して複数のICカード3A,3B(以下,ICカード3と総称する場合もある。)に接続可能な装置であり,リーダ/ライタ2を介してICカード3に各種の情報を読み書きすることができる。この情報処理装置1は,例えば,パーソナルコンピュータ(PC)等のコンピュータ装置(ノート型,デスクトップ型を問わない。)や携帯電話などのCE機器で構成されるが,かかる例に限定されず,例えば,PDA(Personal Digital Assistant),携帯型映像/音声プレーヤ,家庭用ゲーム機,携帯型ゲーム機,情報家電,電子辞書,業務用機器など,各種の電子機器で構成することも可能である。
リーダ/ライタ2は,ICカード3に対して例えば非接触方式で各種情報を送受信可能な装置である。このリーダ/ライタ2は,情報処理装置1からの指示に基づき,ICカード3に対して各種の情報を読み書きしたり,その近傍にICカード3が存在するか否かを探索(ポーリング)したりすることができる。
このようなリーダ/ライタ2は,例えば,情報処理装置1に内蔵(プレインストール)されてもよいし,或いは,USB(Univarsal Serial Bus)ケーブル等の有線ケーブル4若しくは無線通信を介して情報処理装置1に外部接続されてもよい。また,複数のリーダ/ライタ2が,1つの情報処理装置1に外部接続又は内蔵されてもよい。図1の例では,1つのリーダ/ライタ2Aが有線ケーブル4を介して情報処理装置1に外部接続され,1つのリーダ/ライタ2Bが情報処理装置1に内蔵されている。これにより,情報処理装置1は,これらのリーダ/ライタ2A,2Bを介して,同一又は異なる種類の2つのICカード3A,3Bに接続可能になっている。しかし,かかる例に限定されず,情報処理装置1は,1つリーダ/ライタ2のみ,又は3以上のリーダ/ライタ2を介して,任意の数のICカード3に接続可能に構成されてもよい。
ICカード3は,例えば,上記リーダ/ライタ2から近距離(例えば0〜10cm程度)の通信範囲内であれば,リーダ/ライタ2に対して非接触方式で無線通信することが可能な非接触型ICカードである。このICカード3内の記憶装置には,電子マネー情報等のセキュアなデータや,ログ情報などを記憶することができる。
次に,図2を参照して,本実施形態にかかる情報処理装置1として例えばパーソナルコンピュータ(PC)のハードウェア構成例について説明する。なお,図2は,本実施形態にかかる情報処理装置1のハードウェア構成例を示すブロック図である。
図2に示すように,情報処理装置1は,例えば,CPU(Central Processing Unit)101と,ROM102と,RAM103と,ホストバス104と,ブリッジ105と,外部バス106と,インタフェース107と,入力装置108と,出力装置109と,記憶装置110と,例えば複数の接続ポート111A,111B(以下,接続ポート111と総称する場合もある。)と,通信装置112とを備える。
CPU101は,各種プログラムに従って各種の処理を実行する処理装置の一例であり,情報処理装置1内の各部を制御する。ROM102は,CPU101が使用するプログラムや演算パラメータ等を記憶する。RAM103は,CPU101の実行において使用するプログラムや,その実行において随時変化するパラメータ等を一次記憶する。これらはCPUバスなどから構成されるホストバス104により相互に接続されている。
ホストバス104は,ブリッジ105を介して,PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス106に接続されている。インタフェース107は,外部バス106と以下のような各装置とを接続する通信インタフェースである。
入力装置108は,例えば,マウス,キーボード,タッチパネル,ボタン,スイッチ,レバー等の操作手段と,入力信号を生成してCPU101に出力する入力制御回路などから構成されている。情報処理装置1を利用するユーザは,この入力装置108を操作することにより,情報処理装置1に対して各種のデータを入力したり,処理動作を指示したりすることができる。
出力装置109は,例えば,CRT(Cathode Ray Tube)ディスプレイ装置,液晶ディスプレイ(LCD)装置,ランプ等の表示装置や,スピーカ等の音声出力装置などで構成される。この出力装置109は,例えば,後述するICカード用のアプリケーションの動作に伴う画面などといった各種情報を表示出力する。
記憶装置110は,記憶媒体を備えたデータ格納用の装置であり,例えば,HDD(Hard Disk Drive)などで構成される。この記憶装置110は,後述するアプリケーション,ミドルウェア,オペレーションシステム,デバイスドライバ等の各種のプログラムや,各種データを記憶する。この記憶装置110は,HDDに限らず,例えば,フラッシュメモリ,SRAM(Static Random Access Memory),EEPROM(Electrically Erasable Programmable Read−Only Memory)等の半導体メモリや,光ディスク,光磁気ディスク,磁気メモリなど,ランダムアクセス可能な各種の記憶媒体で構成されてもよい。
接続ポート111は,例えば,上記リーダ/ライタ2等の外部周辺機器を接続するポートであり,USB,IEEE1394等の接続端子を有する。この接続ポート111は,インタフェース107,および外部バス106,ブリッジ105,ホストバス104等を介してCPU101等に接続されている。かかる接続ポート111A,111Bにリーダ/ライタ2A,2Bを接続することで,情報処理装置1は,リーダ/ライタ2A,2Bを介してICカード3A,3Bとそれぞれ通信接続して,コマンド,レスポンス等の各種のデータを送受信することができるようになる。なお,接続ポート111の設置数を増減して,情報処理装置1にリーダ/ライタ2を1つ又は3つ以上接続できるようにしてもよい。
通信装置112は,例えば,インターネット,LAN(Local Area Network),電話回線網等のネットワーク(図示せず。)に接続するための通信デバイス等で構成され,上記ネットワークを介して外部装置との間で各種データを送受信する。
次に,図3に基づいて,本実施形態にかかるリーダ/ライタ2とICカード3のハードウェア構成について説明する。なお,図3は,本実施形態にかかるリーダ/ライタ2及びICカード3のハードウェア構成を示すブロック図である。
まず,リーダ/ライタ2の構成について説明する。図3に示すように,リーダ/ライタ2は,制御部201と,変調回路202と,復調回路203と,発信器204と,メモリ205と,アンテナ206とを備える。
制御部201は,例えば,各種のプロセッサと,ROM,RAM等のメモリとを備えたICなどで構成される。この制御部201は,フラッシュメモリ等で構成されたメモリ205を利用して,リーダ/ライタ2内の各部を制御する。また,制御部201は,情報処理装置1から入力されたデータ(コマンド等)を処理して,ICカード3に送信するために変調回路203に出力する。さらに,制御部201は,ICカード3から送信されたデータを復調回路202から受け取って処理する。また,制御部201は,上記情報処理装置1との通信処理を行う。さらに,制御部201は,ICカード3との通信時に,リーダ/ライタ2とICカード3との間の認証処理を実行し,この認証結果を情報処理装置1に送信する。
変調回路202は,発信器204から供給される所定の周波数の搬送波を,制御部201から入力されたデータで変調(例えばASK(Amplitude Shift Keying)変調)し,当該変調波を,アンテナ206を介してICカード3に送信する。一方,復調回路203は,アンテナ206を介してICカード3から受信した変調波を復調し,当該復調したデータを制御部201に出力する。
次に,ICカード3の構成について説明する。図3に示すように,ICカード3は,アンテナ301と,コンデンサ302と,IC303とで構成され,IC303がアンテナ301を介して,リーダ/ライタ2との間で変調波を送受信するようになっている。なお,コンデンサ302は,アンテナ301と共にLC回路を構成し,所定のキャリア周波数の電磁波に同調(共振)するようになっている。IC303は,インタフェース部304と,変調回路305と,復調回路306と,制御部307と,メモリ308とを備える。
インタフェース部304は,アンテナ301を介して受信した変調波を検波して得られた信号を復調回路305に出力する。また,インタフェース部304は,制御部307から変調回路306を介して入力される信号を,アンテナ301を介してリーダ/ライタ2に送信する。また,インタフェース部304は,図示しない電圧レギュレータで上記検波した信号を安定化し,各回路に電源として供給する
復調回路305は,上記インタフェース部304から入力された信号を復調し,復調したデータを制御部307に出力する。また,変調回路306は,制御部307から入力されたデータを変調してインタフェース部304に出力する。
制御部307は,復調回路305から入力されたデータ(コマンド)に基づいて所定の処理,例えば,メモリ308に記憶されているデータの読み出し/書き込みや,制御部307に対して入出力されるデータの演算処理などを行う。また,制御部307は,メモリ308に記憶されているデータを管理(追加,変更,削除など)する。また,制御部307は,上記所定の処理に対応する応答データ(レスポンス)を生成して,リーダ/ライタ2に送信するために,変調回路306に出力する。なお,制御部307は,復調回路305から入力されたデータや,変調回路306に出力するデータを,例えば,マンチェスタ符号化方式等で復号化/符号化処理したり,暗号化/暗号解読化したりすることもできる。
メモリ308は,ICカード3に関する各種のデータを記憶する記憶装置であり,例えば,フラッシュメモリ,SRAM,EEPROM,ROM等の半導体メモリなどで構成される。メモリ308は,例えば,ICカード3に固有のカードIDや,ICカード3にチャージされた電子マネーの金額を表す電子マネー情報などを記憶している。また,メモリ308は,上記制御部307が,コマンドの解析,レスポンスの生成,メモリ308に対するデータの読み書き,データの符号化及び暗号化などといった各種の処理を行うためのプログラム(ICカード3用のオペレーティングシステム:OS)を記憶している。これらの情報は,ICカード3とリーダ/ライタ2との通信が終了して電力供給が停止した後も,メモリ308に記憶され続ける。
なお,上記ICカード3とリーダ/ライタ2間の通信プロトコルとしては,例えば,NFC(Near Field Communication)通信,ISO/IEC14443や,RFタグ(Radio Frequency Tag)の通信について規定するISO/IEC15693や,さらには,Bluetooth,UWB(Ultra Wide Band),IEEE802.11bなどの通信プロトコルを例示できる。
以上のような構成により,リーダ/ライタ2とICカード3との間で,非接触方式でデータ(コマンド,レスポンス)を送受信可能であり,このため,リーダ/ライタ2によってICカード3に記憶されている情報を読み書き可能となる。例えば,リーダ/ライタ2によって,ICカード3に記憶されているカードIDを読み出して認証処理を行ったり,或いは,ICカード3に記憶されている電子マネー情報を読み出して更新(金額変更)したりできるようになる。この際,非接触方式でデータをやりとりするので,ユーザは,自己の所有するICカード3をリーダ/ライタ2に対して所定の距離範囲内に接近させるだけで,迅速かつ容易に当該ICカード3内のデータを読み書きさせることができる。
次に,図4を参照して,本実施形態にかかる情報処理装置1及びICカード3のソフトウェア構成について説明する。なお,図4は,本実施形態にかかる情報処理装置1及びICカード3のソフトウェア構成を示すブロック図である。
図4に示すように,情報処理装置1は,ICカード3を利用するための複数のアプリケーション10A,10B,10C,10D,10E,…(以下,アプリケーション10と総称する場合もある。)と,ICカード3を利用するための1つのミドルウェア20と,オペレーションシステム(以下,OSという。)30と,リーダ/ライタ2を動作させるための複数のデバイスドライバ40A,40B,…(以下,デバイスドライバ40と総称する場合もある。)とを備える。このように,本実施形態にかかる情報処理装置1のソフトウェア構成は,アプリケーション10,ミドルウェア20,OS30,デバイスドライバ40という4階層に階層化されている。これらのアプリケーション10,ミドルウェア20,OS30,デバイスドライバ40は,上記情報処理装置1の記憶装置110に格納されたプログラムをCPU101が読み出すことによって実現される。以下に,各ソフトウェアの機能について説明する。
アプリケーション10は,ユーザ(使用者)に対してICカード3を利用した具体的なサービスを提供する機能を有するソフトウェアである。具体例を挙げると,各アプリケーション10は,例えば,ICカード3を用いたログイン認証機能,電車等の交通乗車券の履歴情報機能,ICカード3にチャージされた電子マネーの残高表示機能,ICカード3を利用したショッピングのポイント照会機能,ICカード3に記憶されているクーポンや電子チケットの表示機能などの各種サービスを提供する。
これらのアプリケーション10は,ミドルウェア20及びデバイスドライバ40と連携して動作することで,ユーザに対して上記各種のサービスを提供することができる。なお,かかるアプリケーション10は,情報処理装置1の出荷時に予め組み込まれていてもよいし(プリインストール),或いは,ユーザにより事後的に情報処理装置1に追加設置されてもよい。また,情報処理装置1に設置されたアプリケーション10を事後的に更新(アップグレード等)/削除することも可能である。
かかるアプリケーション10は,上記各種機能を実行するために,ICカード3に送信するコマンドの作成をミドルウェア20に対して指示する。コマンドとしては,例えば,リーダ/ライタ2の周辺に所定のICカード3が存在するか否かの探索を要求するポーリングコマンドや,ICカード3に記憶されている各種情報(カードID,電子マネー情報,ショッピングの履歴情報,交通乗車券の履歴情報,クーポン情報,電子チケット情報など)を読み出すためのコマンド,ICカード3に各種情報を書き込んだり更新したりするためのコマンドなどがある。また,情報処理装置1は,上記コマンドに対する応答として,ICカード3からリーダ/ライタ2を介してレスポンスを受信するが,アプリケーション10は,このレスポンスに含まれる情報に基づいて上記各種のサービス機能(電子マネーの残高表示等)をユーザに提供する。
ミドルウェア20は,上記ICカード3用の複数のアプリケーション10で共通して利用される基本機能を,各アプリケーション10に提供するソフトウェアである。これにより,ミドルウェア20は,複数のアプリケーション10が共通して使用する汎用的な機能を提供でき,個々のアプリケーション開発者が同一目的の機能をそれぞれ開発してしまう無駄を排除できる。かかるミドルウェア20は,例えば共有ライブラリ形式(例えば,Windows(登録商標)のDLL(Dynamic Link Library)形式)のソフトウェアで構成される。
具体的には,ミドルウェア20は,例えば,上記各種のアプリケーション10で共通して利用されるアプリケーションプログラミングインターフェイス(Application Program Interface:以下,API)を有しており,このAPIを各アプリケーション10に提供する。このAPIは,各アプリケーション10の開発を容易にできるようにするためのコマンドや関数の集合である。アプリケーション10は,かかるAPIを呼び出すだけで,コマンドの実行要求などといったICカード3の利用に関する基本機能を実行することができる。
また,ミドルウェア20は,OS30及びデバイスドライバ40を介して,リーダ/ライタ2及びICカード3を制御する機能を有する。具体的には,ミドルウェア20は,各アプリケーション10からのコマンド作成指示に基づき上記各種のコマンドを生成し,生成したコマンドをデバイスドライバ40に出力して,コマンドの実行(即ち,リーダ/ライタ2を介したICカード3へのコマンド送信)を要求する。また,ミドルウェア20は,上記コマンドに応じてICカード3から返信されたレスポンスを,リーダ/ライタ2及びデバイスドライバ40を介して受け取り,当該レスポンスをアプリケーション10に出力する。このように,ミドルウェア20は,デバイスドライバ40経由でリーダ/ライタ2にアクセスする。
また,上記各アプリケーション10が使用できるリーダ/ライタ2は,予め規定されている。例えば,図4の例では,アプリケーション10A,10B,10Cはリーダ/ライタ2Aを使用し,アプリケーション10D,10Eはリーダ/ライタ2Bを使用するように定められている。ミドルウェア20は,複数のリーダ/ライタ2のうち各アプリケーション10が使用可能な1または2以上のリーダ/ライタ2のリスト(即ち,各アプリケーション10がアクセスしてコマンド・レスポンスをやり取り可能なリーダ/ライタ2のリスト)を保持している。ミドルウェア20は,このリストに基づき各リーダ/ライタ2を走査して,アプリケーション10が使用するリーダ/ライタ2を決定する。また,ミドルウェア20は,アプリケーション10によるリーダ/ライタ2の指定に基づき,アプリケーション10が使用するリーダ/ライタ2を,上記指定されたリーダ/ライタ2に決定することもできる。このようなミドルウェア20の機能により,複数の情報処理装置1に複数のリーダ/ライタ2が接続されている場合に,各アプリケーション10が適切なリーダ/ライタ2を使用して,コマンド送信,レスポンス受信等の処理を円滑に実行できるようになる。
OS30は,情報処理装置1全体を管理する基本ソフトウェアである。このOS30は,上記入力装置108や出力装置109による入出力機能や記憶装置110の管理機能などといった,複数のアプリケーション10及びミドルウェア20により共通して利用される基本的な機能を提供する。
デバイスドライバ40は,リーダ/ライタ2を動作させるためのソフトウェアであり,ミドルウェア20から受け取ったコマンドに基づいて,リーダ/ライタ2を制御する機能を有する。このデバイスドライバ40は,各リーダ/ライタ2に対応してそれぞれ設けられる。図4の例では,リーダ/ライタ2Aに対応するデバイスドライバ40Aと,リーダ/ライタ2Bに対応するデバイスドライバ40Bとが設けられている。しかし,かかる例に限定されず,リーダ/ライタ2の接続数に応じて,1又は3つ以上のデバイスドライバ40を設けることもできる。OS30は,情報処理装置1にリーダ/ライタ2が接続されると,このリーダ/ライタ2に対応するデバイスドライバ40をロードして,当該デバイスドライバ40のインスタンスを生成する。
デバイスドライバ40は,上記アプリケーション10からミドルウェア20を介して受け取ったコマンドを処理して,リーダ/ライタ2に出力する。これに応じて,リーダ/ライタ2は当該コマンドをICカード3に送信する。また,デバイスドライバ40は,ICカード3からリーダ/ライタ2を介して受信したレスポンスを解析処理して,ミドルウェア20に出力する。
このとき,複数のアプリケーション10からミドルウェア20を介して複数のコマンドを受け取った場合には,デバイスドライバ40は,これらの複数のコマンドを,当該コマンドの受け取り順に順次処理する。具体的には,デバイスドライバ40はミドルウェア20からのコマンド実行要求を受け取ると,他のアプリケーション10からのコマンドを処理中であるか否かを判定し,処理中でない場合には,当該受け付けたコマンドを実行し,一方,処理中である場合には,当該受け付けたコマンドを処理待ち状態とし,処理中のコマンドの処理がした後に,当該受け付けたコマンドを処理する。このようにして,デバイスドライバ40が複数のアプリケーション10から受け取った複数のコマンドを受け取り順に順次実行することにより,複数のアプリケーション10が1つのリーダ/ライタ2を同時並行して使用できるようになり,マルチアプリケーション対応を好適に実現できる。
また,デバイスドライバ40は,複数のアプリケーション10が1つのリーダ/ライタ2に同時にアクセス可能な共有モードと,1つのアプリケーション10のみが1つのリーダ/ライタ2にアクセス可能な専有モードとを切り替えて設定することができる。共有モードでは,あるアプリケーション10Aがリーダ/ライタ2Aを使用中でも,他のアプリケーション10Bが当該リーダ/ライタ2Aにアクセスすることが可能になる。一方,専有モードでは,あるアプリケーション10Aがリーダ/ライタを使用中には,他のアプリケーション10Bがリーダ/ライタにアクセスすることが不可能になる。デバイスドライバ40は,例えば,各アプリケーション10からミドルウェア20を介して要求されるモード指定に基づいて,上記共有モードと専有モードとを切り替えることができる。
このように,デバイスドライバ40により共有モードと専有モードを切り替え可能に構成することで,情報処理装置1において,共有モードでは複数のアプリケーション10が1つのリーダ/ライタ2を同時並行して利用できるようになるため,マルチアプリケーション対応を好適に実現できる。一方,専有モードでは1のアプリケーション10がリーダ/ライタ2を専有してコマンドやレスポンスをやり取りすることで,ICカード3に関する自己の機能を安定して実行できる。
さらに,上記共有モードにおいて,デバイスドライバ40は,あるアプリケーション10からのアクセス権の付与要求に応じて,リーダ/ライタ2に対する独占的なアクセス権を当該アプリケーションに付与する。さらに,デバイスドライバ40は,上記アクセス権を取得しているアプリケーション10からのアクセス権の解除要求に応じて,当該アプリケーションに付与していたアクセス権を解除する。このようなアクセス権を付与することで,共有モードにおいても,デバイスドライバ40は,当該アプリケーション10にアクセス権を付与してから解除するまでの間は,クリティカルセクションとして,当該アプリケーション10から受け付けたコマンドのみを連続して処理し,他のアプリケーション10から受け付けたコマンドの処理を待ち状態として処理しないようにする。このアクセス権の詳細については後述する。
また,デバイスドライバ40は,当該デバイスドライバ40に対応する1つのリーダ/ライタ2に対して,同時にアクセス可能なアプリケーション10の数を所定の最大アクセス数以下に制限する,これにより,上記最大アクセス数より多くのアプリケーション10がリーダ/ライタ2にアクセスすることで,情報処理装置1又はリーダ/ライタ2の負荷が過度に増大してしまうことを防止できる。
次に,引き続き図4を参照して,ICカード3のソフトウェア構成について説明する。図4に示すようにICカード3には,ソフトウェアとして,例えば,ICカード3用のオペレーションシステム(以下,OS)32のみが設けられており,ICカード3用のアプリケーションは設けられておらず,当該アプリケーションをユーザが事後的にICカード3に追加することもできない。ICカード3のメモリ308内には,例えば,予め登録されているディレクトリ構造のデータファイルがあり,このデータファイル内に各種の情報(例えば,電子マネー情報,交通乗車券の履歴情報,ショッピングのポイント情報,電子チケット情報,クーポン情報など)が記憶されている。OS32は,上記情報処理装置1からリーダ/ライタ2を介して受信したコマンドに応じて,上記メモリ308内に記憶されている各種の情報を読み書きする。
このように,本実施形態にかかるICカード3は,ICカード用のアプリケーションは組み込まれておらず,OS32が情報処理装置1からのコマンドに応じてメモリ308内のデータを読み書きするだけのシンプルな構造である。また,このICカード3では,予めOS32で設定されたコマンドを後から変更(解釈変更,追加等)できないようになっている。従って,当該ICカード3を利用する複数のアプリケーション10を情報処理装置1に設けた場合,マルチアプリケーション対応を好適に実現するためには,情報処理装置1側だけで,ICカード3用のミドルウェア20やデバイスドライバ40を好適に設計する必要がある。
次に,図5を参照して,本実施形態にかかるミドルウェア20とデバイスドライバ40の構成について詳細に説明する。なお,図5は,本実施形態にかかるミドルウェア20とデバイスドライバ40の構成を示すブロック図である。
まず,ミドルウェア20の構成について説明する。図5に示すように,ミドルウェア20は,例えば,API22と,ミドルウェアコア部24と,通信情報記憶部26と,デバイス制御部28とを有する。
API22は,上記各アプリケーション10がリーダ/ライタ2,ICカード3を利用するためのコマンドや関数の集合である。このように,ミドルウェア20が,複数のアプリケーション10が共通して利用する基本機能であるAPI22を提供することで,各アプリケーション10の開発を容易にすることができる。
ここで,ミドルウェア20が提供するAPI22の具体例について説明する。例えば,ミドルウェア20は,ICカード3に送信するコマンドを作成するためのAPI22を提供する。これにより,アプリケーション10は,このAPI22を利用して,当該コマンドを作成するようミドルウェア20に指示することができる。
また,ミドルウェア20は,アプリケーション10が,リーダ/ライタ2(アクセスしたいリーダ/ライタ2)の接続ポート名(例えばUSBポート名)や,通信速度などを指定できるようなAPI22を提供する。これにより,アプリケーション10は,このAPI22を利用することで,ミドルウェア20に対して,自身がアクセスを所望するリーダ/ライタ2や,リーダ/ライタ2との間の通信速度を指定できるようになる。
また,ミドルウェア20は,アプリケーション10が,上記共有モード又は専有モードのいずれかを選択できるようなAPI22を提供する。これにより,アプリケーション10は,このAPI22を利用することで,リーダ/ライタ2にアクセスする際に共有モード又は専有モードのいずれでアクセスするかを選択できるようになる。デバイスドライバ40は,かかるアプリケーション10からのモード選択に応じて,共有モードと専有モードを切り替える設定を行う。
さらに,ミドルウェア20は,上記共有モードにおいて,アプリケーション10がリーダ/ライタ2へのアクセス権の付与/解除を要求できるようなAPI22を提供する。これにより,アプリケーション10は,例えば,連続して処理する必要がある一連のコマンドを実行する場合に,このAPI22利用して,ミドルウェア20を介してデバイスドライバ40に対しアクセス権の付与/解除を要求して,リーダ/ライタ2への独占的なアクセス権を取得/解放できるようになる。
次に,ミドルウェアコア部24は,ミドルウェア20の中心的な処理を行う心臓部である。このミドルウェアコア部24は,アプリケーション10からの指示に基づき,上記各種のコマンドを作成して,デバイスドライバ40に当該コマンドの実行を要求する。また,このミドルウェアコア部24は,当該コマンドの暗号化/復号化処理,ユーティリティ処理なども行う。さらに,ミドルウェアコア部24は,作成したコマンドをデバイス制御部28に出力し,また,デバイス制御部28から入力されたレスポンスをアプリケーション10に出力する。
また,ミドルウェアコア部24は,アプリケーション10がリーダ/ライタ2を使用可能な状態とする(リーダ/ライタ2をオープンする)ために,リーダ/ライタ2を走査して,アプリケーション10が使用可能なリーダ/ライタ2を選択する。ミドルウェアコア部24は,この使用可能な状態とするリーダ/ライタ2の選択を,上述したようにアプリケーション10からの指定に基づいて行ってもよいし,或いは,各アプリケーション10が使用可能なリーダ/ライタ2のリストに基づき各リーダ/ライタ2を順次選択してもよい。
さらに,ミドルウェアコア部24は,通信情報記憶部26に記憶されている通信情報を管理する。この通信情報記憶部26は,例えば上記情報処理装置1の記憶装置110などで構成される。この通信情報記憶部26は,リーダ/ライタ2にアクセス可能な各アプリケーション10A,10B,10Cに対応する通信情報テーブル27A,27B,27C(以下,通信情報テーブル27と総称する場合もある。)を記憶している。この通信情報テーブル27は,各アプリケーション10A,10B,10Cとリーダ/ライタ2との間の通信状態に関する情報を含むテーブルである。この通信情報テーブル27に含まれる通信情報は,例えば,ドライバハンドル,アクセス権待ちタイムアウト時間,通信タイムアウト時間,エラーコード,トランザクション情報などである。これらの通信情報の詳細については後述する。
デバイス制御部28は,デバイスドライバ40のコマンド受付部42に対して,上記ミドルウェアコア部24によって作成されたコマンドの実行処理を依頼して,リーダ/ライタ2やICカード3等のデバイスを制御する。また,デバイス制御部28は,デバイスドライバ40のレスポンス解析部45から受け取ったレスポンスをミドルウェアコア部24に出力する。
次に,デバイスドライバ40の構成について説明する。図5に示すように,デバイスドライバ40は,例えば,コマンド受付部42と,コマンド実行部44と,レスポンス解析部45と,通信情報記憶部46と,バス制御部48とを有する。
コマンド受付部42は,ミドルウェア20から要求されたコマンドを受け付け,コマンド実行部44に当該コマンドの実行を依頼する。コマンド実行部44は,コマンド受付部42から依頼されたコマンドを実行して,当該コマンドをリーダ/ライタ2を介してICカード3に送信するようにバス制御部48に依頼する。レスポンス解析部45は,リーダ/ライタ2からバス制御部48を介して受け取ったレスポンスを解析し,ミドルウェア20に出力する。
バス制御部48は,コマンド実行部44,レスポンス解析部45からの指示に従い,情報処理装置1内におけるリーダ/ライタ2と通信するためのハードウェア(例えば,図2の外部バス106,インタフェース107,接続ポート111等)を制御する。このバス制御部48を介して,コマンド実行部及びレスポンス解析部45とリーダ/ライタ2との間で,コマンド及びレスポンスをやり取りできる。
このような構成のデバイスドライバ40において,コマンド受付部42は,アプリケーション10からのモード指定に基づき,コマンドの受付モードを上記共有モードまたは専有モードに設定することができる。専有モードに設定されているときには,コマンド受付部42は,専有モードを指定した特定の1つのアプリケーション10からのコマンドのみを受け付けて,コマンド実行部44にコマンドの実行を依頼し,他のアプリケーション10からのコマンドは受け付けない。
一方,共有モードに設定されているときには,コマンド受付部42は,複数のアプリケーション10からのコマンドを受け付ける。そして,コマンド受付部42は,この共有モードにおいて,複数のアプリケーション10から複数のコマンドを受け取った場合には,これらのコマンドを受け取り順に順次実行するようにコマンド実行部44に依頼する。
具体的には,コマンド受付部42は,アプリケーション10からのコマンドの実行要求を受け付けると,他のアプリケーション10からの処理を実行していないシグナル状態であるか否かを判定し,シグナル状態であれば,当該受け付けたコマンドを即時実行するようコマンド実行部44に依頼する。一方,他のコマンドの処理を実行している非シグナル状態であれば,当該受け付けたコマンドを実行待ち状態とし,当該他のコマンドの処理が終了し,かつ,先に処理待ち状態となっているコマンドの処理が全て終了した時点で,上記受け付けたコマンドを実行するようコマンド実行部44に依頼する。このように,コマンド受付部42は,先に受け付けたコマンドの実行が終了すると,非シグナル状態からシグナル状態とし,次に受け付けたアプリケーション10からのコマンドを実行できるようにする。これにより,各コマンドの原子性を確保(即ち,各コマンドの処理が成功したか失敗したかを明確化)することができる。
さらに,上記共有モードに設定されている場合において,コマンド受付部42は,アプリケーション10からのアクセス権の付与/解除要求に応じて,リーダ/ライタ2に対するアクセス権を要求元のアプリケーション10に付与/解除することができる。これにより,上記要求元のアプリケーション10にアクセス権を付与してから解除するまでの間(換言すると,アプリケーション10がアクセス権を取得してから解放するまでの間)は,クリティカルセクションとして,当該アクセス権が付与されたアプリケーション10から受け取ったコマンドのみを実行するようにし,他のアプリケーション10から受け取ったコマンドを実行待ち状態とする。これにより,上記クリティカルセクションの間は,当該アプリケーション10からのコマンドのみの実行を許可し,他のアプリケーション10からのコマンド実行を禁止することができる。
また,複数のアプリケーション10から1つのリーダ/ライタ2にコマンド実行要求が重なると,コマンドの処理が遅延するため,各アプリケーション10の機能に影響を与えてしまう可能性がある。そこで,コマンド受付部42は,あるアプリケーション10からのコマンドを処理中(非シグナル状態)のときに,他のアプリケーション10からのコマンドを受け取ると,当該コマンドの受け取り時から,各アプリケーション10から指定された所定のアクセス権待ちタイムアウト時間が経過するまでは,当該他のアプリケーション10からのコマンドの実行を待機状態にする。この結果,上記アクセス権待ちタイムアウト時間が経過する前に,先行するコマンドの処理が終了したときには,待機中の上記他のアプリケーション10からのコマンドを処理する。一方,先行するコマンドの処理が終了しないまま上記アクセス権待ちタイムアウト時間が経過したときには,当該他のアプリケーション10にタイムアウトエラーを通知する。
これにより,コマンド受付部42は,各アプリケーション10からのコマンド実行前にタイムアウトのチェックができるようになる。このため,各アプリケーション10のコマンド実行の待機時間を上記アクセス権待ちタイムアウト時間以下に抑制できる。従って,1つのリーダ/ライタ2に対して複数のアプリケーション10からのコマンド実行要求が重なったときに,コマンドの処理遅延に伴うアプリケーション10への悪影響を排除できる。なお,デバイスドライバ40からのタイムアウトエラー通知を受け取ったアプリケーション10は,例えば,同一コマンドの実行要求をリトライしたり,或いは,当該コマンドが実行されなかった旨のエラー表示を行いユーザに通知したりできる。
なお,コマンド実行中は,バス制御部48でリーダ/ライタ2との通信中に発生したタイムアウトも,通信タイムアウトとしてアプリケーション10に通知できる。これにより,デバイスドライバ40とリーダ/ライタ2との間の通信異常が原因で,予め設定された通信タイムアウト時間以上にわたりコマンドの処理が完了しない場合に,アプリケーション10は当該通信エラーを把握できる。
また,上記デバイスドライバ40のコマンド実行部44及びレスポンス解析部45は,通信情報記憶部46に記憶されている通信情報を管理する。通信情報記憶部46は,例えば上記情報処理装置1の記憶装置110などで構成される。この通信情報記憶部46は,リーダ/ライタ2にアクセス可能な各アプリケーション10A,10B,10Cに対応する通信情報テーブル47A,47B,47C(以下,通信情報テーブル47と総称する場合もある。)を記憶している。この通信情報テーブル47は,各アプリケーション10A,10B,10Cとリーダ/ライタ2との間の通信状態に関する情報を含むテーブルである。この通信情報テーブル47に含まれる通信情報は,例えば,要求元アプリケーションID,レスポンスデータ,アクセス権待ちタイムアウト時間,通信タイムアウト時間,エラーコード,リーダ/ライタモード情報,トランザクション情報などである。
要求元アプリケーションIDは,コマンドの実行要求元のアプリケーション10を識別するためのIDである。この要求元プロセスIDにより,通信情報テーブル47A,47B,47Cと,各アプリケーション10A,10B,10Cとをそれぞれ関連づけることができる。
レスポンスデータは,上記リーダ/ライタ2からICカード3に送信されたコマンドの応答として,ICカード3からリーダ/ライタ2に送信されたレスポンスのデータである。このレスポンスデータは,リーダ/ライタ2がICカード3から受信したレスポンスに基づき作成して,デバイスドライバ40内の通信情報テーブル47に保持される。このように,各アプリケーション10に対応する通信情報テーブル47内に,各アプリケーション10に関するレスポンスデータをそれぞれ保持しておくことにより,デバイスドライバ40は,複数のアプリケーション10に関して複数のコマンド,レスポンスをやり取りするときでも,各アプリケーション10についてどのようなレスポンスが返信されている状態であるかを把握できるようになる。
アクセス権待ちタイムアウト時間は,上記のように各アプリケーション10からのコマンドの実行待ちを行う際の上限となる時間である。このアクセス権待ちタイムアウト時間は,アプリケーション10ごとに異なる時間値を自由に設定でき,各アプリケーション10からの指定可能である。デバイスドライバ40は,初期段階では,各通信情報テーブル47内に,アクセス権待ちタイムアウト時間のデフォルト値(例えば5秒)を保持しており,各アプリケーション10からアクセス権待ちタイムアウト時間が指定された場合には,アクセス権待ちタイムアウト時間をデフォルト値から,指定された時間値(例えば10秒)に変更する。
通信タイムアウト時間は,上記のようにデバイスドライバ40とリーダ/ライタ2との通信時間を制限する際の上限時間である。この通信タイムアウトも,アプリケーション10ごとに異なる時間値を設定することができる。デバイスドライバ40は,リーダ/ライタにコマンドを出力してから,所定の通信タイムアウト時間以上レスポンスがなければ,通信タイムアウトとして,アプリケーション10に通知する。
エラーコードは,ドライバの中で発生する多様なエラーを表すコードであり,デバイスドライバ40によって作成される。デバイスドライバ40は,このエラーコードを保持することにより,各アプリケーション10に関する処理でどのようなエラーが生じたかを把握できる。
リーダ/ライタモード情報は,各アプリケーション10がリーダ/ライタ2にアクセス可能であるか否かを表す情報である。アプリケーション10がリーダ/ライタ2にアクセス可能にする(アプリケーション10がリーダ/ライタ2をオープンする)ためには,まず,アプリケーション10とリーダ/ライタ2との間で擬似的な相互認証を行う必要がある。本実施形態では,デバイスドライバ40が当該擬似的な相互認証機能を有しているので,デバイスドライバ40は,この擬似的な相互認証が成功したか否かを,リーダ/ライタモード情報として保持している。これにより,デバイスドライバ40は,どのアプリケーション10がリーダ/ライタ2にアクセス可能であるかを把握できる。
トランザクション情報は,デバイスドライバ40とリーダ/ライタ2との間の通信情報である。
以上では,デバイスドライバ40の通信情報テーブル47内の各通信情報について説明した。なお,上記ミドルウェア20の通信情報テーブル27内の各通信情報も,これら通信情報テーブル47内の各通信情報と同様であるので,詳細説明は省略する。ただし,通信情報テーブル27内のドライバハンドルは,各アプリケーション10がミドルウェア20を介してデバイスドライバ40にアクセスするためのIDであり,アプリケーション10がどのデバイスドライバ40にアクセスしているかを表す。
上述したように,デバイスドライバ40およびミドルウェア20は,リーダ/ライタ2にアクセス可能となったアプリケーション10ごとに,タイムアウト時間やリーダ/ライタ2との通信結果などの通信情報を保持している。これより,各アプリケーション10は,任意のタイミングで通信結果をミドルウェア20から取得できるようなる。さらに,デバイスドライバ40は,アプリケーション10ごとに任意のタイムアウト時間値を設定することができるようになる。
以上,本実施形態にかかる情報処理装置1の構成について説明し,特に,デバイスドライバ40とミドルウェア20の構成について詳述した。次に,上記構成の情報処理装置1におけるアプリケーション調停方法について説明する。
まず,本実施形態にかかるアプリケーション調停方法における,リーダ/ライタ2のオープン処理について説明する。各アプリケーション10がリーダ/ライタ2を使用してコマンドやレスポンスをやり取りするためには,まず,アプリケーション10に対してリーダ/ライタ2をオープンする必要がある。この「リーダ/ライタ2のオープン」とは,アプリケーション10とリーダ/ライタ2との間でデバイスドライバ40を介して擬似的な相互認証を行い,アプリケーション10がリーダ/ライタ2を使用可能な状態(例えば,アプリケーション10とリーダ/ライタ2との間でコマンドやレスポンスをやり取り可能な状態)にすることをいう。このオープン処理は,ミドルウェア20とリーダ/ライタ2とが協同して動作することで実行される。
ミドルウェア20は,各アプリケーション10からのリーダ/ライタ2のオープン要求(使用要求)に応じて,オープン対象のリーダ/ライタ2を選択し,選択したオープン対象のリーダ/ライタ2に対応するデバイスドライバ40に対して,リーダ/ライタ2のオープンを実行するよう(アプリケーション10が当該オープン対象のリーダ/ライタ2を使用可能な状態にするよう)要求する。
情報処理装置1に複数のリーダ/ライタ2が接続されている場合,ミドルウェア20が複数のリーダ/ライタ2の中からオープン対象のリーダ/ライタ2を選択する方法としては,例えば,(1)アプリケーション10から指定されたリーダ/ライタ2をオープン対象のリーダ/ライタ2として選択する方法と,(2)ミドルウェア20が保持しているリストを利用して,アプリケーション10が使用可能な複数のリーダ/ライタ2を,オープン対象のリーダ/ライタ2として自動的に順次選択する方法とがある。
まず,図6を参照して,上記(1)の選択方法を用いたミドルウェア20の処理フローについて説明する。なお,図6は,本実施形態にかかるミドルウェア20がアプリケーション10から指定されたリーダ/ライタ2をオープンする処理を示すフローチャートである。
図6に示すように,まず,ミドルウェア20は,アプリケーション10から,アプリケーション10により指定されたリーダ/ライタ2(RWi)のオープン要求を受け付ける(ステップS10)。各アプリケーション10は,自己の使用可能なリーダ/ライタ2の識別情報(例えば,ポート名,リーダ/ライタID等)を保持している。アプリケーション10は,ミドルウェア20に対してオープン要求を行う場合,オープンを所望するリーダ/ライタ2(RWi)の識別情報をオープン要求に付加することで,オープン対象のリーダ/ライタ2を指定することができる。ミドルウェア20は,上記アプリケーション10から指定されたリーダ/ライタ2(RWi)をオープン対象のリーダ/ライタ2として選択する。
次いで,ミドルウェア20は,アプリケーション10により指定されたリーダ/ライタ2(RWi)をオープンするよう,当該リーダ/ライタ2(RWi)に対応するデバイスドライバ40に対して要求する(ステップS12)。このオープン実行要求を受けたデバイスドライバ40は,上記指定されたリーダ/ライタ2(RWi)が当該アプリケーション10によりアクセス可能な状態であるか否かを所定の判定条件に基づき判定し,アクセス可能な状態であると判定すれば,当該リーダ/ライタ2(RWi)のオープンし,アクセス可能な状態でないと判定すれば,当該リーダ/ライタ2(RWi)をオープンしない。このデバイスドライバ40による処理の詳細は後述する(図8参照)。
次いで,ミドルウェア20は,デバイスドライバ40からのオープン成功/失敗の通知に基づき,リーダ/ライタ2(RWi)のオープンに成功したか否かを判別する(ステップS14)。この結果,リーダ/ライタ2(RWi)のオープンに成功している場合には,ミドルウェア20は,上記オープン要求元のアプリケーション10がリーダ/ライタ2(RWi)を使用できるように各種の設定(例えば,上記通信情報テーブル27の設定等)を行い,当該アプリケーション10にオープン成功を通知する(ステップS16)。この場合には,当該アプリケーション10がリーダ/ライタ2(RWi)を使用可能な状態となり,それ以降は両者の間でコマンドやレスポンスをやり取りできるようになる。一方,リーダ/ライタ2(RWi)のオープンに失敗している場合には,ミドルウェア20は,上記オープン要求元のアプリケーション10にオープン失敗を通知する(ステップS18)。この場合,当該アプリケーション10がリーダ/ライタ2(RWi)を使用可能な状態とはならず,両者の間でコマンドやレスポンスをやり取りすることはできない。
以上のように図6の処理フローでは,ミドルウェア20は,アプリケーション10から指定されたリーダ/ライタ2をオープンするように制御する。
次に,図7を参照して,上記(2)の選択方法を用いたミドルウェア20の処理フローについて説明する。なお,図7は,本実施形態にかかるミドルウェア20が複数のリーダ/ライタ2を順次走査してオープンする処理を示すフローチャートである。
図7に示すように,まず,ミドルウェア20は,アプリケーション10から,リーダ/ライタ2のオープン要求(リーダ/ライタ2を使用したい旨の要求)を受け付ける(ステップS20)。図7のフローでは,アプリケーション10は,ミドルウェア20に対し,特定のリーダ/ライタ2を指定せず,情報処理装置1に接続された複数のリーダ/ライタ2のうち少なくともいずれかのリーダ/ライタ2をオープンするよう要求する。これに応じて,ミドルウェア20は,以下の処理フローのように,アプリケーション10が使用可能なリーダ/ライタ2を自動的に検索して順次オープンするよう制御する。
次いで,ミドルウェア20は,自動検索する1又は2以上のリーダ/ライタ2のリストを取得する(ステップS22)。ミドルウェア20は,各アプリケーション10が使用可能なリーダ/ライタ2の識別情報を,自動検索するリーダ/ライタ2のリストとして,アプリケーション10ごとに予め保持している。このように,ミドルウェア20では,アプリケーション10ごとに,どのリーダ/ライタ2を自動検索するかが予め設定されている。なお,このリーダ/ライタ2のリスト設定は,アプリケーション10によって変更可能である。
ミドルウェア20は,上記のようにアプリケーション10からオープン要求を受け付ける(S20)と,当該オープン要求元のアプリケーション10に対応するリストを読み出して,自動検索するリーダ/ライタ2の識別情報を取得する(S22)。図7の例では,合計n台のリーダ/ライタ2(RW1,RW2,…,RWn)がオープン対象のリーダ/ライタ2としてリストアップされており,以下では,RW1,RW2,…,RWnの順で選択してオープン処理を実行する例について説明する。
具体的には,ミドルウェア20は,まず,変数iの初期値を「0」に設定し(ステップS24),この変数iに「1」を加え(ステップS26),さらに,変数iがn以下であるかを確認(ステップS28)して,リーダ/ライタ2(RW1)をオープン対象のリーダ/ライタ2として選択する。
次いで,ミドルウェア20は,このリーダ/ライタ2(RW1)をオープンするよう,当該リーダ/ライタ2(RW1)に対応するデバイスドライバ40に対して要求する(ステップS30)。このステップS28は,上記図6のステップS12と同様である。この結果,ミドルウェア20は,デバイスドライバ40から取得したオープン成功/失敗の通知に基づき,リーダ/ライタ2(RW1)のオープンに成功したか否かを判別する(ステップS32)。この結果,リーダ/ライタ2(RW1)のオープンに成功している場合には,ステップS34に進み,ミドルウェア20は,上記オープン要求元のアプリケーション10がリーダ/ライタ2(RW1)を使用できるように上記各種の設定を行い,当該アプリケーション10にリーダ/ライタ2(RW1)のオープン成功を通知する(ステップS34)。一方,リーダ/ライタ2(RW1)のオープンに失敗している場合には,ステップS26に戻り,ミドルウェア20は,上記リスト内の次のリーダ/ライタ2(RW2)をオープン対象のリーダ/ライタ2として選択して,上記リーダ/ライタ2(RW1)と同様にリーダ/ライタ2(RW2)のオープンを試みる。
このような処理を,いずれかのリーダ/ライタ2のオープンが成功する(ステップS32)まで繰り返す。この結果,n台全てのリーダ/ライタ2(RW1,RW2,…,RWn)のオープンが失敗した場合には,ステップS28で「変数i>n」と判定されてステップS36に進み,ミドルウェア20は,上記オープン要求元のアプリケーション10に対して,全てのリーダ/ライタ2についてオープンできなかった旨を通知する(ステップS36)。
以上のように図7の処理フローでは,ミドルウェア20は,予め設定されたリストの順番に従って,アプリケーション10が使用可能なリーダ/ライタ2(RW1,RW2,…,RWn)の中から,オープン対象のリーダ/ライタ2を自動的に順次選択する。そしてミドルウェア20は,当該選択されたリーダ/ライタに対応する各デバイスドライバ40に対し,当該選択されたリーダ/ライタ2をオープンするよう順次要求して,オープンを試みる。これにより,ミドルウェア20は,アプリケーション10からの要求があった場合に,当該アプリケーション10に適したリーダ/ライタ2を自動的に検索してオープンさせることができる。
なお,上記図7のフローでは,あるリーダ/ライタ2のオープンが成功すれば処理を終了し,他のリーダ/ライタ2のオープンを試みない例について説明したが,かかる例に限定されず,ミドルウェア20が保持するリスト内のリーダ/ライタ2(RW1,RW2,…,RWn)についてオープンを試みて,1つのアプリケーション10に対して複数のリーダ/ライタ2を同時にオープンさせるようにしてもよい。このように同時にオープンされた複数のリーダ/ライタ2を利用するアプリケーション10としては,例えば,複数の選択肢の中からユーザの回答を選択するアンケート機能やクイズ機能を有するアプリケーション10が挙げられる。かかるアプリケーション10では,各選択肢に対応づけられた複数のリーダ/ライタ2のうち,いずれのリーダ/ライタ2にICカード3が接続されたかに基づいて,ユーザの回答を選択することができる。
次に,図8を参照して,本実施形態にかかるデバイスドライバ40が,ミドルウェア20から要求されたリーダ/ライタ2をオープンする処理フローについて説明する。なお,図8は,本実施形態にかかるデバイスドライバ40が,ミドルウェア20から要求されたリーダ/ライタ2をオープンする処理を示すフローチャートである。
図8に示すように,まず,デバイスドライバ40は,ミドルウェア20から,リーダ/ライタ2(RWi)のオープン実行要求を受け付ける(ステップS40)。このリーダ/ライタ2(RWi)のオープン実行要求は,上述した図6の処理フローにおけるステップS12,又は,図7の処理フローにおけるステップS30にて成されたものである。
このオープン実行要求に応じて,デバイスドライバ40は,自身が保持しているリーダ/ライタ2の識別情報(RWj)を取得し(ステップS42),この識別情報(RWj)と,上記ミドルウェア20から要求されたリーダ/ライタ2の識別情報(RWi)とが一致するか否かを判定する(ステップS42)。デバイスドライバ40は,リーダ/ライタ2と1:1対応で設けられており,各デバイスドライバ40は,自身に対応するリーダ/ライタ2(RWj)のみを制御可能である。そこで,デバイスドライバ40は,上記識別情報(RWj)と上記識別情報(RWi)とを比較し,両者が一致すれば,自身に対応するリーダ/ライタ2に関する正当なオープン要求を受け付けたと判断できるため,ステップS46に進み処理を続ける。一方,識別情報(RWj)と上記識別情報(RWi)とが一致しない場合には,デバイスドライバ40に対応していない別のリーダ/ライタ2(RWi)に関するオープン要求を受け付けたことになるため,ステップS56に進み,リーダ/ライタ2(RWi)のオープンを失敗とし,その旨をミドルウェア20に通知する。
次いで,ステップS46では,デバイスドライバ40は,リーダ/ライタ2(RWi=RWj)が既に他のアプリケーション10に対して専有モードでオープンされているか否かを判定する(ステップS46)。専有モードでは,1つのアプリケーション10のみがリーダ/ライタ2(RWi)を使用できるので,後続の他のアプリケーション10からのオープン要求を禁止する必要がある。そこで,本ステップS46で,リーダ/ライタ2(RW)が専有モードでオープンされていると判定された場合には,ステップS56に進み,リーダ/ライタ2(RWi)のオープンを失敗とし,その旨をミドルウェア20に通知する。一方,リーダ/ライタ2(RWi)が専有モードでオープンされていない(例えば,他のいずれのアプリケーション10によってもオープンされていない,或いは,他のアプリケーション10によってオープンされているが共有モードでオープンされている)と判定された場合には,ステップS48に進む。
次いで,ステップS48では,デバイスドライバ40は,リーダ/ライタ2(RWi)に対して既にアクセスしているアプリケーション10の数が,所定の最大アクセス数に達しているか否かを判定する(ステップS48)。上述したように共有モードでは,複数のアプリケーション10が1つのリーダ/ライタ2に対して同時にアクセスできるが,情報処理装置1の処理装置(CPU101等)の負荷等を考慮して,1つのリーダ/ライタ2に対してアクセス可能なアプリケーション10の数を,所定の最大アクセス数(例えば8つ)以下に制限している。従って,本ステップS46では,デバイスドライバ40は,リーダ/ライタ2(RWi)に対して既にアクセスしているアプリケーション10の数が,所定の最大アクセス数に達しているか否かを判定し,所定の最大アクセス数に達していると判定した場合には,ステップS56に進み,リーダ/ライタ2(RWi)のオープンを失敗とし,その旨をミドルウェア20に通知する。これにより,上記オープン要求元のアプリケーション10が更にアクセス可能となることで,上記最大アクセス数を超える数のアプリケーション10が上記リーダ/ライタ2(RWi)にアクセスしてしまうことを防止でき,処理装置の負荷増大を抑制できる。一方,上記リーダ/ライタ2(RWi)アクセス可能なアプリケーション10の数が,まだ所定の最大アクセス数に達していないと判定された場合には,ステップS50に進む。
その後,ステップS50では,ミドルウェア20は,上記オープン要求元のアプリケーション10をリーダ/ライタ2(RWi)に接続して,リーダ/ライタ2(RWi)の動作確認を行い(ステップS50),リーダ/ライタ2(RWi)が正常に動作するか否かを判定する(ステップS52)。この判定の結果,リーダ/ライタ2(RWi)が正常に動作しないと判定された場合には,ステップS56に進み,リーダ/ライタ2(RWi)のオープンを失敗とし,その旨をミドルウェア20に通知する。これにより,リーダ/ライタ2(RWi)の動作エラーが生じる場合に,アプリケーション10に対してリーダ/ライタ2(RWi)をオープンしないようにできる。一方,リーダ/ライタ2(RWi)が正常に動作すると判定された場合には,ステップS54に進み,デバイスドライバ40は,上記オープン要求元のアプリケーション10に対するリーダ/ライタ2(RWi)のオープンを成功とし,上記オープン要求元のアプリケーション10がリーダ/ライタ2(RW1)を使用できるように上記各種の設定(通信情報テーブル47の設定等)を行い,また,オープン成功の旨をミドルウェア20に通知する(ステップS54)。
以上のように,デバイスドライバ40は,ミドルウェア20からのオープン実行要求に応じて,上記各種の判定条件(S44,S46,S48,S52)に基づいて,ミドルウェア20から指定されたリーダ/ライタ2(RWi)が,オープン要求元のアプリケーション10によりアクセス可能な状態であるか否かを判定し,アクセス可能な状態であると判定すれば,当該リーダ/ライタ2(RWi)をオープンすることができる。
以上,図6〜図8を参照して,本実施形態にかかるアプリケーション調停方法におけるリーダ/ライタ2のオープン処理方法について詳述した。次に,図9〜図12を参照して,本実施形態にかかるアプリケーション調停方法におけるコマンド処理方法について詳細に説明する。
上記のように,共有モードに設定されているときには,デバイスドライバ40のコマンド受付部42は,複数のアプリケーション10からの複数のコマンドを順次受け付けて,これらのコマンドを受け取った順に順次実行するようコマンド実行部44に依頼する。より詳細には,共有モードにおいては,コマンド受付部42は,あるアプリケーション10からのコマンド実行要求をミドルウェア20から受け付けると,コマンド実行部44において,それ以前に実行要求を受けた他のアプリケーション10からのコマンドを実行しているか否かを判定する。この判定の結果,いずれのコマンドも実行していないシグナル状態であれば,コマンド受付部42は,上記受け付けたコマンドを即時実行するようコマンド実行部44に依頼し,非シグナル状態とする。一方,別のコマンドを実行している非シグナル状態であれば,コマンド受付部42は,上記受け付けたコマンドを実行待ち状態とし,上記別のコマンドの実行が終了しシグナル状態となった時点で,上記受け付けたコマンドを実行するようコマンド実行部44に依頼する。
ここで,このようなコマンド処理について,図9の具体例を参照して説明する。なお,図9A〜Cは,本実施形態にかかる複数のアプリケーション10からのコマンド処理方法の具体例を示す模式図である。
図9A〜Cでは,3つのアプリケーション10A,10B,10Cからデバイスドライバ40に対して,(1)コマンドA→(2)コマンドA’→(3)コマンドA”→(4)コマンドB→(5)コマンドB’→(6)コマンドB”の順序で,6つのコマンドの実行要求が発生する例を示している。
この場合,デバイスドライバ40は,まず図9Aに示すように,最初に受け取ったアプリケーション10AからのコマンドAを実行してリーダ/ライタ2を制御し,このコマンドAの実行中は,他のアプリケーション10B,10Cからそれぞれ受け取ったコマンドA’とコマンドA”を実行待ち状態とする。なお,この時点では,コマンドB,コマンドB’,コマンドB”は未発生である。
次いで,最初のコマンドAの実行が終了すると,デバイスドライバ40は,図9Bに示すように,2番目に受け取ったコマンドA’を実行してリーダ/ライタ2を制御し,このコマンドA’の実行中は,他のアプリケーション10B,10Aからそれぞれ受け取ったコマンドA”とコマンドBを実行待ち状態とする。なお,アプリケーション10Aは,デバイスドライバ40からの上記コマンドAの実行終了の通知に応じて,次のコマンドBの実行をデバイスドライバ40に要求するが,上記のように,デバイスドライバ40は,このコマンドBよりも先に受け取った他のアプリケーション10B,10CからのコマンドA’とコマンドA”の処理を優先する。
その後,2番目のコマンドA’の実行が終了すると,デバイスドライバ40は,図9Cに示すように,3番目に受け取ったコマンドA”を実行してリーダ/ライタ2を制御し,このコマンドA”の実行中は,他のアプリケーション10A,10Bからそれぞれ受け取ったコマンドBとコマンドB’を実行待ち状態とする。その後は,デバイスドライバ40は,上記と同様にして,コマンドB,コマンドB’及びコマンドB”を受け取り順に順次実行する。
次に,図9の例のコマンド処理シーケンスについて,図10を参照してより詳細に説明する。なお,図10は,本実施形態にかかる情報処理装置1におけるコマンド処理フローの具体例を示すシーケンス図である。
図10に示すように,まず,アプリケーション10Aからのオープン要求に応じて,ミドルウェア20及びデバイスドライバ40は,上述した図6〜図8の手順に従い,アプリケーション10Aに対してリーダ/ライタ2をオープンする(ステップS60,S61)。また同様にして,アプリケーション10Bに対してリーダ/ライタ2がオープンされ(ステップS62,S63),アプリケーション10Cに対してリーダ/ライタ2がオープンされる(ステップS64,S65)。これにより,アプリケーション10A,10B,10Cは,それぞれリーダ/ライタ2を使用可能な状態になり,リーダ/ライタ2を介してICカード3との間でコマンド,レスポンスをやり取りできるようになる。
次いで,最初にアプリケーション10Aがミドルウェア20を介してデバイスドライバ40にコマンドAの実行要求を行うと(ステップS66),デバイスドライバ40は,このコマンドAを即時実行して,リーダ/ライタ2を介してICカード3にコマンドAを送信し(ステップS67),このコマンドAに対する応答としてICカード3からリーダ/ライタ2を介してレスポンスAを受け取り,アプリケーション10Aに出力する(ステップS70)。このコマンドAの実行中(S67〜S70の間)に,アプリケーション10Bがデバイスドライバ40にコマンドA’の実行要求をし(ステップS68),さらにアプリケーション10Cがデバイスドライバ40にコマンドA”の実行要求をしたとしても(ステップS69),デバイスドライバ40は,これらのコマンドA’及びコマンドA”を実行待ち状態として,アプリケーション10B,10Cを待機させる。そして,デバイスドライバ40は,コマンドAの実行が完了した(ステップS70)後に,コマンドA’を実行してICカード3に送信し(ステップS71),これに応じてICカード3からレスポンスA’を受け取る(ステップS73)。さらに,このコマンドA’の実行が完了した(ステップS73)後に,コマンドA”を実行して(ステップS74),ICカード3からレスポンスA”を受け取る(ステップS76)。
さらに,デバイスドライバ40は,上記と同様にして,アプリケーション10A,10B,10Cから順次,実行要求されたコマンドB,B’,B”(ステップS72,S75,S78)についても,先行するコマンドA”,B,B’の実行が完了(ステップS76,S79,S81)するまで待機させ,当該完了後に上記コマンドB,B’,B”をそれぞれ実行する(ステップS77,S80,S82)。そして,デバイスドライバ40が最後に受け取ったコマンドB”に応じて受け取ったレスポンスB”(ステップS83)をアプリケーション10Cに出力すると,すべての処理が終了する。
以上のように,本実施形態にかかるコマンド処理方法では,原則として,デバイスドライバ40が各アプリケーション10から受け取ったコマンドを受け取り順に順次処理する。これによって,複数のアプリケーション10が1つのリーダ/ライタ2を同時に使用することができるようになり,マルチアプリケーション対応を好適に実行できる。
ところが,ICカード3に対して用いられるコマンドの中には,特定のコマンドを実行後に別のコマンドを実行すると,ICカード3の状態が変わってしまうコマンドが存在する。このため,共有モードにおいて,あるアプリケーション10がリーダ/ライタ2をオープンして,連続処理する必要がある一連の複数のコマンドを実行する途中で,他のアプリケーション10からのコマンドが割り込みで実行されてしまうと,上記一連のコマンドの実行が失敗してしまい,アプリケーション10にとって予期せぬ動作になる可能性がある。
例えば,コマンドAがアプリケーション10AとICカード3との間で相互認証するというコマンドである場合に,他のアプリケーション10BからコマンドA’(例えば,ポーリングコマンドや,読み書きコマンド)が割り込まれると,コマンドA’の種類によっては,上記相互認証がなされていない状態に強制的に戻されてしまう場合がある。この場合,コマンドBがコマンドAでの相互認証済みを前提としたコマンドであると,当該コマンドBが失敗してしまう。
そこで,本実施形態では上述したように,ミドルウェア20は,各アプリケーション10に対して,リーダ/ライタ2へのアクセス権の付与/解除を要求できるようなAPI22を提供し,さらに,デバイスドライバ40は,アプリケーション10からのアクセス権の付与/解除要求に応じて,リーダ/ライタ2に対するアクセス権を要求元のアプリケーション10に付与/解除することができるようになっている。これにより,上記要求元のアプリケーション10がアクセス権を取得してから開放するまでの間(即ち,クリティカルセクションの間)は,当該アプリケーション10からのコマンド実行のみを許可し,他のアプリケーション10からのコマンド実行を禁止することができるようになる。
さらに,デバイスドライバ40は,あるアプリケーション10がアクセス権を取得している間に,他のアプリケーション10からのコマンドを受け取ると,当該コマンドの受け取り時から所定のアクセス権待ちタイムアウト時間が経過するまでは,当該他のアプリケーション10からのコマンドの処理を待機する。そして,上記アクセス権待ちタイムアウト時間が経過したときには,他のアプリケーション10にタイムアウトエラーを通知するようになっている。
ここで,図11を参照して,上記アクセス権の付与/解除と,アクセス権待ちタイムアウトの具体例について説明する。なお,図11は,本実施形態にかかるアプリケーション10に対するアクセス権の付与/解除と,アクセス権待ちタイムアウトの具体例を示す模式図である。
図11の例では,3つのアプリケーション10A,10B,10Cからデバイスドライバ40に対して,(1)アクセス権の取得コマンド→(2)コマンドA,(3)コマンドA’→(4)コマンドB→(5)コマンドB’→(6)コマンドA”→(7)コマンドC→(8)コマンドD→(9)コマンドC’→(10)コマンドB”→(11)アクセス権の解放コマンドの順序で,コマンド実行要求が発生する例を示している。また,アプリケーション10Aが実行要求するコマンドA,B,C,Dは,連続して処理する必要がある一連のコマンドであるとする。
この場合,アプリケーション10Aは,最初のコマンドAを実行要求する前に,デバイスドライバ40に対してアクセス権の付与を要求するコマンド(アクセス権取得コマンド)を出力し,また,最後のコマンドDの実行が完了した後に,デバイスドライバ40に対してアクセス権の解除を要求するコマンド(アクセス権解放コマンド)を出力する。デバイスドライバ40は,上記アクセス権の付与要求に応じて,アプリケーション10Aに対してアクセス権を付与し,また,上記アクセス権の解除要求に応じて,アプリケーション10Aに付与していたアクセス権を解除する。なお,デバイスドライバ40は,アプリケーション10Aに対するアクセス権の付与を表す情報を保持しており,アクセス権が付与されていない他のアプリケーション10B,10Cと区別することができる。
これにより,アプリケーション10がアクセス権を取得して解放するまでのクリティカルセクションの間は,他のアプリケーション10B,10Cからのコマンド実行を禁止して,アプリケーション10Aからの一連のコマンドA,B,C,Dを連続して実行させることができる。また,アクセス権が解除された後は,受け取り順にコマンドが実行される。この結果,図11の例では,コマンドA→コマンドB→コマンドC→コマンドD→コマンドA’→コマンドB’→コマンドA”→コマンドC’→コマンドB”の順で,コマンドが実行されるようになる。
また,図11の例では,アプリケーション10AからのコマンドBの実行中に,アプリケーション10BからのコマンドA’と,アプリケーション10CからのコマンドA”とがアクセス権待ち状態となっている。この場合,デバイスドライバ40は,コマンドA’とコマンドA”の実行要求を受け付けてからの経過時間を計時しており,コマンドBの実行が完了する前に,当該経過時間が各アプリケーション10B,10Cから指定されたアクセス権待ちタイムアウト時間以上となれば,アプリケーション10B,10Cにアクセス権待ちタイムアウトエラーを通知する。これにより,アプリケーション10B,10Cの待機時間を制限し,1つのリーダ/ライタ2に処理が集中して負荷が増大しないようにできる。
次に,図12を参照して,上記アクセス権の付与/解除と,アクセス権待ちタイムアウトを行うコマンド処理方法について更に説明する。なお,図12は,本実施形態にかかる情報処理装置1におけるアクセス権付与を伴うコマンド処理フローの具体例を示すシーケンス図である。
図12に示すように,まず,図10と同様に各アプリケーション10A,10B,10Cに対してリーダ/ライタ2がオープンされる(ステップS100〜S105)。
次いで,アプリケーション10Aは,ミドルウェア20を介してデバイスドライバ40に対して,リーダ/ライタ2へのアクセス権の付与を要求して,アクセス権を取得する(ステップS106)。このアクセス権の付与により,デバイスドライバ40は,他のアプリケーション10B,10Cからのコマンドを実行できなくなる。なお,このようなアクセス権の付与時や解除時には,ミドルウェア20は,アクセス権の付与/解除のインタフェースとなるだけであり,アプリケーション10からAPI22を呼び出されると,アクセス権の付与/解除を要求するコマンドをデバイスドライバ40に出力する。デバイスドライバ40は,アプリケーション10からアクセス権の付与/解除要求を受けると,アクセス権の付与/解除の可否を判断した上で,アクセス権の付与/解除を設定し,その結果をミドルウェア20を介してアプリケーション10に通知する。
その後,アクセス権を取得したアプリケーション10Aが,ミドルウェア20を介してデバイスドライバ40に対して,一連のコマンドA,B,Cの実行要求を順次行うと(ステップS107,S111,S115),デバイスドライバ40は,このコマンドA,B,Cを即時実行して,リーダ/ライタ2を介してICカード3にコマンドA,B,Cを送信し(ステップS108,S112,S116),このコマンドAに対する応答としてICカード3からリーダ/ライタ2を介してレスポンスA,B,Cを受け取り,アプリケーション10Aに出力する(ステップS110,S114,S118)。
そして,アプリケーション10Aは,一連のコマンドA,B,Cの全ての処理が完了した(ステップS118)後に,ミドルウェア20を介してデバイスドライバ40に対して,リーダ/ライタ2へのアクセス権の解除を要求して,アクセス権を解放する(ステップS119)。このアクセス権の解放により,デバイスドライバ40は,他のアプリケーション10B,10Cからのコマンドを実行できるようになる。
上記のような,アプリケーション10がアクセス権を取得してから解放するまでのクリティカルセクションの間(ステップS106〜S119)は,他のアプリケーション10Bがデバイスドライバ40にコマンドA’,C’の実行要求をしたとしても(ステップS109,S117),アプリケーション10Aに独占的なアクセス権が付与されているため,デバイスドライバ40は,このコマンドA’,C’の実行をアクセス権待ち状態として,アプリケーション10Bを待機させる。
このうち,先に実行要求されたコマンドA’については,当該コマンドA’の受け取り時点(ステップS109)から,アプリケーション10Bに設定されたアクセス権待ちタイムアウト時間が経過した時点(ステップS113)で,未だ上記アクセス権が解放されていない。このため,デバイスドライバ40は,当該コマンドA’に関してアクセス権待ちタイムアウトエラーをアプリケーション10Bに通知する(ステップS113)。
一方,後に実行要求されたコマンドC’については,当該コマンドC’の受け取り時点(ステップS117)から,アプリケーション10Bに設定されたアクセス権待ちタイムアウト時間が経過する前に,上記アクセス権が解放されている(ステップS119)。このため,デバイスドライバ40は,上記アクセス権の解放後に,当該コマンドC’を実行して,リーダ/ライタ2を介してICカード3にコマンドC’を送信し(ステップS120),この応答としてICカード3からリーダ/ライタ2を介してレスポンスC’を受け取り,アプリケーション10Bに出力する(ステップS121)。
また,上記アプリケーション10Aによるアクセス権の解放後には,別のアプリケーション10Cが,リーダ/ライタ2へのアクセス権を取得することができる(ステップS122)。これにより,アプリケーション10Cが当該アクセス権を取得してから解放するまでのクリティカルセクションの間(ステップS122〜S128)は,デバイスドライバ40は,当該アクセス権を有するアプリケーション10Cから受け付けたコマンドD”のみを実行し(ステップS125,S126),他のアプリケーション10Aから受け付けたコマンドDは,アクセス権待ち状態として実行しない(ステップS123〜S127)。そして,デバイスドライバ40は,このコマンドDの受け取り時点(ステップS123)から,アプリケーション10Aに設定されたアクセス権待ちタイムアウト時間が経過した時点(ステップS127)で,当該コマンドDに関するアクセス権待ちタイムアウトエラーをアプリケーション10Aに通知する(ステップS127)。
以上のように,本実施形態にかかるコマンド処理では,各アプリケーション10からの要求に応じて,リーダ/ライタ2に対する独占的なアクセス権を要求元のアプリケーション10に付与する。これにより,他のアプリケーション10からのコマンドの割り込みを禁止し,連続処理する必要がある一連のコマンドを,確実に連続処理して成功させることができる。従って,アプリケーション10を安定的に動作させることができる。
さらに,上記アクセス権待ちタイムアウトを設けることで,あるアプリケーション10がアクセス権を取得しているときに,他のアプリケーション10が待機する時間を所定時間以下に制限できる。このため,1つのリーダ/ライタ2に複数のアプリケーション10からの処理の集中を防止し,情報処理装置1の負荷を抑制できる。また,アプリケーション10は,アクセス権待ちタイムアウトエラーの通知を受けることで,同一のコマンドをリトライするか,情報処理装置1のモニタにその旨をエラー表示したりできる。
以上,本実施形態にかかる情報処理装置1と,これを用いたICカード3用の複数のアプリケーション10間の調停方法について詳細に説明した。本実施形態によれば,ICカード3用のミドルウェア20,デバイスドライバ40によって,マルチアプリケーション対応を好適に実現できる。このため,ICカード3用のリーダ/ライタ2に接続可能な情報処理装置1において,ICカード3用の複数のアプリケーション10が同時に動作しても,さらには,情報処理装置1に複数のリーダ/ライタ2を接続して複数のアプリケーション10が動作しても,問題なく動作できるようになる。
即ち,デバイスドライバ40によって,複数のアプリケーション10からのコマンド実行要求を順次処理するので,複数のアプリケーション10によって1つのリーダ/ライタ2を同時に使用することができ,複数のアプリケーション10の機能を同時に実現できる。例えば,あるアプリケーション10でICカード3内の電子マネーの残高や購入履歴情報を表示している最中に,別のアプリケーション10によりICカード3内の交通乗車券の履歴情報を表示させることができる。
また,情報処理装置1に複数のリーダ/ライタ2が接続されている場合でも,ミドルウェア20により,各アプリケーション10のアクセス先のリーダ/ライタ2を適切に振り分けることができる。このため,特定のリーダ/ライタ2に対する負荷集中を抑制できるとともに,同時に動作する複数のアプリケーション10の処理効率も向上できる。
また,ICカード3を利用するためのソフトウェアを,アプリケーション10,ミドルウェア20,デバイスドライバ40の3層構造とすることで,リーダ/ライタ2のコマンド仕様が変更されても,ミドルウェア20,デバイスドライバ40にてリーダ/ライタ2の差異を吸収することできるようになるため,過去に開発したアプリケーション10をそのまま動作させることができる。
また,ソフトウェアとしてOS32のみを搭載し,ICカード用のアプリケーションを搭載していないICカード3や,予め設定されたICカード用コマンドを後から変更できないICカード3にアクセスする場合であっても,情報処理装置1側でマルチアプリケーション対応を好適に実現することができる。
以上,添付図面を参照しながら本発明の好適な実施形態について説明したが,本発明は係る例に限定されないことは言うまでもない。当業者であれば,特許請求の範囲に記載された範疇内において,各種の変更例または修正例に想到し得ることは明らかであり,それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば,上記実施形態では,情報処理装置1に複数のリーダ/ライタ2が接続されている例について説明したが,本発明はかかる例に限定されず,例えば,1つのリーダ/ライタ2のみが接続されてもよい。
また,上記実施形態では,ICカード3は非接触型ICカードで構成され,リーダ/ライタ2は非接触方式でICカードと通信するものを採用していたが,本発明はかかる例に限定されない。例えば,接触方式のICカード(磁気カード等)と,接触方式で読み書きするリーダ/ライタ2を利用してもよい。また,上記ICカード3の機能を有する情報処理装置を,携帯電話等の携帯端末や腕時計などの各種装置に内蔵したり,或いは,各種商品,販売促進用の人形等のグッズ,アクセサリ,チラシなどの物品に装着したりすることで,これらの装置や物品等をICカード3として代用してもよい。これらの装置や物品も,本発明のICカードに含まれるものとする。
本発明の第1の実施形態にかかる情報処理装置がリーダ/ライタを介してICカードに接続する状態を示す概略図である。 同実施形態にかかる情報処理装置のハードウェア構成例を示すブロック図である。 同実施形態にかかるリーダ/ライタ及びICカードのハードウェア構成を示すブロック図である。 同実施形態にかかる情報処理装置及びICカードのソフトウェア構成を示すブロック図である。 同実施形態にかかるミドルウェアとデバイスドライバの構成を示すブロック図である。 同実施形態にかかるミドルウェアがアプリケーションから指定されたリーダ/ライタをオープンする処理を示すフローチャートである。 同実施形態にかかるミドルウェアが複数のリーダ/ライタを順次走査してオープンする処理を示すフローチャートである。 同実施形態にかかるデバイスドライバが,ミドルウェアから要求されたリーダ/ライタをオープンする処理を示すフローチャートである。 同実施形態にかかる複数のアプリケーションからのコマンド処理方法の具体例を示す模式図である。 同実施形態にかかる複数のアプリケーションからのコマンド処理方法の具体例を示す模式図である。 同実施形態にかかる複数のアプリケーションからのコマンド処理方法の具体例を示す模式図である。 同実施形態にかかる情報処理装置におけるコマンド処理フローの具体例を示すシーケンス図である。 同実施形態にかかるアプリケーションに対するアクセス権の付与/解除と,アクセス権待ちタイムアウトの具体例を示す模式図である。 同実施形態にかかる情報処理装置におけるアクセス権付与を伴うコマンド処理フローの具体例を示すシーケンス図である。
符号の説明
1 情報処理装置
2 リーダ/ライタ
3 ICカード
4 有線ケーブル
10 アプリケーション
20 ミドルウェア
22 アプリケーションプログラミングインタフェース
24 ミドルウェアコア部
26 通信情報記憶部
27 通信情報テーブル
28 デバイス制御部
30 オペレーションシステム
32 オペレーションシステム
40 デバイスドライバ
42 コマンド受付部
44 コマンド実行部
45 レスポンス解析部
46 通信情報記憶部
47 通信情報テーブル
48 バス制御部
111 接続ポート
308 メモリ

Claims (23)

  1. リーダ/ライタを介してICカードに接続可能な情報処理装置であって:
    前記ICカード用の複数のアプリケーションで共用される基本機能を前記各アプリケーションに提供するミドルウェアと;
    前記リーダ/ライタに対応して設けられ,前記複数のアプリケーションが前記リーダ/ライタに同時にアクセスできるように,前記複数のアプリケーションから前記ミドルウェアを介して受け取った複数のコマンドを受け取り順に順次処理して,前記リーダ/ライタを制御するデバイスドライバと;
    を備えることを特徴とする,情報処理装置。
  2. 前記デバイスドライバは,前記複数のアプリケーションが前記リーダ/ライタに同時にアクセス可能な共有モードと,1つの前記アプリケーションのみが前記リーダ/ライタにアクセス可能な専有モードとを切り替えて設定可能であることを特徴とする,請求項1に記載の情報処理装置。
  3. 前記ミドルウェアは,前記アプリケーションが前記共有モード又は前記専有モードを選択できるようなアプリケーションプログラミングインターフェースを前記アプリケーションに提供し,
    前記デバイスドライバは,前記アプリケーションからのモード選択に基づいて,前記共有モードと前記専有モードとを切り替えることを特徴とする,請求項2に記載の情報処理装置。
  4. 前記共有モードに設定されている場合に,
    前記デバイスドライバは,あるアプリケーションからの要求に応じて,前記リーダ/ライタに対するアクセス権を当該アプリケーションに付与し,当該アプリケーションに前記アクセス権が付与されている間は,当該アプリケーションから受け取ったコマンドのみを処理し,他のアプリケーションから受け取ったコマンドを処理待ち状態にすることを特徴とする,請求項2に記載の情報処理装置。
  5. 前記ミドルウェアは,前記アプリケーションが前記デバイスドライバに対して前記アクセス権の付与を要求できるようなアプリケーションプログラミングインターフェースを前記アプリケーションに提供することを特徴とする,請求項4に記載の情報処理装置。
  6. 前記デバイスドライバは,あるアプリケーションからのコマンドの処理中に,他のアプリケーションからのコマンドを受け取った場合,当該コマンドの受け取り時から所定のタイムアウト時間が経過するまでは前記他のアプリケーションからのコマンドを処理待ち状態とし,前記タイムアウト時間が経過したときには前記他のアプリケーションにタイムアウトエラーを通知することを特徴とする,請求項1に記載の情報処理装置。
  7. 前記デバイスドライバは,前記アプリケーションごとに前記タイムアウト時間を設定可能であることを特徴とする,請求項6に記載の情報処理装置。
  8. 前記デバイスドライバは,1つの前記リーダ/ライタに同時にアクセス可能な前記アプリケーションの数を所定の最大アクセス数以下に制限することを特徴とする,請求項1に記載の情報処理装置。
  9. 前記デバイスドライバは,前記各アプリケーションと前記リーダ/ライタとの間の通信情報を,前記アプリケーションごとに保持する通信情報記憶部を有することを特徴とする,請求項1に記載の情報処理装置。
  10. 前記情報処理装置には前記リーダ/ライタが複数接続されており,
    前記ミドルウェアは,前記アプリケーションからの使用要求に応じて,前記複数のリーダ/ライタのうちから1つのリーダ/ライタを選択し,当該選択されたリーダ/ライタに対応する前記デバイスドライバに対し,前記アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするよう要求し,
    前記デバイスドライバは,前記ミドルウェアからの要求に応じて,当該選択されたリーダ/ライタが前記アプリケーションによりアクセス可能な状態であるか否かを判定し,アクセス可能な状態であると判定すれば,前記アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にすることを特徴とする,請求項1に記載の情報処理装置。
  11. 前記ミドルウェアは,前記複数のリーダ/ライタのうち前記アプリケーションが使用可能な1又は2以上のリーダ/ライタのリストを保持しており,前記リスト内のリーダ/ライタを順次選択して,当該選択された各リーダ/ライタに対応する各デバイスドライバに対し,前記アプリケーションが当該選択された各リーダ/ライタを使用可能な状態にするよう順次要求することを特徴とする,請求項10に記載の情報処理装置。
  12. リーダ/ライタを介してICカードに接続可能な情報処理装置において,前記ICカード用の複数のアプリケーションを調停するアプリケーション調停方法であって:
    前記リーダ/ライタに対応して設けられたデバイスドライバは,前記複数のアプリケーションが前記リーダ/ライタに同時にアクセスできるように,前記複数のアプリケーションから,前記複数のアプリケーションで共用される基本機能を前記各アプリケーションに提供するミドルウェアを介して,複数のコマンドを受け取り,当該受け取った複数のコマンドを受け取り順に順次処理して,前記リーダ/ライタを制御することを特徴とする,アプリケーション調停方法。
  13. 前記デバイスドライバは,前記複数のアプリケーションが前記リーダ/ライタに同時にアクセス可能な共有モードと,1つの前記アプリケーションのみが前記リーダ/ライタにアクセス可能な専有モードとを切り替えて設定可能であることを特徴とする,請求項12に記載のアプリケーション調停方法。
  14. 前記ミドルウェアは,前記アプリケーションが前記共有モード又は前記専有モードを選択できるようなアプリケーションプログラミングインターフェースを前記アプリケーションに提供し,
    前記デバイスドライバは,前記アプリケーションからのモード選択に基づいて,前記共有モードと前記専有モードとを切り替えることを特徴とする,請求項13に記載のアプリケーション調停方法。
  15. 前記共有モードに設定されている場合に,
    前記デバイスドライバは,あるアプリケーションからの要求に応じて,前記リーダ/ライタに対するアクセス権を当該アプリケーションに付与し,当該アプリケーションに前記アクセス権が付与されている間は,当該アプリケーションから受け取ったコマンドのみを処理し,他のアプリケーションから受け取ったコマンドを処理待ち状態にすることを特徴とする,請求項13に記載のアプリケーション調停方法。
  16. 前記ミドルウェアは,前記アプリケーションが前記デバイスドライバに対して前記アクセス権の付与を要求できるようなアプリケーションプログラミングインターフェースを前記アプリケーションに提供することを特徴とする,請求項15に記載のアプリケーション調停方法。
  17. 前記デバイスドライバは,あるアプリケーションからのコマンドの処理中に,他のアプリケーションからのコマンドを受け取った場合,当該コマンドの受け取り時から所定のタイムアウト時間が経過するまでは前記他のアプリケーションからのコマンドを処理待ち状態とし,前記タイムアウト時間が経過したときには前記他のアプリケーションにタイムアウトエラーを通知することを特徴とする,請求項12に記載のアプリケーション調停方法。
  18. 前記デバイスドライバは,前記アプリケーションごとに前記タイムアウト時間を設定可能であることを特徴とする,請求項17に記載のアプリケーション調停方法。
  19. 前記デバイスドライバは,1つの前記リーダ/ライタに同時にアクセス可能な前記アプリケーションの数を所定の最大アクセス数以下に制限することを特徴とする,請求項12に記載のアプリケーション調停方法。
  20. 前記デバイスドライバは,前記各アプリケーションと前記リーダ/ライタとの間の通信情報を,前記アプリケーションごとに保持する通信情報記憶部を有することを特徴とする,請求項12に記載のアプリケーション調停方法。
  21. 前記情報処理装置には前記リーダ/ライタが複数接続されており,
    前記ミドルウェアは,前記アプリケーションからの使用要求に応じて,前記複数のリーダ/ライタのうちから1つのリーダ/ライタを選択し,当該選択されたリーダ/ライタに対応する前記デバイスドライバに対し,前記アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にするよう要求し,
    前記デバイスドライバは,前記ミドルウェアからの要求に応じて,当該選択されたリーダ/ライタが前記アプリケーションによりアクセス可能な状態であるか否かを判定し,アクセス可能な状態であると判定すれば,前記アプリケーションが当該選択されたリーダ/ライタを使用可能な状態にすることを特徴とする,請求項12に記載のアプリケーション調停方法。
  22. 前記ミドルウェアは,前記複数のリーダ/ライタのうち前記アプリケーションが使用可能な1又は2以上のリーダ/ライタのリストを保持しており,前記リスト内のリーダ/ライタを順次選択して,当該選択された各リーダ/ライタに対応する各デバイスドライバに対し,前記アプリケーションが当該選択された各リーダ/ライタを使用可能な状態にするよう順次要求することを特徴とする,請求項21に記載のアプリケーション調停方法。
  23. コンピュータを:
    リーダ/ライタを介してICカードに接続可能な情報処理装置であって,
    前記ICカード用の複数のアプリケーションで共用される基本機能を前記各アプリケーションに提供するミドルウェアと;
    前記リーダ/ライタに対応して設けられ,前記複数のアプリケーションが前記リーダ/ライタに同時にアクセスできるように,前記複数のアプリケーションから受け取った複数のコマンドを受け取り順に順次処理して,前記リーダ/ライタを制御するデバイスドライバと;
    を備えた情報処理装置として機能させるためのプログラム。
JP2006104308A 2006-04-05 2006-04-05 情報処理装置及びアプリケーション調停方法 Active JP4407662B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2006104308A JP4407662B2 (ja) 2006-04-05 2006-04-05 情報処理装置及びアプリケーション調停方法
MYPI20070478A MY145246A (en) 2006-04-05 2007-03-26 Information processing apparatus and method and program for mediating applications
US11/727,725 US8573485B2 (en) 2006-04-05 2007-03-28 Information processing apparatus and method and program for mediating applications
SG200702386-4A SG136109A1 (en) 2006-04-05 2007-03-30 Information processing apparatus and method and program for mediating applications
EP07251406A EP1843251A3 (en) 2006-04-05 2007-03-30 Information processing apparatus and method and program for mediating applications
CN200710129251XA CN101149782B (zh) 2006-04-05 2007-04-05 用于协调应用的信息处理装置和方法
HK08105761.8A HK1111249A1 (en) 2006-04-05 2008-05-23 Information processing apparatus and method for mediating applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006104308A JP4407662B2 (ja) 2006-04-05 2006-04-05 情報処理装置及びアプリケーション調停方法

Publications (2)

Publication Number Publication Date
JP2007279966A true JP2007279966A (ja) 2007-10-25
JP4407662B2 JP4407662B2 (ja) 2010-02-03

Family

ID=38180045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006104308A Active JP4407662B2 (ja) 2006-04-05 2006-04-05 情報処理装置及びアプリケーション調停方法

Country Status (7)

Country Link
US (1) US8573485B2 (ja)
EP (1) EP1843251A3 (ja)
JP (1) JP4407662B2 (ja)
CN (1) CN101149782B (ja)
HK (1) HK1111249A1 (ja)
MY (1) MY145246A (ja)
SG (1) SG136109A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8259946B2 (en) 2008-08-05 2012-09-04 Sony Corporation Communication apparatus, reader/writer, communication system, and communication method
JP2014052738A (ja) * 2012-09-05 2014-03-20 Toshiba Tec Corp 情報処理装置及びプログラム
JP2016027483A (ja) * 2011-05-24 2016-02-18 日本電気株式会社 情報処理システム、アクセス制御方法、情報処理装置およびその制御方法と制御プログラム
US9883328B2 (en) 2014-02-27 2018-01-30 Ricoh Company, Ltd. Information processing apparatus, information processing method, and recording medium

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8905309B2 (en) * 2008-03-10 2014-12-09 Infineon Technologies Ag Reader application device
US8706875B2 (en) * 2008-12-16 2014-04-22 Nokia Corporation Sharing access to application located on a smart card for clients in parallel
CN102467672B (zh) * 2010-11-11 2014-08-06 ***通信集团公司 智能卡片的子应用管理方法及设备
US8612674B2 (en) * 2010-12-01 2013-12-17 International Business Machines Corporation Systems and methods for concurrently accessing a virtual tape library by multiple computing devices
US9049176B2 (en) * 2011-06-22 2015-06-02 Dropbox, Inc. File sharing via link generation
JP5853817B2 (ja) * 2012-03-28 2016-02-09 富士通株式会社 情報処理装置、制御方法及び制御プログラム
KR101363566B1 (ko) * 2012-09-14 2014-02-17 주식회사 터치웍스 무선 주파수 카드의 고유 아이디를 생성하는 장치 및 방법
US9100440B1 (en) * 2014-02-20 2015-08-04 Symantec Corporation Systems and methods for applying data loss prevention policies to closed-storage portable devices
CN106326789A (zh) * 2015-06-29 2017-01-11 潘素云 带有辅助读卡器的读卡机
US10496320B2 (en) * 2015-12-28 2019-12-03 Netapp Inc. Synchronous replication
US10462262B2 (en) * 2016-01-06 2019-10-29 Northrop Grumman Systems Corporation Middleware abstraction layer (MAL)
KR20200105302A (ko) * 2019-02-28 2020-09-07 삼성전자주식회사 무선 통신을 확장하기 위한 방법 및 그 전자 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6364133A (ja) 1986-08-29 1988-03-22 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション 情報処理システム
EP0610677A3 (en) 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
JP3691871B2 (ja) 1995-03-20 2005-09-07 富士通株式会社 カード型記憶媒体
US6038551A (en) * 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
JPH1153482A (ja) 1997-07-31 1999-02-26 Fujitsu Ltd カード読み取り装置
US6360952B1 (en) * 1998-05-29 2002-03-26 Digital Privacy, Inc. Card access system supporting multiple cards and card readers
GB2345555A (en) 1999-01-05 2000-07-12 Ibm Controlling device access in a network
WO2001029762A2 (en) 1999-10-20 2001-04-26 Spyrus, Inc. Method and system for an integrated circuit card interface device with multiple modes of operation
JP2001209607A (ja) 2000-01-27 2001-08-03 Nec Software Nagano Ltd ドライバ、デバイスのドライブ方法、オペレーティングシステム、記録媒体
JP2001290607A (ja) 2000-04-06 2001-10-19 Matsushita Electric Ind Co Ltd デバイスドライバのコマンドキューイング制御方法及びコンピュータシステム
JP4019406B2 (ja) 2001-02-07 2007-12-12 横河電機株式会社 データ通信装置
JP4207403B2 (ja) 2001-06-27 2009-01-14 ソニー株式会社 情報記憶媒体、メモリ領域を備えたicチップ、メモリ領域を備えたicチップを有する情報処理装置、並びに、情報記憶媒体のメモリ管理方法
CN1427361A (zh) * 2001-12-17 2003-07-02 北京中视联联合软件有限公司 基于客户/服务器结构的底层设备驱动的方法
EP1372084A3 (en) 2002-05-31 2011-09-07 Imec Method for hardware-software multitasking on a reconfigurable computing platform
JP2004046610A (ja) 2002-07-12 2004-02-12 Denso Wave Inc カードシステム及び記録媒体
JP4359041B2 (ja) 2002-12-26 2009-11-04 株式会社東芝 ディスク記録装置及び同装置に適用するデータアクセス方法
JP2004318315A (ja) 2003-04-14 2004-11-11 Yokogawa Electric Corp データ通信装置
US7404193B2 (en) 2003-09-03 2008-07-22 Intel Corporation Method, system, and program for accessing device driver functions
EP2041690B1 (en) * 2006-07-19 2011-05-18 Research In Motion Limited Method, system and smart card reader for management of access to a smart card

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8259946B2 (en) 2008-08-05 2012-09-04 Sony Corporation Communication apparatus, reader/writer, communication system, and communication method
JP2016027483A (ja) * 2011-05-24 2016-02-18 日本電気株式会社 情報処理システム、アクセス制御方法、情報処理装置およびその制御方法と制御プログラム
JP2014052738A (ja) * 2012-09-05 2014-03-20 Toshiba Tec Corp 情報処理装置及びプログラム
US9883328B2 (en) 2014-02-27 2018-01-30 Ricoh Company, Ltd. Information processing apparatus, information processing method, and recording medium

Also Published As

Publication number Publication date
JP4407662B2 (ja) 2010-02-03
CN101149782A (zh) 2008-03-26
EP1843251A2 (en) 2007-10-10
HK1111249A1 (en) 2008-08-01
EP1843251A3 (en) 2007-12-05
SG136109A1 (en) 2007-10-29
US8573485B2 (en) 2013-11-05
US20070235537A1 (en) 2007-10-11
CN101149782B (zh) 2010-11-03
MY145246A (en) 2012-01-13

Similar Documents

Publication Publication Date Title
JP4407662B2 (ja) 情報処理装置及びアプリケーション調停方法
KR100400090B1 (ko) 컴퓨터 디바이스 제어 시스템, 그 제어방법 및 기록매체
RU2481617C2 (ru) Способ и устройство автоматического выбора приложения связи ближнего радиуса действия в электронном устройстве
JP4631974B2 (ja) 情報処理装置、情報処理方法、プログラム、および情報処理システム
US7486946B2 (en) Electronic apparatus and wireless communication control method
CN101167052B (zh) 应用程序框架分阶段模型
US12003965B2 (en) Electronic device for providing IOT device control service, and control method therefor
US9600816B2 (en) Method and system for executing a NFC transaction supporting multiple applications and multiples instances of a same application
MXPA04010159A (es) Configuracion simple y dinamica de aparatos de red.
KR20170061675A (ko) 타겟 장치 리소스를 호스트 장치의 컴퓨팅 환경에 대여하는 방법
US20220038899A1 (en) Method for duplicating near field communication card and electronic device therefor
JP2002341983A (ja) コンピュータ本体とワイヤレス周辺機器間の接続方式、コンピュータ、並びにワイヤレス周辺機器
TW201626238A (zh) 管理對周邊設備存取之技術
JP6668890B2 (ja) 通信装置
JPH07306831A (ja) コンピュータネットワークシステム
CN101329661B (zh) 一种实现hid/scsi设备pc/sc接口的***和方法
JP4253021B2 (ja) 携帯端末
JP6028805B2 (ja) 情報処理装置および情報処理システム
US20120079402A1 (en) Terminal, method, system, and computer-readable storage medium for adjusting attributes of user-input area based on user selection
WO2018161224A1 (zh) 一种数据处理方法及相关装置
JP6397200B2 (ja) 管理サーバ、およびデータ処理方法、並びにプログラム
JP5210095B2 (ja) データ処理システム
US9600695B2 (en) Apparatus and method for providing data transmission/reception in a terminal using near field communication
JP4525488B2 (ja) 無線接続システム,非接触icタグ,電子機器,プログラム及び記録媒体
JP2002197431A (ja) 通信装置、データ転送方法、及びデータ転送プログラムが記録された記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080422

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080623

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090917

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090925

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091020

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091102

R151 Written notification of patent or utility model registration

Ref document number: 4407662

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250