(57)【特許請求の範囲】
【請求項１】
画像形成装置に対する要求をユーザがクライアントを介して指示した場合に送信されるパラメータであって、前記要求に応じたネットワークプロトコルに従った形式で記載された第１のパラメータを受信する受信手段と、
前記ネットワークプロトコルに対応している場合は、前記受信手段により受信された第１のパラメータを解釈し、解釈の結果に基づき依頼処理を実行し、
前記ネットワークプロトコルに対応していない場合は、前記ネットワークプロトコルとは異なるネットワークプロトコルに従った形式で記載された第２のパラメータに、前記受信手段により受信された第１のパラメータを付加しサーバへ送信し、前記第２のパラメータを基に第１のパラメータを解釈した前記サーバから処理結果を受信し、前記処理結果に基づき依頼処理を実行する実行手段と、を有することを特徴とする画像形成装置。
【請求項２】
前記要求はデバイス探索の要求であり、前記ネットワークプロトコルとはデバイス探索用プロトコルであって、
前記実行手段により第２のパラメータがサーバへ送信され、前記第１のパラメータの解釈を行った前記サーバからのメタデータの要求に応じて、個別デバイス情報、およびプリンタモデル情報を含むメタデータを提供する提供手段を有し、
前記実行手段は、前記提供手段により提供されたメタデータ、および前記クライアントのアドレスを含む処理結果に基づき、前記クライアントへ前記メタデータを送信する依頼処理を実行することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記要求は前記クライアントにインストールされたソフトウェアが提供するプリント機能からのプリントの要求であり、前記ネットワークプロトコルとは前記プリント機能に対応したプリントプロトコルであって、
前記受信手段は、前記第１のパラメータの他にプリントデータを受信し、
前記実行手段は、前記第２のパラメータ、およびプリントデータをサーバへ送信し、前記第１のパラメータを解釈した前記サーバから処理結果、およびプリントデータを基に変換された印刷データを受信し、前記処理結果に基づき前記印刷データを印刷する依頼処理を実行することを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記実行手段は、前記印刷データを印刷する場合において、前記処理結果に前記クライアントのアドレスが含まれていない場合は、印刷が完了した旨を前記クライアントへ送信せず、前記処理結果に前記クライアントのアドレスが含まれている場合は、印刷が完了した旨を前記クライアントへ送信することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
画像形成装置に対する要求をユーザがクライアントを介して指示した場合に送信される依頼メッセージであって、前記要求に応じたネットワークプロトコルに従い送信される第１の依頼メッセージを受信する受信手段と、
前記ネットワークプロトコルに対応している場合は、前記受信手段により受信された第１の依頼メッセージを解釈し、解釈の結果に基づき依頼処理を実行し、
前記ネットワークプロトコルに対応していない場合は、前記ネットワークプロトコルとは異なるネットワークプロトコルに従い、前記受信手段により受信された依頼メッセージをサーバへ送信し、前記依頼メッセージを解釈した前記サーバから処理結果を受信し、前記処理結果に基づき依頼処理を実行する実行手段と、を有することを特徴とする画像形成装置。
【請求項６】
受信手段は、画像形成装置に対する要求をユーザがクライアントを介して指示した場合に送信される依頼メッセージであって、前記要求に応じたネットワークプロトコルに従った形式で記載された第１のパラメータを受信し、
実行手段は、前記ネットワークプロトコルに対応している場合は、前記受信手段により受信された第１のパラメータを解釈し、解釈の結果に基づき依頼処理を実行し、
前記ネットワークプロトコルに対応していない場合は、前記ネットワークプロトコルとは異なるネットワークプロトコルに従った形式で記載された第２のパラメータに、前記受信手段により受信された第１のパラメータを付加しサーバへ送信し、前記第２のパラメータを基に第１のパラメータを解釈した前記サーバから処理結果を受信し、前記処理結果に基づき依頼処理を実行することを特徴とする画像形成装置の制御方法。
【請求項７】
請求項６に記載の制御方法を画像形成装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントからの処理依頼を実行する画像形成装置、画像形成装置の制御方法、およびそのプログラムに関する。
【背景技術】
【０００２】
従来技術として、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）を介してユーザが印刷の指示を行い、プリンタに印刷を実行させる技術が知られている。特許文献１には、ＰＤＡから印刷の指示を行い、仲介サーバを介してプリンタに印刷を実行させる方法が開示されている。
【０００３】
一方、近年、クラウドプリンティングと呼ばれるインターネットを介した各種の印刷システムが存在する。代表的な名称を上げると、米Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙ（商標）のｅＰｒｉｎｔ。米Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ  ．Ｉｎｃ（商標）のＡｉｒＰｒｉｎｔ。米Ｇｏｏｇｌｅ（商標）のＧｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｒｉｎｔ（商標）である。中でも、ポータブルデバイスであるＰＤＡが直接プリンタと通信を行いプリンタに印刷を実行させるシステムが注目である。そのようなＰＤＡのＯＳ、またはブラウザには、プリンタに印刷を実行させるためのネットワークプロトコル（通信規約・通信手順）が実装されており、このプロトコルに従いプリンタと通信を行うことで上述の印刷を実現できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３０４２７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この印刷システムを実現するためには、各デバイスベンダー（プリンタメーカー）が各画像形成装置のプログラム（例えば、ファームウェア）に、それぞれのサービスに対応した機能、またはネットワークプロトコルを実装することで始めて実現可能となる。
【０００６】
デバイスベンダーがこれらの印刷システムに対応する場合、新しい印刷システムが登場する都度プリンタのプログラムを更新する必要があり、費用と時間を投資して対応を進めないといけない。しかしながら、迅速に充分な機能を持ったプリンタを安価で提供することが難しくなる。
【０００７】
また、その他の課題として、上述のようにプログラムを更新されたプリンタであっても、製品の発売後に発表される新しいネットワークプロトコルには容易には対応できないという課題が存在する。そのようなプリンタが新しいネットワークプロトコルに対応するためにプリンタのプログラムをアップデートする必要があるが、各所に販売された夫々のプリンタのアップデートを行うことは非常に繁雑な作業となる。
【課題を解決するための手段】
【０００８】
本発明の一実施系に係る画像形成装置は、画像形成装置に対する要求をユーザがクライアントを介して指示した場合に送信される依頼メッセージであって、前記要求に応じたネットワークプロトコルに従った形式で記載された第１のパラメータを受信する受信手段と、前記ネットワークプロトコルに対応している場合は、前記受信手段により受信された第１のパラメータを解釈し、解釈結果に基づき依頼処理を実行し、前記ネットワークプロトコルに対応していない場合は、前記ネットワークプロトコルとは異なるネットワークプロトコルに従った形式で記載された第２のパラメータに、前記受信手段により受信された第１のパラメータを付加しサーバへ送信し、前記第２のパラメータを基に第１のパラメータを解釈した前記サーバから処理結果を受信し、前記処理結果に基づき依頼処理を実行することを特徴とする。
【発明の効果】
【０００９】
クライアントに搭載されているネットワークプロトコルに対応していないプリンタであっても、インターネット上の仮想プリンタを利用することで、新しい印刷システムに対応することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明のシステム構成を示すブロック図
【図２】プリンタ１０２の構成を示すブロック図
【図３】仮想プリンタ１０４の構成を示すブロック図
【図４】プリンタ１０２のソフトウェア構成を示すブロック図
【図５】仮想プリンタ１０４のソフトウェア構成を示すブロック図
【図６】本発明の要求・応答メッセージの内容を説明する図
【図７】本発明実施の一例を示す処理フロー
【図８】プリンタ１０２の処理フロー
【図９】仮想プリンタ１０４の処理フロー
【図１０】本発明のディスカバリ機能への適用例を説明する図
【図１１】本発明のプリント機能への適用例を説明する図
【図１２】（ａ）他の実施例でのプリンタ１０２のソフトウェア構成を示すブロック図（ｂ）仮想プリンタドレス設定部２５０が表示するＵＩ例
【発明を実施するための形態】
【００１１】
本発明の目的は、クライアントのネットワークプロトコルに対応していないプリンタが、インターネット上に存在する仮想プリンタに処理を依頼し、仮想プリンタに処理を実行させることでクライアントの要求を処理することを目的とする。
【００１２】
本発明の各実施例で用いられる用語について説明する。ネットワークプロトコルとは、通信規約・通信手順を指す。ネットワークプロトコルに対応していないデバイスとは、その通信規約・通信手順を理解するためのモジュールを搭載していないことを指す。そのモジュールを搭載していないデバイスは、ネットワーク層の低レベルにおいてはパケットを受信できるが、ネットワーク層の高レベルにおいてそのパケットの内容を解釈できない。また、画像形成装置に対する要求をユーザがクライアントを介して要求したことに応じて送信されるパケットの集合を依頼メッセージと称する。詳細は後述するが、依頼メッセージは、ヘッダー部分と、パラメータ部分から構成される。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１３】
［システム構成］
図１は本発明のシステム構成の一例を示すブロック図である。本印刷システムはクライアント情報機器１００、プリンタ１０２、サーバ（仮想プリンタ）１０４から構成される。クライアント情報機器１００とプリンタ１０２は適切な接続媒体１０１で接続され、互いに通信を行うことが可能な機能を備える。プリンタ１０２とサーバ（仮想プリンタ）１０４も適切な接続媒体１０３で接続されており、互いに通信を行うことが可能な機能を備える。通信媒体１０２および１０４は、ＵＳＢやＢｌｕｅｔｏｏｔｈなどのローカルなピアツーピアに接続、有線及び無線ＬＡＮなどのネットワーク接続、更にインターネット接続などが考えられ、接続の形態に制限はない。
【００１４】
尚、接続媒体１０３をインターネットなどの広範囲なネットワークにすることで、サーバ（仮想プリンタ）１０４にアクセス可能なプリンタ（１０２）全てに本発明の効果を適用することが可能となる。また、接続媒体１０１をインターネットなどの広範囲なネットワークとすることで、本発明をいわゆるクラウドプリント（Ｗｅｂサーバを利用した印刷サービス）に適用することも可能である。なお、実施例１におけるプリンタ１０２、およびサーバ１０４は同じベンダーにより提供される装置であり、クライアント情報機器１００は上述のベンダーとは異なる別のベンダーにより提供されるものとする。よって、プリンタ１０２、および仮想プリンタ１０４は通信を行う際、予め定められたネットワークプロトコルで通信を行うことが決定されており、そのための通信モジュールも具備している。一方、クライアント情報機器１００と、プリンタ１０２は必ずしも通信できるとは限らない。なぜなら、２つの装置は異なるベンダーにより生産されており、プリンタ１０２は、クライアント情報機器１００が通信を行うために利用するネットワークプロトコルに対応していることは保証されていないからである。
【００１５】
［ハードウェア構成］
図２はプリンタ１０２の構成を示すブロック図である。プリンタ１０２はＣＰＵ１２により制御される。ＣＰＵ１２はＲＯＭ１４に記憶された制御プログラムや外部メモリ２２に格納された各種プログラムをＲＡＭ１３にロードし、実行することが可能である。ＣＰＵ１２は制御プログラムの動作に基づいて入出力部１６を介して入力された印刷データ等を画像信号に変換し印刷部２０に出力することで印刷を行う。印刷部２０は印刷ユニットである。また、ＣＰＵ１２は制御プログラムの動作に基づいて、入出力部１６を介して入力された各種応答要求に対し処理を行い、その処理結果を入出力部１６を介して出力する。尚、プリンタ１０２には操作部２０が接続され、ユーザからの直接の入力を受け付けることも可能になっている。また、プリンタ１０２はスキャナユニット（不図示）を搭載する場合もある。
【００１６】
図３はサーバ（仮想プリンタ）１０４の構成を示すブロック図である。サーバ（仮想プリンタ）１０４はＣＰＵ１により制御される。ＣＰＵ１はＲＯＭ３に記憶された基本入出力システム（ＢＩＯＳ制御プログラム）や外部メモリ１１に記憶されたオペレーティングシステムや各種アプリケーションプログラムなどをＲＡＭ２にロードし、実行することが可能である。サーバ（仮想プリンタ）１０４にはユーザからの入力を受けるキーボード９や処理の結果を画像としてユーザに表示するためのディスプレイ１０などが接続されている。更に、サーバ（仮想プリンタ）１０４にはプリンタ１０２と通信を行うためのプリンタＩ／Ｆ８を備える。以降、サーバ（仮想プリンタ）１０４を“仮想プリンタ”又は“仮想プリンタ１０４”と記載する。
【００１７】
クライアント情報機器１００については、プリンタ１０２に対して、印刷や各種情報取得関する情報をやり取りできる情報機器であれば良く、例えば、図３に示すハードウェア構成を有していれば良い。パーソナルコンピューター、サーバコンピュータなどのコンピュータ、ＰＤＡ、携帯電話などのポータブル情報機器などが使用可能である。また、クライアント情報機器１００は不図示の他の情報機器からの印刷要求を受け、プリンタ（１０２）へこれを伝達する情報機器であってもかまわない。以降、クライアント情報機器１００を“クライアント”又は“クライアント１００”と記載する。
【００１８】
［ソフトウェア構成］
図４はプリンタ１０２のソフトウェア構成を説明するためのブロック図である。プリンタ１０２は以下のコンポーネントで構成される。なお、これらのコンポーネントは、これらのコンポーネントに対応するプログラムを実行することにより実現される。
【００１９】
入出力制御部２１０は、外部からの情報を受信する他、外部へ情報を出力する処理を行う。印刷管理部２３０は、印刷部２０に対し印刷処理を命令する等のプロセスを管理する。ステータス情報管理部２４０は、プリンタの状態、およびプリンタに関する情報を管理する。プリンタ制御部２２０は、入出力制御部２１０、印刷管理部２３０、またはステータス情報管理部２４０からの情報を受信する他、情報、または指示を出力する。仮想プリンタドレス格納部２０１は、仮想プリンタ１０４のアドレス情報を保持する。
【００２０】
尚、プリンタ制御部２２０は、次の様な機能を有する。処理制御部２２１は、プリンタ制御部２２０を制御するコントローラである。入力判定部２２２は、入出力制御部２１０を介して入力された情報がどのような種別の情報かを判定する。印刷指示部２２３は、印刷管理部２３０に印刷指示を与える。情報収集部２２４は、ステータス情報管理部２４０からプリンタの状態やプリンタに関する情報を収集する。プリンタの状態とは、例えば、エラー、警告、待機状態、アイドリング状態等を指す。プリンタに関する情報とは、例えば、紙残量、トナー残量、インク残量、インストールされているアプリケーション情報等を指す。出力生成部２２５は、入出力制御部２１０を介して出力する情報を生成する。
【００２１】
図５は仮想プリンタ１０４のソフトウェア構成を説明するためのブロック図である。仮想プリンタ１０４は次のコンポーネントで構成される。受信部３１０は外部から情報を受信する。送信部３３０は外部へ情報を送信する。処理部３２０は受信部３１０で受信した情報の内容に応じた処理を実行し、必要に応じて送信部３３０に指示を与える。
【００２２】
尚、処理部３２０は、次の様な機能を有する。処理制御部３２１は処理部３２０を制御するコントローラである。要求判定部３２２は受信部３１０を介して受信した情報がどのような種別の情報かを判定する。情報収集処理部３２３は仮想プリンタの情報、及びプリンタから提供された情報を収集する。印刷実行指示部３２４はプリンタ１０２に印刷実行を依頼する。応答作成部３２５は送信部３３０を介してクライアント１００へ送信する情報を作成する。
【００２３】
なお、クライアント１００には制御部（不図示）、およびブラウザ（不図示）が含まれる。制御部は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムを実行することで実現され、ブラウザはブラウザプログラムを実行することで実現される。制御部が提供するＵＩにはデバイス探索要求を指示するためのボタンが含まれる。また、ブラウザが表示するＵＩには、ブラウザが表示している画像・文書データを印刷指示するためのボタンが含まれる。その他、クライアント１００にインストールされた別のアプリからでも上述の指示を行える。
【００２４】
［通信データについて］
図６はクライアント１００、プリンタ１０２、仮想プリンタ１０４でやり取りされる要求・応答メッセージを説明するための図である。図６（Ａ）〜（Ｆ）に示されるように、メッセージの基本構造はメッセージのサイズやＩＤなど必要な情報が記載されたヘッダー部、とパラメータ部で構成される。ヘッダー部には、送信元の情報（ＩＰアドレス）、送信先の情報（ＩＰアドレス）が含まれ、パラメータ部には、利用するネットワークプロトコルに応じた形式で記載されたデータが含まれる。このパラメータ部分はメッセージの送信元が作成する。送信先が、メッセージのパラメータ部分を解釈し理解することで、送信元からの各種処理の処理依頼を実行することが可能になる。
【００２５】
特定の機器同士でのプライベートな通信を行うだけであれば、このパラメータの仕様は特定の機器間で取り決めを行えばよい。しかし、日々、最新の機能を搭載したクライアント機が発売される中、プリンタ１０２が全てのクライアント機の要求に対応するネットワークプロトコル（より詳細に述べると依頼メッセージのパラメータ部分）に対応するのは困難である。
【００２６】
クライアント１００とプリンタ１０２でやりとりするメッセージ（Ａ）、（Ｂ）はパブリックな仕様に従いパラメータ部（データＡ）の記載が行われる。例えば、実施例１においては、クライアント１００のベンダーがパブリックな仕様を決定している。一方、プリンタ１０２、仮想プリンタ１０４間でやりとりされるメッセージ（Ｂ）、（Ｃ）、（Ｅ）、（Ｆ）は、プリンタ１０２と仮想プリンタ１０４の間で取り決められたプライベートな仕様に従うことでお互いがメッセージの内容を理解する。プリンタ１０２は、仮想プリンタ１０４と通信を行うためのネットワークプロトコルに事前に対応している。なぜなら、２つの装置は同じベンダーにより用意された装置であるため事前に対応させているのである。
【００２７】
プリンタ１０２から仮想プリンタ１０４に送られるメッセージ（Ｂ）の場合、仮想プリンタ１０４はパラメータ部のデータ構想（最初に「種別」と「オリジナル送信元」を示す情報があり、これに不定なデータＡが続く）を理解できる必要がある。第２のパラメータはプリンタ１０２が生成するパラメータ部、「種別」、「オリジナル送信元」に対応する。第１のパラメータはクライアント１００が生成するパラメータ部、「データＡ」に対応する。メッセージ（Ｂ）は、第２のパラメータに第１パラメータが付加され、仮想プリンタ１０４に送信される。このように、第１の依頼メッセージ（メッセージ（Ａ））は、第２の依頼メッセージ（メッセージ（Ｂ））へ変換され、メッセージは異なるネットワークプロトコルに従った形式となる。
【００２８】
同様に、仮想プリンタ１０４からプリンタ１０２に送られるメッセージ（Ｃ）の場合、プリンタ１０２はパラメータ部のデータ構造（最初に「種別」と「最終送信先」を示す情報があり、これに不定なデータＢが続く）を理解できる必要がある。仮想プリンタ１０４は、プリンタ１０２から送信されるメッセージ（Ｂ）、または（Ｆ）を基に解釈を行い、メッセージ（Ｅ）、または（Ｃ）を作成する。メッセージ（Ｅ）、および（Ｃ）は、プリンタ１０２に対する命令になっており、例えば、クライアント１００に対し仮想プリンタ１０４が生成したデータを転送する他、プリンタ１０２内のみで処理を行うことがある。メッセージ（Ｅ）の場合、処理結果であるパラメータの内容（例えば、データＣ）をプリンタ１０２は理解できる必要があり、メッセージ（Ｆ）の場合、データＤの内容を仮想プリンタ１０４は理解できる必要がある。
【００２９】
［応答メッセージの有無について］
また、メッセージの種類によっては、メッセージの送信元は送信先での処理の結果について感知する必要の無いもの、或いは逆にメッセージの送信元に応答メッセージ（要求メッセージに対する返事）の形で処理結果を返答する必要のあるものなどがある。この応答メッセージが必要かどうかも、先のパラメータの場合と同様、多種多様なメーカーの機器間で正常に通信を行うためには、応答メッセージの有無に関する取り決め（仕様）が必要であり各機器はこの取り決め（仕様）に従って通信を行うことになる。
【００３０】
なお、メッセージ（Ｅ）のパラメータ部であるデータＣの内容を、プリンタ１０２が完全理解する必要がない場合もある。例えば、クライアント１００に対してデータを転送する（応答メッセージの送信）依頼の場合、転送するデータそのものを理解する必要は必ずしもない。
【００３１】
［プリンタの処理フロー］
図８はプリンタ１０２の処理を説明するためのフローチャートである。この図８を用いて、プリンタ１０２の処理について説明する。入力判定部２２２は、プリンタ１０２が外部からの要求を受信すると、受信した要求のパラメータ部の内容を解析する。（Ｓ５１０）
【００３２】
入力判定部２２２は、要求されている内容、即ち依頼メッセージの内容を解釈できるか否か、又は解釈できるがプリンタ１０２では処理できないものでるか否かの判定を行う。（Ｓ５２０）換言すれば、メッセージに付随するパラメータ部の記載形式が、現在のプリンタ１０２がサポートしている形式以外で書かれている場合、プリンタ１０２では解釈できないということである。
【００３３】
この際、入力判定処理部２２２は、受信したメッセージのパラメータ部に対し、プリンタ１０２のサポートする全てのパラメータの記述形式を当てはめても読解（パース）できない場合、プリンタ１０２において処理不可能と判断する。例えば、プリンタ１０２がサポートしていない圧縮形式で、パラメータが圧縮されている場合、プリンタ１０２がサポートしていないデータ構想でパラメータが記述されている場合などがこれに該当する。この状況を、プリンタ１０２はプロトコルに対応していないと称する。
【００３４】
また、入力判定処理部２２２によって、パラメータ部のデータの読解（パース）できたが、要求されている機能がプリンタ１０２では処理できない場合についても説明する。例えば、ＰＤＦダイレクト印刷が要求されたことをプリンタ１０２は理解できるが、ＰＤＦのダイレクト印刷機能をプリンタ１０２が持たない場合である。更に、パラメータがＸＭＬ形式で記述されているため読解は行えるが、パラメータに記載されているネームスペースで記述される機能をサポートしていない場合なども該当する。受信した要求が未知のもの或いは既知だが自機では処理不可と判断できる場合、Ｓ５３０に進み、仮想プリンタ１０４への処理依頼の作成、及び送信処理を行う。
【００３５】
Ｓ５３０では、図６のメッセージ（Ａ）からメッセージ（Ｂ）作成を行い、メッセージ（Ｂ）の送信を行う。制御部２２１は出力作成部２２５に対し、メッセージ（Ｂ）のパラメータ部の種別を「処理依頼」とし、オリジナルの送信元を受信したメッセージ（Ａ）の送信元に記載されていたアドレスとしメッセージ（Ｂ）を作成するよう指示する。尚、このパラメータの「オリジナルの送信元」は、後に説明する転送依頼メッセージのパラメータの「最終送信先」情報に使用されるため必要となる。更に、プリンタ１０２が受け取った要求の内容全てを仮想プリンタ１０４に伝達するために、受信したメッセージ（Ａ）のパラメータ部であったデータＡをそのままメッセージ（Ｂ）のパラメータ部にコピーする。
【００３６】
以上のようにして作成した仮想プリンタ１０４への処理依頼メッセージ（Ｂ）は、仮想プリンタドレス格納部２０１に記憶されている仮想プリンタ１０４のアドレスに対し、入出力制御部２１０を介して送信される。Ｓ５２０にて、入出力判定部２２２は、要求が解釈可能であって、かつ処理可能と判断される場合、要求の内容が仮想プリンタからの転送要求かどうかを判定する。この際、入出力判定部２２２は、メッセージ（Ｃ）のパラメータ部に含まれる種別が指す値が「転送依頼」であるか否かを判断する（Ｓ５４０）。
【００３７】
転送要求ではない場合、Ｓ５５０に進み、通常の要求として処理を行う。例えば、要求の内容が印刷処理の要求であれば、印刷指示部２２３は印刷管理部２３０に対し印刷処理の実行を指示する。要求の内容が情報提供要求であれば、情報収集部２２４はステータス情報管理部２４０から情報を取得する（Ｓ５５０）。なお、通常の要求として処理を行う場合は、仮想プリンタ１０４からの指示である場合と、クライアント１００からの指示の場合の両方を含んでいる。クライアント１００からの指示で通常の要求処理を行うと言うことは、プリンタ１０２はクライアント１００が利用するネットワークプロトコルに対応していることを指す。この通常の処理は、依頼処理に含まれる処理である。
【００３８】
次に、今処理を行っている要求が応答を必要とするものかどうかによって処理が分かれる。要求が応答必要とするかどうかは、取り決め（仕様）によって規定されているため要求毎に異なる。入力判定部２２１は、各々の要求の種別を判断する。（Ｓ５６０）例えば、印刷要求のような処理の場合、ネットワークプロトコルの仕様によっては応答を必要としないものがある。このような要求の場合、プリンタ１０２での処理はここで処理は終了することになる。印刷要求はプリンタに対する印刷実行を望む要求であり、クライアント１００に対し必ず情報を送信する必要がない要求である。
【００３９】
一方、情報提供要求の場合、応答が必要とされる。このような場合、出力作成部２２５は、要求内容に応じた応答を作成し、入出力制御部２１０は要求の送信元に作成された応答を送信する。（Ｓ５７０）但し、本来応答が必要な要求ではあるが、何らかの事由により処理が失敗した場合は応答の必要が無いとネットワークプロトコルで規定されている場合、応答を返却する必要は無い。尚、図６のメッセージ（Ｅ）はＳ５４０でＮｏと判定された場合に作成されるメッセージであり、応答の必要があれば、Ｓ５７０でメッセージ（Ｆ）が作成され仮想プリンタ１０４へ送信される。
【００４０】
Ｓ５４０にて、入力判定部２１１により仮想プリンタ１０４からの転送要求と判断された場合、Ｓ５８０にて転送先に受け取ったパラメータを含む内容を転送する。この転送処理は、依頼処理に含まれる処理である。Ｓ５８０では、図６のメッセージ（Ｃ）からメッセージ（Ｄ）を作成し、メッセージ（Ｄの送信を行う。メッセージ（Ｃ）のパラメータの種別は「転送依頼」であり、最終転送先には何らかのアドレスが記載されている。このパラメータの他に、プリンタ１０２では理解する必要の無いデータＢが記載されている。これらの受信メッセージの情報から、出力作成部２２５はパラメータをデータＢとするメッセージ（Ｄ）を作成する。入出力制御部２１０は、最終送信先のアドレスを基に、クライアント１００へメッセージ（Ｄ）を送信する。
【００４１】
メッセージ（Ｂ）に含まれるパラメータである「オリジナルの送信元」は、転送依頼メッセージのパラメータの「最終送信先」情報に使用される。最後に、メッセージ（Ｂ）のパラメータは、プリンタ１０２が受け取った要求の内容全てを仮想プリンタ１０４に伝達するために、受信したメッセージ（Ａ）のパラメータ部のデータＡをメッセージ（Ｂ）のパラメータ部にコピーする。これにより、メッセージ（Ｂ）のパラメータ部には、第１のパラメータと、第２のパラメータの両方が含まれることになる。
【００４２】
以上のようにして作成した仮想プリンタ１０４への処理依頼メッセージ（Ｂ）は、仮想プリンタドレス格納部２０１に記憶されている仮想プリンタ１０４のアドレスを基に、仮想プリンタ１０４へ送信される。
【００４３】
［仮想プリンタの処理フロー］
図９は仮想プリンタ１０４の処理を説明するためのフローチャートである。この図９を用いて、仮想プリンタ１０４の処理について説明する。仮想プリンタ１０４は外部から要求を受信すると、要求判定部３２２にて受信した要求の内容を解析する。（Ｓ６１０）次に、要求判定部３２２は、要求の内容がプリンタ１０２からの処理依頼かどうかを判定する。（Ｓ６２０）
【００４４】
プリンタ１０２からの処理依頼かどうかは、要求判定部３２２によりメッセージのパラメータ部の種別パラメータが「処理依頼」になっているか否かを判定されることでわかる。「処理依頼」であれば、送信元（プリンタ）からの処理依頼と判定されたことになる。プリンタからの処理依頼でなければ、要求に対する既定の処理（Ｓ６３０）を実施し処理を終了する。例えば、仮想プリンタ１０４に対する情報提供依頼の要求であれば、情報収集処理部３２３にて仮想プリンタ１０４自身の情報を収集し、応答作成部３２５にて応答メッセージが作成され、送信部３３０により応答が要求元に送信される。
【００４５】
受け取った要求がプリンタ１０２からの処理依頼の場合、メッセージ含まれるパラメータの内容を解釈し、仮想プリンタ１０４自身が処理可能かどうかを判定する。（Ｓ６４０）要求処理判定部３２２は、受信メッセージのパラメータ部に含まれるデータＡが仮想プリンタ１０４の理解可能な形式で記述されおり、要求される機能が仮想プリンタ１０４単独、或いはプリンタ１０２と協力することで対応かどうかを判断する。例えば、要求がＰＤＦダイレクトの印刷要求であって、仮想プリンタ１０４がＰＤＦ形式をプリンタ１０２が処理可能なデータ形式に変換する機能を有している場合には、処理可能と判断する。Ｓ６４０にて、不可能と判断した場合、処理は終了する。
【００４６】
この場合、図６のクライアント１００が発行するメッセージ（Ａ）が要求した処理は実行されないことになる。もし、このメッセージ（Ａ）に対する応答メッセージが取り決め（仕様）上規定されているのであれば、応答メッセージはクライアント１００には到達しないことなる。このため、クライアント１００からみてプリンタ１０２は発行した要求メッセージ（Ａ）には非対応であったと認識できるようになる。
【００４７】
Ｓ６４０にて処理可能と判定した場合、仮想プリンタ１０４は要求を処理する。（Ｓ６５０）この要求の処理には多種多様なものが想定される。例えば、受け取ったデータの内容が、プリンタ１０２に対する印刷指示を伴うものであれば、印刷実行指示部３２４はプリンタ１０２に対する印刷要求を示すパラメータを作成し、送信部３３０によりプリンタ１０２へ印刷要求のパラメータを送信する。また、受け取ったパラメータの内容がプリンタ１０２の情報を取得する要求であれば、情報収集処理部３２３は要求された情報をプリンタ１０２から取得するため、応答作成部３２５に情報取得を要求するパラメータを含むメッセージ（Ｅ）を作成させる。そして、送信部３３０はプリンタ１０２に対して情報に取得の要求を送信する。
【００４８】
次に、要求判定部３２２は、今処理している要求が応答を必要とするものかどうかを判定する。（Ｓ６６０）応答が必要かどうかは先のプリンタ１０２に対する説明と同様、要求毎規定されているため、各々の要求の種別により異なる。例えば、印刷要求のような処理の一方的な依頼の場合、取り決め（仕様）の規定によっては応答を必要としないものがある。このような要求の場合、仮想プリンタ１０４での処理はＳ６５０でプリンタ１０２に印刷要求を発行することで、終了することになる。
【００４９】
一方、情報提供要求の場合、応答が必要であるため、応答作成部３２５において要求に応じた応答が作成され、送信部３３０により要求の送信元に応答が返信される。
【００５０】
但し、本来応答が必要な要求ではあるが、何らかの事由により処理が失敗した場合は応答の必要が無いとプロトコルで規定される要求で、実際に処理が失敗した場合などは規定に従って応答を返却する必要は無い。応答が必要でなければ、要求に対する処理は終了する。応答が必要であれば、プリンタへの転送依頼を作成送信する処理（Ｓ６７０）に進む。
【００５１】
Ｓ６７０では、メッセージ（Ｂ）からメッセージ（Ｃ）の作成が行われ、メッセージ（Ｃ）が送信される。応答作成部３２５は作成するメッセージのパラメータの種別を「転送依頼」とし、同じく最終送信先にメッセージ（Ｂ）のパラメータのオリジナル送信元に記載されていたアドレスを記入する。また、先のＳ６５０での処理結果を含み、受信したメッセージのデータＡへの応答として、仮想プリンタ１０４で生成したデータＢをパラメータとするメッセージ（Ｃ）を作成する。
【００５２】
［処理概要説明］
次に、図６を用いて、クライアント１００がプリンタ１０２に対して発行したメッセージ（Ａ）がプリンタ１０２で処理不可能な場合に、どのように処理されていくのかを説明する。またここでは、説明を行うに当たり、次の条件が成り立っているものとして説明を行うこととする。要求メッセージ（Ａ）は最終的な応答メッセージ（Ｄ）を必要とする要求であるとメッセージ（Ａ）の取り決め（仕様）上規定されている。要求メッセージ（Ａ）はプリンタ１０２では処理不可能であるが、仮想プリンタ１０４では処理可能なように仮想プリンタ１０４は構成されている。最終的な応答メッセージ（Ｄ）にはプリンタ１０２に関する情報が必要である。
【００５３】
図７はこの例を説明するためのフローである。この図７及び図６を用いて、説明を行う。クライアント１００が要求メッセージ（Ａ）をプリンタ１０２に向け送信する。（Ｓ４１０）プリンタ１０２が要求メッセージ（Ａ）を受け取り、パラメータであるデータＡを処理不可と判断した場合（先のＳ５２０でＹｅｓの場合）、プリンタ１０２は仮想プリンタ１０４へ処理を依頼するメッセージ（Ｂ）を作成する。メッセージの作成方法についてはＳ５３０で説明したとおりである。更に、プリンタ１０２は予め仮想プリンタドレス格納部２０１に格納されたアドレスを基に、仮想プリンタ１０４へメッセージ（Ｂ）を送信する。（Ｓ４２０）
仮想プリンタ１０４がメッセージ（Ｂ）を受け取り、種別が「処理依頼」かつ、データＡを処理可能と判断した場合、メッセージ（Ｂ）に含まれるデータＡの内容に応じた処理を行う。（図９のＳ６５０）今回、応答メッセージ（Ｄ）は必要だという仮定であるため、プリンタ１０２にクライアント１００への転送を依頼するメッセージ（Ｃ）の作成も行う。メッセージ（Ｃ）のデータＢにはプリンタ１０２の情報が必要であるため、プリンタ１０２に対して必要な情報の提供を依頼するメッセージ（Ｅ）を作成し、プリンタ１０２へ送信する。（Ｓ４３０）
プリンタ１０２はメッセージ（Ｅ）を受け取ると、このメッセージ（Ｅ）の内容を確認する。今回の場合、情報提供依頼であるため依頼された情報をパラメータ（データＤ）とした応答メッセージ（Ｆ）を作成し、これを仮想プリンタ１０４に送信する。（Ｓ４４０）仮想プリンタ１０４は応答メッセージ（Ｆ）を受け取り、これに含まれていたデータＤを得ることでメッセージ（Ｃ）の作成を行う。仮想プリンタ１０４はＳ６７０で説明したとおり、メッセージ（Ｃ）を作成しプリンタ１０２へ送信する。（Ｓ４５０）
プリンタ１０２はメッセージ（Ｃ）を受け取り、パラメータ部分の種別が「転送依頼」であることを確認した場合、データＢの内容をパラメータとする応答メッセージ（Ｄ）を作成し、最終送信先に記載されたクライアント１００宛に送信する。（Ｓ４６０）最後に、クライアント１００は応答（Ｄ）を受け取る。（Ｓ４７０）このようにして、クライアント１００は要求（Ａ）でプリンタ１０２に対して情報提供を要求し、応答（Ｄ）としてこれを取得できたことになる。例えば、要求（Ａ）がデバイス探索の情報提供リクエストであれば、応答（Ｄ）を受けることで、必要な情報をクライアント１００は取得できたことになり、プリンタ１０２が見つかったと認識できることになる。
【００５４】
［処理の例示］
本発明への理解を深めてもらうために、仮想的なプロトコルを想定して、本発明を適用した場合の動作について説明を行う。
【００５５】
〔ディスカバリ機能の例〕
ここでは、ＷＳ―Ｄｉｓｃｏｖｅｒｙ仕様で既定される、Ｐｒｏｂｅ／ＰｒｏｂｅＭａｔｃｈｅｓ命令による検索を説明する。また、ＷＳ−ＭｅｔａｄａｔａＥｘｃｈａｎｇｅ仕様とＷＳ−Ｔｒａｎｓｆｅｒ仕様で既定されたＧｅｔ（ｍｅｔａｄａｔａ）による情報の取得を用いたディスカバリ機能についても説明する。ＷＳ−Ｄｉｓｃｏｖｅｒｙ仕様は、デバイス探索用プロトコルに相当する。
【００５６】
尚、この例では以下の仮定のもとで説明を行う。プリンタ１０２は上記のＰｒｏｂｅ／ＰｒｏｂｅＭａｔｃｈｅｓ、Ｇｅｔ（ｍｅｔａｄａｔａ）には非対応であるが、仮想プリンタ１０４を経由することで対応可能になるものとする。また、Ｐｒｏｂｅに対する応答ＰｒｏｂｅＭａｔｃｈｅｓは仮想プリンタ１０４のみで生成が可能であるとする。更に、Ｇｅｔ（ｍｅｔａｄａｔａ）に対する応答にはプリンタ１０２から個別デバイス情報及びプリンタモデルに関する情報を取得し応答する必要があるものとする。個別デバイス情報とは、各プリンタ固有の値でデバイスＩＤや、インク残量、紙残量等である。プリンタモデルに関する情報とは、機種情報等のモデルに関する情報である。
【００５７】
図１０はディスカバリ機能実現時のクライアント、プリンタ、仮想プリンタ間尾処理を示す図である。この図を用いて、ディスカバリ探索要求の処理の説明を行う。クライアント１００はＷＳＤ対応デバイスを探索するためにＰｒｏｂｅ（１００１）をマルチキャストで送信する。
【００５８】
Ｐｒｏｂｅ（１００１）はクライアントから不特定多数に送られるメッセージであり、クライアント１００はこのメッセージに応答してきた機器がＷＳ―Ｄｉｓｃｏｖｅｒｙ仕様に準拠していることを認識できる。Ｐｒｏｂｅ（１００１）がメッセージ（Ａ）に対応する。Ｐｒｏｂｅ（１００１）を受信したプリンタ１０２は、Ｐｒｏｂｅ（１００１）のパラメータを自身では処理不可能と判断し、Ｐｒｏｂｅ（１００１）から［Ｐｒｏｂｅ］´（１００２）を生成する。そして、プリンタ１０２は仮想プリンタ１０４に処理依頼として送信する。このとき、プリンタ１０２はＰｒｏｂｅ（１００１）のパラメータをパラメータ部とし、ヘッダーに仮想プリンタ１０４のアドレスを記載し、ＨＴＴＰで送信する。［Ｐｒｏｂｅ］´（１００２）は図６のメッセージ（Ｂ）に該当し、パラメータ部分には種別が「処理依頼」であること、オリジナルの送信元にクライアントのアドレスが記載され、Ｐｒｏｂｅ（１００１）に含まれていたデータＡがそのまま記載されている。
【００５９】
仮想プリンタ１０４は、［Ｐｒｏｂｅ］´（１００２）の処理依頼からこれに応答する［ＰｒｏｂｅＭａｔｃｈｅｓ］´（１００３）を生成し、プリンタに転送依頼として送信する。［ＰｒｏｂｅＭａｔｃｈｅｓ］´（１００３）はメッセージ（Ｃ）に該当し、パラメータ部には種別が転送依頼であること、最終転送先がクライアント１００であること、が記載されたパラメータが含まれる。また、ＷＳ―Ｄｉｓｃｏｖｅｒｙ仕様に従った場合、データＢはＰｒｏｂｅへの返答となる。
【００６０】
［ＰｒｏｂｅＭａｔｃｈｅｓ］´（１００３）の転送依頼として受信したプリンタ１０２は、ＰｒｏｂｅＭａｔｃｈｅｓ（１００４）の形式に整形して、クライアント１００に送信する。この場合、メッセージＣに記載された宛先を確認し、クライアント１００に送信すべき情報をＴＣＰ層レベルで送信すれば良い。クライアント１００は自身が発行したＰｒｏｂｅ（１００１）に対してプリンタ１０２がＰｒｏｂｅＭａｔｃｈｅｓ（１００４）を返答してきたため、プリンタ１０２をＷＳディスカバリに対応したデバイスであると認識することになる。
【００６１】
尚、仮想プリンタ１０４が［Ｐｒｏｂｅ］´（１００２）を解釈できない、つまり、このプロトコルをサポートしていない場合、［ＰｒｏｂｅＭａｔｃｈｅｓ］´（１００３）は発行できない。このためプリンタ１０２はＰｒｏｂｅＭａｔｃｈｅｓ（１００４）をクライアント１００に返さなくなる。このケースでは、クライアント１００は自信が発行したＰｒｏｂｅ（１００１）に対する応答がプリンタ１０２から返って来ないため、プリンタ１０２はＰｒｏｂｅ／ＰｒｏｂｅＭａｔｃｈｅｓ命令による検索に非対応であると判断する。また、仮想プリンタから解釈できない旨返ってきたら、それに併せて、処理できない旨をクライアントに返しても良い。次に、クライアント１００はプリンタ１０２のメタデータ情報を取得するために、Ｇｅｔ（ｍｅｔａｄａｔａ）（１００５）を発行する。これを受けた、プリンタ１０２は自身で処理不可として、［Ｇｅｔ（ｍｅｔａｄａｔａ）］´（１００６）を作成し、仮想プリンタ１０４に処理依頼として送信する。
【００６２】
［Ｇｅｔ（ｍｅｔａｄａｔａ）］´（１００６）は図６のメッセージ（Ｂ）に該当し、パラメータ部分には種別が「処理依頼」であること、オリジナルの送信元にクライアントのアドレスが記載され、Ｇｅｔ（ｍｅｔａｄａｔａ）（１００５）に含まれていたデータＡがそのまま記載されている。仮想プリンタ１０４は［Ｇｅｔ（ｍｅｔａｄａｔａ）］´（１００６）の内容を解釈する。今回の場合、プリンタ１００の個別デバイス情報（ファームウェアのバージョン、フレンドリー名称、シリアルナンバー）の要求及び、プリンタモデル情報（デバイスのカテゴリー、製造者、製造者のＵＲＬ、モデル名称、モデルナンバー、モデル用ＵＲＬ、プレゼンテーションＵＲＬ）が要求されているものとする。
【００６３】
プリンタ１０２に対して、個別デバイス情報及びプリンタモデル情報を要求するため、それぞれ要求１００７、１００８を発行して情報を収集する。尚、この要求１００７や１００８は、プリンタ１０２が解釈可能な要求を、仮想プリンタ１０４が発行する。要求１００７、１００８を受け取ったプリンタ１０２これらの応答として、それぞれ個別デバイス情報、プリンタモデル情報を仮想プリンタ１０４に返す。
【００６４】
要求１００７は図６のメッセージ（Ｅ）及びメッセージ（Ｆ）を一本の線で表したものである。メッセージ（Ｅ）のデータＣには個別デバイス情報の取得要求が書きこまれており、メッセージ（Ｆ）のデータＤにはプリンタ１０２からの返答として個別プリンタ情報が書きこまれている。尚、図１０では要求１００７は一本の線で個別プリンタ情報を取得するように書いた。しかし、個別プリンタ情報を構成する各要素（ファームウェアのバージョン、フレンドリー名称、シリアルナンバー）毎の情報要求にしかプリンタ１０２が対応していないのであれば、個別に情報提供要求を行うことになる。要求１００８については、個別プリンタ情報がプリンタモデル情報に代わっただけであり、要求１００７と状況は同じであるため、説明は省略する。
【００６５】
個別デバイス情報とプリンタモデル情報を取得した仮想プリンタ１０４は［Ｇｅｔ（ｍｅｔａｄａｔａ）］´（１００６）への応答として［ＧｅｔＲｅｓｐｎｃｅ（ｍｅｔａｄａｔａ）］´（１００９）を作成し、転送依頼として送信する。この、［ＧｅｔＲｅｓｐｎｃｅ（ｍｅｔａｄａｔａ）］´（１００９）は図６のメッセージ（Ｃ）に相当し、パラメータ部分には種別が転送依頼であること、最終送信先がクライアントであることが記載されている。更にデータＢには要求１００７や１００８で収集した個別デバイス情報、プリンタモデル情報がＧｅｔ（ｍｅｔａｄａｔａ）（１００５）への応答メッセージとして含まれ、夫々仕様で規定された形式で記述されている。
【００６６】
［ＧｅｔＲｅｓｐｏｎｃｅ（ｍｅｔａｄａｔａ）］´（１００９）を受信したプリンタ１０２はこれをＧｅｔＲｅｓｐｏｎｃｅ（ｍｅｔａｄａｔａ）（１０１０）の形に変換し、クライアント１００に送信する。このようにしてクライアント１００は必要な情報をプリンタ１０２から取得することが可能になり、ＷＳＤで規定されたディスカバリ機能が実現可能になる。
【００６７】
〔プリント機能の例〕
次に、ＷＳＤプリントサービス仕様（Ｐｒｉｎｔ  Ｓｅｒｖｉｃｅ  Ｄｅｆｉｎｉｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０  Ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅ  ｏｎ  Ｄｅｖｉｃｅｓ）を例に説明する。ＷＳＤプリントサービス仕様で既定される、ＣｒｅａｔｅＰｒｉｎｔＪｏｂ命令、ＳｎｅｄＤｏｃｕｍｅｎｔ命令を用いた印刷の例でプリント機能への適用例を説明する。ＷＳＤプリントサービス仕様は、プリントプロトコルに相当する。
【００６８】
尚、この例では以下の仮定のもとで説明を行う。プリンタ１０２はＣｒｅａｔｅＰｒｉｎｔＪｏｂ命令、ＳｎｅｄＤｏｃｕｍｅｎｔ命令に非対応であるが、仮想プリンタ１０４を経由することで対応可能になるものとする。また、ＣｒｅａｔｅＰｒｉｎｔｅｒ命令に対しては、印刷可能状態であればジョブＩＤを含む情報を応答として返す必要があるものとする。尚、仕様で既定されるＳｎｅｄＤｏｃｕｍｅｎｔ命令には応答が必要であるが、ここでは本発明の全ての系を説明する意味で、この例で扱うＳｎｅｄＤｏｃｕｍｅｎｔ命令には応答は不要であるとして説明する。更に、仮想プリンタ１０４からプリンタ１０２に対する印刷要求に対する応答も不要であるとする。
【００６９】
図１１はプリント機能実現時のクライアント、プリンタ、仮想プリンタ間の処理を示す図である。この図を用いて、プリント機能の実現時の処理の説明を行う。クライアント１００は印刷を行う準備のために、ＣｒｅａｔｅＰｒｉｎｔＪｏｂ（１１０１）をプリンタ１０２に送信する。ＣｒｅａｔｅＰｒｉｎｔＪｏｂ（１１０）は印刷処理の準備要求として発行されるもので、これを受信したプリンタ側で印刷を行うことが可能であれば、ジョブＩＤ情報を返答することになる。
【００７０】
ＣｒｅａｔｅＰｒｉｎｔＪｏｂ（１１０１）を受信したプリンタ１０２は、この要求を処理不可能と判断し、［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ］´（１１０２）を生成し、仮想プリンタ１０４へ処理依頼として送信する。［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ］´（１１０２）は図６のメッセージ（Ｂ）に該当し、パラメータ部分には種別が「処理依頼」であること、オリジナルの送信元にクライアントのアドレスが記載される。また、メッセージ（Ｂ）には、ＣｒｅａｔｅＰｒｉｎｔＪｏｂ（１１０１）に含まれていたデータＡがそのまま記載されている。
【００７１】
仮想プリンタ１０４は［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ］´（１１０２）の処理依頼を受けると、プリンタ１０２が印刷を行うことが可能な状態かどうかの確認を行うために要求１１０３をプリンタ１０２に送信する。要求１１０３では、メッセージ（Ｅ）及びこれに対する応答メッセージ（Ｆ）のやり取りが行われる。メッセージ（Ｅ）のデータＣは印刷可能かどうかの状態確認依頼を示すデータがパラメータとして記載される。これへの応答メッセージ（Ｆ）のデータＤにはプリンタ１０２が印刷可能な状態であるかどうかを示す情報がパラメータとして記載される。プリンタ１０２は仮想プリンタ１０４からの状態確認１１０３要求に対して、印刷可能な状態であれば、印刷可能状態であることを示す内容を返答する。
【００７２】
プリンタ１０２から印刷可能状態である返答を受けた仮想プリンタ１０４は、［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ］´（１１０２）への応答として必要なジョブＩＤを生成する。更に、仮想プリンタ１０４はこのジョブＩＤを含んだ、［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ］´（１１０４）を作成し、プリンタ１０２へ転送依頼として送信する。［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ］´（１１０２）はメッセージ（Ｃ）に該当し、パラメータ部には種別が転送依頼であること、最終転送先がクライアント１００であること、が記載される。また、メッセージ（Ｃ）はＷＳＤプリントサービス仕様に従ったデータＢが記載されている。ＷＳＤプリントサービス仕様によると、データＢにはＣｒｅａｔｅＰｒｉｎｔＪｏｂへの返答であること、及びジョブＩＤが記載されることになる。
【００７３】
［ＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ］´（１１０４）を受信したプリンタ１０２は、これをＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ（１１０５）の形に変換しクライアント１００に送信する。クライアント１００はＣｒｅａｔｅＰｒｉｎｔＪｏｂ（１１０１）への応答として、印刷処理可能であることを示すＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ（１１０５）をプリンタ１０２から受け取ることになる。これにより、プリンタ１０２はＷＳＤプリントサービス仕様の仕様に則った印刷処理が可能と判断する。
【００７４】
ＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ（１１０５）のパラメータの内容が印刷可能を示す返答であれば、クライアント１００はＣｒｅａｔｅＰｒｉｎｔＪｏｂ  Ｒｅｓｐｏｎｃｅ（１１０５）で取得したジョブＩＤ及び印刷データを含んだＳｅｎｄＤｏｃｕｍｅｎｔ（１１０６）をプリンタ１０２に送信する。このメッセージによって、具体的に印刷を依頼すると同時にプリントデータをプリンタ１０２に送信することになる。
【００７５】
ＳｅｎｄＤｏｃｕｍｅｎｔ（１１０６）を受信したプリンタ１０２は、この要求を処理不可能と判断し、［ＳｅｎｄＤｏｃｕｍｅｎｔ］´（１１０７）を生成し、仮想プリンタ１０４へ処理依頼を送信する。［ＳｅｎｄＤｏｃｕｍｅｎｔ］´（１１０７）はメッセージ（Ｂ）に該当し、パラメータ部分には種別が「処理依頼」であること、オリジナルの送信元にクライアントのアドレスが記載される。また、メッセージ（Ｂ）はＳｅｎｄＤｏｃｕｍｅｎｔ（１１０６）に含まれていたデータＡがパラメータとして記載される。仮想プリンタ１０４が［ＳｅｎｄＤｏｃｕｍｅｎｔ］´（１１０７）を受信すると、この命令に付加されているプリントデータを基に印刷を行うよう、プリンタ１０２への印刷指示（１１０８）を発行する。この命令１１０８はメッセージ（Ｅ）に相当し、データＣには印刷依頼である旨を示す情報と、具体的に印刷を行うプリントデータを含めることになる。なお、仮想プリンタ１０４は、プリントデータを印刷データ（ＰＤＬ）に変換してプリンタ１０２へ送信をしても良い。
【００７６】
本例では、ＳｅｎｄＤｏｃｕｍｅｎｔ（１１０６）に対する応答は不要としているため、［ＳｅｎｄＤｏｃｕｍｅｎｔ］´（１１０７）に対する応答も必要なくなる。つまり、図９のＳ６６０での判定がＮｏとなる。更に、印刷指示（１１０８）に対する応答も不要としているため、仮想プリンタ１０４側の処理はプリンタ１０２への印刷指示（１１０８）を発行した時点で終了する。プリンタ１０２は仮想プリンタ１０４からの印刷指示（１１０８）を受け、印刷処理を実施する。尚、今回の例では印刷指示（１１０８）に対する応答は不要である。従って、印刷処理が終了した時点で、この印刷指示（１１０８）に対するプリンタ１０２の処理は終了する。しかし、印刷指示（１１０８）にクライアント１００のアドレスが含まれていれば、プリンタ１０２は印刷完了後、クライアント１００へ印刷が終了した応答を送信する。
【００７７】
このようにして、クライアント１００がプリンタ１０２の非サポート形式の印刷指示を発行した場合であっても、適切に印刷を行えるようになる。つまり、クライアント１００のユーザからは、プリンタ１０２はＷＳＤプリントサービス仕様に従った印刷機能をサポートしているデバイスに見えている。
【００７８】
〔他の実施例〕
本実施例では図４の仮想プリンタドレス格納部２０１への仮想プリンタ１０４のアドレスの登録について簡単に述べる。
【００７９】
実施例１では仮想プリンタドレス格納部２０１には予め仮想プリンタ１０４のアドレスが設定されているとした。例えば、工場出荷時の設定としてグローバルなインターネット上に配置する仮想プリンタ１０４のアドレスを設定しておくことで、インターネットに接続可能な環境であればどこであれ本発明の機能を提供できるようになる。しかし、この形のままでは、特定の仮想プリンタへのアクセスの集中する問題やワールドワイドで一律の新機能の提供を行うことしかできない問題などが生じる。
【００８０】
他の実施例では、仮想プリンタドレス格納部２０１をプリンタ１０２毎に設定する例を示す。例えば企業内でプライベートな仮想プリンタ１０４を立てることで、アクセスの高速化や個別のユニークなプロトコル対応等を行うことができるという効果を発揮する図１２は本実施例のプリンタ１０２のソフトウェア構成を示すブロック図である。図１２（ａ）は先の実施例で説明した図４の構成に対して、仮想プリンタドレス設定部２５０を追加した構成になっている。
【００８１】
図１２（ｂ）は仮想プリンタドレス設定部２５０が不図示のパネルＵＩ上に表示するＵＩの例である。仮想プリンタドレス設定部２５０の動作について説明する。仮想プリンタドレス設定部２５０は、図２の操作部２１の操作部を介したユーザ指示に従って、不図示の操作パネルにパネルＵＩに図１３のごときＵＩを表示する。ＵＩを表示した時点では、その時点で仮想プリンタドレス格納部２０１に格納されているアドレス情報（ＵＲＬやＩＰアドレス）を表示する。仮想プリンタドレス格納部２０１に何も設定されていなければ、ブランク表示となる。尚、この７１０のコントロールは編集可能になっており、図２の操作部２１の操作部２１を介したユーザからの指示に従って、編集することが可能になっている。ユーザにより更新ボタン７２０が選択されると、７１０に記載されている情報で仮想プリンタドレス格納部２０１を書きかえる。また、閉じるボタン７３０が選択されると、仮想プリンタドレス設定部２５０は終了する。
【符号の説明】
【００８２】
１００  クライアント
１０２  プリンタ
１０４  仮想プリンタ
【図１】
0005665582.tif 000002
【図２】
0005665582.tif 000003
【図３】
0005665582.tif 000004
【図４】
0005665582.tif 000005
【図５】
0005665582.tif 000006
【図６】
0005665582.tif 000007
【図７】
0005665582.tif 000008
【図８】
0005665582.tif 000009
【図９】
0005665582.tif 000010
【図１０】
0005665582.tif 000011
【図１１】
0005665582.tif 000012
【図１２】
0005665582.tif 000013