(57)【要約】【課題】  外部からインストールされたアプリケーションが搭載可能な画像形成装置と、その外部アプリケーションと画像形成装置が有するサービスプログラムとのインタフェース方法を提供する。【解決手段】  画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を実行するサービスプログラムと、前記サービスプログラムを利用するためのインタフェースと、前記サービスプログラムを利用するアプリケーションと、前記インタフェースを簡易化したインタフェースを前記アプリケーションに提供するとともに、前記サービスプログラムにより得られた前記アプリケーションに対する通知情報を保持する簡易インタフェースとを有する画像形成装置でのインタフェース方法であって、前記簡易インタフェースが前記通知情報を保持する保持段階と、前記アプリケーションが前記保持された通知情報を取得する取得段階とを有する。【選択図】  図１
2005229270.tif 000002
【特許請求の範囲】
【請求項１】
画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を実行するサービスプログラムと、前記サービスプログラムを利用するためのインタフェースと、前記サービスプログラムを利用するアプリケーションと、前記インタフェースを簡易化したインタフェースを前記アプリケーションに提供するとともに、前記サービスプログラムにより得られた前記アプリケーションに対する通知情報を保持する簡易インタフェースとを有する画像形成装置でのインタフェース方法であって、
前記簡易インタフェースが前記通知情報を保持する保持段階と、
前記アプリケーションが前記保持された通知情報を取得する取得段階と
を有することを特徴とするインタフェース方法。
【請求項２】
前記通知情報は、前記アプリケーションが前記サービスプログラムを利用することを要求したことにより得られた実行結果情報であることを特徴とする請求項１に記載のインタフェース方法。
【請求項３】
前記アプリケーションが前記サービスプログラムを利用するために必要なパラメータを設定する設定段階を有することを特徴とする請求項２に記載のインタフェース方法。
【請求項４】
前記複数の設定段階を有することを特徴とする請求項３に記載のインタフェース方法。
【請求項５】
前記パラメータを設定後、前記サービスプログラムを利用するための実行要求を、前記アプリケーションが前記簡易インタフェースに通知する実行要求段階を有することを特徴とする請求項３または４に記載のインタフェース方法。
【請求項６】
前記簡易インタフェースは、前記実行要求が通知されると、前記サービスプログラムを実行することを特徴とする請求項５に記載のインタフェース方法。
【請求項７】
前記取得段階では、前記実行結果情報が分割された分割実行結果情報を前記アプリケーションが取得することを特徴とする請求項２に記載のインタフェース方法。
【請求項８】
前記アプリケーションが、前記サービスを利用するために必要な実行要求ハンドルを、前記簡易インタフェースから取得する実行要求ハンドル取得段階を有することを特徴とする請求項１から７のいずれか１項に記載のインタフェース方法。
【請求項９】
前記設定段階と、前記実行要求段階と、前記取得段階では、前記実行要求ハンドルが用いられることを特徴とする請求項８に記載のインタフェース方法。
【請求項１０】
前記アプリケーションが、前記実行要求ハンドルを解放する実行要求ハンドル解放段階を有することを特徴とする請求項８または９に記載のインタフェース方法。
【請求項１１】
前記実行要求ハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする請求項１０に記載のインタフェース方法。
【請求項１２】
前記通知情報は、前記サービスプログラムから一方的に通知されるイベント情報であることを特徴とする請求項１に記載のインタフェース方法。
【請求項１３】
前記簡易インタフェースは、前記イベント情報が得られると、前記アプリケーションが前記イベント情報を取得するためのイベントハンドルを、前記アプリケーションに通知することを特徴とする請求項１２に記載のインタフェース方法。
【請求項１４】
前記取得段階では、前記イベントハンドルが用いられることを特徴とする請求項１３に記載のインタフェース方法。
【請求項１５】
前記アプリケーションが、前記イベントハンドルを解放するイベントハンドル解放段階を有することを特徴とする請求項１３または１４に記載のインタフェース方法。
【請求項１６】
前記イベントハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする請求項１５に記載のインタフェース方法。
【請求項１７】
画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行うサービスプログラムとを有する画像形成装置において、
前記サービスプログラムを利用するためのインタフェースと、
前記サービスを利用するアプリケーションと、
前記インタフェースを簡易化したインタフェースを前記アプリケーションに提供するとともに、前記サービスから通知された前記アプリケーションに対する通知情報を保持する簡易インタフェースとを有し、
前記アプリケーションは、前記保持された通知情報を取得することを特徴とする画像形成装置。
【請求項１８】
前記通知情報は、前記アプリケーションが前記サービスプログラムを利用することを要求したことにより得られた実行結果情報であることを特徴とする請求項１に記載の画像形成装置。
【請求項１９】
前記アプリケーションは、前記サービスプログラムを利用するために必要なパラメータを設定することを特徴とする請求項１８に記載の画像形成装置。
【請求項２０】
前記パラメータの設定は複数回行われることを特徴とする請求項１９に記載の画像形成装置。
【請求項２１】
前記パラメータを設定後、前記サービスプログラムを利用するための実行要求を、前記アプリケーションが前記簡易インタフェースに通知することを特徴とする請求項１９または２０に記載の画像形成装置。
【請求項２２】
前記簡易インタフェースは、前記実行要求が通知されると、前記サービスプログラムを実行することを特徴とする請求項２１に記載の画像形成装置。
【請求項２３】
前記アプリケーションは、前記実行結果情報が分割された分割実行結果情報を取得することを特徴とする請求項１８に記載の画像形成装置。
【請求項２４】
前記アプリケーションは、前記サービスを利用するために必要な実行要求ハンドルを、前記簡易インタフェースから取得することを特徴とする請求項１７から２３のいずれか１項に記載の画像形成装置。
【請求項２５】
前記アプリケーションは、前記実行要求ハンドルを解放することを特徴とする請求項２４に記載の画像形成装置。
【請求項２６】
前記実行要求ハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする請求項２５に記載の画像形成装置。
【請求項２７】
前記通知情報は、前記サービスプログラムから一方的に得られるイベント情報であることを特徴とする請求項１７に記載の画像形成装置。
【請求項２８】
前記簡易インタフェースは、前記イベント情報が得られると、前記アプリケーションが前記イベント情報を取得するためのイベントハンドルを、前記アプリケーションに通知することを特徴とする請求項２７に記載の画像形成装置。
【請求項２９】
前記アプリケーションが、前記イベントハンドルを解放することを特徴とする請求項２８に記載の画像形成装置。
【請求項３０】
前記イベントハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする請求項２９に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部からインストールされたアプリケーションが搭載可能な画像形成装置と、その外部アプリケーションと画像形成装置が有するサービスプログラムとのインタフェース方法に関する。
【背景技術】
【０００２】
近年、ファクシミリ、プリンタ、コピーおよびスキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、融合機という）が知られるようになった。この融合機は、１つの筐体内に表示部、印刷部および撮像部などを設けると共に、ファクシミリ、プリンタ、コピーおよびスキャナにそれぞれ対応する４種類のアプリケーションを設け、そのアプリケーションを切り替えることより、ファクシミリ、プリンタ、コピーおよびスキャナとして動作させるものである。
【０００３】
このような融合機のソフトウェア資源をさらに活用するために、融合機に外部からアプリケーションをインストールすることが考えられる。
【０００４】
この場合、上記アプリケーションは、融合機に搭載されているサービスプログラムを利用するためのインタフェースを利用しなければならない。しかし、融合機のサービスプログラムは、プリンタやファックスなどの最初から備わるアプリケーションが利用することを前提に作成されているので、サービスプログラムを利用する場合、外部からインストールされたアプリケーションが特に必要のない設定をインタフェースに対して行わなければならない。
【０００５】
そこで、サービスプログラムを利用するためのインタフェースを簡易化したものを外部のアプリケーションに提供する簡易インタフェースが用意されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の簡易インタフェースは、従来のインタフェースを簡易なものとしたにすぎないため、外部からインストールされたアプリケーションが柔軟に利用することができなかった。
【０００７】
本発明はこのような問題点に鑑み、融合機のサービスプログラムを外部からインストールされたアプリケーションが柔軟に利用することが可能な画像形成装置、インタフェース方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を実行するサービスプログラムと、前記サービスプログラムを利用するためのインタフェースと、前記サービスプログラムを利用するアプリケーションと、前記インタフェースを簡易化したインタフェースを前記アプリケーションに提供するとともに、前記サービスプログラムにより得られた前記アプリケーションに対する通知情報を保持する簡易インタフェースとを有する画像形成装置でのインタフェース方法であって、前記簡易インタフェースが前記通知情報を保持する保持段階と、前記アプリケーションが前記保持された通知情報を取得する取得段階とを有することを特徴とする。
【０００９】
また、上記課題を解決するために、本発明は、前記通知情報は、前記アプリケーションが前記サービスプログラムを利用することを要求したことにより得られた実行結果情報であることを特徴とする。
【００１０】
また、上記課題を解決するために、本発明は、前記アプリケーションが前記サービスプログラムを利用するために必要なパラメータを設定する設定段階を有することを特徴とする。
【００１１】
また、上記課題を解決するために、本発明は、前記複数の設定段階を有することを特徴とする。
【００１２】
また、上記課題を解決するために、本発明は、前記パラメータを設定後、前記サービスプログラムを利用するための実行要求を、前記アプリケーションが前記簡易インタフェースに通知する実行要求段階を有することを特徴とする。
【００１３】
また、上記課題を解決するために、本発明は、前記簡易インタフェースは、前記実行要求が通知されると、前記サービスプログラムを実行することを特徴とする。
【００１４】
また、上記課題を解決するために、本発明は、前記取得段階では、前記実行結果情報が分割された分割実行結果情報を前記アプリケーションが取得することを特徴とする。
【００１５】
また、上記課題を解決するために、本発明は、前記アプリケーションが、前記サービスを利用するために必要な実行要求ハンドルを、前記簡易インタフェースから取得する実行要求ハンドル取得段階を有することを特徴とする。
【００１６】
また、上記課題を解決するために、本発明は、前記設定段階と、前記実行要求段階と、前記取得段階では、前記実行要求ハンドルが用いられることを特徴とする。
【００１７】
また、上記課題を解決するために、本発明は、前記アプリケーションが、前記実行要求ハンドルを解放する実行要求ハンドル解放段階を有することを特徴とする。
【００１８】
また、上記課題を解決するために、本発明は、前記実行要求ハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする。
【００１９】
また、上記課題を解決するために、本発明は、前記通知情報は、前記サービスプログラムから一方的に得られるイベント情報であることを特徴とする。
【００２０】
また、上記課題を解決するために、本発明は、前記簡易インタフェースは、前記イベント情報が得られると、前記アプリケーションが前記イベント情報を取得するためのイベントハンドルを、前記アプリケーションに通知することを特徴とする。
【００２１】
また、上記課題を解決するために、本発明は、前記取得段階では、前記イベントハンドルが用いられることを特徴とする。
【００２２】
また、上記課題を解決するために、本発明は、前記アプリケーションが、前記イベントハンドルを解放するイベントハンドル解放段階を有することを特徴とする。
【００２３】
また、上記課題を解決するために、本発明は、前記イベントハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする。
【００２４】
また、上記課題を解決するために、本発明は、画像形成処理で使用されるハードウェア資源と、画像形成に係る処理を行うサービスプログラムとを有する画像形成装置において、前記サービスプログラムを利用するためのインタフェースと、前記サービスを利用するアプリケーションと、前記インタフェースを簡易化したインタフェースを前記アプリケーションに提供するとともに、前記サービスから通知された前記アプリケーションに対する通知情報を保持する簡易インタフェースとを有し、前記アプリケーションは、前記保持された通知情報を取得することを特徴とする。
【００２５】
また、上記課題を解決するために、本発明は、前記通知情報は、前記アプリケーションが前記サービスプログラムを利用することを要求したことにより得られた実行結果情報であることを特徴とする。
【００２６】
また、上記課題を解決するために、本発明は、前記アプリケーションは、前記サービスプログラムを利用するために必要なパラメータを設定することを特徴とする。
【００２７】
また、上記課題を解決するために、本発明は、前記パラメータの設定は複数回行われることを特徴とする。
【００２８】
また、上記課題を解決するために、本発明は、前記パラメータを設定後、前記サービスプログラムを利用するための実行要求を、前記アプリケーションが前記簡易インタフェースに通知することを特徴とする。
【００２９】
また、上記課題を解決するために、本発明は、前記簡易インタフェースは、前記実行要求が通知されると、前記サービスプログラムを実行することを特徴とする。
【００３０】
また、上記課題を解決するために、本発明は、前記アプリケーションは、前記実行結果情報が分割された分割実行結果情報を取得することを特徴とする。
【００３１】
また、上記課題を解決するために、本発明は、前記アプリケーションは、前記サービスを利用するために必要な実行要求ハンドルを、前記簡易インタフェースから取得することを特徴とする。
【００３２】
また、上記課題を解決するために、本発明は、前記アプリケーションは、前記実行要求ハンドルを解放することを特徴とする。
【００３３】
また、上記課題を解決するために、本発明は、前記実行要求ハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする。
【００３４】
また、上記課題を解決するために、本発明は、前記通知情報は、前記サービスプログラムから一方的に得られるイベント情報であることを特徴とする。
【００３５】
また、上記課題を解決するために、本発明は、前記簡易インタフェースは、前記イベント情報が得られると、前記アプリケーションが前記イベント情報を取得するためのイベントハンドルを、前記アプリケーションに通知することを特徴とする。
【００３６】
また、上記課題を解決するために、本発明は、前記アプリケーションが、前記イベントハンドルを解放することを特徴とする。
【００３７】
また、上記課題を解決するために、本発明は、前記イベントハンドルが解放されると、前記簡易インタフェースは、前記保持していた通知情報を解放することを特徴とする。
【発明の効果】
【００３８】
以上説明したように、本発明によれば、外部からインストールされたアプリケーションが搭載可能な画像形成装置と、その外部アプリケーションと画像形成装置が有するサービスプログラムとのインタフェース方法が得られる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施例を図面に基づいて説明する。
【実施例】
【００４０】
図１は、本発明による融合機の一実施例の構成図を示している。融合機１は、ソフトウェア群２と、融合機起動部３と、ハードウェア資源４とを含むように構成される。
【００４１】
融合機起動部３は融合機１の電源投入時に最初に実行され、アプリケーション層５およびプラットホーム層６を起動する。例えば融合機起動部３は、アプリケーション層５およびプラットホーム層６のプログラムを、ハードディスク装置（以下、ＨＤＤという）などから読み出し、読み出した各プログラムをメモリ領域に転送して起動する。ハードウェア資源４は、スキャナ２５と、プロッタ２６と、ＡＤＦ（Auto Document Feeder）などのハードウェアリソース２４とを含む。
【００４２】
また、ソフトウェア群２は、ＵＮＩＸ（登録商標）などのオペレーティングシステム（以下、ＯＳという）上に起動されているアプリケーション層５とプラットホーム層６とを含む。アプリケーション層５は、プリンタ、コピー、ファックスおよびスキャナなどの画像形成にかかるユーザサービスにそれぞれ固有の処理を行うプログラムを含む。
【００４３】
アプリケーション層５は、プリンタ用のアプリケーションであるプリンタアプリ９と、コピー用アプリケーションであるコピーアプリ１０と、ファックス用アプリケーションであるファックスアプリ１１と、スキャナ用アプリケーションであるスキャナアプリ１２とを含む。また、アプリケーション層５は、ＶＡＳ（Virtual Application Service）２９と、ＳＤＫ  ＡＰＬ（Software Development Kit Application）６０とを含む。
【００４４】
このＶＡＳ２９は、ＶＡＳ−ＡＰＩ６１をＳＤＫアプリ６０に提供する。ＶＡＳ−ＡＰＩ１３０とは、後述するＡＰＩ２８を簡易化したインタフェースである。これらＶＡＳ２９と、ＶＡＳ−ＡＰＩ６１は、簡易インタフェースに対応する。
【００４５】
ＶＡＳ２９は、ＶＡＳ−ＡＰＩ６１とＡＰＩ２８の変換を行い、サービス層が提供する機能をＳＤＫアプリ６０が利用できるようにするものである。具体的にＶＡＳ２９は、機種間、機種世代間の差分を吸収し、ＳＤＫアプリ６０に固定化したＡＰＩを提供する。
【００４６】
また、ＶＡＳ２９は、他のライブラリを利用するためのプロセスと、シェアードライブラリとして実装され、共有メモリ上で動作する。後述するＮＣＳ、ＤＣＳ、ＯＣＳ、ＦＣＳ、ＥＣＳ、ＭＣＳ、ＵＣＳ、ＳＣＳなど（以下、ｘＣＳ１００と記す）からは、プロセスとしてのＳＤＫアプリが見えるのみで、ＶＡＳ２９は意識できない。そして、ｘＣＳから発生するイベント通知は、ＳＤＫアプリに対して通知されるが、ＶＡＳ２９で受けて、内容を変換してＳＤＫアプリに通知するようになっている。なお、ｘＣＳ１００は、サービスプログラムに対応する。
【００４７】
次に、プラットホーム層６について説明する。プラットホーム層６は、アプリケーション層５からの処理要求を解釈してハードウェア資源４の獲得要求を発生するコントロールサービス層７と、１つ以上のハードウェア資源４の管理を行ってコントロールサービス層７からの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）２１と、ＳＲＭ２１からの獲得要求に応じてハードウェア資源４の管理を行うハンドラ層８とを含む。
【００４８】
コントロールサービス層７は、ネットワークコントロールサービス（以下、ＮＣＳという）１３、デリバリーコントロールサービス（以下、ＤＣＳという）１４、オペレーションパネルコントロールサービス（以下、ＯＣＳという）１５、ファックスコントロールサービス（以下、ＦＣＳという）１６、エンジンコントロールサービス（以下、ＥＣＳという）１７、メモリコントロールサービス（以下、ＭＣＳという）１８、ユーザインフォメーションコントロールサービス（以下、ＵＣＳという）１９、システムコントロールサービス（以下、ＳＣＳという）２０など、一つ以上のサービスプログラムを含むように構成されている。
【００４９】
なお、プラットホーム層６は予め定義されている関数により、アプリケーション層５からの処理要求を受信可能とするＡＰＩ２８を有するように構成されている。このＡＰＩ２８は、サービスプログラムを利用するためのインタフェースである。ＯＳは、アプリケーション層５およびプラットホーム層６の各ソフトウェアをプロセスとして並列実行する。
【００５０】
ＮＣＳ１３のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。
【００５１】
例えばＮＣＳ１３は、ネットワークを介して接続されるネットワーク機器とのデータ通信をｈｔｔｐｄ（HyperText Transfer Protocol Daemon）により、ＨＴＴＰ（HyperText Transfer Protocol）で制御する。
【００５２】
ＤＣＳ１４のプロセスは、蓄積文書の配信などの制御を行う。ＯＣＳ１５のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。ＦＣＳ１６のプロセスは、アプリケーション層５からＰＳＴＮまたはＩＳＤＮ網を利用したファックス送受信、バックアップ用のメモリで管理されている各種ファックスデータの登録／引用、ファックス読み取り、ファックス受信印刷などを行うためのＡＰＩを提供する。
【００５３】
ＥＣＳ１７のプロセスは、スキャナ２５、プロッタ２６、その他のハードウェアリソース２４などのエンジン部の制御を行う。ＭＣＳ１８のプロセスは、メモリの取得および解放、ＨＤＤの利用などのメモリ制御を行う。ＵＣＳ１９は、ユーザ情報の管理を行うものである。
【００５４】
ＳＣＳ２０のプロセスは、アプリケーション管理、操作部制御、システム画面表示、ＬＥＤ表示、ハードウェア資源管理、割り込みアプリケーション制御などの処理を行う。
【００５５】
ＳＲＭ２１のプロセスは、ＳＣＳ２０と共にシステムの制御およびハードウェア資源４の管理を行うものである。例えばＳＲＭ２１のプロセスは、スキャナ２５やプロッタ２６などのハードウェア資源４を利用する上位層からの獲得要求に従って調停を行い、実行制御する。
【００５６】
具体的に、ＳＲＭ２１のプロセスは獲得要求されたハードウェア資源４が利用可能であるか（他の獲得要求により利用されていないかどうか）を判定し、利用可能であれば獲得要求されたハードウェア資源４が利用可能である旨を上位層に通知する。また、ＳＲＭ２１のプロセスは上位層からの獲得要求に対してハードウェア資源４を利用するためのスケジューリングを行い、要求内容（例えば、プリンタエンジンによる紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００５７】
また、ハンドラ層８は後述するファックスコントロールユニット（以下、ＦＣＵという）の管理を行うファックスコントロールユニットハンドラ（以下、ＦＣＵＨという）２２と、プロセスに対するメモリの割り振り及びプロセスに割り振ったメモリの管理を行うイメージメモリハンドラ（以下、ＩＭＨという）２３とを含む。ＳＲＭ２１およびＦＣＵＨ２２は、予め定義されている関数によりハードウェア資源４に対する処理要求を送信可能とするエンジンＩ／Ｆ２７を利用して、ハードウェア資源４に対する処理要求を行う。
【００５８】
融合機１は、各アプリケーションで共通的に必要な処理をプラットホーム層６で一元的に処理することができる。次に、融合機１のハードウェア構成について説明する。
【００５９】
図２は、融合機１の一実施例のハードウェア構成図を示している。融合機１は、コントローラボード３０と、オペレーションパネル３９と、ＦＣＵ４０と、エンジン４３とを含む。また、ＦＣＵ４０は、Ｇ３規格対応ユニット５２と、Ｇ４規格対応ユニット５３とを有する。
【００６０】
また、コントローラボード３０は、ＣＰＵ３１と、ＡＳＩＣ３６と、ＨＤＤ３８と、システムメモリ（ＭＥＭ−Ｐ）３２と、ローカルメモリ（ＭＥＭ−Ｃ）３７と、ノースブリッジ（以下、ＮＢと記す）３３と、サウスブリッジ（以下、ＳＢと記す）３４と、ＮＩＣ５０（Network Interface Card）と、ＵＳＢデバイス４１と、ＩＥＥＥ１３９４デバイス４２と、セントロニクスデバイス５１とを含む。
【００６１】
オペレーションパネル３９は、コントローラボード３０のＡＳＩＣ３６に接続されている。また、ＳＢ３４と、ＮＩＣ５０と、ＵＳＢデバイス４１と、ＩＥＥＥ１３９４デバイス４２と、セントロニクスデバイス５１とは、ＮＢ３３にＰＣＩバスで接続されている。
【００６２】
また、ＦＣＵ４０と、エンジン４３は、コントローラボード３０のＡＳＩＣ３６にＰＣＩバスで接続されている。
【００６３】
なお、コントローラボード３０は、ＡＳＩＣ３６にローカルメモリ３７、ＨＤＤ３８などが接続されると共に、ＣＰＵ３１とＡＳＩＣ３６とがＣＰＵチップセットのＮＢ３３を介して接続されている。このように、ＮＢ３３を介してＣＰＵ３１とＡＳＩＣ３６とを接続すれば、ＣＰＵ３１のインタフェースが公開されていない場合に対応できる。
【００６４】
また、ＡＳＩＣ３６とＮＢ３３とはＰＣＩバスを介して接続されているのでなく、ＡＧＰ（Accelerated Graphics Port）６７を介して接続されている。このように、図２のアプリケーション層５やプラットホーム層６を形成する一つ以上のプロセスを実行制御するため、ＡＳＩＣ３６とＮＢ３３とを低速のＰＣＩバスでなくＡＧＰ３５を介して接続し、パフォーマンスの低下を防いでいる。
【００６５】
ＣＰＵ３１は、融合機１の全体制御を行うものである。ＣＰＵ３１は、ＮＣＳ１３、ＤＣＳ１４、ＯＣＳ１５、ＦＣＳ１６、ＥＣＳ１７、ＭＣＳ１８、ＵＣＳ１９、ＳＣＳ２０、ＳＲＭ２１、ＦＣＵＨ２２、ＩＭＨ２３をＯＳ上にそれぞれプロセスとして起動して実行させると共に、アプリケーション層５を形成するプリンタアプリ９、コピーアプリ１０、ファックスアプリ１１、スキャナアプリ１２、ＳＤＫアプリ６０、ＶＡＳ２９を起動して実行させる。
【００６６】
ＮＢ３３は、ＣＰＵ３１、システムメモリ３２、ＳＢ３４およびＡＳＩＣ３６を接続するためのブリッジである。システムメモリ３２は、融合機１の描画用メモリなどとして用いるメモリである。ＳＢ３４は、ＮＢ３３とＰＣＩバス、周辺デバイスとを接続するためのブリッジである。また、ローカルメモリ３７はコピー用画像バッファ、符号バッファとして用いるメモリである。
【００６７】
ＡＳＩＣ３６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＨＤＤ３８は、画像の蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積などを行うためのストレージである。また、オペレーションパネル３９は、ユーザからの入力操作を受け付けると共に、ユーザに向けた表示を行う操作部である。
【００６８】
以下、ＶＡＳ２９について説明する。まず、ＶＡＳ２９に関する概要について、図３のＳＤＫ関連図を用いて説明する。この図３は、２つのＳＤＫアプリが起動する場合の例を示すものである。図３には、ＳＤＫアプリＡ１０１と、ＳＤＫアプリＢ１０４と、ＶＡＳ１０２、１０５と、クライアントスレッドＡ１０３と、クライアントスレッドＢ１０６と、ｘＣＳ１００とが示されている。
【００６９】
最初にＳＤＫアプリＡ１０１について説明する。ステップＳ１０１で、ＳＤＫアプリＡ１０１は、ＶＡＳ１０２の初期化を行う。この初期化で、ＳＤＫアプリＡ１０１は、イベントを受け取るための関数アドレスを渡す。これにより、ＶＡＳ１０２は、ステップＳ１０２で、クライアント初期化関数をコールし、ｘＣＳ１００との間で通信を行うクライアントスレッドＡ１０３を起動する。
【００７０】
これにより、ＳＤＫアプリＡ１０１は、ＶＳＡの利用が可能となり、ＳＤＫアプリＡ１０１は、ステップＳ１０３で、サービス要求処理を実行する。これは、上述したＶＡＳ−ＡＰＩ１３０のＡＰＩをコールすることにより実行される。次のステップＳ１０４で、ＶＡＳ１０２は、サービス要求の実行処理を行う。具体的には、ｘＣＳ１００に対してサービスの実行を要求するコマンドを送信する。
【００７１】
次に、クライアントスレッドＡ１０３は、ｘＣＳ１００からイベントの通知があると、ステップＳ１０５で、ＶＡＳ１０２のイベント通知関数をコールする。次に、ＶＡＳ１０２は、ステップＳ１０６で、ステップＳ１０１の初期化処理で渡されたＳＤＫアプリＡ１０１のコールバック関数を呼び出す。これにより、ＳＤＫアプリＡ１０１は、ステップＳ１０７で、ＶＡＳ−ＡＰＩ１３０からコールバックされる。
【００７２】
次に、ＳＤＫアプリＢ１０４について説明する。ＳＤＫアプリＢ１０４もＳＤＫアプリＡ１０１と処理概要は同じである。ステップＳ２０１で、ＳＤＫアプリＢ１０４は、イベントを受け取るための関数アドレスを渡す。次に、ＶＡＳ１０５は、ステップＳ２０２で、クライアント初期化関数をコールし、ｘＣＳ１００との間で通信を行うクライアントスレッドＢ１０６を起動する。
【００７３】
ＳＤＫアプリＢ１０４は、ステップＳ２０３で、サービス要求処理を実行する。次のステップＳ２０４で、ＶＡＳ１０５は、サービス要求の実行処理を行う。次に、クライアントスレッドＢ１０６は、ｘＣＳ１００からイベントの通知があると、ステップＳ２０５で、ＶＡＳ１０５のイベント通知関数をコールする。次に、ＶＡＳ１０５は、ステップＳ２０６で、ステップＳ１０１の初期化処理で渡されたＳＤＫアプリＢ１０４のコールバック関数を呼び出す。そして、ＳＤＫアプリＢ１０４は、ステップＳ２０７で、ＶＡＳ−ＡＰＩ１３０からコールバックされる。
【００７４】
このように、ＶＡＳは、ＳＤＫアプリごとにクライアントスレッドを立ち上げ、ＳＤＫアプリにＡＰＩを提供する。
【００７５】
次に、図４のシーケンス図を用いて、ＳＤＫアプリ６０がサービス層７の機能を実行する場合の処理について説明する。実行要求ハンドル取得段階に対応するステップＳ３０１で、ＳＤＫアプリ６０は、ＶＡＳ２９から実行要求ハンドルを取得する。この実行要求ハンドルとは、３２ビットで表現され、同じコマンドを複数同時に実行する際にＶＡＳ２９が識別用に使用するものであるため、機能実行要求を行う場合は機能ごとに個別の実行要求ハンドル取得を行う必要がある。また、ハンドルは機能実行の為のサブ関数であるパラメータ設定、実行要求、実行結果取得で使用する。この実行結果を取得するためのメモリは、このとき取得される。なお、ステップＳ３０１で、ハンドル取得を行えない場合、エラーとしてＮＵＬＬが返される。
【００７６】
ハンドルを取得すると、ＳＤＫアプリ６０は、ステップＳ３０２で、機能の実行に必要なパラメータの設定であるパラメータ設定Ａを行う。このとき、実行要求ハンドルと設定値がＶＡＳ２９に渡され、ＳＤＫアプリ６０は、設定結果を戻り値として受け取る。同様に、ＳＤＫアプリ６０は、ステップＳ３０３で、機能の実行に必要なパラメータの設定であるパラメータ設定Ｂを行う。今の場合、２回のパラメータ設定が行われたが、この回数は実行要求の種類によって異なる。上記ステップＳ３０２と、ステップＳ３０３は、設定段階に対応する。
【００７７】
次に、ＳＤＫアプリ６０は、実行要求段階に対応するステップＳ３０４で、ＶＡＳ２９に対し、実行要求を行う。このとき、実行要求ハンドルがＶＡＳ２９に渡される。ＶＡＳ２９は、ステップＳ３０５で、サービス層７に対し、ＡＰＩ２８の関数をコールし、その戻り値を取得する。その戻り値に基づいた値が通知情報に対応し、図４の場合、通知情報は実行結果情報（以下、実行結果と記す）である。なお、ＶＡＳ２９は、このときのサービス層からの実行結果を、ステップＳ３０１の際に取得したメモリに保持する。このメモリに保持する処理が保持段階に対応する。ステップＳ３０４に対する戻り値は、実行結果ではなく、処理が正常に行われたかを示す戻り値である。
【００７８】
ＳＤＫアプリ６０は、ステップＳ３０６で、ＶＡＳ２９に対し、実行結果の取得を行う。このときＳＤＫアプリ６０は、実行要求ハンドルをＶＡＳ２９に渡し、実行結果の一部である実行結果Ａを取得する。同様に、ＳＤＫアプリ６０は、ステップＳ３０７で、ＶＡＳ２９に対し、実行結果Ｂの取得を行う。今の場合、２回の実行結果の取得が行われたが、この回数は実行要求の種類によって異なる。上記ステップＳ３０６とステップＳ３０７は取得段階に対応する。
【００７９】
所定の実行結果を取得すると、ＳＤＫアプリ６０は、実行要求ハンドル解放段階に対応するステップＳ３０８で、ＶＡＳ２９に対し、実行要求ハンドル解放を行う。このときも実行要求ハンドルがＶＡＳ２９に渡される。このとき、実行結果を保持していたメモリは、解放される。
【００８０】
次に、サービス層７から一方的に通知されるイベントに関する処理を、図５のシーケンス図を用いて説明する。まず、ステップＳ４０１で、ＶＡＳ２９は、サービス層７からイベントが通知される。このとき、イベントコードとイベントパラメータが通知される。イベントコードは、イベントの種類を示すものである。また、イベントパラメータは、イベントの発生に伴うパラメータである。このイベントパラメータは、ＳＤＫアプリ６０が取得可能なように、メモリに保持される。
【００８１】
次のステップＳ４０２で、ＶＡＳ２９は、ＳＤＫアプリ６０にイベントを通知する。このとき、イベントコードとイベントハンドルが通知される。このイベントハンドルは、３２ビットで表現され、イベントが発生するごとに一意的にそのイベントに割り当てられるもので、以後、ＳＤＫアプリ６０はこのイベントハンドルを用いてイベントパラメータを取得する。
【００８２】
ステップＳ４０３で、ＳＤＫアプリ６０は、イベントパラメータを取得するイベントパラメータ取得Ａを行い、戻り値としてイベントパラメータＡを取得する。このとき、イベントハンドルがＶＡＳ２９に渡される。同様に、ステップＳ４０４で、ＳＤＫアプリ６０は、イベントパラメータを取得するイベントパラメータ取得Ｂを行い、戻り値としてイベントパラメータＢを取得する。
【００８３】
所定のイベントパラメータを取得すると、ＳＤＫアプリ６０は、イベントハンドル解放段階に対応するステップＳ４０５で、ＶＡＳ２９に対し、イベントハンドル解放を行う。このときもイベントハンドルがＶＡＳ２９に渡される。そして、イベントパラメータを保持していたメモリは解放される。
【００８４】
次に、図６を用いて、実行結果やイベントパラメータが保持されるメモリについて説明する。図６に示されるメモリ１２２は、システムメモリ３２またはローカルメモリ３７上に取得されるものである。図６に示されるメモリの場合、５つの値が保持可能となっているが、実行要求やイベントの内容に異なる。
【００８５】
ＶＡＳ２９は、ＡＰＩ２９からの実行結果またはイベントパラメータ（以下、これら２つを単にパラメータと表現する）を保持する。そして、ＳＤＫアプリ６０は、１回以上の関数コールにより、パラメータを取得する。例えば、図４、図５で、パラメータを２回に渡り取得しているが、例えばメモリ１２０に保持されているパラメータを１回目に取得し、メモリ１２１に保持されているパラメータを２回目に取得する。
【００８６】
上記メモリ１２０に保持されているパラメータやメモリ１２１に保持されているパラメータは、分割実行結果情報の例である。
【００８７】
以上のように、複数回に分けて分割して取得することにより、ＳＤＫアプリ６０は、必要なパラメータのみ取得することができるとともに、ＳＤＫアプリ６０がパラメータを保持するために取得するメモリの量を減らすことができる。
【００８８】
次に、図７を用いて、Ｃ言語での実装例について説明する。図７には、ＶＡＳ初期化関数１５０と、コールバック関数１５１と、ＳＤＫアプリプログラム例１５２と、コールバック関数記述例１５３とが示されている。以下、この順に説明していく。
【００８９】
ＶＡＳ初期化関数１５０は、戻り値１３０と、引数１３２、１３３、１３４、１３５を有する関数である。また、sdkVasInit１３１は関数名である。
【００９０】
戻り値１３０は、アプリケーションＩＤ（以下、アプリＩＤと記す）を示す。引数１３２は、オーナーＩＤを示す。引数１３３は、キートップ名称構造体を示す。引数１３４は、ユーザインタフェース制御設定を示す。引数１３５は、コールバック関数のポインタを示す。
【００９１】
アプリＩＤとは、ＳＤＫアプリ６０に一意的に割り当てられたＩＤである。このアプリＩＤとオーナーＩＤとの関係は、以下のようになっている。
【００９２】
オーナーＩＤ：０ → アプリＩＤ：ＡＰＬＩ＿ＩＤ＿ＳＤＫ１
オーナーＩＤ：１ → アプリＩＤ：ＡＰＬＩ＿ＩＤ＿ＳＤＫ２
オーナーＩＤ：２ → アプリＩＤ：ＡＰＬＩ＿ＩＤ＿ＳＤＫ３
例えばオーナーＩＤが１の場合、アプリＩＤはＡＰＬＩ＿ＩＤ＿ＳＤＫ２となる。このＡＰＬＩ＿ＩＤ＿ＳＤＫ２は、一定の値であり、他のＡＰＬＩ＿ＩＤ＿ＳＤＫ１、３も同様である。
【００９３】
ユーザインタフェース制御設定は、サービス層７が提供するユーザインタフェースを使用する際に用いられ、コピーやファックスなどで用いられる画面を制御することができる。
【００９４】
コールバック関数のポインタは、ＶＡＳ２９からＳＤＫアプリ６０に対するイベント通知の際に呼び出される関数のポインタである。
【００９５】
次に、コールバック関数１５１について説明する。コールバック関数は、戻り値１３６と、引数１３８、１３９を有する関数である。また、SdkEventCallBacFunction１３１は関数名である。このコールバック関数は、引数１３８のイベントコードと、引数１３９のハンドルをセットして呼び出される。そして、戻り値１３６が「ｖｏｉｄ」のため、コールバック関数１５１は、具体的な戻り値を持たない。
【００９６】
次に、ＳＤＫアプリプログラム例１５２について説明する。コード１４０は、ＶＡＳ初期化関数で用いられるローカル変数の宣言である。コード１４１は、ＶＡＳ初期化関数のコールであり、コード１４０で宣言されたローカル変数が用いられている。
【００９７】
ちなみに、コード１４１のＶＡＳ初期化関数では、オーナーＩＤが０であり、コピーサーバーの画面制御が指定されている。
【００９８】
次に、コールバック関数記述例１５３について説明する。コールバック関数記述例１５３では、スイッチ文１４２が用いられる。このスイッチ文１４２に示されるように、各イベントコードごとに処理が分岐するようになっている。
【図面の簡単な説明】
【００９９】
【図１】本発明による融合機の一実施例の構成図である。
【図２】本発明による融合機の一実施例のハードウェア構成図である。
【図３】ＳＤＫ関連図である。
【図４】ＳＤＫアプリがサービス層の機能を実行する処理を示すシーケンス図である。
【図５】サービス層から通知されるイベントに関する処理を示すシーケンス図である。
【図６】パラメータが保持されるメモリを示す図である。
【図７】実装例を示す図である。
【符号の説明】
【０１００】
１  融合機
２  ソフトウェア群
３  融合機起動部
４  ハードウェア資源
５  アプリケーション層
６  プラットホーム層
７  コントロールサービス層
８  ハンドラ層
９  プリンタアプリ
１０  コピーアプリ
１１  ファックスアプリ
１２  スキャナアプリ
１３  ネットワークコントロールサービス（ＮＣＳ）
１４  デリバリーコントロールサービス（ＤＣＳ）
１５  オペレーションパネルコントロールサービス（ＯＣＳ）
１６  ファックスコントロールサービス（ＦＣＳ）
１７  エンジンコントロールサービス（ＥＣＳ）
１８  メモリコントロールサービス（ＭＣＳ）
１９  ユーザインフォメーションコントロールサービス（ＵＣＳ）
２０  システムコントロールサービス（ＳＣＳ）
２１  システムリソースマネージャ（ＳＲＭ）
２２  ファックスコントロールユニットハンドラ（ＦＣＵＨ）
２３  イメージメモリハンドラ（ＩＭＨ）
２４  ハードウェアリソース
２５  スキャナ
２６  プロッタ
２７  エンジンＩ／Ｆ（ＰＣＩ）
２８  アプリケーションプログラムインターフェース（ＡＰＩ）
２９、１０２、１０５  ＶＡＳ
３０  コントローラボード
３１  ＣＰＵ
３２  システムメモリ（ＭＥＭ−Ｐ）
３３  ノースブリッジ（ＮＢ）
３４  サウスブリッジ（ＳＢ）
３５  ＡＧＰ（Accelerated Graphics Port）
３６  ＡＳＩＣ
３７  ローカルメモリ（ＭＥＭ−Ｃ）
３８  ハードディスク装置（ＨＤＤ）
３９  オペレーションパネル
４０  ファックスコントロールユニット（ＦＣＵ）
４１  ＵＳＢデバイス
４２  ＩＥＥＥ１３９４デバイス
４３  エンジン部
４４  ＨＳＭ
５０  ＮＩＣ
５１  セントロニクス
５２  Ｇ３規格対応ユニット
５３  Ｇ４規格対応ユニット
６０  ＳＤＫアプリ
６１  ＶＡＳ−ＡＰＩ
１００  ｘＣＳ
１０１  ＳＤＫアプリＡ
１０３  クライアントスレッドＡ
１０４  ＳＤＫアプリＢ
１０６  クライアントスレッドＢ
１２０、１２１、１２２  メモリ
１３０、１３６  戻り値
１３１  sdkVasInit
１３２、１３３、１３４、１３５、１３８、１３９  引数
１３７  SdkEventCallBacFunction
１４０、１４１、１４２  コード
１５０  ＶＡＳ初期化関数
１５１  コールバック関数
１５２  ＳＤＫアプリプログラム例
１５３  コールバック関数記述例
【図１】
2005229270.tif 000003
【図２】
2005229270.tif 000004
【図３】
2005229270.tif 000005
【図４】
2005229270.tif 000006
【図５】
2005229270.tif 000007
【図６】
2005229270.tif 000008
【図７】
2005229270.tif 000009