(57)【要約】【課題】コンポーネントの開発に要するコストを削減する。【解決手段】コンポーネント処理装置１は、アプリケーションプログラムからの要求を受信し、要求が初期化要求の場合、初期化制御部１２を呼び出して、要求が初期化要求以外の場合、処理制御部２１を呼び出す要求受信部１１を有する。初期化制御部１２は、処理実行部２３が提供する複数のフック関数に対して、それぞれコンポーネントプログラムにおいて実行する複数の処理の対応付けを行い、処理制御部２１は、要求のうち、コンポーネントプログラムに非依存の共通処理を共通処理部２２に依頼し、依存する処理を処理実行部２３に依頼する。共通処理部２２は、コンポーネントプログラムに非依存の共通処理を実行し、処理実行部２３は、複数のフック関数のそれぞれに対応付けられている複数の処理の実行に対する要求をコンポーネントプログラムに対して依頼する。【選択図】図２
2010039861.tif 000002
【特許請求の範囲】
【請求項１】
所定の機能の処理を実行するためのコンポーネントプログラムに対して所定のデータ処理を行わせるためのコンポーネント処理装置であって、
前記コンポーネントプログラムに設けられる複数の処理のそれぞれに対応する複数の処理Ｉ／Ｆを提供し、前記複数の処理Ｉ／Ｆのそれぞれに対応付けられている前記複数の処理の実行に対する要求を前記コンポーネントプログラムに対して依頼する処理実行部と、
前記コンポーネントプログラムに非依存の共通処理を実行する共通処理部と、
アプリケーションプログラムからの要求のうち、前記コンポーネントプログラムに非依存の共通処理を前記共通処理部に依頼し、前記コンポーネントプログラムに依存する処理を前記処理実行部に依頼するように制御する処理制御部と、
前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行う初期化制御部と、
前記要求を受信し、前記要求が初期化要求の場合、前記初期化制御部を呼び出して、前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行い、前記要求が前記初期化要求以外の場合、前記処理制御部を呼び出す要求受信部と、
を有することを特徴とするコンポーネント処理装置。
【請求項２】
前記初期化制御部は、前記複数の処理Ｉ／Ｆと、前記複数の処理Ｉ／Ｆのそれぞれに対応する前記複数の処理の前記コンポーネント内のアドレスを記憶する初期化関数テーブルを保持し、前記初期化関数テーブルを参照することにより前記対応付けを行うことを特徴とする請求項１に記載のコンポーネント処理装置。
【請求項３】
前記コンポーネントプログラムは前記複数の処理Ｉ／Ｆと、前記複数の処理Ｉ／Ｆのそれぞれに対応する前記複数の処理の前記コンポーネント内のアドレスを記憶する初期化関数テーブルを保持し、前記初期化制御部からの初期化要求に応じて、前記初期化関数テーブルを参照することにより前記対応付けを行うことを特徴とする請求項１に記載のコンポーネント処理装置。  
【請求項４】
前記要求受信部は、受信した前記要求を複数格納可能な要求格納部と、
前記要求が前記処理実行部において実行可能か否かを判断する実行判断部と、
を有し、
前記実行判断部は、前記要求が前記処理実行部において実行可能であると判断した場合、前記要求格納部に格納された前記要求を前記処理制御部にロードすることを特徴とする請求項１から３の何れか１項に記載のコンポーネント処理装置。
【請求項５】
前記共通処理は、前記コンポーネントの通信経路の確立及び通信系路上で送受信されるデータ領域の管理を実行する通信処理、または前記コンポーネントの状態の遷移を実行する状態遷移処理であることを特徴とする請求項１から４の何れか１項に記載のコンポーネント処理装置。
【請求項６】
特定の機能を実行するための処理プログラムに対して特定のデータ処理を行わせるためのコンポーネント処理プログラムであって、
前記コンポーネントプログラムに設けられる複数の処理のそれぞれに対応する複数の処理Ｉ／Ｆを提供し、前記複数の処理Ｉ／Ｆのそれぞれに対応付けられている前記複数の処理の実行に対する要求を前記コンポーネントプログラムに対して依頼する第１のコード部と、
前記コンポーネントプログラムに非依存の共通処理を実行する第２のコード部と、
アプリケーションプログラムからの要求のうち、前記コンポーネントプログラムに非依存の共通処理を前記共通処理部に依頼し、前記コンポーネントプログラムに依存する処理を前記処理実行部に依頼するように制御する第３のコード部と、
前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行う第４のコード部と、
前記要求を受信し、前記要求が初期化要求の場合、前記初期化制御部を呼び出して、前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行い、前記要求が前記初期化要求以外の場合、前記処理制御部を呼び出す第５のコード部と、
をコンピュータに実行させることを特徴とするコンポーネント処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネント処理装置及びコンポーネント処理プログラムに関する。
【背景技術】
【０００２】
従来より、コーデック（Codec）やデマルチプレクサ（Demuxer）などのデータ処理ロジック（以下、コンポーネントという）の再利用性を高めるために、コンポーネントにアクセスするためのAPI（Application Programming Interface）を標準化しようという流れがある。この標準化された規格として、例えば、OpenMAX Integration Layer（以下、OpenMAX ILという）が存在する（例えば、非特許文献１参照）。
【０００３】
この標準化に伴い、コンポーネントの再利用性が高くなる一方で、規定された状態遷移や他のコンポーネントとの通信方法を正しく実装する義務が開発者に発生する。そのため、独自の方法でコンポーネントを実装する場合と比較して、コンポーネントの初期開発コストが増大するという問題点があった。
【０００４】
その課題に対して、状態遷移や通信方法などを共通の実装として代替するフレームワークを提供することが考えられる。しかしながら、コンポーネントの形態は多様であり、コンポーネントに対する一意なインターフェースを提供することは困難であった。
【非特許文献１】“OpenMAX Integration Layer アプリケーションプログラミングインターフェース仕様書 Version 1.1.1”、平成１９年９月１４日、インターネット＜ＵＲＬ：http://www.khronos.org/files/openmax_il_spec_1_1_1.pdf ＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、コンポーネントの開発に要するコストを削減することができるコンポーネント処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、所定の機能の処理を実行するためのコンポーネントプログラムに対して所定のデータ処理を行わせるためのコンポーネント処理装置であって、前記コンポーネントプログラムに設けられる複数の処理のそれぞれに対応する複数の処理Ｉ／Ｆを提供し、前記複数の処理Ｉ／Ｆのそれぞれに対応付けられている前記複数の処理の実行に対する要求を前記コンポーネントプログラムに対して依頼する処理実行部と、前記コンポーネントプログラムに非依存の共通処理を実行する共通処理部と、アプリケーションプログラムからの要求のうち、前記コンポーネントプログラムに非依存の共通処理を前記共通処理部に依頼し、前記コンポーネントプログラムに依存する処理を前記処理実行部に依頼するように制御する処理制御部と、前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行う初期化制御部と、前記要求を受信し、前記要求が初期化要求の場合、前記初期化制御部を呼び出して、前記処理実行部が提供する前記複数の処理Ｉ／Ｆに対して、それぞれ前記コンポーネントプログラムにおいて実行する前記複数の処理の対応付けを行い、前記要求が前記初期化要求以外の場合、前記処理制御部を呼び出す要求受信部とを有することを特徴とするコンポーネント処理装置を提供することができる。
【発明の効果】
【０００７】
本発明のコンポーネント処理装置によれば、コンポーネントの開発に要するコストを削減することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本実施の形態に係る情報処理装置の構成について説明する。図１は、本実施の形態に係る情報処理装置の構成を示すブロック図である。図１に示すように、情報処理装置１００は、中央処理装置（以下、CPUという）１０１と、ROM１０２と、RAM１０３と、インターフェース（以下、I/Fという）１０４と、バス１０５とを有して構成されている。CPU１０１、ROM１０２、RAM１０３及びI/F１０４は、互いにバス１０５を介して接続されている。また、I/F１０４には、モニタ１０６及びスピーカ１０７が接続されている。
【０００９】
ROM１０２には、コンポーネントプログラムとコンポーネント処理プログラムが格納されている。CPU１０１は、これらのプログラムをROM１０２から読み出し、RAM１０３上に展開して実行する。コンポーネントプログラムは、例えば、ビデオのデコード処理またはオーディオのデコード処理などの単機能の処理を行うプログラムである。CPU１０１は、これらの単機能の処理を組み合わせて、最終的なデータ処理を行い、I/F１０４を介して、モニタ１０６またはスピーカ１０７に出力する。コンポーネントプログラムがCPU１０１上で実行されることにより、後述するコンポーネントが構成される。
【００１０】
コンポーネント処理プログラムは、規定された状態遷移や他のコンポーネントとの通信方法などの共通処理を行うインターフェースプログラムである。このコンポーネント処理プログラムがCPU１０１上で実行されることにより、本実施の形態のコンポーネント処理装置が構成される。
【００１１】
なお、コンポーネントプログラムの一部がCPU１０１とは異なるプロセッサやコプロセッサ、専用HWで実行されても良く、本発明の本質に影響を与えるものではない。
【００１２】
図２は、本実施の形態に係るコンポーネント処理装置の構成を示すブロック図である。図２に示すように、コンポーネント処理装置１は、要求受信部１１と、初期化制御部１２と、コアサポート部１３と、複数、ここでは２つの基本処理部１４ａ及び１４ｂと、システム処理要求部１５とを有して構成されている。なお、コンポーネント処理装置１は、２つの基本処理部１４ａ及び１４ｂを有しているが、１つあるいは３つ以上の基本処理部を有していてもよい。基本処理部は、後述するコンポーネントとしての特定処理部に対応して生成される。
【００１３】
要求受信部１１は、コマンドキュー１６と、実行判断部１７とを有して構成されている。基本処理部１４ａは、コンポーネント処理装置１が提供する関数１８ａ及び１８ｂと、フック関数１９ａ及び１９ｂとを有して構成されている。一方、基本処理部１４ｂは、関数１８ｃ及び１８ｄと、フック関数１９ｃ及び１９ｄとを有して構成されている。
【００１４】
また、コンポーネント処理装置１の外には、API３１と、複数、ここでは２つの特定処理部３２ａ及び３２ｂと、システム処理部３３とを有している。API３１は、複数のAPI関数３１ａから３１ｄを有して構成されている。API関数３１ａから３１ｄは、それぞれ関数１８ａから１８ｄに対応付けられる。これらの対応付けは、初期化制御部１２により行われる。
【００１５】
コンポーネントとしての特定処理部３２ａは、単機能の処理を実行するフック関数の実体３４ａ及び３４ｂと、初期化情報部３５ａとを有して構成されている。一方、コンポーネントとしての特定処理部３２ｂは、単機能の処理を実行するフック関数の実体３４ｃ及び３４ｄと、初期化情報部３５ｂとを有して構成されている。フック関数１９ａから１９ｄは、それぞれフック関数の実体３４ａから３４ｄに対応付けられる。これらの対応付けは、初期化制御部により行われる。
【００１６】
要求受信部１１には、図示しないアプリケーションからのコマンド、言い換えると、要求が送信される。要求受信部１１は、API３１を介してアプリケーションからの要求を基本処理部１４ａ又は１４ｂに送信する。アプリケーションからの要求は、API関数３１ａから３１ｄのAPI呼び出しによって行われる。各API関数３１ａから３１ｄの種類によって、要求される処理の内容が大別されており、各API関数３１ａから３１ｄには、引数として各処理に関連するパラメータやデータ、基本処理部１４ａ又は１４ｂを識別するための識別子が付随することがある。各API関数３１ａから３１ｄと、コンポーネント処理装置１が提供する関数１８ａから１８ｄとは、上述したように１対１に対応付けられている。この対応付けは、コンポーネント処理装置１に発行される初期化要求によって行われる。初期化要求に対する初期化処理は、初期化制御部１２により行われる。即ち、要求受信部１１は、API３１を介して送信される要求が初期化要求の場合、この初期化要求を初期化制御部１２に送信する。
【００１７】
また、要求受信部１１のコマンドキュー１６は、アプリケーションからの要求を複数格納する。このコマンドキュー１６は、アプリケーションからの要求を複数格納可能な要求格納部を構成する。実行判断部１７は、コマンドキュー１６に格納された要求を実行するか否かを判断する。特に、実行判断部１７は、他のコンポーネントの処理などを監視し、実行条件が整ったときのみ、コマンドキュー１６に格納された要求を基本処理部１４ａまたは１４ｂに送信する。
【００１８】
このように、要求受信部１１内にコマンドキュー１６及び実行判断部１７を設けることにより、後述する処理制御部が異なるプロセスで動作可能となるので、アプリケーションの処理とデータの処理とを並行して実行することができる。また、処理制御部の起動条件を設けることで、処理の準備が整わない際に不用意にプロセスを動作させることを抑制し、システム性能を向上させることができる。
【００１９】
初期化制御部１２は、要求受信部１１から初期化要求が送信されると、各API関数３１ａから３１ｄと、コンポーネント処理装置１が提供する関数１８ａから１８ｄとをそれぞれ対応付ける。この対応付けを実行するためのテーブルは、初期化制御部１２内の図示しない記憶部に別途保持されている。
【００２０】
また、初期化制御部１２は、要求受信部１１から初期化要求が送信されると、コンポーネント処理装置１の初期化を実行する。この初期化の内容は、コンポーネント処理装置１内で使用される領域の確保及び初期化などである。
【００２１】
更に、初期化制御部１２は、要求受信部１１から初期化要求が送信されると、特定処理部３２ａ内の初期化情報部３５ａ及び特定処理部３２ｂ内の初期化情報部３５ｂを呼び出す。初期化制御部１２は、初期化情報部３５ａ及び３５ｂの存在を別途用意される初期化関数テーブルによって確認する。初期化要求には特定処理部３２ａ及び３２ｂの識別子が付与されており、識別子を基に初期化関数テーブルから実行すべき初期化関数を選択する。初期化制御部１２は、コンポーネント処理装置１が特定処理部３２ａ及び３２ｂに提供する処理I/Fであるフック関数１９ａから１９ｄのポインタと、特定処理部３２ａが用意する関数の実体３４ａから３４ｄをそれぞれ対応付ける。対応付けは、特定処理部３２ａ及び３２ｂがそれぞれ保持する初期化情報部３５ａ及び３５ｂの情報を用いて行われる。
【００２２】
例えば、処理I/Fであるフック関数１９ａは、共通処理の前後及び途中に別の処理を組み込むための関数である。共通処理の前後及び途中にフック関数１９ａのポインタが記述され、特定処理部３２ａが提供する関数の実体３４ａがフック関数１９ａのポインタと対応付けられる。共通処理では、フック関数１９ａのポインタに関数の実体３４ａが対応付けられている場合のみ、フック関数１９ａを介して対応付けられている関数の実体３４ａが適宜実行される。
【００２３】
コアサポート部１３は、コンポーネント間の通信及び接続に対応する処理を行い、基本処理部１４ａまたは１４ｂに送信する。また、コアサポート部１３は、オペレーティングシステム（以下、OSという）またはハードウエア（以下、HWという）に依存する処理に対する要求をシステム処理要求部１５に送信する。
【００２４】
基本処理部１４ａは、規定された状態遷移や他のコンポーネントとの通信方法などの共通処理を行う。基本処理部１４ｂも同様の構成のため説明を省略する。なお、基本処理部１４ａ及び１４ｂの詳細な構成については、後述する図３を用いて説明する。
【００２５】
システム処理要求部１５には、OSまたはHWに依存する処理に対する要求がコアサポート部１３、基本処理部１４ａ、１４ｂまたはAPI３１から供給される。システム処理要求部１５は、OSまたはHWに依存する処理に対する要求をシステム処理部３３に供給する。システム処理部３３は、OSまたはHWに依存する処理、例えば、メモリ領域の確保及びキューの処理、スレッドや排他制御の管理などを実行する。
【００２６】
メモリ領域の確保及びキューの処理などは、OSまたはHWに依存している処理であるため、呼び出し方法もOSまたはHWによって異なる。そのため、OSまたはHWに依存した関数呼び出しを基本処理部１４ａまたは１４ｂ中に含めると、コンポーネント処理装置１自体の再利用性が悪化する。そのため、OSまたはHWに依存した関数を抽象化する層、ここでは、システム処理要求部１５を定めることにより、その層を経由してOSまたはHWに依存した関数を基本処理部１４ａまたは１４ｂの外に出すことができる。
【００２７】
ここで、基本処理部１４ａ及び１４ｂの構成について説明する。なお、基本処理部１４ａ及び１４ｂは、同様の構成のため、代表して基本処理部１４ａの構成について説明する。図３は、基本処理部の構成を示すブロック図である。図３に示すように、基本処理部１４ａは、処理制御部２１と、共通処理部２２と、処理実行部２３とを有して構成されている。
【００２８】
処理制御部２１は、要求受信部１１からの関数呼び出しによって、呼び出された関数１８ａまたは１８ｂを実行する。具体的には、API関数３１ａに対応した関数１８ａまたはAPI関数３１ｂに対応した関数１８ｂが実行される。各関数の中身では規格で定められた共通処理が実行される。共通処理の前後及び途中にフック関数のポインタが記述されており、特定処理部３２ａが提供する関数の実体がフック関数のポインタと対応付けられている場合には、フック関数を通して特定処理部３２ａの関数が適宜実行される。
【００２９】
このように、共通処理の前後及び中途の複数個所にフック関数のポインタを記述するのは、特定処理部３２ａの多様性を考慮したことによる。例えば、特定処理部３２ａがソフトウエアのみで動作する場合、共通処理の最後で関数が呼び出される場合があり、特定処理部３２ａが内部に専用HWを保持する場合、共通処理を実行する前にHWのキックが実行される場合もあるためである。
【００３０】
共通処理部２２は、規格に定められた共通処理を実行する。共通処理部２２は、共通処理の一例として、他のコンポーネントとプログラムの通信に関する通信処理を実行する。他のコンポーネントとプログラムの通信に関する通信処理は、実装負荷が高い部分であるため共通化の効果が大きい。通信方法は規格で定められており、この通信処理において、共通処理部２２は、通信に用いるデータ領域、例えば、バッファの確保を行う。また、共通処理部２２は、バッファに付随する情報領域、例えば、バッファヘッダの設定を行う。更に、共通処理部２２は、他のコンポーネントとのネゴシエーション、例えば、送受信するデータの属性の確認及び互いの設定情報の確認などを行う。他のコンポーネントもまた、同じAPI規格にあわせて作成されているため、他のコンポーネントに対して要求を出す場合には、API３１を通して関数呼び出しを行う。ここでいう、他のコンポーネントプログラムに対する要求とは、バッファ、言い換えると、データの送受信であったり、ネゴシエーションであったりする。
【００３１】
また、共通処理部２２は、共通処理の他の一例として、コンポーネントプログラムの状態遷移の管理に関する状態遷移処理を実行する。コンポーネントプログラムの状態遷移の管理に関する状態遷移処理は、仕様把握の負荷が高い部分であるため共通化の効果が大きい。遷移すべき状態の種類は規格で定められており、どのAPI関数が呼び出されると、どのような状態に遷移するかもまた規格で定められている。また、明示的に状態を遷移させるためのAPI関数が規格で定められている場合もある。例えば、OpenMAX ILでは、SendCommand（“コマンドの種類は状態遷移”，“遷移させたい状態はＡ”）といったようなAPI関数とコマンドの種類が定義されている。
【００３２】
処理実行部２３は、フック関数のポインタに特定処理部３２ａの関数が対応付けられている場合には、フック関数を通して特定処理部３２ａの関数を実行する。また、処理実行部２３は、フック関数のポインタに特定処理部３２ａの関数が対応付けられていない場合には、何も処理を実行しない。
【００３３】
図４は、初期化関数テーブルを説明するための説明図である。図４に示すように初期化関数テーブルには、フック関数名と、そのフック関数のポインタが指し示す特定処理部３２ａ内のアドレスとが対応付けられる。初期化制御部１２は、初期化要求を受信した後に、初期化情報部３５ａを参照することにより、これらの対応付けを実行した初期化関数テーブルを生成する。例えば、図４では、フック関数名が“プロセスデータ”であり、プロセスデータに対応するポインタのアドレスが“Ａ”である。また、“セットパラメータ”に対応するポインタのアドレスは“B”であることも示している。更に“プロセスデータ”の前に実行される“プリプロセスデータ”に対しては関数の実体が対応付けられていないことも示している。
【００３４】
次に、このように構成されるコンポーネント処理装置１の動作について、暗号処理を例に説明する。特定処理部３２ａは、DES（Data Encryption Standard）及びAES（Advanced Encryption Standard）の暗号処理を実行するデータ処理ロジック、即ち、コンポーネントであり、制御命令を受け付けることにより処理アルゴリズムが切り替わる。また、特定処理部３２ａは、図示しないデータ処理プログラム、例えば、ハッシュ計算処理を実行するデータ処理プログラムに対して暗号処理結果を送信する。なお、データ処理プログラムは、標準規格に則ったプログラムであるが、本実施の形態の内容を含んでいなくてもよい。
【００３５】
なお、説明を簡略化するため、標準規格に定められたコマンドを以下の６つのコマンド、ここでは、初期化コマンド、通信確立コマンド、状態遷移コマンド、設定コマンド、データ処理コマンド及び終了コマンドと仮定する。
【００３６】
また、標準規格に定められたコマンド以外、言い換えると、コンポーネント固有のカスタムコマンドを定義してもよい。カスタムコマンドの定義は、初期化制御部１２が上述した初期化の処理を行う際に、初期化制御部によって実行される。コンポーネントによっては、標準規格に定められたコマンド以外のコマンド実行したい場合がある。このように、コンポーネント固有のカスタムコマンドの定義を行うことにより、コンポーネント毎に固有のコマンドを実行することができる。
【００３７】
初期化コマンドは、コンポーネントの初期化処理を行うためのコマンドである。  
通信確立コマンドは、標準規格に則った他のデータ処理プログラム、本実施の形態ではデータ処理プログラムとの通信経路を確立するためのコマンドである。  
状態遷移コマンドは、コンポーネントの状態を遷移させるためのコマンドである。本実施の形態では、コンポーネントの状態として「準備中」と「実行可」の２種類の状態を持つものとする。  
設定コマンドは、コンポーネントの設定を変更するためのコマンドである。本実施の形態では、使用する暗号アルゴリズムを設定するために用いられる。  
データ処理コマンドは、データ処理、ここでは、暗号処理の対象となるデータを入力し、暗号処理の実行を要求するためのコマンドである。なお、データ処理コマンドを発行する際にはコンポーネントの状態が「実行可」でなければならないことが規格によって定められているものとする。  
終了コマンドは、コンポーネントの終了処理を行うためのコマンドである。
【００３８】
このうち、コンポーネントの設定及びデータ処理は、コンポーネントの内容に影響を与える処理であるため、コンポーネントの開発者は、設定ファイルなどに基づいて、それら２つの処理に対応する設定関数と処理関数を実装し、対応付けるフック関数１９ａ及び１９ｂを選択したものとする。詳しくは、フック関数１９ａは設定コマンドに対して共通処理部１４ａが提供するフック関数のうちの１つであり、コンポーネントの開発者は必要とするフック関数に対して特定処理部３２ａの提供する関数の実体を対応付ける。このとき、複数のフック関数に対して対応付けを行っても良いし、不必要ならば全く対応付けを行わなくても構わない。本実施形態では、フック関数１９ａに対して関数の実体３４ａ（設定関数）が対応付けられたものとする。また、フック関数１９ｂは処理コマンドに対して共通処理部１４ａが提供するフック関数のうちの１つであり、同様に、本実施形態では、フック関数１９ｂに対して関数の実体３４ｂ（設定関数）が対応付けられたものとする。更に、その他のコマンドに対しても同様にフック関数が提供されるが、本実施形態ではそれらのフック関数に対して関数の対応付けをしないものとする。図２では紙面の都合上、対応付けが行われていないフック関数を図示しない。
【００３９】
API３１を通して初期化コマンドが要求受信部１１に入力される。初期化コマンドを受信した要求受信部１１は、初期化制御部１２を呼び出す。初期化制御部１２は、コンポーネント処理装置１の必要な初期化処理を実施した後、特定処理部３２ａに要求を発行する。初期化制御部１２は、特定処理部３２ａの設定関数と処理関数とを、それぞれ処理実行部２３のフック関数１９ａ及び１９ｂに対して登録する。また、初期化制御部１２は、コンポーネントの状態を「準備中」に設定する。
【００４０】
API３１を通して通信確立コマンドが要求受信部１１に入力される。通信確立コマンドを受信した要求受信部１１は、処理制御部２１を起動する。処理制御部２１は、コマンドの内容を判断し、共通処理部２２を実行する。共通処理部２２は、データ処理プログラムとの間で使用するデータ領域の確保、例えば、バッファ管理を行い、通信経路を確立する。続いて処理制御部２１は、処理実行部２３を呼び出す。ここでは、通信確立コマンドに対する処理実行部２３のフック関数に関数の実体が対応付けられていないため、処理実行部２３は、処理を何も実行しない。
【００４１】
API３１を通して設定コマンド、ここでは、AESが要求受信部１１に入力される。設定コマンドを受信した要求受信部１１は、処理制御部２１を起動する。処理制御部２１は、コマンドの内容を判断し、共通処理部２２を実行する。続いて処理制御部２１は、処理実行部２３を起動する。ここでは、処理I/Fであるフック関数１９ａに対して特定処理部３２ａが提供する関数、ここでは設定関数が対応付けられているため、処理実行部２３はフック関数１９ａを通して特定処理部３２ａを起動する。特定処理部３２ａは、自身の処理アルゴリズムをAESに設定する。
【００４２】
API３１を通して状態遷移コマンドが要求受信部１１に入力される。状態遷移コマンドを受信した要求受信部１１は、処理制御部２１を起動する。処理制御部２１は、コマンドの内容を判断し、共通処理部２２を実行する。共通処理部２２は、状態遷移コマンドの情報からコンポーネントの状態を「実行可」と設定する。続いて処理制御部２１は処理実行部２３を起動する。ここでは、状態遷移コマンドに対する処理実行部２３のフック関数に関数の実体が対応付けられていないため、処理実行部２３は、処理を何も実行しない。
【００４３】
API３１を通して処理コマンドが要求受信部１１に入力される。処理コマンドを受信した要求受信部１１は、処理制御部２１を起動する。処理制御部２１は、コマンドの内容を判断し、共通処理部２２を実行する。共通処理部２２は、コンポーネントの状態が「実行可」であるかを判断する。続いて処理制御部２１は、処理実行部２３を起動する。ここでは、処理I/Fであるフック関数１９ｂに対して特定処理部３２ａが提供する関数、ここでは処理関数が対応付けられているため、処理実行部２３は、フック関数１９ｂを通して特定処理部３２ａを起動する。特定処理部３２ａは、AESのアルゴリズムを用いた暗号処理を実施する。特定処理部３２ａの処理結果は、共通処理部２２によってデータ処理プログラムに対して送信される。
【００４４】
API３１を通して終了コマンドが要求受信部１１に入力される。終了コマンドを受信した要求受信部１１は、処理制御部２１を起動する。処理制御部２１は、コマンドの内容を判断し、共通処理部２２を実行する。共通処理部２２は、設定したデータ領域や通信経路、登録した関数の開放処理を実施する。続いて処理制御部２１は、処理実行部２３を呼び出す。ここでは、終了コマンドに対する処理実行部２３のフック関数に関数の実体が対応付けられていないため、処理実行部２３は、処理を何も実行しない。
【００４５】
上記フローにおいて、メモリ領域の確保など、OSまたはHWに依存する処理についての要求は、システム処理要求部１５を介してシステム処理部３３に供給され、システム処理部３３において、OSまたはHWに依存する処理が実行される。
【００４６】
以上のように、コンポーネント処理装置１は、規定された状態遷移や他のコンポーネントとの通信方法などを共通処理として実装するようにした。また、コンポーネント処理装置１は、共通処理の前後及び途中に別の処理を組み込むためのフック関数を設定し、このフック関数にコンポーネント固有の処理を対応付けるようにした。その結果、コンポーネントの開発者は、規定された状態遷移や他のコンポーネントとの通信方法を考慮してコンポーネントの開発をしなくてもよくなる。即ち、コンポーネントの開発者は、コンポーネント固有のアルゴリズムのみを実装すればよくなる。
【００４７】
よって、本実施の形態のコンポーネント処理装置によれば、コンポーネントの開発に要するコストを削減することができる。
【００４８】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、以上、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。
【００４９】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムコードがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のコンポーネント処理装置を実現することができる。
【００５０】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００５１】
【図１】本実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】本実施の形態に係るコンポーネント処理装置の構成を示すブロック図である。
【図３】基本処理部の構成を示すブロック図である。
【図４】初期化関数テーブルを説明するための説明図である。
【符号の説明】
【００５２】
１…コンポーネント処理装置、１１…要求受信部、１２…初期化制御部、１３…コアサポート部、１４ａ，１４ｂ…基本処理部、１５…システム処理要求部、１６…コマンドキュー、１７…実行判断部、１８ａ〜１８ｄ…関数、１９ａ〜１９ｄ…フック関数、２１…処理制御部、２２…共通処理部、２３…処理実行部、３１…API、３１ａ〜３１ｄ…API関数、３２ａ，３２ｂ…特定処理部、３３…システム処理部、３５ａ，３５ｂ…初期化情報部、１００…情報処理装置、１０１…CPU、１０２…ROM、１０３…RAM、１０４…I/F、１０５…バス。
【図１】
2010039861.tif 000003
【図２】
2010039861.tif 000004
【図３】
2010039861.tif 000005
【図４】
2010039861.tif 000006