(57)【要約】【課題】ハードウェア等の変更等が生じた場合にも、印刷プロトコル処理ごとのインタフェース変更を不要とし、プログラム開発の容易化を図ること。【解決手段】画像形成処理にかかるユーザサービスを提供する画像形成装置であって、印刷対象の印刷データを印刷ジョブとして記憶するＨＤＤ１５０と、ネットワーク１８０に接続されたＰＣ１９０から受信した印刷対象の印刷データに対して、所定の通信プロトコルに基づいて印刷データを解釈し、印刷データを印刷データに固有の印刷アプリケーションに受け渡す印刷プロトコル処理部１３１〜１３Ｎと、印刷データを、印刷プロトコル処理部１３１〜１３Ｎとは異なり機能的に独立して、共有メモリを介して印刷ジョブとしてＨＤＤ１５０に登録するスプール書き込み処理部１１１とを備えた。【選択図】        図１
2005099925.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行ってスプール処理を行うスプール処理方法であって、
ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理ステップと、
前記印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込みステップと、
を含むことを特徴とするスプール処理方法。
【請求項２】
前記プロトコル処理ステップは、さらに前記印刷データを共有メモリに保存し、
前記スプール書き込みステップは、前記共有メモリに保存された前記印刷データを、前記プロトコル処理ステップを実行する手段とは異なる手段によって、印刷ジョブとして前記記憶手段に登録することを特徴とする請求項１に記載のスプール処理方法。
【請求項３】
前記スプール書き込みステップによって前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知する通知ステップをさらに含むことを特徴とする請求項１または２に記載のスプール処理方法。
【請求項４】
前記スプール書き込みステップは、単一の印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、単一の印刷ジョブとして記憶手段に登録することを特徴とする請求項１〜３のいずれか一つに記載のスプール処理方法。
【請求項５】
前記スプール書き込みステップは、単一の印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、複数の印刷データに分割して、分割された複数の印刷データを単一の印刷ジョブとして前記記憶手段に登録することを特徴とする請求項１〜３のいずれか一つに記載のスプール処理方法。
【請求項６】
請求項１〜５のいずれか一つに記載された方法をコンピュータに実行させるプログラム。
【請求項７】
少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行って、画像形成処理にかかるユーザサービスを提供する画像形成装置であって、
印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、
ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、
前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込み手段と、
を備えたことを特徴とする画像形成装置。
【請求項８】
前記プロトコル処理手段は、さらに前記印刷データを前記共有メモリに保存し、
前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして前記記憶手段に登録することを特徴とする請求項７に記載の画像形成装置。
【請求項９】
画像形成処理で使用されるハードウェア資源と、
画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーション層と、
前記アプリケーション層と前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーション層の少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービス層と、をさらに備え、
前記コントロールサービス層は、前記プロトコル処理手段を有し、
前記アプリケーション層は、前記スプール書き込み手段を有したことを特徴とする請求項８に記載の画像形成装置。
【請求項１０】
前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、
前記アプリケーション層は、前記スプール書き込み手段を有するスプールアプリを備えたことを特徴とする請求項９に記載の画像形成装置。
【請求項１１】
前記スプール書き込み手段は、さらに前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することを特徴とする請求項７〜１０のいずれか一つに記載の画像形成装置。
【請求項１２】
前記スプール書き込み手段は、単一の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする請求項７〜１１のいずれか一つに記載の画像形成装置。
【請求項１３】
少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行って、画像形成処理にかかるユーザサービスを提供する画像形成装置であって、
印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、
ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、
前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、スプールの処理内容を定めたスプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、共有メモリを介して単一の印刷ジョブとして記憶手段に登録するスプール書き込み手段と、
を備えたことを特徴とする画像形成装置。
【請求項１４】
前記プロトコル処理手段は、さらに前記処理された印刷データを共有メモリに保存し、
前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを、読み出された印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、前記スプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする請求項１３に記載の画像形成装置。
【請求項１５】
前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷処理を行うアプリケーションごとに前記印刷データの分割処理情報を定めた前記スプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして記憶手段に登録することを特徴とする請求項１３または１４に記載の画像形成装置。
【請求項１６】
画像形成処理で使用されるハードウェア資源と、
画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーション層と、
前記アプリケーション層と前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーション層の少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービス層と、をさらに備え、
前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有し、
前記アプリケーション層は、前記スプール書き込み手段を有することを特徴とする請求項１５に記載の画像形成装置。
【請求項１７】
前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、
前記アプリケーション層は、前記スプール書き込み手段を有するスプールアプリを備えたことを特徴とする請求項１６に記載の画像形成装置。
【請求項１８】
前記スプール書き込み手段は、前記分割された複数の印刷データを印刷ジョブとして前記記憶手段に登録した場合に、前記記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知することを特徴とする請求項１３〜１７のいずれか一つに記載の画像形成装置。
【請求項１９】
ネットワークに接続されたクライアント端末からの印刷要求を受けてネットワークに接続されたプリンタ装置に対する印刷処理を行う情報処理装置であって、
印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、
前記クライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、
前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込み手段と、
を備えたことを特徴とする情報処理装置。
【請求項２０】
前記プロトコル処理手段は、さらに前記印刷データ前記を共有メモリに保存し、
前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして前記記憶手段に登録することを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
前記スプール書き込み手段は、さらに前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することを特徴とする請求項１９または２０に記載の情報処理装置。
【請求項２２】
前記スプール書き込み手段は、単一の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする請求項１９〜２１のいずれか一つに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークに接続されたクライアント端末からの印刷要求によって印刷データをスプールして出力するスプール処理方法、その方法をコンピュータに実行させるプログラム、画像形成装置および情報処理装置に関する。
【背景技術】
【０００２】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（複合機）がある（例えば、特許文献１参照）。
【０００４】
このような複合機では、ネットワーク上のＰＣ等のクライアント端末で生成されたアプリケーションデータの印刷出力を行う際に、印刷データを直接プリンタエンジンに送出するのではなく、印刷ジョブとして一時的にハードディスク装置（ＨＤＤ）等の記憶手段に保存しておき、後でまとめてプリンタエンジンに送信するスプール処理を行っている。
【０００５】
図２２は、上述した従来の複合機において、スプール処理に関連する機能的構成を示すブロック図である。図２２に示すように、従来の複合機には、アプリケーション層に印刷処理を行うアプリケーションであるプリンタアプリ２２０１と、ファクシミリ送信およびファクシミリ受信を行うファックスアプリ２２０２が搭載されている。また、コントロールサービス層にはネットワークの制御を行うネットワークコントロールサービス（ＮＣＳ）２２０３が搭載されている。
【０００６】
ＮＣＳは、図２２に示すように、複数の印刷プロトコルに対応して処理を行えるように、各プロトコルごとに印刷プロトコル処理部２２１１，２２１２〜２２１Ｎが設けられている。ここで、印刷プロトコル処理部２２１１，２２１２〜２２１Ｎは、ネットワークＩ／Ｆ部２２０６を介してネットワーク上のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等からデータを受信し、論理セッションの確立および開放を行うとともに、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈し、解釈したデータからアプリケーション固有のデータ部分を抽出して、該当するアプリケーションにデータを受け渡すものである。このような通信プロトコルとしては、例えばＦＴＰ、ＨＴＴＰなどがあり、各プロトコルに対応すべく各プロトコルごとに複数の印刷プロトコル処理部２２１１，２２１２〜２２１Ｎが備えられている。そして、各印刷プロトコル処理部２２１１，２２１２〜２２１Ｎは、印刷データを印刷ジョブとしてＨＤＤ１７０７に登録したり、印刷ジョブの制御などを行うスプール処理部２２２１，２２２２〜２２２Ｎをそれぞれ備えている。スプール処理部２２２１，２２２２〜２２２Ｎは、印刷データを印刷ジョブとしてＨＤＤ１７０７に登録する際にＮＣＳ内部のＨＤＤ  Ｉ／Ｆ２２０５を介して行うことから、ＮＣＳの各印刷プロトコル処理部２２１１，２２１２〜２２１Ｎ内部に設けられている。
【０００７】
また、ＮＣＳ２２０３には、ＨＤＤ２２０７へのアクセスの際のデータの送受信を行うＨＤＤ−Ｉ／Ｆ部２２０５と、メモリへのアクセスの際のデータの送受信を行うとともにスプール処理を実行する際にプリンタアプリやファックスアプリとのデータの送受信を行うメモリ転送Ｉ／Ｆ−スプール転送Ｉ／Ｆ部２２０４とネットワークカード（図示せず）に対するアクセスを制御するネットワークＩ／Ｆ部２２０６とを備えた構成となっている。
【０００８】
このように構成された複合機に対して、ネットワーク上のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）から印刷要求が行われた場合、印刷要求を印刷対象のデータをＮＣＳ２２０３のネットワークＩ／Ｆ部２２０６を経由して印刷プロトコルに対応した印刷プロトコル処理部２２１１，２２１２〜２２１Ｎが受信する。そして、印刷対象のデータを受信した印刷プロトコル処理部は受信したデータを印刷プロトコルに従った処理を行って印刷データをスプール処理部２２２１、２２２２〜２２２Ｎによって印刷ジョブとしてＨＤＤ２２０７にＨＤＤ−Ｉ／Ｆ部を介して登録する。
【０００９】
そして、スプール処理は、印刷ジョブを開始する場合には、ＨＤＤ２２０５から印刷データを読み出し、プリンタアプリ２２０１に読み出した印刷データを受け渡し、プリンタアプリによって印刷データがプリンタエンジンに依存する印刷形式に変換されてプリンタエンジンに送出される。
【００１０】
【特許文献１】特開２００２−８４３８３号公報（図３）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、このような従来の複合機では、各印刷プロトコル処理部２２１１，２２１２〜２２１Ｎごとにスプール処理を行うスプール処理部２２２１，２２２２〜２２２Ｎを備えているので、例えばＨＤＤ２２０７の他にＳＤカードなど他のハードウェア資源が追加された場合、全ての印刷プロトコル処理部２２１１，２２１２〜２２１Ｎの中のスプール処理部２２２１，２２２２〜２２２Ｎに対して新たなハードウェア資源に対する処理を変更する必要があり、新たなハードウェア資源の追加に伴うスプール機能に関するプログラム変更に多大な労力を要するという問題がある。
【００１２】
また、スプール処理には、一つの印刷ジョブに対して単一の印刷データファイルを割り当てるほか、一つの印刷ジョブに対して印刷データを分割して、例えばページごとに複数の印刷データファイルを割り当てる場合もある。この場合、プリンタアプリなどのアプリケーションのジョブごとに分割するか否か、分割の単位などが異なる場合があり、全てのスプール処理部で個々に各アプリケーションごとに異なる処理を組み込むとなるとスプール機能に関するプログラム作成作業に多大な労力を要するという問題がある。
【００１３】
この発明は上記に鑑みてなされたもので、ハードウェア等の変更等が生じた場合にも、印刷プロトコル処理ごとの修正インタフェース変更を不要とし、プログラム開発の容易化を図ることができるスプール処理方法、その方法をコンピュータに実行させるプログラム、画像形成装置および情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、請求項１にかかる発明は、少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行ってスプール処理を行うスプール処理方法であって、ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理ステップと、前記印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込みステップと、を含むことを特徴とする。
【００１５】
この請求項１の発明によれば、印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、共有メモリを介して印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、一カ所のスプール処理部分のプログラム変更を行えばインタフェースの変更に対応することができ、複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がない。また、ハードウェアに変更があった場合でもスプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、プロトコル処理ステップを実行する手段の変更を行えば、スプール処理を実行する部分のプログラム変更を行う必要がない。このため、本発明によれば、効率的なプログラム開発を行うことができる。また、スプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００１６】
また、請求項２にかかる発明は、請求項１に記載のスプール処理方法において、前記プロトコル処理ステップは、さらに前記印刷データを共有メモリに保存し、前記スプール書き込みステップは、前記共有メモリに保存された前記印刷データを、前記プロトコル処理ステップを実行する手段とは異なる手段によって、印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００１７】
この請求項２の発明によれば、印刷データを共有メモリに保存し、前記共有メモリに保存された前記印刷データを、プロトコル処理ステップを実行する手段とは異なる手段によって、印刷ジョブとして記憶手段に登録することで、印刷データのやりとりを共有メモリを介して円滑に実現でき、スプール処理に関連するインタフェースの変更があった場合でも複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がなく、効率的なプログラム開発を行うことができる。また、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００１８】
また、請求項３にかかる発明は、請求項１または２に記載のスプール処理方法において、前記スプール書き込みステップによって前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知する通知ステップをさらに含むことを特徴とする。
【００１９】
この請求項３の発明によれば、印刷データを印刷ジョブとして記憶手段に登録した後に、記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知することで、印刷ジョブの登録と読み出しの処理を円滑に行うことができる。
【００２０】
また、請求項４にかかる発明は、請求項１〜３のいずれか一つに記載のスプール処理方法において、前記スプール書き込みステップは、単一の印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、単一の印刷ジョブとして記憶手段に登録することを特徴とする。
【００２１】
この請求項４の発明によれば、単一の印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、単一の印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができる。
【００２２】
また、請求項５にかかる発明は、請求項１〜３のいずれか一つに記載のスプール処理方法において、前記スプール書き込みステップは、単一の印刷データを、前記プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、複数の印刷データに分割して、分割された複数の印刷データを単一の印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００２３】
この請求項５の発明によれば、単一の印刷データを、プロトコル処理ステップを実行する手段とは異なる機能的に独立した手段によって、複数の印刷データに分割して、分割された複数の印刷データを単一の印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する複数の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができる。
【００２４】
また、請求項６にかかる発明は、請求項１〜５のいずれか一つに記載された方法をコンピュータに実行させるプログラムであるので、請求項１〜５のいずれか一つの動作をコンピュータによって実行することができる。
【００２５】
また、請求項７にかかる発明は、少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行って、画像形成処理にかかるユーザサービスを提供する画像形成装置であって、印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込み手段と、を備えたことを特徴とする。
【００２６】
この請求項７の発明によれば、印刷データを、プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、一カ所のスプール書き込み手段のプログラム変更を行えばインタフェースの変更に対応することができ、複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がない。また、ハードウェアに変更があった場合でもスプール書き込み手段はプロトコル処理手段とは異なる機能的に独立した手段であるため、プロトコル処理手段の変更を行えば、スプール書き込み手段のプログラム変更を行う必要がない。このため、本発明によれば、スプール書き込み手段とプロトコル処理手段と異なり機能的に独立させたことにより、効率的なプログラム開発を行うことができる。また、スプール書き込み手段はプロトコル処理手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００２７】
また、請求項８にかかる発明は、請求項７に記載の画像形成装置において、前記プロトコル処理手段と前記スプール書き込み手段によって共通にアクセス可能な共有メモリをさらに備え、前記プロトコル処理手段は、さらに前記印刷データを前記共有メモリに保存し、前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを読み出して、読み出された印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００２８】
この請求項８の発明によれば、プロトコル処理手段は印刷データを共有メモリに保存し、スプール書き込み手段は共有メモリに保存された印刷データを読み出して、読み出された印刷データを、プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして記憶手段に登録することで、印刷データのやりとりを共有メモリを介して円滑に実現できるとともに、スプール書き込み手段はプロトコル処理手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００２９】
また、請求項９にかかる発明は、請求項８に記載の画像形成装置において、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーション層と、前記アプリケーション層と前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーション層の少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービス層と、をさらに備え、前記コントロールサービス層は、前記プロトコル処理手段を有し、前記アプリケーション層は、前記スプール書き込み手段を有したことを特徴とする。
【００３０】
この請求項９にかかる発明によれば、コントロールサービス層にプロトコル処理手段を有し、アプリケーション層にスプール書き込み手段を有したことで、スプール処理に関連する記憶手段などのハードウェアやハードウェアとのインタフェースに変更があった場合でも、ハードウェア等の変更の影響を受けない部分であるスプール書き込み手段をアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたので、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプール書き込み手段の修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層のプロトコル処理手段をプロトコルごとに修正する必要がなくなる。また、ハードウェアの変更があった場合には、コントロール層のプロトコル処理手段を変更すれば、アプリケーション層のスプール書き込み手段のプログラム変更は必要がない。このように本発明によれば、ハードウェア等の変更の影響を受けない部分であるスプール書き込み手段をアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【００３１】
また、請求項１０にかかる発明は、請求項９に記載の画像形成装置において、前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、前記アプリケーション層は、前記スプール書き込み手段を有するスプールアプリを備えたことを特徴とする。
【００３２】
この請求項１０にかかる発明によれば、コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、アプリケーション層は、前記スプール書き込み手段とを有するスプールアプリを備えたことで、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプールアプリの修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層のプロトコル処理手段をプロトコルごとに修正する必要がなくなる。また、ハードウェアの変更があった場合には、コントロール層のプロトコル処理手段を変更すれば、アプリケーション層のスプールアプリのプログラム変更は必要がない。このように本発明によれば、ハードウェア等の変更の影響を受けない部分であるスプールアプリをアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【００３３】
また、請求項１１にかかる発明は、請求項７〜１０のいずれか一つに記載の画像形成装置において、前記スプール書き込み手段は、さらに前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することを特徴とする。
【００３４】
この請求項１１の発明によれば、スプール書き込み手段によって印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することで、印刷ジョブの登録と読み出しの処理を円滑に行うことができる。
【００３５】
また、請求項１２にかかる発明は、請求項７〜１１のいずれか一つに記載の画像形成装置において、前記スプール書き込み手段は、単一の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００３６】
この請求項１２の発明によれば、スプール書き込み手段によって単一の印刷データを、単一の印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができる。
【００３７】
また、請求項１３にかかる発明は、少なくとも画像形成アプリケーションを含む複数のアプリケーション間で共有メモリを介してデータの送受信を行って、画像形成処理にかかるユーザサービスを提供する画像形成装置であって、印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、ネットワークに接続されたクライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、スプールの処理内容を定めたスプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、共有メモリを介して単一の印刷ジョブとして記憶手段に登録するスプール書き込み手段と、を備えたことを特徴とする。
【００３８】
この請求項１３にかかる発明によれば、印刷データを、プロトコル処理手段とは異なり機能的に独立して、スプールの処理内容を定めたスプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、共有メモリを介して単一の印刷ジョブとして記憶手段に登録することで、複数の印刷データを単一の印刷ジョブとして扱うスプール処理に関連するインタフェースの変更があった場合でも、一カ所のスプール処理部分のプログラム変更を行えばインタフェースの変更に対応することができ、複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がない。また、ハードウェアに変更があった場合でもスプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、プロトコル処理ステップを実行する手段の変更を行えば、スプール処理を実行する部分のプログラム変更を行う必要がない。このため、本発明によれば、効率的なプログラム開発を行うことができる。また、スプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００３９】
また、請求項１４にかかる発明は、請求項１３に記載の画像形成装置において、前記プロトコル処理手段は、さらに前記処理された印刷データを共有メモリに保存し、前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを、読み出された印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、前記スプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００４０】
この請求項１４にかかる発明によれば、プロトコル処理手段によって処理された印刷データを共有メモリに保存し、スプール書き込み手段によって共有メモリに保存された印刷データを、プロトコル処理手段とは異なり機能的に独立して、スプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして記憶手段に登録することで、印刷データのやりとりを共有メモリを介して円滑に実現でき、スプール処理に関連するインタフェースの変更があった場合でも複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がなく、効率的なプログラム開発を行うことができる。
【００４１】
また、請求項１５にかかる発明は、請求項１３または１４に記載の画像形成装置において、前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷処理を行うアプリケーションごとに前記印刷データの分割処理情報を定めた前記スプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして記憶手段に登録することを特徴とする。
【００４２】
この請求項１５の発明によれば、印刷データをプロトコル処理手段とは異なり機能的に独立して、印刷処理を行うアプリケーションごとに印刷データの分割処理情報を定めたスプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして記憶手段に登録することで、アプリケーションごとに複数の印刷データを単一の印刷ジョブとして扱うスプール処理のプログラム開発を印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができる。
【００４３】
また、請求項１６にかかる発明は、請求項１５に記載の画像形成装置において、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーション層と、前記アプリケーション層と前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーション層の少なくとも２つが共通的に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービス層と、をさらに備え、前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有し、前記アプリケーション層は、前記スプール書き込み手段を有することを特徴とする。
【００４４】
この請求項１６にかかる発明によれば、コントロールサービス層にプロトコル処理手段を有し、アプリケーション層にスプール書き込み手段を有したことで、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプール書き込み手段の修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層のプロトコル処理手段をプロトコルごとに修正する必要がなくなる。また、ハードウェアの変更があった場合には、コントロール層のプロトコル処理手段を変更すれば、アプリケーション層のスプール書き込み手段のプログラム変更は必要がない。このように本発明によれば、ハードウェア等の変更の影響を受けない部分であるスプール書き込み手段をアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【００４５】
また、請求項１７にかかる発明は、請求項１６に記載の画像形成装置において、前記コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、前記アプリケーション層は、前記スプール書き込み手段を有するスプールアプリを備えたことを特徴とする。
【００４６】
この請求項１７にかかる発明によれば、コントロールサービス層は、ネットワークを制御するとともに前記プロトコル処理手段を有するネットワークコントロールサービスを備え、アプリケーション層は、前記スプール書き込み手段を有するスプールアプリを備えたことで、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプールアプリの修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層のプロトコル処理手段をプロトコルごとに修正する必要がなくなる。また、ハードウェアの変更があった場合には、コントロール層のプロトコル処理手段を変更すれば、アプリケーション層のスプールアプリのプログラム変更は必要がない。このように本発明によれば、ハードウェア等の変更の影響を受けない部分であるスプールアプリをアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【００４７】
また、請求項１８にかかる発明は、請求項１３〜１７のいずれか一つに記載の画像形成装置において、前記スプール書き込み手段は、前記分割された複数の印刷データを印刷ジョブとして前記記憶手段に登録した場合に、前記記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知することを特徴とする。
【００４８】
この請求項１８にかかる発明によれば、分割された複数の印刷データを印刷ジョブとして記憶手段に登録した場合に、記憶手段から印刷ジョブの読み出しを行う手段に書き込み完了の旨を通知することで、複数の印刷データを単一の印刷ジョブとして扱う印刷ジョブの登録と読み出しの処理を円滑に行うことができる。
【００４９】
また、請求項１９にかかる発明は、ネットワークに接続されたクライアント端末からの印刷要求を受けてネットワークに接続されたプリンタ装置に対する印刷処理を行う情報処理装置であって、印刷対象の印刷データを印刷ジョブとして記憶する記憶手段と、前記クライアント端末から印刷要求とともに受信した受信データに対して、所定の通信プロトコルに基づいて前記受信データを解釈し、印刷処理を行う画像形成アプリケーションに固有の印刷データを抽出するプロトコル処理手段と、前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録するスプール書き込み手段と、を備えたことを特徴とする。
【００５０】
この請求項１９にかかる発明によれば、印刷データを、プロトコル処理手段とは異なり機能的に独立して、共有メモリを介して印刷ジョブとして記憶手段に登録することで、スプール処理に関連するインタフェースの変更があった場合でも、一カ所のスプール処理部分のプログラム変更を行えばインタフェースの変更に対応することができ、複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がない。また、ハードウェアに変更があった場合でもスプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、プロトコル処理ステップを実行する手段の変更を行えば、スプール処理を実行する部分のプログラム変更を行う必要がない。このため、本発明によれば、効率的なプログラム開発を行うことができる。また、スプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【００５１】
また、請求項２０にかかる発明は、請求項１９に記載の情報処理装置において、前記プロトコル処理手段は、さらに前記印刷データ前記を共有メモリに保存し、前記スプール書き込み手段は、前記共有メモリに保存された前記印刷データを、前記プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００５２】
この請求項２０にかかる発明によれば、プロトコル処理手段は印刷データを共有メモリに保存し、スプール書き込み手段は共有メモリに保存された印刷データを、プロトコル処理手段とは異なり機能的に独立して、印刷ジョブとして記憶手段に登録することで、印刷データのやりとりを共有メモリを介して円滑に実現でき、スプール処理に関連するインタフェースの変更があった場合でも複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がなく、効率的なプログラム開発を行うことができる。
【００５３】
また、請求項２１にかかる発明は、請求項１９または２０に記載の情報処理装置において、前記スプール書き込み手段は、さらに前記印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することを特徴とする。
【００５４】
この請求項２１にかかる発明によれば、スプール書き込み手段によって印刷データを印刷ジョブとして前記記憶手段に登録した後に、前記記憶手段から印刷ジョブの読み出しを行うスプール読み出し手段に書き込み完了の旨を通知することで、印刷ジョブの登録と読み出しの処理を円滑に行うことができる。
【００５５】
また、請求項２２にかかる発明は、請求項１９〜２１のいずれか一つに記載の情報処理装置において、前記スプール書き込み手段は、単一の印刷データを、単一の印刷ジョブとして前記記憶手段に登録することを特徴とする。
【００５６】
この請求項２２にかかる発明によれば、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができる。
【発明の効果】
【００５７】
請求項１にかかる発明によれば、スプール処理を行う手段はプロトコル処理を実行する手段と異なり機能的に独立させたことにより、効率的なプログラム開発を行うことができるという効果を奏する。また、請求項１にかかる発明によれば、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００５８】
また、請求項２にかかる発明によれば、効率的なプログラム開発を行うことができるという効果を奏する。また、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００５９】
また、請求項３にかかる発明によれば、印刷ジョブの登録と読み出しの処理を円滑に行うことができるという効果を奏する。
【００６０】
また、請求項４にかかる発明によれば、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００６１】
また、請求項５にかかる発明によれば、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する複数の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００６２】
また、請求項６にかかる発明請求項１〜５のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【００６３】
また、請求項７にかかる発明によれば、スプール書き込み手段とプロトコル処理手段と異なり機能的に独立させたことにより、効率的なプログラム開発を行うことができるという効果を奏する。また、スプール書き込み手段はプロトコル処理手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００６４】
また、請求項８にかかる発明によれば、印刷データのやりとりを共有メモリを介して円滑に実現できるとともに、スプール書き込み手段はプロトコル処理手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００６５】
また、請求項９にかかる発明によれば、ハードウェア等の変更の影響を受けない部分であるスプール書き込み手段をアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができるという効果を奏する。
【００６６】
また、請求項１０にかかる発明によれば、ハードウェア等の変更の影響を受けない部分であるスプールアプリをアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができるという効果を奏する。
【００６７】
また、請求項１１にかかる発明によれば、印刷ジョブの登録と読み出しの処理を円滑に行うことができるという効果を奏する。
【００６８】
また、請求項１２にかかる発明によれば、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００６９】
また、請求項１３にかかる発明によれば、スプール書き込み手段とプロトコル処理手段と異なり機能的に独立させたことにより、効率的なプログラム開発を行うことができるという効果を奏する。また、請求項１３にかかる発明によれば、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００７０】
また、請求項１４にかかる発明によれば、印刷データのやりとりを共有メモリを介して円滑に実現でき、スプール処理に関連するインタフェースの変更があった場合でも複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００７１】
また、請求項１５にかかる発明によれば、印刷データをプロトコル処理手段とは異なり機能的に独立して、印刷処理を行うアプリケーションごとに印刷データの分割処理情報を定めたスプール設定情報に基づいて一または複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとして記憶手段に登録することで、アプリケーションごとに複数の印刷データを単一の印刷ジョブとして扱うスプール処理のプログラム開発を印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００７２】
また、請求項１６にかかる発明によれば、ハードウェア等の変更の影響を受けない部分であるスプール書き込み手段をアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができるという効果を奏する。
【００７３】
また、請求項１７にかかる発明によれば、ハードウェア等の変更の影響を受けない部分であるスプールアプリをアプリケーション層に、ハードウェア等の変更の影響を受ける部分であるプロトコル処理手段をコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができるという効果を奏する。
【００７４】
また、請求項１８にかかる発明によれば、複数の印刷データを単一の印刷ジョブとして扱う印刷ジョブの登録と読み出しの処理を円滑に行うことができるという効果を奏する。
【００７５】
また、請求項１９にかかる発明によれば、スプール書き込み手段とプロトコル処理手段と異なり機能的に独立させたことにより、効率的なプログラム開発を行うことができる。また、スプール処理を行う手段はプロトコル処理ステップを実行する手段とは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となるという効果を奏する。
【００７６】
また、請求項２０にかかる発明によれば、印刷データのやりとりを共有メモリを介して円滑に実現でき、スプール処理に関連するインタフェースの変更があった場合でも複数の印刷プロトコルごとにスプール処理部分の変更を行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【００７７】
また、請求項２１にかかる発明によれば、印刷ジョブの登録と読み出しの処理を円滑に行うことができるという効果を奏する。
【００７８】
また、請求項２２にかかる発明によれば、スプール処理に関連するインタフェースの変更があった場合でも、単一の印刷ジョブに対する単一の印刷データに関するスプール処理部分の変更を複数の印刷プロトコルごとに行う必要がなく、効率的なプログラム開発を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００７９】
以下に添付図面を参照して、この発明にかかるスプール処理方法、その方法をコンピュータに実行させるプログラム、画像形成装置および情報処理装置の好適な実施の形態を詳細に説明する。
【００８０】
（実施の形態１）
実施の形態１は、本発明の画像形成装置を、複合機に適用したものである。なお、本発明の画像形成装置を複合機の他、プリンタ装置、複写機、ファクシミリ装置にも適用することができる。
【００８１】
図１は、実施の形態１の複合機の主要構成およびネットワーク構成を示すブロック図である。図１に示すように、本実施の形態では、複合機１００と、ＰＣ（ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）１９０とがＥｔｈｅｒｎｅｔ（登録商標）などのネットワーク１８０で接続されている。
【００８２】
ＰＣ１９０は通常のコンピュータであり、本発明におけるクライアント端末を構成する。すなわち、本実施の形態の複合機１００は、ＰＣ１９０をクライアントとしたサーバとして動作するようになっている。
【００８３】
本実施の形態の複合機１００は、アプリケーション層にスプールアプリ１１０と、プリンタアプリ−Ａ１２０ａとプリンタアプリ−Ｂ１２０ｂを主に搭載している。また、各アプリケーションに対して共通の処理を行うコントロールサービス層には、ネットワークコントロールサービス（ＮＣＳ）１３０を主に搭載している。
【００８４】
この他、複合機１００には、汎用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）であるＵＮＩＸ（登録商標）などのＯＳ１４０、ハードウェア資源としてハードディスク装置（ＨＤＤ）１５０、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｓｅｓｓ  Ｍｅｍｏｒｙ）１６０、Ｅｔｈｅｒｎｅｔ（登録商標）ケーブルを接続するネットワークカード１７０が設けられている。
【００８５】
スプールアプリ１１０は、従来の複合機１００においてＮＣＳ１３９の印刷プロトコル処理部内部に設けられていたスプール機能を実行するスプール処理部を通信プロトコルに共通の処理部としてアプリケーション層で実現したものである。このスプールアプリ１１０は、スプール書き込み処理部１１１とスプール読み出し処理部１１２とスプール転送Ｉ／Ｆ部１１５とメモリ転送Ｉ／Ｆ部１１４とＨＤＤ−Ｉ／Ｆ部１１３と、を主に備えている。
【００８６】
スプール書き込み処理部１１１は、ＰＣ１９０から印刷要求があった場合に、印刷ジョブを生成して、印刷対象の印刷データを印刷プロトコル処理部１３１〜１３Ｎから共有メモリ１６１を介してＨＤＤ１５０に格納するものである。
【００８７】
ここで、印刷ジョブとは、印刷に関してＯＳに対して実行させる処理の単位をいい、一つの印刷ジョブは、ジョブ情報ファイルとジョブデータファイルをＨＤＤ１５０に保存することによって登録される。
【００８８】
ジョブ情報ファイルは、印刷ジョブに関する情報を記録したデータファイルであり、具体的には印刷要求を行ったＰＣ１９０の識別名称であるホスト名およびＩＰアドレス、印刷要求を行ったユーザ名、ジョブ名、印刷対象のドキュメント名、トレイ指定などの印刷設定などから構成される。ジョブデータファイルは、印刷要求の対象となる印刷データのファイルである。このジョブデータファイルは、単一の印刷ジョブに対して単一のジョブデータファイルとする他、単一の印刷ジョブに対して複数のジョブデータファイルを含めるように構成することができる。なお、本実施の形態では、単一の印刷ジョブに対して単一のジョブデータファイルを含めている。
【００８９】
スプール読み出し部１１２は、印刷ジョブの実行時に、ＨＤＤ１５０に格納されている印刷ジョブに対応する印刷データを読み出して、共有メモリを介してプリンタアプリ−Ａ１２０ａ、プリンタアプリ−Ｂ１２０ｂに受け渡すものである。
【００９０】
スプール転送Ｉ／Ｆ部１１５は、スプール処理の際のデータの転送を制御するものである。メモリ転送Ｉ／Ｆ部１１４は、ＲＡＭ１６０等のメモリ、あるいはＲＡＭ１６０に確保された共有メモリ領域１６１へのアクセスを制御するものである。ＨＤＤ−Ｉ／Ｆ部１１３は、ＨＤＤ１５０に対するアクセスを制御するものである。
【００９１】
本実施の形態では、記憶手段のインタフェースとしてメモリ転送Ｉ／Ｆ部１１４とＨＤＤ−Ｉ／Ｆ部１１３しかないが、例えばＳＤカードのような他の記憶手段が搭載された場合には、ＳＤカードに対するアクセスを制御するＳＤカードＩ／Ｆ部を設ける。このようにハードウェアに固有の処理を行う部分がアプリケーション層のスプールアプリ１１０に設けられているため、ＨＤＤ１５０などの記憶手段の変更、あるいは新たなハードウェアの追加などによりインタフェースに変更がある場合には、アプリケーション層のスプールアプリ１１０を変更すれば、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎのそれぞれに修正を加える必要がなくなり、プログラム開発の効率化を図ることができる。
【００９２】
ＮＣＳ１３０は、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
【００９３】
ＮＣＳ１３０は、複数の印刷プロトコル処理部１３１〜１３Ｎと、機器管理部１３２と、機器管理プロトコル処理部１３４と、ネットワーク管理部１３３と、アプリ管理部１３５と、ネットワークＩ／Ｆ部１３７を主に備えた構成となっている。
【００９４】
複数の印刷プロトコル処理部１３１〜１３Ｎの各々は、各種通信プロトコルに従った処理を行うものであり、各プロトコルに対応して存在する。具体的には、印刷プロトコル処理部１３１〜１３Ｎは、ネットワークＩ／Ｆ部１３７を介してネットワーク上１８０のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）１９０等からデータを受信し、論理セッションの確立および開放を行うとともに、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈する。そして、データの解釈後、データからアプリケーション固有のデータ部分を抽出して、該当するアプリケーションにデータを受け渡す。このような通信プロトコルには、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＮＰＲ（Ｎｅｔｗｏｒｋ  Ｐｒｉｎｔｅｒ）、ＩＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ：インターネット印刷プロトコル）、Ｎｅｔｗａｒｅ（登録商標）などのプロトコルがあり、各プロトコルに対応して印刷プロトコル処理部１３１〜１３Ｎが設けられている。
【００９５】
機器管理プロトコル処理部１３４は、ネットワーク管理のプロトコルに従った処理を行うものであり、このようなプロトコルとしては例えばＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）等がある。機器管理部１３２は、機器管理プロトコル処理部１３４を利用して複合機のネットワーク管理を行うものである。
【００９６】
ネットワーク管理部１３３は、ＴＣＰ／ＩＰなどのプロトコルに従ってネットワークに関する処理を行うものである。
【００９７】
アプリ管理部１３５は、アプリケーション層で動作するプリンタアプリ−Ａ１２０ａ，プリンタアプリ−Ｂ１２０ｂ等のアプリケーションを管理するものであり、各アプリケーションの識別データであるアプリＩＤを管理する。
【００９８】
メモリ転送Ｉ／Ｆ部１３９は、ＲＡＭ等のメモリ、あるいは共有メモリへのアクセスを制御するものである。ネットワークＩ／Ｆ部１３７は、ネットワークカード１７０に対するアクセスを制御するものである。
【００９９】
ＲＡＭ１６０には、共有メモリ領域（以下、「共有メモリ」という）が確保されている。この共有メモリは、スプールアプリ１１０によって確保され、スプールアプリ１１０の他、プリンタアプリ−Ａ１２０ａと、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎから参照可能なものとなっている。
【０１００】
次に、本実施の形態にかかる複合機１００の全体の機能的構成について説明する。図２は、実施の形態１の複合機１００の全体構成を示すブロック図である。図２に示すように、複合機１００は、白黒レーザプリンタ（B&W LP）２０１と、カラーレーザプリンタ（Color LP）２０２と、スキャナ、ファクシミリ、メモリなどのハードウェアリソース２０４を有するとともに、プラットホーム２２０と、アプリケーション２３０とから構成されるソフトウェア群２１０とを備えている。
【０１０１】
プラットホーム２２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）２２３と、汎用ＯＳ１４０とを有する。
【０１０２】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）２２２と、ＥＣＳ（エンジンコントロールサービス）２２４と、ＭＣＳ（メモリコントロールサービス）２２５と、ＯＣＳ（オペレーションパネルコントロールサービス）２２６と、ＦＣＳ（ファックスコントロールサービス）２２７と、ＮＣＳ（ネットワークコントロールサービス）１３０とから構成される。このプラットホーム２２０は、あらかじめ定義された関数により前記アプリケーション２３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【０１０３】
汎用ＯＳ１４０は、前述のとおり、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム２２０並びにアプリケーション２３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【０１０４】
ＳＲＭ２２３のプロセスは、ＳＣＳ２２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ２２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ）、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【０１０５】
具体的には、このＳＲＭ２２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ２２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【０１０６】
ＳＣＳ２２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【０１０７】
ＥＣＳ２２４のプロセスは、白黒レーザプリンタ（B&W LP）２０１、カラーレーザプリンタ（Color LP）２０２、ＨＤＤ１５０、スキャナ、ファクシミリなどからなるハードウェアリソース２０４のエンジンの制御を行う。
【０１０８】
ＭＣＳ２２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【０１０９】
ＦＣＳ２２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【０１１０】
ＯＣＳ２２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）の制御を行う。ＯＣＳ２２６は、オペレーションパネルからキー押下（またはタッチ操作）をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ２２２に送信するＯＣＳプロセスである。また、オペレーションパネルの操作表示部に対する各種画面を描画出力やその他オペレーションパネルに対する制御は、ＯＣＳ関数ライブラリに登録されている描画関数等の各種関数をアプリケーション１３０またはコントロールサービスから呼び出すことにより行われる。
【０１１１】
アプリケーション２３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ−Ａ１２０ａ、プリンタアプリ−Ｂ１２０ｂと、コピー用アプリケーションであるコピーアプリ２１２と、ファクシミリ用アプリケーションであるファックスアプリ２１３と、スキャナ用アプリケーションであるスキャナアプリ２１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ２１５と、工程検査用アプリケーションである工程検査アプリ２１６と、上述したスプールアプリ１１０とを有している。
【０１１２】
アプリケーション２３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【０１１３】
このように、実施の形態１にかかる複合機１００には、複数のアプリケーション１３０および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション２３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【０１１４】
また、複合機１００には、複合機１００の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。
【０１１５】
次に、以上のように構成された本実施の形態の複合機１００によるスプール処理について説明する。図３は、本実施の形態の複合機１００によるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【０１１６】
この印刷ジョブの登録処理は次のように行われる。ＰＣ１９０からネットワーク１８０経由で複合機１００に対して印刷要求があると、図３に示すように、その印刷対象の印刷データをＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎが受信する（ステップＳ３０１）。
【０１１７】
そして、通信プロトコルに対応したＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎによって論理セッションの確立を行い、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈する。そして、データからアプリケーション固有のデータ部分を印刷データとして抽出して、印刷データをスプール書き込み処理部１１１に受け渡す。具体的には、印刷プロトコル処理部１３１〜１３Ｎが印刷データを共有メモリ１６１の書き込み領域に書き込み（ステップＳ３０２）、印刷プロトコル処理部１３１〜１３Ｎが共有メモリへの書き込み通知をスプール書き込み処理部１１１に通知する（ステップＳ３０３）。
【０１１８】
共有メモリへの書き込み通知を受信したスプール書き込み処理部１１１は、ＯＳのファイルシステムが提供するＷｒｉｔｅシステムコールを発行することによって共有メモリ１６１の書き込み領域の印刷データをＨＤＤ１５０に格納する（ステップＳ３０４）。これによって印刷ジョブの登録が行われる。この後、スプール書き込み処理部１１１はスプール読み出し処理部１１２にＨＤＤへの書き込み通知を通知する（ステップＳ３０５）。
【０１１９】
このように、印刷プロトコル処理部１３１〜１３Ｎとスプール書き込み処理部１１１との間の印刷データの受け渡しは共有メモリ１６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。
【０１２０】
次に、かかる印刷ジョブの登録の詳細な処理について説明する。図４は、印刷ジョブの登録時のＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎが行う処理の手順を示すフローチャートである。
【０１２１】
印刷プロトコル処理部１３１〜１３Ｎは、ＰＣ１９０と接続待ち状態にあり（ステップＳ４０１）、接続要求があった場合には（ステップＳ４０１：Ｙｅｓ）、接続処理を行う（ステップＳ４０２）。具体的には、印刷プロトコル処理部１３１〜１３Ｎは、ＰＣ１９０とのセッションを確立し、スプールアプリ１１０のスプール書き込み処理部１１１に接続要求を送信し、コネクションＩＤをスプール書き込み処理部１１１から受信する。
【０１２２】
次いで、印刷プロトコル処理部１３１〜１３Ｎは、ジョブ開始処理を行う（ステップＳ４０３）。具体的には、印刷プロトコル処理部１３１〜１３Ｎは、スプールアプリ１１０のスプール書き込み処理部１１１にコネクションＩＤと転送方式を指定してジョブ開始要求を送信し、その結果スプール書き込み処理部１１１からジョブＩＤを受信する。また、スプール書き込み処理部１１１にジョブＩＤとジョブ情報を指定してジョブ情報設定を行ったり、ジョブ転送開始要求を行う。
【０１２３】
次に、ＰＣ１９０からの受信すべきデータがあるか否かを判断し（ステップＳ４０４）、受信すべきデータがある場合には、共有メモリ１６１に空き領域が存在するか否かを調べる（ステップＳ４０５）。そして、空き領域が存在しない場合には（ステップＳ４０５：Ｎｏ）、空き領域ができるまで待ち状態となる。
【０１２４】
一方、共有メモリ１６１に空き領域がある場合には（ステップＳ４０５：Ｙｅｓ）、ＰＣ１９０からのデータを受信して（ステップＳ４０６）、受信データを共有メモリ１６１の書き込み領域に書き込む（ステップＳ４０７）。かかるステップＳ４０４からＳ４０７までの処理を、受信データのＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）を検出するまで繰り返し行う（ステップＳ４０８）。
【０１２５】
共有メモリ１６１への受信データの書き込みが完了したら、印刷プロトコル処理部１３１〜１３Ｎはデータ書き込み完了処理を行う（ステップＳ４０９）。具体的には、印刷プロトコル処理部１３１〜１３Ｎは全データ書き込み完了通知をジョブＩＤとともにスプール書き込み処理部１１１に通知する。
【０１２６】
次に、印刷ジョブ登録時のスプールアプリ１１０のスプール書き込み処理部１１１の行う処理について説明する。図５は、印刷ジョブ登録時のスプールアプリ１１０のスプール書き込み処理部１１１の行う処理の手順のフローチャートである。
【０１２７】
スプール書き込み処理部１１１は、ＮＣＳ１３０と接続待ち状態にあり（ステップＳ５０１）、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎから接続要求があった場合には（ステップＳ５０１：Ｙｅｓ）、接続処理を行う（ステップＳ５０２）。具体的には、スプール書き込み処理部１１１は、スプール読み出し処理部１１２に接続要求を送信し、コネクションＩＤをスプール読み出し処理部１１２から受信する。
【０１２８】
次いで、スプール書き込み処理部１１１は、ジョブ開始処理を行う（ステップＳ５０３）。具体的には、スプール書き込み処理部１１１は、スプール読み出し処理部１１２にコネクションＩＤを指定してジョブ開始要求を送信し、その結果スプール読み出し処理部１１２からジョブＩＤを受信する。また、スプール読み出し処理部１１２にジョブ転送開始要求も行う。
【０１２９】
次に、スプール書き込み処理部１１１は、ＨＤＤ１５０上でジョブデータファイルのオープン処理を行う（ステップＳ５０４）。このオープン処理は具体的にはＯＳのファイルシステムで提供されるＯｐｅｎシステムコールを発行することによって行う。そして、共有メモリ１６１に受信データが存在するか否かを調べる（ステップＳ５０５）。そして、受信データが存在する場合には（ステップＳ５０５：Ｙｅｓ）、ＨＤＤ１５０に空き領域があるか否かを調べる（ステップＳ５０６）。
【０１３０】
そして、ＨＤＤ１５０に空き領域がない場合には（ステップＳ５０６：Ｎｏ）、空き領域ができるまで待ち状態となる。一方、ＨＤＤ１５０に空き領域がある場合には、ＯＳのファイルシステムが提供するＷｒｉｔｅシステムコールを発行して共有メモリ１６１にあるデータをＨＤＤ１５０にジョブデータファイルとして書き込む（ステップＳ５０７）。
【０１３１】
そして、ステップＳ５０５からＳ５０７までの処理を、共有メモリにあるデータのＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）を検出するまで繰り返し行う（ステップＳ５０８）。
【０１３２】
ＨＤＤ１５０へのジョブデータファイルの書き込みが完了したら、スプール書き込み処理部１１１は、ＯＳのファイルシステムで提供されるＣｌｏｓｅシステムコールを発行することによってジョブデータファイルのクローズ処理を行い（ステップＳ５０９）、データ書き込み完了処理を行う（ステップＳ５１０）。具体的には、スプール書き込み処理部１１１はデータ書き込み完了通知をジョブＩＤとともにスプール読み出し処理部１１２に通知する。
【０１３３】
ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎおよびスプールアプリ１１０による印刷ジョブの登録処理について説明したが、次に、印刷ジョブ登録処理時の各部の命令およびデータの流れについて説明する。図６、７は、スプール処理における命令の流れを示すフロー図であり、図６は印刷ジョブ登録処理のフロー図、図７は印刷ジョブのジョブデータ書き込み処理のフロー図である。
【０１３４】
ＰＣ１９０は、印刷要求を行う際に、複合機１００に対して接続要求を行う（ステップＳ６０１）。複合機１００のＮＣＳ１３０がかかる接続要求を受信してスプールアプリ１１０のスプール書き込み処理部１１１に接続要求を行い（ステップＳ６０２）、スプール書き込み処理部１１１はスプール読み出し処理部１１２に、スプール読み出し処理部１１２はプリンタアプリ−Ａ１２０ａに順次接続要求を行う（ステップＳ６０３、Ｓ６０４）。
【０１３５】
接続要求を受けたプリンタアプリ−Ａ１２０ａは、コネクションＩＤをスプール読み出し処理部１１２に送信し（ステップＳ６０５）、スプール読み出し処理部１１２、スプール書き込み処理部１１１、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎに順次送信され（ステップＳ６０６、Ｓ６０７）、印刷プロトコル処理部１３１〜１３ＮからＰＣ１９０に接続ＯＫの旨のメッセージが送信され（ステップＳ６０８）、これによってＰＣ１９０と複合機１００との接続が確立される。
【０１３６】
次いで、ＰＣ１９０はジョブ開始要求を複合機１００に送信する（ステップＳ６０９）。複合機１００では、ジョブ開始要求をＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎが受信して、ジョブ開始要求はコネクションＩＤと転送方式とともに印刷プロトコル処理部１３１〜１３Ｎからスプール書き込み処理部１１１、スプール読み出し処理部１１２、プリンタアプリＡ−１２０ａへ順次送信される（ステップＳ６１０、Ｓ６１１、Ｓ６１２）。プリンタアプリＡ−１２０ａでは、ジョブＩＤを決定し、決定したジョブＩＤをスプール読み出し処理部１１２に送信し（ステップＳ６１３）、スプール読み出し処理部１１２、スプール書き込み処理部１１１、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎに順次送信される（ステップＳ６１４、Ｓ６１５）。
【０１３７】
次に、印刷プロトコル処理部１３１〜１３Ｎは、スプール書き込み処理部１１１に対してジョブＩＤとジョブ情報ファイルを指定してジョブ情報設定要求を送信する（ステップＳ６１６）。ここで、ジョブ情報は、ＰＣ１９０の識別名称であるホスト名およびアドレス、ＰＣ１９０において印刷要求を行ったユーザ名、ジョブ名、印刷対象のドキュメント名、トレイ指定などの印刷設定などから構成されるデータである。
【０１３８】
ジョブ情報設定要求を受信したスプール書き込み処理部１１１は、ジョブ情報ファイルをＨＤＤ１５０に書き込む（ステップＳ６１７）。そして、スプール書き込み処理部１１１は、印刷プロトコル処理部１３１〜１３Ｎに通知タイミング設定を行う（ステップＳ６１８）。
【０１３９】
一方、スプール読み出し処理部１１２は、ＨＤＤ１５０からジョブ情報ファイルを読み出して（ステップＳ６１９）、プリンタアプリＡ−１２０ａに対してジョブ設定要求を送信する（ステップＳ６２０）。
【０１４０】
プリンタアプリＡ−１２０ａでは、ジョブ情報ファイルの内容に従ってジョブ情報設定を行って、スプール読み出し処理部１１２に通知タイミング設定を行う（ステップＳ６２１）。
【０１４１】
ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎでは、ステップＳ６１８によって通知タイミング設定が行われると、印刷データの転送を開始するがこの際に、ジョブデータ転送開始の通知をスプール書き込み処理部１１１に対して行う（ステップＳ６２３）。このジョブデータ転送開始通知は、スプール書き込み処理部１１１からスプール読み出し処理部１１２へ、スプール読み出し処理部１１２からプリンタアプリＡ−１２０ａへ順次送信される（ステップＳ６２３、Ｓ６２４）。
【０１４２】
プリンタアプリ−Ａ１２０ａでは、ジョブデータ転送開始通知を受信し、印刷データの受信の受け入れる状態となってる場合には、ＯＫの旨の通知をスプール読み出し処理部１１２に送信する（ステップＳ６２５）。このＯＫの旨の通知は、スプール読み出し処理部１１２からスプール書き込み処理部１１１へ、スプール書き込み処理部１１１から印刷プロトコル処理部１３１〜１３Ｎへ順次送信される（ステップＳ６２６、Ｓ６２７）。そして、さらに印刷プロトコル処理部１３１〜１３ＮからＰＣ１９０にＯＫの旨の通知が送信される（ステップＳ６２８）。
【０１４３】
スプール書き込み処理部１１１では、ジョブデータ転送開始がＯＫの旨の通知を受信すると、ＨＤＤ１５０にジョブデータファイルを生成するため、ジョブデータオープン命令（ＯＳのＯｐｅｎシステムコール）を発行する（ステップＳ７０１）。
【０１４４】
そして、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３ＮはＰＣ１９０から印刷対象の印刷データを受信し（ステップＳ７０２）、受信した印刷データに対して対応するプロトコル処理を行って共有メモリ１６１に書き込み領域に印刷データを書き込む（ステップＳ７０３）。印刷プロトコル処理部１３１〜１３Ｎは共有メモリへの書き込みが終了したら、共有メモリデータ書き込み通知をスプール書き込み処理部１１１に通知する（ステップＳ７０４）。
【０１４５】
共有メモリデータ書き込み通知を受信したスプール書き込み処理部１１１は、ＯＳのＷｒｉｔｅシステムコールを発行して共有メモリ１６１の印刷データををジョブデータファイルとしてＨＤＤ１５０に保存する（ステップＳ７０５）。そして、スプール書き込み処理部１１１は、印刷プロトコル処理部１３１〜１３Ｎに共有メモリへのデータ読み出し通知を送信する（ステップＳ７０６）。このようなステップＳ７０２からステップＳ７０６までの処理をＰＣ１９０からのデータ送信があるたびに繰り返し行う。
【０１４６】
ＰＣ１９０は印刷対象のすべての印刷データの送信が完了すると、データ送信完了通知を複合機１００に送信する（ステップＳ７０７）。複合機１００では、印刷プロトコル処理部１３１〜１３Ｎによってかかる通知を受信し、全データ書き込み完了通知をスプール書き込み処理部１１１に送信する（ステップＳ７０８）。スプール書き込み処理部１１１は、全データ書き込み完了通知を受信すると、ＨＤＤ１５０のジョブデータファイルに対しファイルクローズ命令（ＯＳのＣｌｏｓｅシステムコール）を発行し（ステップＳ７０９）、さらにスプール読み出し処理部１１２に対してジョブデータファイル書き込み完了通知を送信する（ステップＳ７１０）。スプール読み出し処理部１１２は、このジョブデータファイル書き込み完了通知を受信して当該通知をプリンタアプリ−Ａ１２０ａに送信する（ステップＳ７１１）。これにより、プリンタアプリ−Ａ１２０ａが印刷ジョブを実行する場合には、ＨＤＤ１５０からの印刷データの読み出しが可能となったことがわかるようになってる。これにより、印刷ジョブが登録されることになり、一つの印刷ジョブに対して１つの印刷データがＨＤＤ１５０に生成されることになる。
【０１４７】
次に、以上のように登録された印刷ジョブの読み出し処理について説明する。図８は、本実施の形態の複合機１００によるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。この印刷ジョブの実行処理は次のように行われる。
【０１４８】
スプール書き込み処理部１１１からスプール読み出し処理部１１２にジョブデータ書き込み完了通知が行われると（ステップＳ８０１）、スプール読み出し部１１２は、ＨＤＤ１５０に格納されている該当するジョブＩＤのジョブデータファイル（印刷データ）を、ＯＳが提供するＷｒｉｔｅシステムコールを発行することにより、共有メモリ１６１の読み出し領域に格納する（ステップＳ８０２）。その後、スプール読み出し部１１２は共有メモリデータ書き込み通知をプリンタアプリ−Ａ１２０ａに送信する（ステップＳ８０３）。共有メモリデータ書き込み通知を受信したプリンタアプリ−Ａ１２０ａは、ＯＳが提供するＲｅａｄシステムコールを発行することにより、共有メモリの読み出し領域から印刷データを読み出して（ステップＳ８０４）、印刷処理を行う。
【０１４９】
このように、スプール読み出し処理部１１２とプリンタアプリ−Ａ１２０ａとの間の印刷データの受け渡しはシステムコールの発行によって共有メモリ１６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。
【０１５０】
次に、かかる印刷ジョブの読み出しの詳細な処理について説明する。図９は、スプール読み出し処理部１１２による印刷ジョブの読み出し処理の手順を示すフローチャートである。
【０１５１】
スプール読み出し処理部１１２は、スプール書き込み処理部１１１と接続待ち状態にあり（ステップＳ９０１）、スプール書き込み処理部１１１から接続要求があった場合には（ステップＳ９０１：Ｙｅｓ）、接続処理を行う（ステップＳ９０２）。具体的には、スプール読み出し処理部１１２は、印刷プロトコル処理部による受信データの解釈によって処理を行うアプリケーションのアプリＩＤ（本実施の形態ではプリンタアプリ−Ａ１２０ａのアプリＩＤ）を指定してアプリケーション（プリンタアプリ−Ａ１２０ａ）に接続要求を送信し、コネクションＩＤをスプール読み出し処理部１１２から受信する。
【０１５２】
次いで、スプール読み出し処理部１１２は、ジョブ開始処理を行う（ステップＳ９０３）。具体的には、スプール読み出し処理部１１２は、アプリケーションにコネクションＩＤと転送方式を指定してジョブ開始要求を送信し、その結果アプリケーションからジョブＩＤを受信する。また、スプール読み出し処理部１１２はＨＤＤ１５０からジョブ情報ファイルの読み出し処理、アプリケーションに対するジョブ情報設定も行う。
【０１５３】
次に、スプール読み出し処理部１１２は、ジョブデータファイルの書き込み完了通知待ちの状態となり（ステップＳ９０４）、ジョブデータファイルの書き込み完了通知を受信すると（ステップＳ９０４：Ｙｅｓ）、ＨＤＤ１５０のジョブデータファイルのオープン処理を行う（ステップＳ９０５）。このオープン処理は具体的にはＯＳのファイルシステムで提供されるＯｐｅｎシステムコールを発行することによって行う。そして、共有メモリ１６１に空き領域があるかを調べる（ステップＳ９０６）。
【０１５４】
そして、共有メモリ１６１に空き領域がない場合には（ステップＳ９０６：Ｙｅｓ）、空き領域ができるまで待ち状態となる。一方、共有メモリ１６１に空き領域がある場合には、ＨＤＤ１５０からジョブデータファイルの内容を読み出し（ステップＳ９０７）、読み出したジョブデータファイルの内容を共有メモリ１６１の読み出し領域に書き込む（ステップＳ９０８）。
【０１５５】
そして、ステップＳ９０６からＳ９０８までの処理を、ジョブデータファイルのＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）が検出されるまで繰り返し行う（ステップＳ９０９）。
【０１５６】
共有メモリ１６１へのジョブデータファイルの書き込みが完了したら、スプール読み出し処理部１１２は、ＯＳのファイルシステムで提供されるＣｌｏｓｅシステムコールを発行することによってジョブデータファイルのクローズ処理を行い（ステップＳ９１０）、データ書き込み完了処理を行う（ステップＳ９１１）。具体的には、スプール読み出し処理部１１２は、アプリケーションにデータ書き込み通知を通知する。
【０１５７】
図１０は、上述した印刷ジョブのジョブデータ読み出し処理におけるデータ、命令の流れを示すデータフロー図である。
【０１５８】
スプール読み出し処理部１１２は、スプール書き込み処理部１１１からジョブデータファイル書き込み完了通知を受信すると、ＨＤＤ１５０のジョブデータファイル（印刷データ）のオープン命令（ＯＳのＯｐｅｎシステムコール）を発行する（ステップＳ１００１）。次に、スプール読み出し処理部１１２は、ＨＤＤ１５０からオープンしたジョブデータファイルの読み出しを行い（ステップＳ１００２）、読み出したデータを共有メモリ１６１の読み出し領域に書き込む（ステップＳ１００３）。
【０１５９】
次に、スプール読み出し処理部１１２は、プリンタアプリ−Ａ１２０ａに対して共有メモリデータ書き込み通知を送信する（ステップＳ１００４）。共有メモリデータ書き込み通知を受信したプリンタアプリ−Ａ１２０ａは共有メモリ１６１の読み出し領域から印刷データを読み出す（ステップＳ１００５）。ここで、かかる読み出しは、共有メモリの管理テーブルに登録されている先頭アドレスの位置から管理テーブルに登録されたサイズ分のデータを読み出すことによって行われる。そして、プリンタアプリ−Ａ１２０ａは、共有メモリデータ読み出し通知をスプール読み出し処理部１１２に送信する（ステップＳ１００６）。
【０１６０】
そして、ジョブデータファイルの全てのレコードの読み出しが完了するまで、ステップＳ１００２からステップＳ１００６までの処理を繰り返し行う。
【０１６１】
ジョブデータファイルの全てのレコードの読み出しが完了したら、スプール読み出し処理部１１２は、ジョブデータファイルのクローズ命令（ＯＳのＣｌｏｓｅシステムコール）を発行する（ステップＳ１００７）。そして、プリンタアプリＡ−１２０ａは、共有メモリのデータを全て読み出したら、全データ読み出し完了通知をその処理結果と共にスプール読み出し処理部１１２を送信する（ステップＳ１００８）。全データ読み出し完了通知を受信したスプール読み出し処理部１１２は、ファイル読み出し完了通知をスプール書き込み処理部１１１に送信し（ステップＳ１００９）、ファイル読み出し完了通知を受信したスプール書き込み処理部１１１は、全データ読み出し完了通知を印刷プロトコル処理部１３１〜１３Ｎに送信する（ステップＳ１０１０）。これにより、プリンタアプリＡ−１２０ａによる印刷データの読み出し処理が完了し、プリンタアプリＡ−１２０ａによる印刷処理が実行される。
【０１６２】
図１１は、印刷ジョブの終了処理における命令の流れを示すフロー図である。ＰＣ１９０が複合機１００に対してジョブ終了要求を送信すると、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎでかかるジョブ終了要求を受信する（ステップＳ１１０１）。そして、ジョブ終了要求は、印刷プロトコル処理部１３１〜１３Ｎからスプール書き込み処理部１１１、スプール書き込み処理部１１１からスプール読み出し処理部１１２、スプール読み出し処理部１１２からプリンタアプリＡ−１２０ａへ順次送信される（ステップＳ１１０２，Ｓ１１０３，Ｓ１１０４）。
【０１６３】
プリンタアプリ−Ａ１２０ａでは、ジョブ終了処理を行った後、ジョブ終了結果をスプール読み出し処理部１１２に送信し（ステップＳ１１０５）、さらにジョブ終了結果はスプール読み出し処理部１１２からスプール書き込み処理部１１１へ、スプール書き込み処理部１１１から印刷プロトコル処理部１３１〜１３Ｎへ、印刷プロトコル処理部１３１〜１３ＮからＰＣ１９０へ順次送信される（ステップＳ１１０６、Ｓ１１０７、Ｓ１１０８）。
【０１６４】
次いで、ＰＣ１９０は切断要求を複合機１００に対して行う（ステップＳ１１０９）。一方、プリンタアプリ−Ａ１２０ａはスプール読み出し処理部１１２に対しコネクションＩＤを指定して切断要求を行う（ステップＳ１１１０）。この切断要求は、さらにスプール読み出し処理部１１２からスプール書き込み処理部１１１へ、スプール書き込み処理部１１１から印刷プロトコル処理部１３１〜１３Ｎに順次送信される（ステップＳ１１１１、Ｓ１１１２）。
【０１６５】
印刷プロトコル処理部１３１〜１３Ｎでは、ＰＣ１９０およびスプール書き込み処理部１１１から切断要求を受信すると、切断処理を行い、その切断結果をＰＣ１９０に送信し（ステップＳ１１１３）、さらにスプール書き込み処理部１１１に送信する（ステップＳ１１１４）。
【０１６６】
そして、スプール書き込み処理部１１１は、受信した切断結果を、スプール読み出し処理部１１２へ、スプール読み出し処理部１１２からプリンタアプリＡ−１２０ａへ順次送信する（ステップＳ１１１５、Ｓ１１１６）。
【０１６７】
プリンタアプリ−Ａ１２０ａは、印刷処理が終了後、印刷完了通知をスプール読み出し処理部１１２へ送信し、印刷完了通知を受信したスプール読み出し処理部１１２は、ＨＤＤ１５０からジョブデータファイルを削除する。これにより、ジョブが終了することになる。
【０１６８】
このように実施の形態１の複合機１００では、印刷データを、印刷プロトコル処理部１３１〜１３Ｎとは機能的に独立させたスプール書き込み処理部１１１によって、印刷ジョブとしてＨＤＤ１５０に登録しているので、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプールアプリ１１０の修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層の印刷プロトコル処理部１３１〜１３Ｎをプロトコルごとに修正する必要がなくなる。また、例えばＳＤカードなどの新たなハードウェア資源の追加に伴うハードウェアインタフェースの変更があった場合でも、コントロール層の印刷プロトコル処理部１３１〜１３Ｎを変更すれば、アプリケーション層のスプールアプリ１１０のプログラム変更は必要がない。このためハードウェア等の変更の影響を受けない部分であるスプールアプリ１１０をアプリケーション層に、ハードウェア等の変更の影響を受ける部分である印刷プロトコル処理部１３１〜１３Ｎをコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【０１６９】
また、本実施の形態によれば、スプールアプリ１１０は印刷プロトコル処理部１３１〜１３Ｎとは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【０１７０】
（実施の形態２）
実施の形態１の複合機１００は、単一の印刷データに対して一つの印刷ジョブを割り当ててスプール処理を行っていたが、この実施の形態２の複合機は、複数の印刷データに対して単一の印刷ジョブを割り当ててスプール処理を行うものである。
【０１７１】
実施の形態２の複合機１００の機能的構成は、図１および図２で説明した実施の形態１の複合機と同様である。
【０１７２】
ただし、本実施の形態の複合機１００では、スプールアプリ１１０は設定パラメータを有しており、この設定パラメータの設定内容に従って複数の印刷データに対して単一の印刷ジョブを割り当てるか否か、分割のサイズを決定する点が実施の形態１の複合機と異なっている。
【０１７３】
次に、本実施の形態の複合機１００によるスプール処理について説明する。図１２は、本実施の形態の複合機１００によるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【０１７４】
この印刷ジョブの登録処理は次のように行われる。ＰＣ１９０からネットワーク１８０経由で複合機１００に対して印刷要求があると、図１２に示すように、その印刷対象の印刷データをＮＣＳ１３０が受信する（ステップＳ１２０１）。
【０１７５】
そして、印刷プロトコルに対応したＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎによって論理セッションの確立を行い、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈する。そして、データからアプリケーション固有のデータ部分を印刷データとして抽出して、印刷データをスプールアプリ１１０に受け渡す。具体的には、印刷プロトコル処理部１３１〜１３Ｎが印刷データを共有メモリ１６１の書き込み領域に書き込み（ステップＳ１２０２、印刷プロトコル処理部１３１〜１３Ｎが共有メモリへの書き込み通知をスプール書き込み処理部１１１に通知する（ステップＳ１２０３）。
【０１７６】
共有メモリへの書き込み通知を受信したスプール書き込み処理部１１１は、設定パラメータテーブル１２０１を参照して（ステップＳ１２０４）、該当するアプリケーションについて印刷データをどのように扱うかを判断する。そして、ＯＳのファイルシステムで提供されるＷｒｉｔｅシステムコールを発行して共有メモリ１６１の書き込み領域にある印刷データをＨＤＤ１５０に書き込む（ステップＳ１２０５）。このとき、参照した設定パラメータテーブルの内容に従って、複数の印刷データを一つの印刷ジョブで扱う場合には、共有メモリ１６１の印刷データを設定パラメータテーブル９０１で設定されたサイズに分割し、ＨＤＤ１５０に格納することによって印刷ジョブの登録が行われる。この後、スプール書き込み処理部１１１はスプール読み出し処理部１１２にＨＤＤへの書き込み通知を通知する（ステップＳ１２０６）。
【０１７７】
このように、印刷プロトコル処理部１３１〜１３Ｎとスプール書き込み処理部１１１との間の印刷データの受け渡しは共有メモリ１６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。。
【０１７８】
ここで、設定パラメータテーブル１２１０について説明する。図１４は、設定パラメータテーブル１２１０の内容の一例を示す説明図である。図１４に示すように、設定パラメータテーブル１２１０は、アプリケーション毎に、スプール領域、ファイル分割、分割単位、最大スプール数が定められている。
【０１７９】
スプール領域は、印刷データを格納するＨＤＤ１５０内のディレクトリであり、ファイル分割は、一つの印刷ジョブに対して印刷データを分割するか否かを規定し、分割単位は分割された印刷データのサイズを規定し、最大スプール数は登録可能な印刷ジョブの数の最大値を規定したものである。
【０１８０】
次に、かかる印刷ジョブの登録の詳細な処理について説明する。図１３は、印刷ジョブ登録時のスプールアプリ１１０のスプール書き込み処理部１１１の行う処理の手順のフローチャートである。なお、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎの処理については実施の形態１と同様であるので説明を省略する。
【０１８１】
スプール書き込み処理部１１１は、ＮＣＳ１３０と接続待ち状態にあり（ステップＳ１３０１）、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３Ｎから接続要求があった場合には（ステップＳ１３０１：Ｙｅｓ）、接続処理を行う（ステップＳ１３０２）。具体的には、スプール書き込み処理部１１１は、スプール読み出し処理部１１２に接続要求を送信し、コネクションＩＤをスプール読み出し処理部１１２から受信する。
【０１８２】
次いで、スプール書き込み処理部１１１は、ジョブ開始処理を行う（ステップＳ１３０３）。具体的には、スプール書き込み処理部１１１は、スプール読み出し処理部１１２にコネクションＩＤを指定してジョブ開始要求を送信し、その結果スプール読み出し処理部１１２からジョブＩＤを受信する。また、スプール読み出し処理部１１２にジョブ転送開始要求も行う。
【０１８３】
次に、スプール書き込み処理部１１１は、設定パラメータテーブル１２１０を読み出して（ステップＳ１３０４）、該当するアプリケーションについて印刷データを印刷ジョブにおける扱いを判断する。そして、ＨＤＤ１５０上でジョブデータファイル＃Ｎのオープン処理を行う（ステップＳ１３０５）。このオープン処理は具体的にはＯＳのファイルシステムで提供されるＯｐｅｎシステムコールを発行することによって行う。その後、共有メモリ１６１に受信データが存在するか否かを調べる（ステップＳ１３０６）。受信データが存在する場合には（ステップＳ１３０６：Ｙｅｓ）、ＨＤＤ１５０に空き領域があるか否かを調べる（ステップＳ１３０７）。
【０１８４】
そして、ＨＤＤ１５０に空き領域がない場合には（ステップＳ１３０７：Ｎｏ）、空き領域ができるまで待ち状態となる。一方、ＨＤＤ１５０に空き領域がある場合には、Ｗｒｉｔｅシステムコールを発行して共有メモリ１６１にあるデータをＨＤＤ１５０にジョブデータファイル＃Ｎとして書き込む（ステップＳ１３０８）。
【０１８５】
そして、ジョブデータファイル＃Ｎのデータサイズが設定パラメータテーブル１２１０の該当アプリケーション（本実施の形態ではプリンタアプリ−Ａ）の分割サイズに達したか否かを判断する（ステップＳ１３０９）。
【０１８６】
そして、ジョブデータファイル＃Ｎのデータサイズが設定パラメータテーブル１２１０に設定されている分割サイズに達していない場合には（ステップＳ１３０９：Ｎｏ）、ステップＳ１３０６からＳ１３０８までの処理を繰り返し行って（ステップＳ１３０９）、ジョブデータファイル＃Ｎのデータサイズが分割サイズに達するまでジョブデータファイル＃Ｎにデータを書き込む。
【０１８７】
ＨＤＤ１５０へのジョブデータファイル＃Ｎの書き込みが完了したら、スプール書き込み処理部１１１は、ＯＳのファイルシステムで提供されるＣｌｏｓｅシステムコールを発行することによってジョブデータファイル＃Ｎのクローズ処理を行い（ステップＳ１３１０）、ジョブデータファイル＃Ｎ書き込み完了処理を行う（ステップＳ１３１１）。具体的には、スプール書き込み処理部１１１はジョブデータファイル＃Ｎ書き込み完了通知をジョブＩＤとともにスプール読み出し処理部１１２に通知する。
【０１８８】
スプールアプリ１１０による印刷ジョブの登録処理について説明したが、次に、印刷ジョブ登録処理時の各部の命令およびデータの流れについて説明する。図１５は、印刷ジョブのジョブデータ書き込み処理のフロー図である。なお、印刷ジョブの登録時の処理は実施の形態１と同様であるので説明を省略する。
【０１８９】
スプール書き込み処理部１１１では、実施の形態１と同様に、ジョブデータ転送開始がＯＫの旨の通知を受信すると、設定パラメータテーブル１２１０を読み出し（ステップＳ１５０１）、該当するアプリケーション、この例ではプリンタアプリ−Ａ１２０ａに対する設定パラメータを読み込む。そして、設定パラメータテーブル１５０１のファイル分割が「する」に設定されている場合には、以下に説明する処理を行う。一方、ファイル分割が「しない」に設定されている場合には、実施の形態１で説明した印刷ジョブの書き込み処理と同様の処理を行う。
【０１９０】
この例では、アプリケーションがプリンタアプリ−Ａ１２０ａの場合を説明しており、設定パラメータファイルでは、ファイル分割が「する」、分割単位が「１００ＫＢ」、最大スプール数が「６４」に設定されている。
【０１９１】
このため、スプール書き込み処理部１１１は、ＰＣ１９０から印刷データを受信するごとに、一つの印刷データが１００ＫＢのサイズとなった時点で一つのジョブデータファイルを生成することによって、複数の印刷データを一つの印刷ジョブに含める。なお、ＰＣ１９０から受信した印刷データが分割サイズ以上のサイズの場合には、受信した印刷データを１００ＫＢのサイズごとに分割するように構成してもよい。
【０１９２】
次に、スプール書き込み処理部１１１は、ジョブデータファイル＃Ｎのオープン命令（ＯＳのＯｐｅｎシステムコール）を発行する（ステップＳ１５０２）。なお、図１５中では、ジョブデータファイル＃Ｎとなっている。Ｎは１以上の整数であり、ジョブデータファイル＃Ｎは、ジョブデータファイルである印刷データを設定パラメータテーブル９０１に設定されている分割サイズで分割した個々のジョブデータファイルを示すものである。
【０１９３】
そして、ＮＣＳ１３０の印刷プロトコル処理部１３１〜１３ＮはＰＣ１９０から印刷対象の印刷データを受信し（ステップＳ１５０３）、受信した印刷データに対して対応するプロトコル処理を行って共有メモリ１６１に書き込み領域に印刷データを書き込む（ステップＳ１５０４）。印刷プロトコル処理部１３１〜１３Ｎは共有メモリ１６１への書き込みが終了したら、共有メモリデータ書き込み通知をスプール書き込み処理部１１１に通知する（ステップＳ１５０５）。
【０１９４】
共有メモリデータ書き込み通知を受信したスプール書き込み処理部１１１は、ＯＳのファイルシステムが提供するＷｒｉｔｅシステムコールを発行することによって、共有メモリ１６１に格納されている印刷データをジョブデータファイル＃ＮとしてＨＤＤ１５０に格納する（ステップＳ１５０６）。そして、スプール書き込み処理部１１１は、印刷プロトコル処理部１３１〜１３Ｎに共有メモリ１６１へのデータ読み出し通知を送信する（ステップＳ１５０７）。このようなステップＳ１５０３〜ステップＳ１５０７までの処理を、ジョブデータファイル＃Ｎのサイズが設定パラメータテーブル１２１０の分割サイズ分になるまで、繰り返し行う。
【０１９５】
次に、スプール書き込み処理部１１１は、ジョブデータファイル＃Ｎのクローズ命令（ＯＳのＣｌｏｓｅシステムコール）を発行し（ステップＳ１５０８）、分割されたジョブデータファイル＃ＮがＨＤＤ１５０に生成されることになる。このため、スプール書き込み処理部１１１は、ジョブデータファイル＃Ｎ書き込み完了通知をジョブＩＤとともにスプール読み出し処理部１１２に送信する（ステップＳ１５０９）。
【０１９６】
スプール読み出し処理部１１２とプリンタアプリ−Ａ１２０ａでは、通知のあったジョブデータファイル＃Ｎの読み出し処理を行い（ステップＳ１５１０）、読み出しが完了したら、ジョブデータファイル＃Ｎ読み出し完了通知をジョブＩＤとともにスプール書き込み処理部１１１に送信する（ステップＳ１５１１）。なお、スプール読み出し処理部１１２とプリンタアプリ−Ａ１２０ａでは、通知のあったジョブデータファイル＃Ｎの読み出し処理については後述する。
【０１９７】
上記ステップＳ１５０２からＳ１５１１までの処理を、ＰＣ１９０からデータ送信が完了するまで繰り返す。繰り返す場合には、＃Ｎの値を１だけ増加して行う。これにより、複数のジョブデータファイル＃ＮがＨＤＤ１５０に生成される。
【０１９８】
ＰＣ１９０は印刷対象のすべての印刷データの送信が完了すると、データ送信完了通知を複合機１００に送信する（ステップＳ１５１２）。複合機１００では、印刷プロトコル処理部１３１〜１３Ｎによってかかる通知を受信し、全データ書き込み完了通知をスプール書き込み処理部１１１に送信する（ステップＳ１５１３）。スプール書き込み処理部１１１は、全データ書き込み完了通知を受信すると、スプール読み出し処理部１１２に対して全ジョブデータファイル書き込み完了通知を送信する（ステップＳ１５１４）。
【０１９９】
次に、以上のように登録された印刷ジョブの読み出し処理について説明する。図１６は、本実施の形態の複合機１００によるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。この印刷ジョブの実行処理は次のように行われる。
【０２００】
スプール書き込み処理部１１１からスプール読み出し処理部１１２に分割されたジョブデータファイル＃Ｎ書き込み完了通知が行われると（ステップＳ１６０１）、スプール読み出し部１１２は、ＨＤＤ１５０に格納されている該当するジョブＩＤのジョブデータファイル＃Ｎ（図１６では＃１の例を示す）を、ＯＳが提供するＷｒｉｔｅシステムコールを発行することにより、共有メモリ１６１の読み出し領域に格納する（ステップＳ１６０２）。その後、スプール読み出し部１１２は共有メモリデータ書き込み通知をプリンタアプリ−Ａ１２０ａに送信する（ステップＳ１６０３）。共有メモリデータ書き込み通知を受信したプリンタアプリ−Ａ１２０ａは、ＯＳが提供するＲｅａｄシステムコールを発行することにより、共有メモリの読み出し領域から印刷データを読み出して（ステップＳ１６０４）、印刷処理を行う。
【０２０１】
このように、スプール読み出し処理部１１２とプリンタアプリ−Ａ１２０ａとの間の印刷データの受け渡しは共有メモリ１６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。
【０２０２】
次に、かかる印刷ジョブの読み出しの詳細な処理について説明する。図１７は、スプール読み出し処理部１１２による印刷ジョブの読み出し処理の手順を示すフローチャートである。
【０２０３】
スプール読み出し処理部１１２は、スプール書き込み処理部１１１と接続待ち状態にあり（ステップＳ１７０１）、スプール書き込み処理部１１１から接続要求があった場合には（ステップＳ１７０１：Ｙｅｓ）、接続処理を行う（ステップＳ１７０２）。具体的には、スプール読み出し処理部１１２は、印刷プロトコル処理部による受信データの解釈によって処理を行うアプリケーションのアプリＩＤ（本実施の形態ではプリンタアプリ−Ａ１２０ａのアプリＩＤ）を指定してアプリケーション（プリンタアプリ−Ａ１２０ａ）に接続要求を送信し、コネクションＩＤをスプール読み出し処理部１１２から受信する。
【０２０４】
次いで、スプール読み出し処理部１１２は、ジョブ開始処理を行う（ステップＳ１７０３）。具体的には、スプール読み出し処理部１１２は、アプリケーションにコネクションＩＤと転送方式を指定してジョブ開始要求を送信し、その結果アプリケーションからジョブＩＤを受信する。また、スプール読み出し処理部１１２はＨＤＤ１５０からジョブ情報ファイルの読み出し処理、アプリケーションに対するジョブ情報設定も行う。
【０２０５】
次に、スプール読み出し処理部１１２は、ジョブデータファイル＃Ｎの書き込み完了通知待ちの状態となり（ステップＳ１７０４）、ジョブデータファイル＃Ｎの書き込み完了通知を受信すると（ステップＳ１７０４：Ｙｅｓ）、ＨＤＤ１５０のジョブデータファイル＃Ｎのオープン処理を行う（ステップＳ１７０５）このオープン処理は具体的にはＯＳのファイルシステムで提供されるＯｐｅｎシステムコールを発行することによって行う。そして、共有メモリ１６１に空き領域があるかを調べる（ステップＳ１７０６）。
【０２０６】
そして、共有メモリ１６１に空き領域がない場合には（ステップＳ１７０６：Ｙｅｓ）、空き領域ができるまで待ち状態となる。一方、共有メモリ１６１に空き領域がある場合には、ＨＤＤ１５０からジョブデータファイルの内容を読み出し（ステップＳ１７０７）、読み出したジョブデータファイル＃Ｎの内容を共有メモリ１６１の読み出し領域に書き込む（ステップＳ１７０８）。
【０２０７】
そして、ステップＳ１７０６からＳ１７０８までの処理を、ジョブデータファイルのＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）が検出されるまで繰り返し行う（ステップＳ１７０９）。
【０２０８】
共有メモリ１６１へのジョブデータファイルの書き込みが完了したら、スプール読み出し処理部１１２は、ＯＳのファイルシステムで提供されるＣｌｏｓｅシステムコールを発行することによってジョブデータファイルのクローズ処理を行い（ステップＳ１７１０）、データ書き込み完了処理を行う（ステップＳ１７１１）。具体的には、スプール読み出し処理部１１２は、アプリケーションにデータ書き込み通知を通知する。
【０２０９】
そして、このようなステップＳ１７０４からＳ１７１１までの処理を、ＨＤＤ１５０に保存されている全てのジョブデータファイル＃Ｎの内容を読み出すまで繰り返し行う（ステップＳ１７１２）。全てのジョブデータファイル＃Ｎの内容を読み出したら、全ジョブデータファイル読み出し完了処理を行う（ステップＳ１７１３）。具体的には、スプール読み出し処理部１１２は、全ファイル読み出し完了通知をスプール書き込み処理部１１１に通知する。
【０２１０】
図１８は、上述した印刷ジョブのジョブデータ読み出し処理におけるデータ、命令の流れを示すデータフロー図である。
【０２１１】
スプール読み出し処理部１１２は、スプール書き込み処理部１１１からジョブデータファイル＃Ｎ書き込み完了通知を受信すると（ステップＳ１８０１）、ＨＤＤ１５０のジョブデータファイル＃Ｎ（印刷データ）のオープン命令（ＯＳのＯｐｅｎシステムコール）を発行する（ステップＳ１８０２）。次に、スプール読み出し処理部１１２は、ＨＤＤ１５０からオープンしたジョブデータファイルの読み出しを行い（ステップＳ１８０３）、読み出したデータを共有メモリ１６１の読み出し領域に書き込む（ステップＳ１８０４）。
【０２１２】
次に、スプール読み出し処理部１１２は、プリンタアプリ−Ａ１２０ａに対して共有メモリデータ書き込み通知を送信する（ステップＳ１８０５）。共有メモリデータ書き込み通知を受信したプリンタアプリ−Ａ１２０ａは共有メモリ１６１の読み出し領域から印刷データを読み出す（ステップＳ１８０６）。ここで、かかる読み出しは、共有メモリの管理テーブルに登録されている先頭アドレスの位置から管理テーブルに登録されたサイズ分のデータを読み出すことによって行われる。そして、プリンタアプリ−Ａ１２０ａは、共有メモリデータ読み出し通知をスプール読み出し処理部１１２に送信する（ステップＳ１８０７）。
【０２１３】
そして、ジョブデータファイル＃Ｎの全てのレコードの読み出しが完了するまで、ステップＳ１８０３からステップＳ１８０７までの処理を繰り返し行う。
【０２１４】
プリンタアプリＡ−１２０ａはジョブデータファイル＃Ｎの全てのレコードの読み出しが完了したら、スプール読み出し処理部１１２に対してジョブデータファイル＃Ｎ読み出し完了通知を送信する（ステップＳ１８０８）。スプール読み出し処理部１１２は、ジョブデータファイル＃Ｎ読み出し完了通知を受信すると、ジョブデータファイル＃Ｎのクローズ命令（ＯＳのＣｌｏｓｅシステムコール）を発行する（ステップＳ１８０９）。これによって、分割されたジョブデータファイル＃Ｎの読み出し処理が完了する。そして、分割されたすべてのジョブデータファイル＃Ｎについて、上記ステップＳ１８０１からＳ１８０９までの処理を繰り返す。
【０２１５】
すべてのジョブデータファイル＃Ｎについての読み出し処理が完了したら、全ジョブデータファイル読み出し完了通知をその処理結果と共にスプール読み出し処理部１１２を送信する（ステップＳ１８１０）。全ジョブデータファイル読み出し完了通知を受信したスプール読み出し処理部１１２は、全ファイル読み出し完了通知をスプール書き込み処理部１１１に送信し（ステップＳ１８１１）、全ファイル読み出し完了通知を受信したスプール書き込み処理部１１１は、全データ読み出し完了通知を印刷プロトコル処理部１３１〜１３Ｎに送信する（ステップＳ１８１２）。これにより、プリンタアプリＡ−１２０ａによる印刷データの読み出し処理が完了し、プリンタアプリＡ−１２０ａによる印刷処理が実行される。なお、印刷ジョブの終了処理については実施の形態１で説明した処理と同様に行われる。
【０２１６】
このように実施の形態２の複合機１００では、スプール書き込み処理部１１１によって、印刷データを、印刷プロトコル処理部１３１〜１３Ｎとは別個に、アプリケーションごとにスプールの処理内容を定めた設定パラメータテーブル１２１０に基づいて複数の印刷データに分割し、分割された複数の印刷データを、単一の印刷ジョブとしてＨＤＤ１５０に登録しているので、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないアプリケーション層のスプールアプリ１１０の修正を行えば、ハードウェアに影響を及ぼすコントロールサービス層の印刷プロトコル処理部１３１〜１３Ｎをプロトコルごとに修正する必要がなくなる。また、例えばＳＤカードなどの新たなハードウェア資源の追加に伴うハードウェアインタフェースの変更があった場合でも、コントロール層の印刷プロトコル処理部１３１〜１３Ｎを変更すれば、アプリケーション層のスプールアプリ１１０のプログラム変更は必要がない。このためハードウェア等の変更の影響を受けない部分であるスプールアプリ１１０をアプリケーション層に、ハードウェア等の変更の影響を受ける部分である印刷プロトコル処理部１３１〜１３Ｎをコントロール層に分離した構成としたことにより効率的なプログラム開発を行うことができる。
【０２１７】
また、本実施の形態によれば、スプールアプリ１１０は印刷プロトコル処理部１３１〜１３Ｎとは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【０２１８】
（実施の形態３）
実施の形態１および２では、複合機１００において本発明のスプール処理を実行するものであったが、この実施の形態３は本発明のスプール処理をプリンタサーバで実行するものである。
【０２１９】
図１９は、実施の形態３のプリンタシステムのネットワーク構成とプリンタサーバの機能的構成を示すブロック図である。図１９に示すように、本実施の形態では、プリンタサーバ１９００と、ＰＣ１９０と、プリンタ装置１９９０がＥｔｈｅｒｎｅｔ（登録商標）などのネットワーク１８０で接続されている。
【０２２０】
ＰＣ１９０は通常のコンピュータであり、本発明におけるクライアント端末を構成する。すなわち、本実施の形態のプリンタサーバ１９００は、ＰＣ１９０をクライアントとしたサーバとして動作するようになっている。
【０２２１】
本実施の形態のプリンタサーバ１９００は、本発明における情報処理装置を構成するものであり、スプール処理部１９１０と、印刷処理部１９２０と、ネットワーク処理部１９３０とを主に備えている。
【０２２２】
この他、プリンタサーバ１９００は、ＯＳ１９４０と、ＨＤＤ１９５０と、ＲＡＭ１９６０と、Ｅｔｈｅｒｎｅｔ（登録商標）ケーブルを接続するネットワークカード１９７０が設けられている。
【０２２３】
スプール処理部１９１０は、従来の印刷プロトコル処理部内部で行っていたスプール機能を、印刷プロトコル処理部１９３１〜１９３Ｎとは別個に設けて実行するものである。このスプール処理部１９１０は、スプール書き込み処理部１９１１とスプール読み出し処理部１９１２とスプール転送Ｉ／Ｆ部１９１５とメモリ転送Ｉ／Ｆ部１９１４とＨＤＤ−Ｉ／Ｆ部１９１３と、を主に備えている。
【０２２４】
スプール書き込み処理部１９１１は、ＰＣ１９０から印刷要求があった場合に、印刷ジョブを生成して、印刷対象の印刷データを印刷プロトコル処理部１９３１〜１９３Ｎから共有メモリ１９６１を介してＨＤＤ１９５０に格納するものである。
【０２２５】
スプール読み出し部処理１９１２は、印刷ジョブの実行時に、ＨＤＤ１９５０に格納されている印刷ジョブに対応する印刷データを読み出して、共有メモリを介して印刷処理部１９２０に受け渡すものである。
【０２２６】
スプール転送Ｉ／Ｆ部１９１５は、スプール処理の際のデータの転送を制御するものである。メモリ転送Ｉ／Ｆ部１９１４は、ＲＡＭ１９６０等のメモリ、あるいは共有メモリ１９６１へのアクセスを制御するものである。ＨＤＤ−Ｉ／Ｆ部１９１３は、ＨＤＤ１９５０に対するアクセスを制御するものである。
【０２２７】
本実施の形態では、記憶手段のインタフェースとしてメモリ転送Ｉ／Ｆ部１９１４とＨＤＤ−Ｉ／Ｆ部１９１３しかないが、例えばＳＤカードのような他の記憶手段が搭載された場合には、ＳＤカードに対するアクセスを制御するＳＤカードＩ／Ｆ部を設ける。このようにハードウェアに固有の処理を行う部分がアプリケーション層のスプール処理部１９１０に設けられているため、ＨＤＤ１９５０等の記憶手段の変更、あるいは新たなハードウェアの追加などによりインタフェースに変更がある場合には、スプール処理部１９１０を変更すれば、印刷プロトコル処理部１９３１〜１９３Ｎのそれぞれに修正を加える必要がなくなり、プログラム開発の効率化を図ることができる。
【０２２８】
ネットワーク処理部１９３０は、ネットワーク側から各プロトコルによって受信したデータを処理するものである。ネットワーク処理部１９３０は、複数の印刷プロトコル処理部１９３１〜１９３Ｎと、ネットワーク管理部１９３５と、メモリ転送Ｉ／Ｆ部１９３９と、ネットワークＩ／Ｆ部１９３７を主に備えた構成となっている。
【０２２９】
複数の印刷プロトコル処理部１９３１〜１９３Ｎの各々は、各種通信プロトコルに従った処理を行うものであり、各プロトコルに対応して存在する。具体的には、印刷プロトコル処理部１３１〜１３Ｎは、ネットワークＩ／Ｆ部１９３７を介してネットワーク上１８０のＰＣ１９０等からデータを受信し、論理セッションの確立および開放を行うとともに、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈し、する。そして、解釈したデータからアプリケーション固有のデータ部分を抽出して、印刷処理部１９２０に受け渡す。ここで、このような通信プロトコルとしては実施の形態１で説明したものと同様である。
【０２３０】
ネットワーク管理部１９３５は、ＴＣＰ／ＩＰ、ｈｔｔｐなどのプロトコルに従ってネットワークに関する処理を行うものである。
【０２３１】
印刷処理部１９２０は、例えばプリンタドライバなどであり、ＰＣ１９０から受信した印刷データを印刷対象のプリンタ装置１９９０に依存する印刷形式のデータに変換する等の処理を行う。
【０２３２】
本実施形態のプリンタサーバ１９００は、ＣＰＵなどの制御装置と、ＨＤＤ１９５０などの記録装置と、ＲＡＭ１９６０等の記憶装置と、ネットワークカード１９７０等の通信装置とが接続されており、コンピュータを利用した通常の構成である。
【０２３３】
尚、本実施形態のプリンタサーバ１９００で実行されるスプール処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０２３４】
また、本実施形態のスプール処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のＣ言語プログラム生成プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０２３５】
本実施形態にかかるスプール処理プログラムは、プリンタサーバ１４００で上記記憶媒体から読み出して実行することにより主記憶装置上にロードされ、上記機能的構成で説明した各部が主記憶装置上に生成されるようになっている。
【０２３６】
次に、以上のように構成された本実施の形態のプリンタサーバ１９００によるスプール処理について説明する。図２０は、本実施の形態のプリンタサーバ１９００によるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【０２３７】
この印刷ジョブの登録処理は次のように行われる。ＰＣ１９０からネットワーク１８０経由でプリンタサーバ１９００に対して印刷要求があると、図２０に示すように、その印刷対象の印刷データをネットワーク処理部１９３０の印刷プロトコル処理部１９３１〜１９３Ｎが受信する（ステップＳ１９０１）。
【０２３８】
そして、通信プロトコルに対応した印刷プロトコル処理部１９３１〜１９３Ｎによって論理セッションの確立を行い、確立されたセッション上で送信されてくるデータを、通信プロトコルに従って解釈する。そして、データからアプリケーション固有のデータ部分を印刷データとして抽出して、印刷データをスプール書き込み処理部１９１１に受け渡す。具体的には、印刷プロトコル処理部１９３１〜１９３Ｎが印刷データを共有メモリ１９６１の書き込み領域に書き込み（ステップＳ２００２）、印刷プロトコル処理部１９３１〜１９３Ｎが共有メモリへの書き込み通知をスプール書き込み処理部１９１１に通知する（ステップＳ２００３）。
【０２３９】
共有メモリ１９６１への書き込み通知を受信したスプール書き込み処理部１９１１は、ＯＳ１９４０のファイルシステムが提供するＷｒｉｔｅシステムコールによって共有メモリ１９６１の書き込み領域の印刷データをＨＤＤ１９５０に格納する（ステップＳ２００４）。これによって印刷ジョブの登録が行われる。この後、スプール書き込み処理部１９１１はスプール読み出し処理部１９１２にＨＤＤ１９５０への書き込み通知を通知する（ステップＳ２００６）。
【０２４０】
このように、印刷プロトコル処理部１９３１〜１９３Ｎとスプール書き込み処理部１９１１との間の印刷データの受け渡しは共有メモリ１９６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。印刷ジョブの登録の詳細な処理については実施の形態１と同様であるため説明を省略する。
【０２４１】
次に、以上のように登録された印刷ジョブの読み出し処理について説明する。図２１は、本実施の形態のプリンタサーバ１９００によるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。この印刷ジョブの実行処理は次のように行われる。
【０２４２】
スプール書き込み処理部１９１１からスプール読み出し処理部１９１２にジョブデータ書き込み完了通知が行われると（ステップＳ２１０１）、スプール読み出し処理部１９１２は、ＨＤＤ１９５０から該当するジョブＩＤのジョブデータファイル（印刷データ）を、ＯＳが提供するＷｒｉｔｅシステムコールを発行することにより、共有メモリ１９６１の読み出し領域に格納する（ステップＳ２１０２）。その後、スプール読み出し処理部１９１２は共有メモリデータ書き込み通知を印刷処理部１９２０に送信する（ステップＳ２１０３）。共有メモリデータ書き込み通知を受信した印刷処理部１９２０は、ＯＳが提供するＲｅａｄシステムコールを発行することにより、共有メモリ１９６１の読み出し領域から印刷データを読み出して（ステップＳ２１０４）、印刷処理を行う。
【０２４３】
このように、スプール読み出し処理部１９１２と印刷処理部１９２０との間の印刷データの受け渡しは共有メモリ１９６１を介して行われるようになっており、このためハードウェアの変更の影響を直接受けないアプリケーション間でのデータの受け渡しが可能となる。なお、かかる印刷ジョブの読み出しの詳細な処理については実施の形態１と同様であるため説明を省略する。
【０２４４】
このように実施の形態３のプリンタサーバ１９００では、スプール書き込み処理部１９１１によって、印刷データを、印刷プロトコル処理部１９３１〜１９３Ｎとは別個に、印刷ジョブとしてＨＤＤ１９５０に登録しているので、ハードウェアに影響のないスプール処理に変更があった場合でもハードウェアに影響のないスプール書き込み処理部１９１１の修正を行えば、ハードウェアに影響を及ぼす印刷プロトコル処理部１９３１〜１９３Ｎをプロトコルごとに修正する必要がなくなる。また、例えばＳＤカードなどの新たなハードウェア資源の追加に伴うハードウェアインタフェースの変更があった場合でも、印刷プロトコル処理部１９３１〜１９３Ｎを変更すれば、スプール書き込み処理部１９１１のプログラム変更は必要がない。このため効率的なプログラム開発を行うことができる。
【０２４５】
また、本実施の形態によれば、スプール書き込み処理部１９１１は印刷プロトコル処理部１９３１〜１９３Ｎとは異なる機能的に独立した手段であるため、アプリケーション間のデータの受け渡しをＯＳが提供するシステムコールの発行によって共有メモリを介して行うことができ、ハードウェアの変更の影響を直接受けないアプリケーション間で印刷データを受け渡すことが可能となる。
【０２４６】
なお、本実施の形態のプリンタサーバ１９００では、一つの印刷ジョブで単一の印刷データを扱っているが、印刷データを分割して一つの印刷ジョブで複数の印刷データを扱うように構成しても良い。
【産業上の利用可能性】
【０２４７】
以上のように、本発明にかかるスプール処理方法、その方法をコンピュータに実行させるプログラム、画像形成装置および情報処理装置は、プリンタ装置、プリンタサーバ、プリンタ機能を含む複合機に適している。
【図面の簡単な説明】
【０２４８】
【図１】実施の形態１の複合機の主要構成およびネットワーク構成を示すブロック図である。
【図２】実施の形態１の複合機の全体構成を示すブロック図である。
【図３】実施の形態１の複合機によるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【図４】印刷ジョブの登録時のＮＣＳの印刷プロトコル処理部が行う処理の手順を示すフローチャートである。
【図５】印刷ジョブ登録時のスプールアプリのスプール書き込み処理部の行う処理の手順のフローチャートである。
【図６】印刷ジョブ登録処理のデータフロー図である。
【図７】印刷ジョブのジョブデータ書き込み処理のデータフロー図である。
【図８】実施の形態１の複合機によるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。
【図９】スプール読み出し処理部による印刷ジョブの読み出し処理の手順を示すフローチャートである。
【図１０】印刷ジョブのジョブデータ読み出し処理におけるデータ、命令の流れを示すデータフロー図である。
【図１１】印刷ジョブの終了処理における命令の流れを示すフロー図である。
【図１２】実施の形態２の複合機によるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【図１３】印刷ジョブ登録時のスプールアプリのスプール書き込み処理部の行う処理の手順のフローチャートである。
【図１４】設定パラメータテーブルの内容の一例を示す説明図である。
【図１５】印刷ジョブのジョブデータ書き込み処理のフロー図である。
【図１６】実施の形態２の複合機によるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。
【図１７】スプール読み出し処理部による印刷ジョブの読み出し処理の手順を示すフローチャートである。
【図１８】印刷ジョブのジョブデータ読み出し処理におけるデータ、命令の流れを示すデータフロー図である。
【図１９】実施の形態３のプリンタシステムのネットワーク構成とプリンタサーバの機能的構成を示すブロック図である。
【図２０】実施の形態３のプリンタサーバによるスプール処理における印刷ジョブの登録時のデータの流れを示す説明図である。
【図２１】実施の形態３のプリンタサーバによるスプール処理における印刷ジョブの読み出し時のデータの流れを示す説明図である。
【図２２】従来の複合機におけるスプール処理に関連する機能的構成を示すブロック図である。
【符号の説明】
【０２４９】
１００  複合機
１１０  スプールアプリ
１１１，１９１１  スプール書き込み処理部
１１２，１９１２  スプール読み出し処理部
１１３，１９１３  ＨＤＤ−Ｉ／Ｆ部
１１４，１３９，１９１４、１９３９  メモリ転送Ｉ／Ｆ部
１１５，１９１５  スプール転送Ｉ／Ｆ部
１３７，１９３７  ネットワークＩ／Ｆ部
１３１〜１３Ｎ，１９３１〜１９３Ｎ  印刷プロトコル処理部
１３２  機器管理部
１３３，１９３５  ネットワーク管理部
１３４  機器管理プロトコル処理部
１３５  アプリ管理部
１６１，１９６１  共有メモリ
１２０ａ  プリンタアプリ−Ａ
１２０ｂ  プリンタアプリ−Ｂ
１３０  ＮＣＳ
１７０，１９７０  ネットワークカード
１８０  ネットワーク
２０１  白黒ラインプリンタ
２０２  カラーラインプリンタ
２０３  ハードウェアリソース
２１０  ソフトウェア群
２１２  コピーアプリ
２１３  ファックスアプリ
２１４  スキャナアプリ
２１５  ネットファイルアプリ
２１６  工程検査アプリ
２２０  プラットホーム
２２１  汎用ＯＳ
２２２  ＳＣＳ
２２３  ＳＲＭ
２２４  ＥＣＳ
２２５  ＭＣＳ
２２６  ＯＣＳ
２２７  ＦＣＳ
１２１０  設定パラメータテーブル
１９００  プリンタサーバ
１９１０  スプール処理部
１９２０  印刷処理部
１９３０  ネットワーク処理部
１９９０  プリンタ装置
【図１】
2005099925.tif 000003
【図２】
2005099925.tif 000004
【図３】
2005099925.tif 000005
【図４】
2005099925.tif 000006
【図５】
2005099925.tif 000007
【図６】
2005099925.tif 000008
【図７】
2005099925.tif 000009
【図８】
2005099925.tif 000010
【図９】
2005099925.tif 000011
【図１０】
2005099925.tif 000012
【図１１】
2005099925.tif 000013
【図１２】
2005099925.tif 000014
【図１３】
2005099925.tif 000015
【図１４】
2005099925.tif 000016
【図１５】
2005099925.tif 000017
【図１６】
2005099925.tif 000018
【図１７】
2005099925.tif 000019
【図１８】
2005099925.tif 000020
【図１９】
2005099925.tif 000021
【図２０】
2005099925.tif 000022
【図２１】
2005099925.tif 000023
【図２２】
2005099925.tif 000024