(57)【要約】【課題】ＡｉｒＰｒｉｎｔ（登録商標）等の特定のプロトコルに対応していない画像形成装置に印刷ジョブを送ること。【解決手段】ＯＳ２１０ａを有するホストコンピューター１０１ａ内の仮想プリンターサービス２１１ａに生成された仮想プリンターＡ３１１は、探索要求受信部１６０１によりＯＳ２１０ａからのデバイス探索要求を受け取り、探索要求返答部１６０２により前記受け取ったデバイス探索要求に対して応答する。また、印刷ジョブ受信部１６０４により、前記応答に基づいて仮想プリンターＡ３１１を印刷ジョブの送信先として登録したＯＳ２１０ａからの印刷ジョブを特定のプロトコルで受信する。そして、該受信した印刷ジョブを、印刷ジョブ変換部１６０５により変換し、印刷ジョブ送信部１６０６によりジョブ生成部３０３ａを介して、特定のプロトコルとは異なるプロトコルで、特定のプロトコルに対応していないプリンターＡＹ１０３に送信する。【選択図】図４
2020194508.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを有する情報処理装置内の仮想デバイスであって、
前記オペレーティングシステムからのデバイス探索要求を受け取る受け取り工程と、
前記受け取ったデバイス探索要求に対して応答する応答工程と、
前記応答に基づいて前記仮想デバイスを印刷ジョブの送信先として登録した前記オペレーティングシステムから、印刷ジョブを受信する受信工程と、
前記受信した印刷ジョブを画像形成装置に送信する送信工程と、を前記情報処理装置に実行させるための仮想デバイス。
【請求項２】
前記受信工程では、特定のプロトコルで前記印刷ジョブを受信し、
前記送信工程では、前記特定のプロトコルとは異なるプロトコルで、前記特定のプロトコルに対応していない前記画像形成装置に前記印刷ジョブを送信することを特徴とする請求項１に記載の仮想デバイス。
【請求項３】
前記受信工程で受信する印刷ジョブは、該印刷ジョブの元となったファイルが、前記情報処理装置内のアプリケーションによって開かれており、該アプリケーション上でユーザが印刷指示を行ったことにより生成される印刷ジョブであることを特徴とする請求項１又は２に記載の仮想デバイス。
【請求項４】
前記応答工程では、仮想デバイスであることを示す情報を有する識別子が付加されたデバイス名を含む情報を応答することを特徴とする請求項１〜３のいずれか１項に記載の仮想デバイス。
【請求項５】
前記応答工程では、前記仮想デバイスが動作している情報処理装置の情報を有する識別子が付加されたデバイス名を含む情報を応答することを特徴とする請求項１〜３のいずれか１項に記載の仮想デバイス。
【請求項６】
前記仮想デバイスは、前記デバイス探索要求に対して前記オペレーティングシステムに応答された仮想デバイスのデバイス名の一覧が前記オペレーティングシステムによりユーザに提示され、該一覧からユーザにより選択されて、前記オペレーティングシステムから印刷ジョブを送信するデバイスとして前記オペレーティングシステムに登録されて使用される、ことを特徴とする請求項４又は５に記載の仮想デバイス。
【請求項７】
前記識別子が付加されたデバイス名は、予め生成されて前記仮想デバイスに保持されることを特徴とする請求項４〜６のいずれか１項に記載の仮想デバイス。
【請求項８】
前記識別子が付加されたデバイス名は、前記受け取り工程で前記オペレーティングシステムからのデバイス探索要求を受け取った場合に生成されることを特徴とする請求項４〜６のいずれか１項に記載の仮想デバイス。
【請求項９】
前記仮想デバイスの公開範囲を所定の範囲に設定することが可能な設定工程を有し、
前記応答工程では、前記公開範囲が前記所定の範囲に設定されている場合、前記受け取り工程で受け取ったデバイス探索要求が該所定の範囲の外から送信されたものである場合には、該デバイス探索要求に対して応答せず、
前記仮想デバイスは、前記デバイス探索要求に対して前記オペレーティングシステムに応答された仮想デバイスのデバイス名の一覧が前記オペレーティングシステムによりユーザに提示され、該一覧からユーザにより選択されて、前記オペレーティングシステムから印刷ジョブを送信するデバイスとして前記オペレーティングシステムに登録されて使用される、ことを特徴とする請求項１又は２に記載の仮想デバイス。
【請求項１０】
前記所定の範囲は、該仮想デバイスが起動されている情報処理装置の内部であることを特徴とする請求項９に記載の仮想デバイス。
【請求項１１】
オペレーティングシステムを有する情報処理装置内の仮想デバイスサービスであって、
請求項１〜１０のいずれか１項に記載の仮想デバイスを、前記情報処理装置内に生成する生成工程を前記情報処理装置に実行させ、
前記生成工程では、前記情報処理装置が接続されるネットワークから探索された画像形成装置のうち、所定のリストに基づき選抜された画像形成装置の一覧をユーザに提示し、該一覧からユーザにより選択された画像形成装置を、前記仮想デバイスの送信工程の送信先とする仮想デバイスを生成する、ことを特徴とする仮想デバイスサービス。
【請求項１２】
前記所定のリストは、前記特定のプロトコルに対応していない画像形成装置を特定可能なリストであることを特徴とする請求項１１に記載の仮想デバイスサービス。
【請求項１３】
前記所定のリストは、前記生成工程が対応する画像形成装置を特定可能なリストであることを特徴とする請求項１１に記載の仮想デバイスサービス。
【請求項１４】
情報処理装置内のオペレーティングシステムであって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し工程と、
前記送信したデバイス探索要求に対する応答を受信する他の受信工程と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録工程と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する他の送信工程と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得工程と、を前記情報処理装置に実行させ、
前記受け渡し工程では、前記公開範囲が所定の範囲に設定されている場合、前記所定の範囲の外から前記オペレーティングシステムが受信したデバイス探索要求については、前記仮想デバイスに受け渡しをしない、ことを特徴とするオペレーティングシステム。
【請求項１５】
情報処理装置内のオペレーティングシステムであって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し工程と、
前記送信したデバイス探索要求に対して応答を受信する他の受信工程と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録工程と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する他の送信工程と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得工程と、
前記仮想デバイスから受信した応答に基づく情報を、前記情報処理装置が接続されているネットワークに接続されている機器に対して通知する通知工程と、を前記情報処理装置に実行させ、
前記通知工程では、前記公開範囲が所定の範囲に設定されている場合には、前記応答に基づく情報を前記ネットワークに接続されている機器に対して通知しない、ことを特徴とするオペレーティングシステム。
【請求項１６】
前記所定の範囲は、該仮想デバイスが起動されている情報処理装置の内部であることを特徴とする請求項１４又は１５に記載のオペレーティングシステム。
【請求項１７】
オペレーティングシステムを有する情報処理装置であって、
前記オペレーティングシステムからのデバイス探索要求を受け取る受け取り手段と、
前記受け取ったデバイス探索要求に対して応答する応答手段と、
前記応答に基づいて仮想デバイスを印刷ジョブの送信先として登録した前記オペレーティングシステムから、印刷ジョブを受信する受信手段と、
前記受信した印刷ジョブを画像形成装置に送信する送信手段と、
を有することを特徴とする情報処理装置。
【請求項１８】
オペレーティングシステムを有する情報処理装置であって、
請求項１〜１０のいずれか１項に記載の仮想デバイスを、前記情報処理装置内に生成する生成手段を有し、
前記生成手段は、前記情報処理装置が接続されるネットワークから探索された画像形成装置のうち、所定のリストに基づき選抜された画像形成装置の一覧をユーザに提示し、該一覧からユーザにより選択された画像形成装置を、前記仮想デバイスの送信工程の送信先とする仮想デバイスを生成する、ことを特徴とする情報処理装置。
【請求項１９】
情報処理装置であって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し手段と、
前記送信したデバイス探索要求に対して応答を受信する受信手段と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録手段と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する送信手段と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得手段と、を有し、
前記受け渡し手段は、前記公開範囲が所定の範囲に設定されている場合、前記所定の範囲の外から前記情報処理装置が受信したデバイス探索要求については、前記仮想デバイスに受け渡しをしない、ことを特徴とする情報処理装置。
【請求項２０】
情報処理装置であって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し手段と、
前記送信したデバイス探索要求に対して応答を受信する受信手段と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録手段と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する送信手段と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得手段と、
前記仮想デバイスから受信した応答に基づく情報を、前記情報処理装置が接続されているネットワークに接続されている機器に対して通知する通知手段と、を有し、
前記通知手段は、前記公開範囲が所定の範囲に設定されている場合には、前記応答に基づく情報を前記ネットワークに接続されている機器に対して通知しない、ことを特徴とする情報処理装置。
【請求項２１】
オペレーティングシステムを有する情報処理装置の制御方法であって、
前記オペレーティングシステムからのデバイス探索要求を受け取る受け取り工程と、
前記受け取ったデバイス探索要求に対して応答する応答工程と、
前記応答に基づいて仮想デバイスを印刷ジョブの送信先として登録した前記オペレーティングシステムから、印刷ジョブを受信する受信工程と、
前記受信した印刷ジョブを画像形成装置に送信する送信工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項２２】
オペレーティングシステムを有する情報処理装置の制御方法であって、
請求項１〜１０のいずれか１項に記載の仮想デバイスを、前記情報処理装置内に生成する生成工程を有し、
前記生成工程では、前記情報処理装置が接続されるネットワークから探索された画像形成装置のうち、所定のリストに基づき選抜された画像形成装置の一覧をユーザに提示し、該一覧からユーザにより選択された画像形成装置を、前記仮想デバイスの送信工程の送信先とする仮想デバイスを生成する、ことを特徴とする情報処理装置の制御方法。
【請求項２３】
情報処理装置の制御方法であって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し工程と、
前記送信したデバイス探索要求に対して応答を受信する他の受信工程と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録工程と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する他の送信工程と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得工程と、を有し、
前記受け渡し工程では、前記公開範囲が所定の範囲に設定されている場合、前記所定の範囲の外から前記情報処理装置が受信したデバイス探索要求については、前記仮想デバイスに受け渡しをしない、ことを特徴とする情報処理装置の制御方法。
【請求項２４】
情報処理装置の制御方法であって、
デバイス探索要求を、前記情報処理装置内に生成された請求項１〜８のいずれか１項に記載の仮想デバイスに受け渡す受け渡し工程と、
前記送信したデバイス探索要求に対して応答を受信する他の受信工程と、
前記応答を受信したことに基づいて前記仮想デバイスを印刷ジョブの送信先として登録する登録工程と、
前記登録した前記仮想デバイスに対して、印刷ジョブを送信する他の送信工程と、
前記仮想デバイスに設定されている該仮想デバイスの公開範囲の情報を取得する取得工程と、
前記仮想デバイスから受信した応答に基づく情報を、前記情報処理装置が接続されているネットワークに接続されている機器に対して通知する通知工程と、を有し、
前記通知工程では、前記公開範囲が所定の範囲に設定されている場合には、前記応答に基づく情報を前記ネットワークに接続されている機器に対して通知しない、ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムを有する情報処理装置内の仮想デバイス、オペレーティングシステム、仮想デバイスサービス、情報処理装置及び情報処理装置の制御方法に関するものである。
【背景技術】
【０００２】
情報処理装置から画像形成装置等の周辺機器を利用するには、一般的にはその周辺機器に対応した特定のデバイスドライバーを、情報処理装置上で動作するオペレーティングシステム（以下「ＯＳ」と呼ぶ）にインストールする。すなわち、画像形成装置であればプリンタードライバーをインストールして利用する。
【０００３】
一方、近年ＯＳには、特定のプロトコルを使用することにより、プリンタードライバーを使用せずに印刷を可能とする印刷システムが導入されている。例えば、アップル社のＡｉｒＰｒｉｎｔ（登録商標）、グーグル社のＡｎｄｒｏｉｄ（登録商標）やマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のモプリア（登録商標）等に対応する印刷システムが導入されている。この場合には、画像形成装置に対応したプリンタードライバーをＯＳにインストールする必要がなく、印刷ジョブの生成と画像形成装置への印刷ジョブ送信は、全てＯＳが行う（特許文献１）。なお、ＡｉｒＰｒｉｎｔは、ＯＳの一部の機能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１１０５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、プリンタードライバーを使用せずに印刷を可能とする印刷システムに対応していない画像形成装置は、ＯＳから印刷ジョブを受信しても解釈することができない。そこで、我々は、ＯＳから印刷ジョブを受信できる仮想の画像形成装置（以下「仮想デバイス」と呼ぶ）を情報処理装置内に作成し、この仮想デバイスに、受信した印刷ジョブを画像形成装置へと送らせたいと考えている。そのためには、ＯＳからその仮想デバイスを見つけてもらう必要がある。
【０００６】
本発明は、上記の問題点を解決するためになされたものである。本発明は、特定のプロトコルに対応していない画像形成装置に印刷ジョブを送ることができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、オペレーティングシステムを有する情報処理装置内の仮想デバイスであって、前記オペレーティングシステムからのデバイス探索要求を受け取る受け取り工程と、前記受け取ったデバイス探索要求に対して応答する応答工程と、前記応答に基づいて前記仮想デバイスを印刷ジョブの送信先として登録した前記オペレーティングシステムから、印刷ジョブを受信する受信工程と、前記受信した印刷ジョブを画像形成装置に送信する送信工程と、を前記情報処理装置に実行させるための仮想デバイスである。
【発明の効果】
【０００８】
本発明によれば、特定のプロトコルに対応していない画像形成装置に印刷ジョブを送ることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のプリントシステムの全体構成の一例を示す図。
【図２】ホストコンピューターを構成可能な情報処理装置のハードウェア構成図。
【図３】ホストコンピューターのソフトウェア構成図。
【図４】仮想プリンターのソフトウェア構成図。
【図５】仮想プリンターサービスのインストールパッケージのソフトウェア構成図。
【図６】仮想プリンターサービスのインストール処理の一例を示すフローチャート。
【図７】仮想プリンターの生成処理の一例を示すフローチャート。
【図８】仮想プリンターサービスのＵＩの一例を示す図。
【図９】仮想プリンターのプリンター名に識別子を付加する識別子付加処理の一例を示すフローチャート。
【図１０】仮想プリンターがＢｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名の一例を示す図。
【図１１】ＯＳにおけるプリンター登録処理の一例を示すフローチャート。
【図１２】ＯＳに印刷先のプリンターを登録するためのＵＩの一例を示す図。
【図１３】ネットワーク上の機器探索処理のシーケンス図。
【図１４】ネットワーク上の機器探索処理のシーケンス図。
【図１５】ホストコンピューター内の仮想プリンター探索処理のシーケンス図。
【図１６】仮想プリンターの印刷実行時の処理の一例を示すフローチャート。
【図１７】ジョブ生成部の印刷実行時の処理の一例を示すフローチャート。
【図１８】第２実施形態における仮想プリンターの起動時の処理の一例を示すフローチャート。
【図１９】第２実施形態における仮想プリンターの情報をネットワーク内の機器に通知する処理の一例を示すフローチャート。
【図２０】第２実施形態における同一ネットワーク上の機器からの対応しているサービスの問い合わせに対する処理の一例を示すフローチャート。
【発明を実施するための形態】
【００１０】
〔第１実施形態〕
図１は、本発明の一実施形態を示すプリントシステムの全体構成の一例を示す図である。
【００１１】
本実施形態に係るシステムは、ホストコンピューター１０１ａ，１０２と、プリンター１０３，１０４を備える。
ホストコンピューター１０１ａ，１０１ｂは、パーソナルコンピュータ（ＰＣ）等の情報処理装置の一例である。プリンター１０３，１０４は、ページ記述言語（Page Description Language、以下「ＰＤＬ」と呼ぶ）形式やラスター形式の印刷データを受信し印刷を行う画像形成装置である。
【００１２】
これらの各装置は、ネットワーク１００を通じて相互に通信可能である。ネットワーク１００は例えばLAN（Local Area Network）やイントラネットであり、ＷＡＮ（Wide Area Network）を含むことが可能である。
【００１３】
なお、プリンター１０３，１０４は、印刷機能のみを備えるシングルファンクションプリンタであっても、印刷機能、スキャン機能、複写機能を備えるマルチファンクションプリンタであってもよい。
また、ホストコンピューターやプリンターは、ネットワーク１００に、１台でも３台以上接続されていていてもよい。
【００１４】
なお、以下の説明で、ホストコンピューター１０１ａ，１０１ｂについて共通の説明を行う場合には、ａ，ｂ等の添え字を省略して単にホストコンピューター１０１と記載する。また、その各構成要素についても添え字ａ，ｂを省略して記載する。
【００１５】
図２は、ホストコンピューター１０１を構成可能な情報処理装置のハードウェア構成の一例を示す図である。
ＣＰＵ２０１を含む制御部は、ホストコンピューター１０１全体の動作を制御する。ＣＰＵ２０１は、ＲＯＭ２０３又は外部メモリ２０９に記憶されたプログラムをＲＡＭ２０２に展開し、それを実行してユーザインタフェース（以下「ＵＩ」）画面の制御や印刷データの生成、印刷データの転送などの各種制御を行う。
【００１６】
ＲＡＭ２０２は、ＣＰＵ２０１の主記憶メモリであり、ワークエリア又は各種プログラムを展開するための一時記憶領域として用いられる。ＲＯＭ２０３は、ＣＰＵ２０１で実行可能な制御プログラムやブートプログラム等を格納する。外部メモリＩ／Ｆ２０８は、外部メモリ２０９を制御部に接続するインタフェースである。外部メモリ２０９は、オペレーティングシステム（ＯＳ）２１０、仮想プリンターサービス２１１、アプリケーション２１２などを記憶する。
【００１７】
本実施形態では、外部メモリ２０９としてＨＤＤ（Hard Disk Drive）等の補助記憶装置を想定しているが、ＨＤＤの代わりに又は併用してＳＳＤ（Solid State Drive）などの不揮発性メモリを用いるようにしてもよい。このように、ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、外部メモリ２０９等のハードウェアは、いわゆるコンピューターを構成している。
【００１８】
操作入力装置Ｉ／Ｆ２０４は、キーボードやポインティングデバイス（マウス）、タッチ入力デバイスなどの操作入力装置２０５を制御するインタフェースである。操作入力装置２０５は、ユーザからの操作を受け付ける受付部として機能する。
ディスプレイＩ／Ｆ２０６は、ディスプレイ２０７への画面の表示を制御する。ディスプレイ２０７は、ユーザに対して情報を表示する表示部として機能する。
【００１９】
ホストコンピューター１０１は、ネットワークＩ／Ｆ２１３を介してネットワーク１００に接続される。ネットワークＩ／Ｆ２１３は、ネットワーク１００上のプリンター１０３，１０４に印刷データの送信、インターネットでの通信などを行う。なお、ネットワーク１００上の外部端末とのデータ通信は、例えばIEEE802.11シリーズに準拠する無線通信や、ＬＡＮケーブルなどの有線ケーブルを介した通信である。
【００２０】
なお、本実施形態のホストコンピューターの外部メモリ２０９には、ＯＳ２１０、後述する仮想プリンターサービス２１１、各種アプリケーション２１２等がインストールされている。これらのソフトウェアは、ＲＯＭ２０３又は外部メモリ２０９に記憶されたプログラムをＲＡＭ２０２にロードし、ＣＰＵ２０１により実行することで機能し、以下に示すソフトウェアの機能を実現する。
【００２１】
図３は、ホストコンピューター１０１ａ，１０１ｂのソフトウェア構成を示す図である。
ホストコンピューター１０１ａにインストールされているＯＳ２１０ａの一つの機能として印刷システム３０１ａがある。印刷システム３０１ａは、ホストコンピューター１０１ａからの印刷動作に関する制御を行う。印刷システム３０１ａは、特定のプロトコルを使用することにより、プリンタードライバーを使用せずに印刷を可能とする印刷システムである。印刷システム３０１ａは、例えば、アップル社のＡｉｒＰｒｉｎｔ（登録商標）や、グーグル社のＡｎｄｒｏｉｄ（登録商標）やマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のモプリア（登録商標）等に対応する印刷システムである。
【００２２】
仮想プリンターサービス２１１ａは、ジョブ生成部３０３ａとサーバー部３０２ａとを有する。
サーバー部３０２ａには、仮想プリンターＡ３１１や仮想プリンターＢ３１２が生成される。この例では、仮想プリンターＡ３１１は、実プリンターであるプリンターＡＹ１０３に紐づけて生成されている。同じく仮想プリンターＢ３１２は、実プリンターであるプリンターＢＹ１０４に紐づけて生成されている。
【００２３】
なお、仮想プリンターＡ３１１，仮想プリンターＢ３１２は、ＯＳ２１０ａから所定の探索プロトコルによるプリンターの探索要求（デバイス探索要求）を受信すると、上記探索プロトコルに則ってプリンター情報を返答する。また、仮想プリンターＡ３１１，Ｂ３１２は、紐付けされているプリンターＡＹ１０３，プリンターＢＺ１０４の状態を検知するなどの通信も上記探索プロトコルにて行う。なお、本実施形態では、ホストコンピューター１０１のＯＳ２１０がサポートする探索プロトコルとして一例としてアップル社のＢｏｎｊｏｕｒ（登録商標）プロトコルを用いて説明する。Ｂｏｎｊｏｕｒプロトコルでは、デバイス探索に、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いる。なお、上記探索プロトコルはＢｏｎｊｏｕｒに限定されるものではなく、他の同様の機能のプロトコルでもよい。
【００２４】
仮想プリンターＡ３１１（仮想プリンターＢ３１２）は、上述の探索要求に対する返答に基づいて仮想デバイスＡ３１１（仮想プリンターＢ３１２）を印刷ジョブの送信先として登録したＯＳ２１０の印刷システム３０１ａから、印刷ジョブを受信する。仮想プリンターＡ３１１（仮想プリンターＢ３１２）は、受信した印刷ジョブを、ジョブ生成部３０３ａで解釈できる所定の形式に変換し、ジョブ生成部３０３ａに送信する。ジョブ生成部３０３ａは、各仮想プリンターが印刷システム３０１ａから受けた印刷ジョブに対し、実プリンター（プリンターＡＹ１０３やプリンターＢＺ１０４）が処理できる形式の印刷ジョブを生成して該実プリンターに送信する役割を持つ。なお、仮想プリンターに、ジョブ生成部３０３の機能を含めてもよい。すなわち、仮想プリンターが、受信した印刷ジョブから、実プリンターが処理できる印刷ジョブを生成して該実プリンターに送信するようにしてもよい。
【００２５】
ホストコンピューター１０１ｂもホストコンピューター１０１ａと同様の構成を有する。すなわち、ホストコンピューター１０１ｂにインストールされているＯＳ２１０ｂの一つの機能として印刷システム３０１ｂがある。印刷システム３０１ｂは、ホストコンピューター１０１ｂからの印刷動作に関する制御を行う。仮想プリンターサービス２１１ｂは、ジョブ生成部３０３ｂとサーバー部３０２ｂとを有する。サーバー部３０２ｂには、仮想プリンターＹ３６１や仮想プリンターＺ３６２が生成されている。この例では、仮想プリンターＹ３６１は、実プリンターであるプリンターＡＹ１０３に紐づけて生成されている。同じく仮想プリンターＺ３６２は、実プリンターであるプリンターＢＹ１０４に紐づけて生成されている。
なお、仮想プリンターを仮想デバイス、仮想プリンターサービスを仮想デバイスサービスともいう。
【００２６】
図４は、仮想プリンターのソフトウェア構成の一例を示す図である。なお、図４では一例として仮想プリンターＡ３１１について記載しているが、他の仮想プリンターも同様である。
【００２７】
本実施形態の仮想プリンターは、探索要求受信部１６０１、探索要求返答部１６０２、名称設定部１６０３、印刷ジョブ受信部１６０４、印刷ジョブ変換部１６０５、印刷ジョブ送信部１６０６を有する。
【００２８】
探索要求受信部１６０１は、Ｂｏｎｊｏｕｒプロトコルによるプリンターの探索要求を受信する。
探索要求返答部１６０２は、プリンターの探索要求に対して、Ｂｏｎｊｏｕｒプロトコルを用いてプリンター情報を返答（応答）する。
なお、探索要求受信部１６０１と探索要求返答部１６０２は、Ｂｏｎｊｏｕｒプロトコルによる探索要求のみ応答する。
【００２９】
名称設定部１６０３は、Ｂｏｎｊｏｕｒプロトコルによるプリンターの探索要求に対して、探索要求返答部１６０２が返答するプリンター名（デバイス名）に識別子を付加する。識別子については、後述する図１０に示す。
【００３０】
印刷ジョブ受信部１６０４は、印刷システム３０１ａから、印刷ジョブを特定のプロトコルで受信する。印刷ジョブ受信部１６０４は、例えば、印刷ジョブの元となったファイルが、ホストコンピューター１０１ａ内のアプリケーション２１２ａによって開かれており、該アプリケーション上でユーザが印刷指示を行ったことにより生成される印刷ジョブを受信する。このアプリケーション２１２ａには、例えばワードプロセッサーアプリケーション、表計算アプリケーション、Ｗｅｂブラウザーアプリケーション、画像編集アプリケーション等のＯＳ２１０ａ上で動作可能な各種アプリケーションが含まれる。
【００３１】
印刷ジョブ変換部１６０５は、印刷ジョブ受信部１６０４で受信した印刷ジョブを、ジョブ生成部３０３ａが認識できる形式に変換する。なお、ジョブ生成部３０３ａが認識できる形式とは、例えばＰＤＦ形式であるが、これに限定されるものではない。
印刷ジョブ送信部１６０６は、印刷ジョブ変換部１６０５が変換した印刷ジョブを、ジョブ生成部３０３ａに送信する。
【００３２】
図５は、仮想プリンターサービスのインストールを行うインストールパッケージのソフトウェア構成の一例を示す図である。
【００３３】
インストールパッケージ４０１は、インストーラ４０２と仮想プリンターサービス２１１を含む。インストールパッケージ４０１がホストコンピューター１０１上で実行された場合、インストーラ４０２が動作し、ホストコンピューター１０１に仮想プリンターサービス２１１のインストール処理を行う。このインストール処理により、仮想プリンターサービス２１１は、ホストコンピューター１０１の外部メモリ２０９に記憶され、プログラム実行時にはＲＡＭ２０２にロードされ、ＣＰＵ２０１により実行される。なお、仮想プリンターサービス２１１は、アプリケーションであり、複数の仮想プリンターを生成することが可能である。
【００３４】
図６は、仮想プリンターサービス２１１のインストール処理の一例を示すフローチャートである。このインストール処理は、例えば既定のウェブサイトからダウンロードした（又はＣＤ−ＲＯＭ等の記録メディアに記録された）仮想プリンターサービスのインストールパッケージ４０１を、ホストコンピューターのＯＳ２１０で実行することで開始される。
【００３５】
Ｓ５０１において、インストールパッケージ４０１に含まれるインストーラ４０２は、仮想プリンターサービスのインストール先の選択処理を行う。インストーラ４０２は、ホストコンピューター１０１のディスプレイ２０７に、図示しないインストール先選択画面を表示し、インストール先選択画面にユーザにより入力されるインストール先の情報を取得する。インストール先選択画面では、例えば「仮想プリンターサービスをインストールするディスクを選択してください」等のメッセージを表示し、仮想プリンターサービスをインストールする外部メモリの選択を促す。
【００３６】
次にＳ５０２において、インストーラ４０２は、ホストコンピューター１０１へ仮想プリンターサービス２１１のインストールを行う。インストール先は、上記Ｓ５０１にて取得したインストール先の情報に沿った場所となる。インストールされた仮想プリンターサービス２１１は、ＯＳ２１０から実行され起動される。仮想プリンターサービス２１１は、起動された際、仮想プリンターが１つも生成されていない場合には、仮想プリンターサービス２１１のメインＵＩ（後述する図８（Ａ））が表示される。なお、このメインＵＩは、ユーザ操作によっても表示可能である。仮想プリンターサービス２１１のメインＵＩ（後述する図８（Ａ））が表示されると、仮想プリンターサービス２１１は、図７に示す仮想プリンターの生成処理を開始する。
【００３７】
図７は、仮想プリンターの生成処理の一例を示すフローチャートである。このフローチャートの処理は、仮想プリンターサービス２１１により実行される。
【００３８】
Ｓ６０１において、仮想プリンターサービス２１１は、メインＵＩにおいて追加ボタンがユーザによって押下されると、これを検知する。追加ボタンとは、後述する図８（Ａ）における「＋」（プラス）ボタン１００４のことである。「＋」ボタン１００４が押下されたことを検知した仮想プリンターサービス２１１は、後述する図８（Ｂ）に示す仮想プリンターの追加画面を表示し、Ｓ６０２に処理を進める。ここで、図８を用いて仮想プリンターサービス２１１のＵＩについて説明する。
【００３９】
図８は、仮想プリンターサービス２１１のＵＩの一例を示す図である。仮想プリンターサービス２１１のＵＩは、該仮想プリンターサービス２１１が起動しているホストコンピューター１０１のディスプレイ２０７に表示される。
【００４０】
図８（Ａ）は、仮想プリンターサービスのメインＵＩの一例を示す。
図８（Ａ）において、プリンター一覧領域１００１には、サーバー部３０２が作成した仮想プリンターの一覧がリストされている。図８（Ａ）の例は、すでに２つの仮想プリンター（プリンターＡ、プリンターＢ）が登録済みの状態におけるＵＩを示している。
【００４１】
領域１００２には、仮想プリンターＡ３１１のアイコン、名前、そして状況が表示されている。領域１００３には、同様に仮想プリンターＢ３１２のアイコン、名前、そして状況が表示されている。なお、インストール直後の仮想プリンターサービス２１１は、仮想プリンターが１つも生成されていない状態であるため、領域１００１の仮想プリンター一覧には１つもリストされていない状態となる。
【００４２】
ユーザは「＋」（プラス）ボタン１００４を押下することで、仮想プリンターを追加することができる。「＋」ボタン１００４を押下した場合のＵＩについては、図８（Ｂ）を用いて後述する。また、「−」（マイナス）ボタン１００５を押下することで、プリンター一覧領域１００１で選択されている仮想プリンターを削除することができる。
【００４３】
また、領域１００６には、プリンター一覧領域１００１で選択されている仮想プリンターのより詳細な情報が表示される。具体的には、プリンターを表すアイコン、プリンターの名称、場所、状況などが表示されている。さらに、「ステータスモニタの起動」ボタン１００７を押下することで、プリンターＡＹ１０３の状態をさらに詳細に表示することも可能である。
【００４４】
図８（Ｂ）は、図８（Ａ）の「＋」ボタン１００４を押下した時に表示されるＵＩ（仮想プリンター追加画面）の一例を示す。図８（Ｂ）の領域１０１１には、ホストコンピューター１０１が接続されたネットワークに存在するプリンターやＵＳＢ接続されたプリンターのうち、仮想プリンターサービス２１１がサポートするものの一覧がリストされている。この例では、ネットワーク１００に接続されたプリンターＡＹ１０３とプリンターＢＺ１０４がそれぞれ領域１０１２と領域１０１３に表示されている。ユーザは、仮想プリンターを作成したいプリンターをこのリストから選択し、名前１０１４と場所１０１５を入力し、追加ボタン１０１６を押下する。これにより、ＵＩは図８（Ａ）に戻り、追加した仮想プリンターの仮想プリンター名（名前１０１４で入力された名前）がプリンター一覧領域１００１に追加されて表示される。
【００４５】
以下、図７のフローチャートの説明に戻る。
仮想プリンターの追加画面（図８（Ｂ））の表示を行った仮想プリンターサービス２１１は、Ｓ６０２において、プリンターの探索の処理を実行する。プリンターの探索処理とは、後述する図１４で示すような処理を行うことで実現される。
【００４６】
次にＳ６０３において、仮想プリンターサービス２１１は、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービス２１１の対象プリンターが含まれているか否かを判断する。対象プリンターか否かの判断には、仮想プリンターサービス２１１の内部に保持される仮想プリンターサービスの対象プリンターの一覧を利用する。この一覧に、上記Ｓ６０２にて探索されたプリンターが含まれている場合、仮想プリンターサービス２１１は、このプリンターを対象プリンターと判断する。
【００４７】
表１に、仮想プリンターサービスの対象プリンターの一覧の情報を例示する。
【表１】
2020194508.tif 000003
【００４８】
対象プリンターの一覧には、プリンタードライバーを使用することなく印刷を可能とする印刷システムに対応しない（すなわち特定のプロトコルに対応しない）プリンターのうち、仮想プリンターサービス２１１が対応するプリンターのみがリストされる。本リストは、仮想プリンターサービス２１１のインストール前から仮想プリンターサービス２１１の内部に保持されている。
表１において、プリンター名は、該当プリンターの名称を示す。
【００４９】
また、表２には、上記Ｓ６０２で探索されたプリンターの一覧の情報を例示する。
【表２】
2020194508.tif 000004
【００５０】
表２において、プリンター名は、該当プリンターの名称を示す。プリンター名は、該当プリンターに予め保持されているプリンターの名称であり、上記Ｓ６０２で探索された際に該当プリンターがホストコンピューター１０１に返答するプリンター名に対応する。なお、プリンター名は、一般的にはプリンター機種に関連する名称となっており、表１においても、このプリンター名が用いられる。
【００５１】
また、ＩＰアドレスは、該当プリンターのネットワーク上のアドレスを示す。
また、サービスタイプは、該当プリンターが対応しているサービスを示す。例えば、「_printer._tcp」のサービスタイプを有する機器は、それがＬＰＤ（Line Printer Daemon）のプロトコルに対応したプリンターであることを示している。
なお、表２のリストには、上記Ｓ６０２で探索された全てのプリンターがリストアップされる。
【００５２】
仮想プリンターサービス２１１は、表１及び表２で示されるプリンターを比較することで、探索されたプリンターが仮想プリンターサービスの対象プリンターか否かの判断を行う。表１及び表２で示す例では、プリンターＡＹとプリンターＢＺが対象プリンターであると判断される。この判断では、特定のプロトコルに対応していないプリンターで、且つ、仮想プリンターサービス２１１が対応するプリンターのリスト（所謂ホワイトリスト）を用いる例を示した。すなわち、このリストに探索されたプリンターが含まれている場合に、そのプリンターを対象プリンターと判断する構成を示した。しかし、この判断を、特定のプロトコルに対応しているプリンター、又は、仮想プリンターサービス２１１が対応しないプリンターのリスト（所謂ブラックリスト）を用いて行ってもよい。この場合、このリストに探索されたプリンターが含まれていない場合に、そのプリンターを対象プリンターと判断する構成とする。すなわち、特定のプロトコルに対応していないプリンターや、仮想プリンターサービス２１１が対応するプリンターを特定可能なリスト等の情報に基づき、仮想プリンターサービス２１１で仮想プリンターの生成対象となるプリンターを選抜する構成であればよい。
【００５３】
上記Ｓ６０３において、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービスの対象プリンターが１つも含まれていない場合（Ｓ６０３でＮＯの場合）、仮想プリンターサービス２１１は、本フローチャートの処理を終了する。
【００５４】
一方、上記Ｓ６０３において、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービスの対象プリンターが含まれている場合（Ｓ６０３でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ６０４に処理を進める。
【００５５】
Ｓ６０４において、仮想プリンターサービス２１１は、上記Ｓ６０３で対象プリンターであると判断したプリンターのプリンター名を、仮想プリンター追加画面（図８（Ｂ））の領域１０１１に表示する。上述した例では、ネットワーク１００に接続されたプリンターＡＹ１０３とプリンターＢＺ１０４のプリンター名がそれぞれ領域１０１２と領域１０１３に表示される。すなわち、仮想プリンターサービス２１１は、上記Ｓ６０２で探索されたプリンターのうち、上述のようなリスト（例えば表１のようなリスト）に基づき選抜されたプリンターの一覧をユーザに提示する。
【００５６】
次にＳ６０５において、仮想プリンターサービス２１１は、仮想プリンターの接続先となるプリンターの選択処理を行う。仮想プリンターサービス２１１は、図８（Ｂ）の領域１０１１でいずれかのプリンターが選択された状態で追加ボタン１０１６がユーザに押下されると、これを検知する。そして、仮想プリンターサービス２１１は、領域１０１１で選択されているプリンターのプリンター名、名前１０１４及び場所１０１５の情報を、仮想プリンター追加画面（図８（Ｂ））から取得する。図８（Ｂ）の例では、「プリンターＡＹ」を選択されたプリンターのプリンター名、「プリンターＡ」を名前、「本館３階」を場所の情報として取得する。
【００５７】
次にＳ６０６において、仮想プリンターサービス２１１は、仮想プリンターの生成処理を行う。この処理では、上記Ｓ６０５にて選択されたプリンターを接続先として紐付けし、上記Ｓ６０５で取得した名前、場所に基づき仮想プリンターを生成する。なお、この処理により生成された仮想プリンターは、Ｂｏｎｊｏｕｒプロトコルで定められたプリンターが通知する情報を有する。この情報には、例えば、仮想プリンターの接続先、仮想プリンターの名前、仮想プリンターの機能、仮想プリンターのサービスタイプ、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名など、が含まれる。仮想プリンターの接続先は、例えば上記Ｓ６０５で選択されたプリンターのＩＰアドレスが対応する。具体的には上記Ｓ６０３の探索時に取得されたＩＰアドレス（表２にて例示）となる。また、仮想プリンターの機能は、例えばサポートＰＤＬ（Page Description Language）、サポート機能などが対応する。この仮想プリンターの機能は、上記Ｓ６０５で選択されたプリンターごとに異なり、仮想プリンターサービスのインストール前から仮想プリンターサービス２１１の内部に保持されている。さらに、上述のＢｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名は、次のように生成される。
【００５８】
仮想プリンターサービス２１１は、まず仮に、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名を上述した仮想プリンターの名前とし、さらに図９に示す識別子付加処理を行う。これにより、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名を生成する。
【００５９】
図９は、図７のＳ６０６内で行われる識別子付加処理の一例を示すフローチャートである。この処理は、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名に識別子を付加する処理に対応する。ここでは、仮想プリンターＡ３１１のＢｏｎｊｏｕｒプロトコルを用いて通知するプリンター名に識別子を付加する例を用いて説明するが、他の仮想プリンターでも同様である。
【００６０】
Ｓ１２０１において、仮想プリンターサービス２１１は、図７のＳ６０６で生成した仮想プリンター（以下「対象の仮想プリンター」）における、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名を取得する。例えば、対象の仮想プリンターが仮想プリンターＡ３１１の場合、「仮想プリンターＡ」が取得される。
【００６１】
次にＳ１２０２において、仮想プリンターサービス２１１は、上記Ｓ１２０１で取得したプリンター名に識別子が含まれているかの判断を行う。なお、識別子とは、図１０に示す、仮想プリンターであることを示す情報１７１２と、対象の仮想プリンターが動作しているホストコンピューターの情報１７１３を含む情報である。ホストコンピューターの情報とは、ホストコンピューターから取得できる、コンピューター名やログイン名などの情報が対応する。
【００６２】
上記Ｓ１２０２において、上記Ｓ１２０１で取得したプリンター名に識別子が含まれている場合（Ｓ１２０２でＹＥＳの場合）、仮想プリンターサービス２１１は、本フローチャートの処理を終了する。
【００６３】
一方、上記Ｓ１２０１で取得したプリンター名に識別子が含まれていない場合（Ｓ１２０２でＮＯの場合）、仮想プリンターサービス２１１は、Ｓ１２０３に処理を進める。
【００６４】
Ｓ１２０３において、仮想プリンターサービス２１１は、対象の仮想プリンターが動作しているホストコンピューターの情報を取得する。対象の仮想プリンターが仮想プリンターＡ３１１の場合、ホストコンピューター１０１ａの情報を取得する。ここで取得する情報は、例えばホストコンピューターのコンピューター名やログイン名など、ホストコンピューター１０１ａを判断できる情報である。なお、ホストコンピューターを判断できる情報であれば、コンピューター名、ログイン名以外でもよい。
【００６５】
次にＳ１２０４において、仮想プリンターサービス２１１は、上記Ｓ１２０１で取得したプリンター名に、上記Ｓ１２０３で取得したホストコンピューターの情報を付加する。なお、Ｓ１２０３、Ｓ１２０４の処理は、Ｓ１２０４、Ｓ１２０３の順序で行われてもよい。
またＳ１２０５において、仮想プリンターサービス２１１は、上記Ｓ１２０４でホストコンピューター名の情報が付加されたプリンター名に、仮想プリンターであること示す情報を付加する。仮想プリンターであること示す情報とは、例えば「仮想」という文字列である。
【００６６】
図１０は、図９のＳ１２０３〜Ｓ１２０５の処理により識別子が付与された、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名の一例を示す図である。
【００６７】
Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名１７０１〜１７０４は、図７のＳ６０６で作成された仮想プリンターのプリンター名１７１１に識別子を付加したプリンター名である。なお、識別子は、仮想プリンターであることを示す情報１７１２と、仮想プリンターが動作しているホストコンピューターの情報１７１３を含む。なお、情報１７１１、１７１２、１７１３の順序はこれに限定されるものではない。また、情報１７１２と１７１３のいずれか一方のみを識別子として、情報１７１１に付加してもよい。
【００６８】
本実施形態では、仮想プリンターであることを示す情報１７１２に「仮想」という文字列、ホストコンピューターの情報１７１３にユーザ名を用いている。しかし、仮想プリンターであること及びホストコンピューターを識別できる情報であれば、それぞれ他の情報でもよい。
【００６９】
なお、上記の識別子付加処理により、識別子を付加するプリンター名は、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名である。すなわち、図８（Ａ）に示した仮想プリンターサービスのメインＵＩに表示されるプリンター名（１００２、１００３）には、識別子を付加しない。例えば、ユーザＡがログインしたホストコンピューター１０１ａで仮想プリンターＡ３１１が生成された場合について具体的に示す。この場合、図８（Ａ）の領域１００２に表示される仮想プリンターのプリンター名は「プリンターＡ」、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名は「プリンターＡ_仮想_ユーザＡ」となる。
【００７０】
以上の処理により、ホストコンピューターの情報及び仮想プリンターであることを示す情報からなる識別子を含むプリンター名を、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名とする、仮想プリンターを生成することができる。
【００７１】
なお、生成された仮想プリンターを用いて印刷を行うには、該仮想プリンターをＯＳ２１０にサービスプログラムとして登録する必要がある。サービスプログラムとしてＯＳ２１０に登録された仮想プリンターは、ＯＳ２１０の実行中に常時動作し、他プログラムや情報機器からの問い合わせに対する応答を行う。後述する図１５に示す機器探索処理を示すシーケンスは、その一例である。これによって、仮想プリンターは、他プログラムや情報機器からは実際のプリンターとして存在しているかのように見える。
【００７２】
以下、仮想プリンターのＯＳへの登録処理について説明する。
図１１は、ＯＳ２１０におけるプリンター登録処理の一例を示すフローチャートである。このフローチャートの処理は、ユーザ操作により、ＯＳ２１０に印刷先のプリンターを登録するためのメインＵＩ（図１２（Ａ））が表示された際に開始される。
【００７３】
Ｓ７０１において、ＯＳ２１０の印刷システム３０１は、追加ボタンがユーザによって押下されると、これを検知する。この追加ボタンとは、後述する図１２（Ａ）における「＋」（プラス）ボタン１１０４のことである。「＋」ボタン１００４が押下されたことを検知すると、ＯＳ２１０の印刷システム３０１は、図１２（Ｂ）に示すプリンターの登録画面を表示し、Ｓ７０２に処理を進める。ここで、図１２を用いて、ＯＳ２１０に印刷先のプリンターを登録するためのＵＩについて説明する。
【００７４】
図１２は、ＯＳ２１０に印刷先のプリンターを登録するためのＵＩの一例を示す図である。ＯＳ２１０に印刷先のプリンターを登録するためのＵＩは、該ＯＳ２１０が起動しているホストコンピューター１０１のディスプレイ２０７に表示される。
【００７５】
図１２（Ａ）は、ＯＳ２１０における印刷先のプリンターを登録するためのメインＵＩを示す。
図１２（Ａ）のプリンター一覧領域１１０１には、印刷先としてＯＳ２１０に既に登録されているプリンターの一覧がリストされている。図１２（Ａ）の例は、すでに２つのプリンター（プリンターＡＹ、プリンターＢＹ）が登録済みの状態におけるＵＩを示している。
領域１１０２には、プリンターＡＹのアイコン、名前、そして状況が表示されている。領域１１０３には、同様に、プリンターＢＺのアイコン、名前、そして状況が表示されている。
【００７６】
ユーザは「＋」（プラス）ボタン１１０４を押下することで、プリンターを追加登録することができる。「＋」ボタン１１０４を押下した場合のＵＩについては、図１２（Ｂ）を用いて後述する。また、「−」（マイナス）ボタン１１０５を押下することで、プリンター一覧領域１１０１で選択されているプリンターを削除することができる。
【００７７】
また、領域１１０６には、プリンター一覧領域１１０１で選択されているプリンターのより詳細な情報が表示されている。具体的には、プリンターを表すアイコン、プリンターの名称、場所、状況などが表示されている。さらに、「プリントキューを開く」ボタン１１０７を押すことで、領域１１０１で選択されているプリンターの状態をさらに詳細に表示することも可能である。さらに、「オプション」ボタン１１０８を押すことで、領域１１０１で選択されているプリンターのオプション類（不図示）の構成を変更したり、トナーやインクなどの印刷剤の残量を表示する画面などを表示することができる。
【００７８】
図１２（Ｂ）は、図１２（Ａ）の「＋」ボタン１１０４を押下した時に表示されるＵＩ（プリンター追加画面）の一例を示す。図１２（Ｂ）の領域１１１１には、接続されたネットワークに存在する実プリンターやＵＳＢ接続された実プリンターや仮想プリンターの一覧がリストされ、ユーザに提示される。ユーザは登録したいプリンターを、領域１１１１のリストから選択し、名前１１１８と場所１１１９を入力できる。そして最後に追加ボタン１１２０を押下することで、ＵＩは図１２（Ａ）に戻り、登録したプリンターがプリンター一覧領域１１０１に追加されて表示される。
【００７９】
以下、図１１の説明に戻る。
図１２（Ｂ）のプリンターの登録画面の表示を行ったＯＳ２１０の印刷システム３０１は、Ｓ７０２において、プリンターの探索の処理を実行する。探索処理とは、後述する図１４、図１５で示されるような処理を行うことで実現される。例えば、ＯＳ２１０からネットワーク１００にＢｏｎｊｏｕｒプロトコルを用いた探索要求を送信し、ネットワーク１００上の機器から該探索要求に対する応答を受け取ることで、探索を行う。
次にＳ７０３において、ＯＳの印刷システムは、上記Ｓ７０２にてプリンターが探索されたか否かの判断を行う。
【００８０】
表３には、上記Ｓ７０３で探索されたプリンターの一覧の情報を例示する。
【表３】
2020194508.tif 000005
【００８１】
表３において、プリンター名は、該当プリンターの名称を示すものであり、該当プリンターからＢｏｎｊｏｕｒプロトコルを用いて通知されたプリンター名に対応する。
ＩＰアドレスは、該当プリンターのネットワーク上のアドレスを示す。
サービスタイプは該当プリンターが対応しているサービスを示す。例えば、「_printer._tcp」のサービスタイプを有する機器は、それがＬＰＤのプロトコルに対応したプリンターであることを示している。また、「_ipp._tcp」のサービスタイプを有する機器は、それがＩＰＰ（Internet Printing Protocol）のプロトコルに対応したプリンターであることを示している。
【００８２】
ここでは、サービスタイプに「_printer._tcp」もしくは「_ipp._tcp」を有する機器をプリンターであると判断を行う、ものとする。表３で示されるプリンターの中で、前記条件に合致するのは「プリンターＡ_仮想_ユーザＡ」、「プリンターＢ_仮想_ユーザＣ」、「プリンターＹ_仮想_ユーザＥ」、「プリンターＺ_仮想_ユーザＦ」、「プリンターＡＹ」及び「プリンターＢＺ」である。
【００８３】
上記Ｓ７０３において、上記Ｓ７０２にてプリンターが一台も探索されなかった場合（Ｓ７０３でＮＯの場合）、ＯＳの印刷システムは、本フローチャートの処理を終了する。
一方、上記Ｓ７０３において、上記Ｓ７０２にてプリンターが探索された場合（Ｓ７０３でＹＥＳの場合）、ＯＳの印刷システムは、Ｓ７０４に処理を進める。
【００８４】
Ｓ７０４において、ＯＳの印刷システムは、上記Ｓ７０３でプリンターであると判断した機器をプリンターとして、図１２（Ｂ）の領域１１１１にリスト表示する。よって、領域１１１１には、接続されたネットワークに存在する実プリンターやＵＳＢ接続された実プリンター、さらに仮想プリンターの一覧がリストされる。すなわち、リストされた仮想プリンターには、そのホストコンピューターに作成された仮想プリンターのみならず、接続されたネットワークに存在する他のホストコンピューターで作成された仮想プリンターも含まれる。図１２（Ｂ）の例では、ネットワークに接続された実プリンターＡＹ，ＢＺのプリンター名が、領域１１１６，領域１１１７に表示されている。また、このＵＩを表示しているホストコンピューター（ここでは１０１ａとする）に作成されている仮想プリンターＡ，Ｂのプリンター名が、領域１１１２，領域１１１３に表示されている。さらに、ネットワーク１００上の他のホストコンピューター（１０１ｂとする）に作成されている仮想プリンターＹ，Ｚのプリンター名も、領域１１１４，領域１１１５に表示されている。なお、ＯＳ２１０の印刷システムがサポートするもの（特定のプロトコルに対応するもの）のみを、図１２（Ｂ）の領域１１１１に表示するようにしてもよい。
【００８５】
なお、図１２（Ｂ）の領域１１１１に表示されるプリンター名は、該当プリンターからＢｏｎｊｏｕｒプロトコルを用いて通知されたプリンター名となる。よって、本実施形態の仮想プリンターの場合、上述した識別子が付加されたプリンター名で表示される。例えば、仮想プリンターＡ３１１は「プリンターＡ_仮想_ユーザＡ」、仮想プリンターＢ３１２は「プリンターＢ_仮想_ユーザＣ」のように表示される。また、仮想プリンターＹ３６１は「プリンターＹ_仮想_ユーザＥ」、仮想プリンターＺ３６２は「プリンターＺ_仮想_ユーザＦ」のように探索されたプリンターのプリンター名が表示される。
【００８６】
次にＳ７０５において、ＯＳ２１０の印刷システム３０１は、ＯＳ２１０に登録するプリンターの選択処理を行う。図１２（Ｂ）の領域１１１１でプリンターが選択された状態で追加ボタン１１２０がユーザに押下されると、これをＯＳ２１０の印刷システム３０１が検知する。そして、印刷システム３０１は、選択されたプリンターのプリンター名および名前１１１８と場所１１１９の情報をプリンターの登録画面（図１２（Ｂ））から取得する。図１２（Ｂ）の例では、「プリンターＡ_仮想_ユーザＡ」を選択されたプリンターのプリンター名、「プリンターＡ」をプリンターの名前、「本館３階」を場所の情報として取得する。なお、ユーザは、領域１１１１の一覧からプリンターを選択する際、自身のホストコンピューター内に作成された仮想プリンターと、他のホストコンピューターに作成された仮想プリンターとを区別する必要がある。本実施形態では、上述したように、識別子が付加されたプリンター名が一覧に表示されるため、ユーザは、ホストコンピューター内に作成された仮想プリンターを容易に選択することが可能になる。
【００８７】
次にＳ７０６において、ＯＳ２１０の印刷システム３０１は、ＯＳ２１０へのプリンターの登録を行う。この処理は、上記Ｓ７０５で選択されたプリンターをＯＳ２１０へ登録する。接続先情報は上記Ｓ７０３の探索時に取得さしたＩＰアドレス（表３にて例示）とし、同じく上記Ｓ７０５で取得したプリンターの名前、場所の情報を基にＯＳ２１０への登録を行う。
【００８８】
登録されたプリンターは、接続先のＩＰアドレス、名前、場所がホストコンピューター１０１の外部メモリ２０９に記憶される。そして、ＵＩは図１２（Ａ）に戻り、登録されたプリンターがプリンター一覧領域１１０１に追加されて表示される。この後、登録されたプリンターは、アプリケーション２１２から開くＯＳ２１０の印刷設定画面（不図示）から、印刷ジョブの送信先として選択ができ、特定のプロトコルを用いた印刷が可能となる。
【００８９】
以上の構成により、ユーザがプリンターのＯＳ登録処理を行っているホストコンピューターに作成されている仮想プリンターと、他のホストコンピューターに作成されている仮想プリンターとを容易に判別することが可能になる。この結果、ユーザがプリンターＯＳ登録処理を行っているホストコンピューターに作成されている仮想プリンターを容易に選択してＯＳに登録することが可能になる。また、他のホストコンピューターに作成されている仮想プリンターをＯＳに登録してしまうことを抑制することができる。
【００９０】
もし本実施形態のような識別子が付加されていなければ、プリンター追加画面の領域１１１１の一覧は、プリンターＡ、プリンターＢ、プリンターＹ、プリンターＺ、プリンターＡＹ、プリンターＢＺのような表示となる。この場合、ユーザは、いずれのプリンターが実プリンターか、自装置に生成された仮想プリンターか、他装置に生成された仮想プリンターかを判断することが困難となる。このため、他のホストコンピューターに作成されている仮想プリンターをＯＳに登録してしまう可能性が高くなる。他のホストコンピューターに作成されている仮想プリンターをＯＳに登録した場合、該登録された仮想プリンターを選択して印刷しようとしても、該他のホストコンピューターが起動していない状態では印刷できない、といった事態が発生してしまう。本実施形態では、このような事態の発生を抑制することが可能であり、利用者はＯＳの印刷システムから、利用者の情報処理装置内に作成された仮想プリンターを容易に選択してＯＳに登録することが可能になる。この結果、他の情報処理装置内に作成された仮想プリンターをＯＳに登録してしまうことを抑制できる。
【００９１】
以下、ネットワーク上の機器探索処理のシーケンスについて説明する。
図１３は、ネットワーク上の機器探索処理における、プリンターＡＹ１０３から自身の存在を通知する場合のシーケンス図である。
【００９２】
プリンターＡＹ１０３は、ネットワークに参加すると、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上の機器に対し、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する（８０１）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を通知する。前記サービスタイプとは、Ｂｏｎｊｏｕｒプロトコルにおける、機器がサポートしているサービスを示す値である。プリンターを示すサービスタイプの例を表４に示す。
【００９３】
【表４】
2020194508.tif 000006
【００９４】
プリンターＡＹ１０３からの通知を受けたホストコンピューター１０１ａは、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３をキャッシュ情報８２１に追加する（８０２）。キャッシュ情報とは、Ｂｏｎｊｏｕｒプロトコルにおける、ネットワークにかかる負荷を減らすための仕組みで使用する情報である。このキャッシュ情報に含まれる情報の例を表５に示す。
【００９５】
【表５】
2020194508.tif 000007
【００９６】
その後、ホストコンピューター１０１ａは、ネットワーク上の機器を探索する際、まずキャッシュ情報８２２から、サービスタイプに表４に記載するサービスタイプを持つ機器を検索する（８０３）。キャッシュ情報にプリンターＡＹ１０３の情報が含まれる場合、キャッシュ情報に含まれるプリンターＡＹ１０３の情報を以降の処理に使用する（８０４）。
【００９７】
さらに、ホストコンピューター１０１ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、一定間隔で同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う（８０５）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。なお、ホストコンピューター１０１ａは、この問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報８２２に基づく一覧）を同一ネットワーク上に存在する機器に対し通知する。
【００９８】
ホストコンピューター１０１ａからの問い合わせを受けたプリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧８２２に、プリンターＡＹ１０３が含まれているか確認する（８０６）。この例では、プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧８２２に、プリンターＡＹ１０３が含まれていると判断し、ホストコンピューター１０１ａの問い合わせに対して応答しない（８０７）。
【００９９】
図１４は、ネットワーク上の機器探索処理における、ホストコンピューター１０１ａからの探索に対して、プリンターＡＹ１０３からＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する場合のシーケンス図である。
【０１００】
ホストコンピューター１０１ａは、キャッシュ情報９７１からサービスタイプに表４に記載したサービスタイプを持つ機器を検索する（９５１）。ホストコンピューター１０１ａは、キャッシュ情報９７１に該当する機器が存在しない場合、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う（９５２）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。なお、該当する機器が存在した場合においても、ホストコンピューター１０１ａは、上記図１３の８０５に示す、一定間隔で同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う。なお、ホストコンピューター１０１ａは、この問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧９７１を同一ネットワーク上に存在する機器に対し通知する。
【０１０１】
プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報９７１に基づく一覧）に、プリンターＡＹ１０３が含まれているか確認する（９５３）。この例では、プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧９７１に、プリンターＡＹ１０３が含まれていないと判断する。そして、プリンターＡＹ１０３は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上に存在する機器に対し、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する（９５４）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を応答する。
【０１０２】
そして、ホストコンピューター１０１ａは、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３をキャッシュ情報９７１に追加する（９５６）。
ホストコンピューター１０１ａは、プリンターＡＹ１０３から受け取った情報を以降の処理に使用する（９５７）。
【０１０３】
図１５は、ホストコンピューターの内部に作成された仮想プリンターに対する探索処理のシーケンス図である。
仮想プリンターＡ３１１と仮想プリンターＢ３１２は、ホストコンピューター１０１ａの内部に作成されている。ここでは、仮想プリンターＡ３１１は、仮想プリンターＡ３１１から自身の存在を通知する。また、仮想プリンターＢ３１２は、ホストコンピューター１０１ａからの探索に対して自身の存在を通知する例について説明する。
【０１０４】
仮想プリンターＡ３１１は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、ホストコンピューター１０１ａ対し、仮想プリンターＡ３１１のＩＰアドレス２０３１、機器名２０３２、サービスタイプ２０３３を通知する（２００１）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を通知する。この際、本実施形態の仮想プリンターＡ３１１は、機器名２０３２として、仮想プリンターであることを示す情報としてVirtual Printerの略「ＶＰ」、ホストコンピューターの情報として「ＵｓｅｒＡ」が付加された情報を通知する。この例では、仮想プリンターであることを示す情報として文字列「ＶＰ」を用いる例を示しているが、上述したように文字列「仮想」を用いてもよい。
【０１０５】
仮想プリンターＡ３１１からの通知を受けたホストコンピューター１０１ａは、仮想プリンターＡ３１１のＩＰアドレス２０３１、機器名２０３２、サービスタイプ２０３３をキャッシュ情報（２０２１）に追加する（２００２）。
【０１０６】
その後、ホストコンピューター１０１ａは、ホストコンピューター１０１ａ内の仮想プリンターを探索する際、まずキャッシュ情報２０２２から、サービスタイプに表４に記載したサービスタイプを持つ機器を検索する（２００３）。キャッシュ情報に仮想プリンターＡ３１１の情報が含まれる場合、キャッシュ情報に含まれる仮想プリンターＡ３１１の情報を以降の処理に使用する（２００４）。
【０１０７】
さらに、ホストコンピューター１０１ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、一定間隔でホストコンピューター１０１ａ内の仮想プリンターに対し、対応しているサービスの問い合わせを行う（２００５）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。ホストコンピューター１０１ａは、問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報２０２２に基づく一覧）をホストコンピューター１０１ａ内の仮想プリンターに対し通知する。
【０１０８】
ホストコンピューター１０１ａからの問い合わせを受けた仮想プリンターＡ３１１は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＡ３１１が含まれているか確認する（２００６）。仮想プリンターＡ３１１は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＡ３１１が含まれていると判断し、ホストコンピューター１０１ａの問い合わせに対して応答しない（８０７）。
【０１０９】
ホストコンピューター１０１ａからの問い合わせを受けた仮想プリンターＢ３１２は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＢ３１２が含まれているか確認する（２００８）。仮想プリンターＢ３１２は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＢ３１２が含まれていないと判断する。そして、仮想プリンターＢ３１２は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、ホストコンピューター１０１ａ対し、仮想プリンターＢ３１２のＩＰアドレス２０４１、機器名２０４２、サービスタイプ２０４３を通知する（２００９）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を応答する。この際、本実施形態の仮想プリンターＢ３１２は、機器名２０４２として、仮想プリンターであることを示す情報として「ＶＰ」、ホストコンピューターの情報として「ＵｓｅｒＣ」が付加された情報を通知する。
【０１１０】
ホストコンピューター１０１ａは、仮想プリンターＢ３１２のＩＰアドレス２０４１、機器名２０４２、サービスタイプ２０４３をキャッシュ情報２０２２に追加する（２０１０）。
【０１１１】
図１６は、仮想プリンターの印刷実行時の処理の一例を示すフローチャートである。
Ｓ１８０１において、仮想プリンター（例えば仮想プリンターＡ３１１）は、ＯＳ２１０における印刷システム３０１から印刷ジョブを受信すると、Ｓ１８０２に処理を進める。
【０１１２】
Ｓ１８０２において、仮想プリンターは、上記Ｓ１８０１で受信した印刷ジョブを、ジョブ生成部３０３が認識できる形式に変換する。ここで、ジョブ生成部３０３が認識できる形式とは、例えばＰＤＦ形式である。
次にＳ１８０３において、仮想プリンターは、上記Ｓ１８０２で変換後の印刷ジョブを、ジョブ生成部３０３に送信し、本フローチャートの処理を終了する。
【０１１３】
図１７は、ジョブ生成部３０３の印刷実行時の処理の一例を示すフローチャートである。
Ｓ１９０１において、仮想プリンターサービス２１１におけるジョブ生成部３０３は、仮想プリンター（例えば仮想プリンターＡ３１１）から印刷ジョブを受信すると、Ｓ１９０２に処理を進める。
【０１１４】
Ｓ１９０２において、ジョブ生成部３０３は、上記Ｓ１９０１で受信した印刷ジョブを、上記印刷ジョブの送信元の仮想プリンターが紐付けされている実プリンター（例えばプリンターＡＹ１０３）が認識（解釈）できる形式に変換を行う。ここで、実プリンターが認識できる形式とは、例えばラスター形式である。
【０１１５】
次にＳ１９０３において、ジョブ生成部３０３は、上記Ｓ１９０２で変換後の印刷ジョブを、上記印刷ジョブの送信元の仮想プリンターが紐付けされている実プリンターに送信し、本フローチャートの処理を終了する。
【０１１６】
なお、本実施形態では、仮想プリンターの生成時に、すなわち図７のＳ６０６内で、図９の識別子付加処理を実行する構成について説明した。この構成の場合、仮想プリンター生成時に、識別子が付加されたプリンター名を、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名として、仮想プリンターの内部に保持する構成となる。しかし、本実施形態に含まれる発明は、この構成に限定されるものではない。例えばＢｏｎｊｏｕｒプロトコルを用いて仮想プリンターのプリンター名を通知（応答）するタイミングで、図９の識別子付加処理を実行してプリンター名に識別子を付加し、該識別子が付加された仮想プリンターのプリンター名を通知（応答）する構成でもよい。すなわち、図１５の２００１の通知（自身の存在の通知）や、２００９の通知（ホストコンピューター１０１からの問い合わせに応じた応答）のタイミング等で、図９の識別子付加処理を実行してプリンター名に識別子を付加して通知してもよい。
【０１１７】
以上、本実施形態の仮想プリンターを用いることにより、特定のプロトコルを使用することにより、プリンタードライバーを使用せずに印刷を可能とする印刷システムから、特定のプロトコルに対応していない画像形成装置に印刷ジョブを送ることができる。なお、本実施形態の仮想プリンターは、プリンターＯＳ登録処理を行っているホストコンピューターに作成されている仮想プリンターと、他のホストコンピューターに作成されている仮想プリンターとを容易に判別することが可能なものである。よって、ユーザは、プリンターＯＳ登録処理を行っているホストコンピューターに作成されている仮想プリンターを容易に選択してＯＳに登録することが可能になる。また、他のホストコンピューターに作成されている仮想プリンターを誤ってＯＳに登録してしまうことを抑制することができる。その結果、他のホストコンピューターに作成されている仮想プリンターを選択して印刷しようとし、該他のホストコンピューターが起動していないために印刷できない、といった事態の発生を抑制することができる。
【０１１８】
〔第２実施形態〕
上記第１実施形態では、Ｂｏｎｊｏｕｒプロトコルを用いて通知する仮想プリンターのプリンター名として、仮想プリンターであることを示す情報及びホストコンピューターの情報を含む識別子が付加されたプリンター名を通知する構成について説明した。第２実施形態では、仮想プリンターの公開範囲を設定しておき、他のホストコンピューターには、Ｂｏｎｊｏｕｒプロトコルを用いた仮想プリンターのプリンター名の通知を行わない構成とする。これにより、仮想プリンターが起動しているホストコンピューター以外のホストコンピューターでは、その仮想プリンターを見つけることができなくなる。よって、ユーザが、誤って他のホストコンピューターに作成されている仮想プリンターをＯＳに登録してしまうことを防止できる。これにより、他のホストコンピューターに作成されている仮想プリンターを選択して印刷しようとし、該他のホストコンピューターが起動されていないために印刷できないといった事態の発生を防止できる。以下、第２実施形態の構成について詳細に説明する。なお、第２実施形態では、第１実施形態のように図９の識別子付加処理は行わず、仮想プリンターからは、上述した識別子が付加されていないプリンター名が通知（応答）される。
【０１１９】
図１８は、第２実施形態における仮想プリンターの起動時の処理の一例を示すフローチャートである。この処理は、仮想プリンターサービス２１１が仮想プリンターを起動するタイミングで実行される。仮想プリンターサービス２１１は、自身が起動されたタイミングで、自身の内部に生成されている仮想プリンターを起動する。また、仮想プリンターサービス２１１は、仮想プリンターを生成したタイミングで、該生成した仮想プリンターを起動する。
【０１２０】
Ｓ１３０１において、仮想プリンターサービス２１１は、起動する仮想プリンターの公開範囲の設定を受け付ける。仮想プリンターサービス２１１は、自身が起動しているホストコンピューター１０１のディスプレイ２０７に、仮想プリンターの公開範囲の設定画面（不図示）を表示し、ユーザからの公開範囲の設定を受け付ける。公開範囲の設定の受付は、例えば「仮想プリンターを起動しているホストコンピューター内」又は「制限なし」の選択により行う。ユーザから仮想プリンターの公開範囲の設定を受け付けると、仮想プリンターサービス２１１は、Ｓ１３０２に処理を進める。
【０１２１】
Ｓ１３０２において、仮想プリンターサービス２１１は、上記Ｓ１３０１で設定入力された仮想プリンターの公開範囲の判定を行う。公開範囲が「仮想プリンターを起動しているホストコンピューター内」の場合（Ｓ１３０２でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１３０３に処理を進める。
【０１２２】
Ｓ１３０３において、仮想プリンターサービス２１１は、起動する仮想プリンターの公開範囲を「仮想プリンターを起動しているホストコンピューター内」に設定し、Ｓ１３０５において、該仮想プリンターを起動する。
【０１２３】
一方、上記Ｓ１３０２において、公開範囲が「制限なし」の場合（Ｓ１３０２でＮＯの場合）、仮想プリンターサービス２１１は、Ｓ１３０４に処理を進める。
Ｓ１３０４において、仮想プリンターサービス２１１は、起動する仮想プリンターの公開範囲を「制限なし」に設定し、Ｓ１３０５において、該仮想プリンターを起動する。
【０１２４】
図１９は、第２実施形態における仮想プリンターの情報をネットワーク内の機器に通知する処理の一例を示すフローチャートである。上述したように、仮想プリンターは、Ｂｏｎｊｏｕｒプロトコルを用いて仮想プリンターのプリンター名を該仮想プリンターが起動されているホストコンピューター１０１のＯＳ２１０に通知する（例えば図１５の２００１の通知や２００９の通知）。これに応じて、ホストコンピューター１０１のＯＳ２１０は、該通知に基づく情報を、該ホストコンピューター１０１が接続されているネットワーク上の機器に通知する。本実施形態のＯＳ２１０は、仮想プリンターからＢｏｎｊｏｕｒプロトコルを用いたプリンター情報（仮想プリンターのプリンター名等を含む）の通知を受け取った場合、本フローチャートの処理を実行する。なお、ここでは、仮想プリンターＡ３１１の情報をネットワーク内の機器に通知する場合を例に説明するが、他の仮想プリンターでも同様である。
【０１２５】
Ｓ１４０１において、ホストコンピューター１０１ａのＯＳ２１０ａは、上記受信したプリンター情報の通知元である仮想プリンターＡ３１１の公開範囲の情報を取得する。
次にＳ１４０２において、ＯＳ２１０ａは、上記Ｓ１４０１で取得した公開範囲の判定を行う。そして、公開範囲が「仮想プリンターを起動しているホストコンピューター内」である場合（Ｓ１４０２でＹＥＳの場合）、ＯＳ２１０ａは、本フローチャートの処理を終了する。
【０１２６】
一方、上記Ｓ１４０２において、公開範囲が「制限なし」の場合（Ｓ１４０２でＮＯの場合）、ＯＳ２１０ａは、Ｓ１４０３に処理を進める。
Ｓ１４０３において、ＯＳ２１０ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上の機器に対し、仮想プリンターＡ３１１のＩＰアドレス、機器名、サービスタイプを通知する。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を同一ネットワーク上の機器に対して通知する。そして、ＯＳ２１０ａは、本フローチャートの処理を終了する。
【０１２７】
図２０は、第２実施形態における同一ネットワーク上の機器からの対応しているサービスの問い合わせに対する処理の一例を示すフローチャートである。図２０（Ａ）の処理は、仮想プリンターが起動されているホストコンピューター１０１のＯＳ２１０により開始される。
【０１２８】
まず、図２０（Ａ）のフローチャートについて説明する。なお、ここでは、ホストコンピューター１０１ａを例に説明するが、他のホストコンピューターでも同様である。
【０１２９】
Ｓ１５０１で、ホストコンピューター１０１ａのＯＳ２１０ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用い、ホストコンピューター１０１ｂからの対応しているサービスの問い合わせと、ホストコンピューター１０１ｂが既に知っている機器の一覧を受信する。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を受信する。この受信に応じて、ＯＳ２１０ａは、ホストコンピューター１０１ａ内に生成されている各仮想プリンターに対して、Ｓ１５０２〜Ｓ１５０６に示す処理を実行するように制御する。
【０１３０】
まずＳ１５０２において、ＯＳ２１０ａは、ホストコンピューター１０１ａ内に生成されている各仮想プリンターのうち、未処理の仮想プリンターを１つ取得する（以下、「処理対象の仮想プリンター」という）。さらに、ＯＳ２１０ａは、処理対象の仮想プリンターの公開範囲の情報を取得する。
【０１３１】
次にＳ１５０３において、ＯＳ２１０ａは、上記Ｓ１５０２で取得した公開範囲の判定を行う。そして、公開範囲が処理対象の仮想プリンターを起動しているホストコンピューター内に制限されている場合（Ｓ１５０３でＹＥＳの場合）、ＯＳ２１０ａは、Ｓ１５０７に処理を進める。
【０１３２】
一方、上記Ｓ１５０３において、公開範囲に制限が設定されていない場合（Ｓ１５０２でＮＯの場合）、ＯＳ２１０ａは、Ｓ１５０４に処理を進める。
Ｓ１５０４にて、ＯＳ２１０ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用い、上記Ｓ１５０１で受信したホストコンピューター１０１ｂからの対応しているサービスの問い合わせと、ホストコンピューター１０１ｂが既に知っている機器の一覧を、処理対象の仮想プリンターに渡す。すなわち、Ｂｏｎｊｏｕｒプロトコルによる外部からのデバイス探索要求を処理対象の仮想プリンターに送信する。
【０１３３】
ここで、図２０（Ｂ）を用いて、上記Ｓ１５０４にて問い合わせを渡される仮想プリンター側の処理について説明する。ここでは、仮想プリンターＡ３１１を例に説明するが、他の仮想プリンターでも同様である。
【０１３４】
Ｓ１５１１において、仮想プリンターＡ３１１は、Ｂｏｎｊｏｕｒプロトコルによる、ＯＳ２１０ａが上記Ｓ１５０４で送信した問い合わせ（探索要求）と、ホストコンピューター１０１ｂが既に知っている機器の一覧を受信する。
【０１３５】
次にＳ１５１２において、仮想プリンターＡ３１１は、上記ホストコンピューター１０１ｂが既に知っている機器の一覧を取得する。
次にＳ１５１３において、仮想プリンターＡ３１１は、上記Ｓ１５１２で取得したホストコンピューター１０１ｂが既に知っている機器の一覧に、仮想プリンターＡ３１１が含まれているか否かを判定する。
【０１３６】
上記Ｓ１５１３において、ホストコンピューター１０１ｂが既に知っている機器の一覧に、仮想プリンターＡ３１１が含まれている場合（Ｓ１５１３でＹＥＳの場合）、仮想プリンターＡ３１１は、本フローチャートの処理を終了する。この場合、仮想プリンターＡ３１１は、上記Ｓ１５１１で受信した問い合わせに対する応答は行わない。
【０１３７】
一方、ホストコンピューター１０１ｂが既に知っている機器の一覧に、仮想プリンターＡ３１１が含まれていない場合（Ｓ１５１３でＮＯの場合）、仮想プリンターＡ３１１は、Ｓ１５１４に処理を進める。
Ｓ１５１４において、仮想プリンターＡ３１１は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、ＯＳ２１０ａに対し、仮想プリンターＡ３１１のＩＰアドレス、機器名、サービスタイプを通知する。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を応答し、本フローチャートの処理を終了する。
【０１３８】
以下、図２０（Ａ）のフローチャートの説明に戻る。
Ｓ１５０５において、ＯＳ２１０ａは、上記Ｓ１５０４で送信した問い合わせの応答（処理対象の仮想プリンターのＩＰアドレス、機器名、サービスタイプ）を、処理対処の仮想プリンターから受信したか判定する。処理対象の仮想プリンターから応答がなかった場合（Ｓ１５０５でＮＯの場合）、ＯＳ２１０ａは、Ｓ１５０７に処理を進める。
【０１３９】
一方、処理対象の仮想プリンターから応答を受信した場合（Ｓ１５０５でＹＥＳの場合）、ＯＳ２１０ａは、Ｓ１５０６に処理を進める。
Ｓ１５０６において、ＯＳ２１０ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上の機器に対し、上記Ｓ１５０５で受信した、処理対象の仮想プリンターのＩＰアドレス、機器名、サービスタイプを通知する。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報の応答を行う。Ｓ１５０６の処理の後、ＯＳ２１０ａは、Ｓ１５０７の処理を進める。
【０１４０】
Ｓ１５０７において、ＯＳ２１０ａは、上記Ｓ１５０２〜Ｓ１５０６に示す処理を、ホストコンピューター１０１ａ内に生成されている全ての仮想プリンターに対して終了したか判定する。まだ処理を終了していない仮想プリンターが存在する場合（Ｓ１５０７でＮＯの場合）、ＯＳ２１０ａは、Ｓ１５０２に処理を戻し、次の仮想プリンターに対する処理に遷移する。
【０１４１】
一方、上記Ｓ１５０２〜Ｓ１５０６に示す処理を、ホストコンピューター１０１ａ内に生成されている全ての仮想プリンターに対して終了した場合（Ｓ１５０７でＹＥＳの場合）、ＯＳ２１０ａは、本フローチャートの処理を終了する。
【０１４２】
なお、図１９の処理を実行し、図２０の処理を実行しない構成でもよい。すなわち、ホストコンピューター１０１は、外部から受信したデバイス探索要求については内部の仮想プリンターに渡すが、該仮想プリンターからの応答については外部に応答しない構成でもよい。この構成でも、同様の効果を得ることができる。
【０１４３】
また、上述の説明では、ホストコンピューター１０１のＯＳ２１０が、仮想プリンターの公開範囲を判断し、公開範囲の外部に仮想プリンターからの通知を外部に送信しない、また、公開範囲の外部からの探索要求を仮想プリンターに渡さない構成を示した。しかし、本実施形態に含まれる発明は、これに限定されるものではない。例えば、ＯＳ２１０は第１実施形態と同様の処理を行い、仮想プリンター自身が自身の公開範囲を判断し、公開範囲の外部に自ら通知を行わない、又は公開範囲の外部からの探索要求に対する返答を行わないようにしてもよい。
【０１４４】
以上のように、第２実施形態では、仮想プリンターの公開範囲に応じた処理を行い、公開範囲を仮想プリンターが動作しているホストコンピューター内とすることで、ネットワーク上に存在する機器からの探索に対して、仮想プリンターに応答させない。この構成により、第２実施形態では、仮想プリンターが起動しているホストコンピューター以外のホストコンピューターでは、その仮想プリンターを見つけることができなくなる。よって、プリンターＯＳ登録処理を行う際に、図１２（Ｂ）のプリンターの登録画面に、該プリンターＯＳ登録処理を行っているホストコンピューター以外のホストコンピューターに生成されている仮想プリンターが表示されなくなる。これにより、ユーザが他のホストコンピューターに作成されている仮想プリンターを誤ってＯＳに登録してしまうことを防止できる。その結果、他のホストコンピューターに作成されている仮想プリンターを選択して印刷しようとし、該他のホストコンピューターが起動していないために印刷できない、といった事態の発生を防止することができる。
【０１４５】
以上、各実施形態によれば、プリンタードライバーを使用せずに印刷を可能とする印刷システムから、特定のプロトコルに対応していない画像形成装置に、該画像形成装置が解釈可能な印刷ジョブを送ることができる。また、ユーザが他のホストコンピューターに作成されている仮想プリンターを誤ってＯＳに登録してしまうことを抑制できる。その結果、他のホストコンピューターに作成されている仮想プリンターを選択して印刷しようとし、該他のホストコンピューターが起動していないために印刷できない、といった事態の発生を抑制できる。
【０１４６】
上述した各実施形態で説明したホストコンピューター１０１の各ソフトウェアの機能は、ＣＰＵ２０１が外部メモリ等から読み出した又はダウンロードしたプログラム（２１０〜２１１や４０１等）をＲＡＭ２０２にロードして実行することにより機能する。すなわち、上記各実施形態に係る各ソフトウェアは、情報処理装置に上記各実施形態の機能を実現させるためのものである。
【０１４７】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施形態を組み合わせた構成も全て本発明に含まれるものである。
【０１４８】
〔その他の実施形態〕
本発明は上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１４９】
１００    ネットワーク
１０１ａ、１０１ｂ    ホストコンピューター
１０３、１０４    プリンター
２１０ａ、２１０ｂ    ＯＳ
２１１ａ、２１１ｂ    仮想プリンターサービス
３０１ａ、３０１ｂ    印刷システム
３０２ａ、３０２ｂ    サーバー成部
３０３ａ、３０３ｂ    ジョブ生成部
３１１、３１２、３６１、３６２    仮想プリンター
【図１】
2020194508.tif 000008
【図２】
2020194508.tif 000009
【図３】
2020194508.tif 000010
【図４】
2020194508.tif 000011
【図５】
2020194508.tif 000012
【図６】
2020194508.tif 000013
【図７】
2020194508.tif 000014
【図８】
2020194508.tif 000015
【図９】
2020194508.tif 000016
【図１０】
2020194508.tif 000017
【図１１】
2020194508.tif 000018
【図１２】
2020194508.tif 000019
【図１３】
2020194508.tif 000020
【図１４】
2020194508.tif 000021
【図１５】
2020194508.tif 000022
【図１６】
2020194508.tif 000023
【図１７】
2020194508.tif 000024
【図１８】
2020194508.tif 000025
【図１９】
2020194508.tif 000026
【図２０】
2020194508.tif 000027