(57)【要約】      （修正有）【課題】デバイスドライバが適当なアプリケーションを利用して動作可能な環境を容易に構築できるようにする。【解決手段】ドライバパッケージ４１０に、コンピュータを、所定のデバイスを制御する制御手段と、該制御に関する設定をユーザから受け付けるためのユーザインタフェース手段として機能させるためのドライバモジュール４１２と、上記コンピュータに、上記制御手段及び上記ユーザインタフェース手段からの要求に応じて処理を行うサービスの機能を実現させるためのサービスモジュール４１４と、デバイスドライバプログラムのインストール用の設定を記載した設定データと、上記サービスモジュール４１４に含まれるプログラムをコピーすべき所定の記憶領域を示す情報とを含むＩＮＦファイル４１１とを備える。【選択図】図４
2014013426.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、所定のデバイスを制御する制御手段と、該制御に関する設定をユーザから受け付けるためのユーザインタフェース手段として機能させるためのデバイスドライバプログラムモジュールと、
前記コンピュータに、前記制御手段及び前記ユーザインタフェース手段からの要求に応じて処理を行うサービスの機能を実現させるための実行ファイルであるアプリケーションプログラムモジュールと、
サーバコンピュータが前記デバイスドライバプログラムをクライアントコンピュータに転送する際に参照する、前記デバイスドライバプログラムのインストール用の設定を記載した設定データであり、かつ前記アプリケーションプログラムモジュールを所定の記憶領域にコピーすべき旨を示す情報を含む設定データとを備えるデバイスドライバプログラム。
【請求項２】
請求項１に記載のデバイスドライバプログラムであって、
前記デバイスドライバプログラムモジュールが、
前記コンピュータを、前記制御手段又は前記ユーザインタフェース手段が前記サービスに対して処理を要求しようとするときに該サービスが起動していなければ該サービスの起動を試みる起動手段として機能させるためのプログラムをさらに含み、
前記制御手段及び前記ユーザインタフェース手段は、前記起動手段が前記サービスを起動できない場合には該サービスを使用しない制限モードで動作する手段であることを特徴とするデバイスドライバプログラム。
【請求項３】
請求項１又は２に記載のデバイスドライバプログラムであって、
前記サービスは、前記制御手段又は前記ユーザインタフェース手段が作成した何らかの設定を所定の記憶手段に保存する機能と、該保存した設定を前記制御手段及び前記ユーザインタフェース手段のいずれかに取得させる機能とを備えることを特徴とするデバイスドライバプログラム。
【請求項４】
請求項３に記載のデバイスドライバプログラムであって、
前記前記サービスは、前記設定を、ファイル又はレジストリとして前記記憶手段に保存することを特徴とするデバイスドライバプログラム。
【請求項５】
請求項１乃至４のいずれか一項に記載のデバイスドライバプログラムにアクセスし、前記クライアントコンピュータからの要求に応じて、該デバイスドライバプログラムに含まれる前記設定データに従い、該デバイスドライバプログラムに含まれる前記デバイスドライバプログラムモジュールと前記アプリケーションプログラムモジュールとを前記クライアントコンピュータに転送する手段を備えた情報処理装置。
【請求項６】
請求項１乃至４のいずれか一項に記載のデバイスドライバプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータに所定のデバイスを制御させるためのデバイスドライバプログラムと、このようなデバイスドライバプログラムに含まれるプログラムモジュールを転送する情報処理装置と、このようなデバイスドライバプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
従来から、コンピュータに所定のデバイスを制御させるためのデバイスドライバプログラムが知られている。
その一例として、コンピュータ上で動作するＯＳ（オペレーティングシステム）とプリンタデバイスとの連携を可能にするためのソフトウェアであるプリンタドライバが広く知られている。このプリンタドライバは、アプリケーションから印刷命令を受けると、制御対象のプリンタが理解可能な印刷命令への変換を行い、変換後の印刷命令をプリンタへ送信する機能を実現するものである。
【０００３】
また、このようなプリンタドライバは、プリンタのベンダーがウェブページからのダウンロードやＣＤ等の記録媒体の頒布によりユーザに配布し、これをユーザがコンピュータにインストールすることが一般的である。そして、このケースにおいて、多くの場合、ユーザの手を煩わせずにインストールを行えるよう、インストールに際して必要なポートの設定等を自動で実行するインストーラが、プリンタドライバと共に提供される。このインストーラは、プリンタドライバのインストールの他に、アプリケーションのインストールやショートカットの登録等の初期設定を実行することもある。
【０００４】
また、上記の他、サーバコンピュータからクライアントコンピュータへプリンタドライバをコピーして、クライアントコンピュータがそのコピーされたプリンタドライバを用いてサーバコンピュータへ印刷の指示を出せるようにする、ポイントアンドプリントと呼ばれる機能も知られている。このポイントアンドプリントの場合、サーバコンピュータが、クライアントコンピュータからの指示に基づきプリンタに印刷を実行させる。
このようなデバイスドライバに関する技術としては、例えば特許文献１に記載のものが知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上述したプリンタドライバは、単独でインストールして動作させてもよいが、サービスと呼ばれるアプリケーションを連携して動作させることにより、より利便性の高い機能や、柔軟な処理を実現することができる。
このサービスは、ＯＳに常駐して動作し、他のプロセスからの要求に応じて、プロセス間通信や、ストレージへの情報の読み書き等、種々の機能を提供するためのソフトウェアである。
【０００６】
ただし、サービスを利用可能とするためには、サービスをコンピュータにインストールする必要がある。この点について、インストーラを用いてプリンタドライバをインストールする場合、そのインストーラに、そのプリンタドライバが利用するサービスもプリンタドライバと共にインストールする機能を設けておけばよい。このようにすれば、プリンタドライバを、必要なサービスが利用可能な環境で動作させることができる。
【０００７】
しかしながら、上述したポイントアンドプリントの場合、従来知られている手法では、プリンタドライバのファイルだけをサーバコンピュータからクライアントコンピュータにコピーするようになっていた。従って、プリンタドライバをインストールしたクライアントコンピュータにおいて、必要なサービスを利用可能かどうかが不明であるという問題があった。
【０００８】
プリンタドライバ以外のデバイスドライバを同様な仕組みでインストールする場合にも、同様な問題が発生する。また、サービス以外のアプリケーションをデバイスドライバから利用可能としたい場合にも、同様な問題が発生する。
この発明は、このような背景に鑑みてなされたものであり、デバイスドライバが適当なアプリケーションを利用して動作可能な環境を容易に構築できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、この発明のデバイスドライバプログラムは、コンピュータを、所定のデバイスを制御する制御手段と、その制御に関する設定をユーザから受け付けるためのユーザインタフェース手段として機能させるためのデバイスドライバプログラムモジュールと、上記コンピュータに、上記制御手段及び上記ユーザインタフェース手段からの要求に応じて処理を行うサービスの機能を実現させるための実行ファイルであるアプリケーションプログラムモジュールと、サーバコンピュータのオペレーティングシステムが上記デバイスドライバプログラムをクライアントコンピュータに転送する際に参照する、上記デバイスドライバプログラムのインストール用の設定を記載した設定データであって、上記アプリケーションプログラムモジュールを所定の記憶領域にコピーすべき旨の記載を含む設定データとを含むものである。
【発明の効果】
【００１０】
以上のような構成によれば、デバイスドライバが適当なアプリケーションを利用して動作可能な環境を容易に構築できるようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】この発明を適用するシステムの一例の構成を示す図である。
【図２】図１に示したクライアント装置及びサーバ装置のハードウェア構成を示す図である。
【図３】図１に示したクライアント装置及びサーバ装置の機能構成を示す図である。
【図４】プリンタドライバのインストーラパッケージの例を示す図である。
【図５】図４に示したＩＮＦファイルの内容のうち、実施形態の特徴に関連する部分を示す図である。
【図６】ポイントアンドプリント機能によりプリンタドライバをインストールする場合の処理を示すフローチャートである。
【図７】インストーラによりプリンタドライバをインストールする場合の処理を示すフローチャートである。
【図８】プリンタドライバをアンインストールする場合の処理を示すフローチャートである。
【図９】印刷設定部がサービスを利用した処理を行う場合の各部の動作シーケンスの例を示す図である。
【図１０】描画部がサービスを利用した処理を行う場合の各部の動作シーケンスの例を示す図である。
【図１１】印刷設定部及び描画部によるサービスを利用したデータの読み書きについて説明するための図である。
【図１２】印刷設定部の機能と対応する処理を示すフローチャートである。
【図１３】サービス起動判断部の機能と対応する処理を示すフローチャートである。
【図１４】サービス管理部の機能と対応する処理を示すフローチャートである。
【図１５】図１２の処理の変形例を示す図である。
【図１６】インストーラパッケージの比較例を示す図４と対応する図である。
【図１７】図１６の構成と対応するＩＮＦファイルを示す、図５と対応する図である。
【発明を実施するための形態】
【００１２】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
図１は、この発明を適用するシステムの一例の構成を示す図である。
【００１３】
図１に示すシステムは、それぞれ情報処理装置であるクライアント装置１０及びサーバ装置２０と、ＭＦＰ（複合機：Multifunction Printer）３０とを備え、これらをネットワーク４０により接続したものである。ネットワーク４０としては、有線、無線を問わず、任意の通信プロトコルを用いたものを採用可能である。
【００１４】
クライアント装置１０は、サーバ装置２０にアクセスしてＭＦＰを制御するためのデバイスドライバであるプリンタドライバを入手し、これを自身にインストールすることができる。また、そのインストールしたプリンタドライバにより、ＭＦＰ３０に実行させたいジョブをサーバ装置２０に送信し、ＭＦＰ３０に転送させることができる。すなわち、サーバ装置２０を介してＭＦＰ３０を制御することができる。あるいは、ＭＦＰ３０に実行させたいジョブを直接ＭＦＰ３０に送信して実行させることができる。すなわち、クライアント装置１０自身がＭＦＰ３０を制御することもできる。
【００１５】
サーバ装置２０は、デバイスドライバの管理、クライアント装置１０等の外部装置からの要求に応じたデバイスドライバの転送、およびそのデバイスドライバを用いて送信されてきたジョブをＭＦＰ３０に実行させるための制御等を行うことができる。
【００１６】
ＭＦＰ３０は、原稿の画像読み取り（スキャン）、紙等のシート材への画像形成（プリント）、ファクシミリ通信やネットワーク通信による画情報等のデータの送受信、データの蓄積等の機能を備えた画像処理装置である。サーバ装置２０からの指示に従い、これらの機能に係る処理を実行することができる。ユーザがＭＦＰ３０を直接操作することもできる。
【００１７】
次に、図２にクライアント装置１０及びサーバ装置２０のハードウェア構成を示す。
クライアント装置１０及びサーバ装置２０はそれぞれ、ハードウェアとしては公知のコンピュータでよい。
ここでは、図２に示す通り、クライアント装置１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、通信Ｉ／Ｆ（インタフェース）１４、ＨＤＤ（ハードディスクドライブ）１５、ＵＩ（ユーザインタフェース）部１６を、システムバス１７により接続した構成としている。
【００１８】
そして、ＣＰＵ１１がＲＡＭ１３をワークエリアとしてＲＯＭ１２あるいはＨＤＤ１５に記憶されたプログラムを実行することにより、後述する種々の機能を実現することができる。
通信Ｉ／Ｆ１４は、ネットワーク４０を介して通信するためのインタフェースである。
【００１９】
ＵＩ部１６は、ユーザの操作を受け付けるための操作部や、ユーザに情報を提示するための表示部である。外付けの操作部や表示部を用いてもよいことはもちろんである。
なお、ユーザの操作は、外部装置から操作内容を示すデータを受信することにより受け付けてもよい。また、ユーザへの情報の提示は、画面の表示内容を示すデータや画面に表示させるべきデータを外部装置へ送信することによって行ってもよい。
【００２０】
サーバ装置２０も、同様にＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、通信Ｉ／Ｆ（インタフェース）２４、ＨＤＤ（ハードディスクドライブ）２５、ＵＩ（ユーザインタフェース）部２６を、システムバス２７により接続した構成としている。各構成要素の機能は、クライアント装置１０における対応する構成要素と同様であるので、詳細な説明は省略する。
【００２１】
ＭＦＰ３０は、クライアント装置１０及びサーバ装置２０の場合と同趣旨の機能を備えるＣＰＵ、ＲＯＭ、ＲＡＭ、通信Ｉ／Ｆ、ＨＤＤ、ＵＩ部に加え、原稿の画像読み取り、用紙への画像形成、ファクシミリ通信等を行うためのエンジン部を必要に応じて備える。しかし、ＭＦＰ３０もハードウェアとしては公知のものでよいので、詳細な説明は省略する。
【００２２】
次に、図３に、クライアント装置１０及びサーバ装置２０の機能構成を示す。なお、図３には、この実施形態の特徴に関連する機能のみを示した。
図３に示すように、クライアント装置１０は、ＯＳ１００及びアプリケーション１３０の機能を備える。
【００２３】
このうちＯＳ１００は、クライアント装置１０のハードウェアを制御してアプリケーション１３０から利用可能な機能を提供する基本ソフトウェアにより実現される機能を示す。この実施形態においては、ＯＳ１００はＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標：以下同じ）であるとして説明する。
アプリケーション１３０は、文書作成、表計算、データベース管理、画像編集等の種々の用途に合わせて提供され、任意にインストールして実行可能なアプリケーションソフトウェアにより実現される機能を示す。
【００２４】
また、ＯＳ１００は、ドライバ転送要求部１２０を備える。このドライバ転送要求部１２０は、ポイントアンドプリント機能によるプリンタドライバのインストール指示を検出した場合に、ドライバ取得先として指定された装置（ここではサーバ装置２０とする）に対してプリンタドライバの転送を要求する機能を有する。
【００２５】
そして、この要求に応じてサーバ装置２０から送信されてきたプリンタドライバのプログラムファイルを、ＯＳ１００の機能により所定のフォルダへ保存すると共に、レジストリに必要な設定を行うことにより、プリンタドライバをインストールすることができる。
【００２６】
図３においてサーバ装置２０が備えるドライバ転送部２０２が、このドライバ転送要求部１２０からの要求に応じて必要なファイルを要求元装置に送信する機能を有する。ここで転送するファイルの詳細については後述する。
また、ドライバ管理部２０１は、クライアント装置１０に転送するプリンタドライバを管理する機能を有する。ドライバ管理部２０１は、後述するように、プリンタドライバを、ドライバモジュールとサービスモジュールを含むパッケージとして管理する。
【００２７】
また、クライアント装置１０がプリンタドライバをインストールした場合、ＯＳ１００は、プリンタドライバ３００の機能を提供可能となる。
このプリンタドライバ３００は、印刷設定部３１０と描画部３２０を備える。
【００２８】
これらのうち印刷設定部３１０は、ユーザに印刷設定画面を提供し、印刷に係る部数や集約数等の設定情報の入力を受け付ける機能を有するユーザインタフェース手段である。また、アプリケーション１３０からの要求に応じて印刷設定画面を開いた場合には、印刷設定画面において受け付けた設定情報を要求元のアプリケーション１３０に返す機能も有する。
【００２９】
描画部３２０は、印刷を指示された文書のデータを、印刷設定部３１０で受け付けた印刷設定に基づき、制御対象のプリンタ（ここではＭＦＰ３０とする）が解釈してその印刷設定に従った印刷を実行可能な印刷データに変換する機能を有する。この描画部３２０が生成した印刷データは、ＯＳ１００の提供する通信機能を利用してＭＦＰ３０に送信し、ＭＦＰ３０にその印刷データに従った印刷を行わせる。従って、描画部３２０は、印刷データの生成によりＭＦＰ３０の動作を制御する制御手段であるということができる。
また、これらの印刷設定部３１０及び描画部３２０は、その機能を実現するに当たり、ＯＳ１００が提供するサービス３３０を利用することができる。このサービス３３０は、ＯＳ１００上で動作する常駐のアプリケーション１１０により提供される機能である。
【００３０】
サービス３３０には、ユーザインタフェースは不要であり、一旦起動されると、利用の有無に関わらず停止されるまで起動状態を維持する。そして、プリンタドライバ３００などの他のプログラムのプロセスからの指示に応じて、種々の機能を提供する。サービス３３０が提供する機能には例えばプロセス間通信や、ストレージ（記憶手段）に対するデータの読み書きが挙げられる。なお、このサービス３３０は、Ｗｉｎｄｏｗｓにおけるいわゆるサービスアプリが提供する機能を含むが、これに限られない。
【００３１】
一方、プリンタドライバ３００は、サービス３３０を利用するための機能として、印刷設定部３１０に、サービス管理部３１１、サービス起動判断部３１２及びサービス通信部３１３を備える。描画部３２０にも、サービス起動判断部３２２及びサービス通信部３２３を備える。
【００３２】
サービス管理部３１１は、サービス３３０の起動に必要な権限の管理や、サービス３３０の起動そのものを行う機能を有する。サービス３３０を起動して管理用のリストに登録するためには実行ファイルの実行が必要であるため、権限などの制限を受ける。そこで、サービス管理部３１１は、サービス３３０の起動に際し、クライアント装置１０にログインしているユーザがサービス３３０に係る実行ファイルを実行する権限を有しているか否かを確認する。
【００３３】
サービス起動判断部３１２，３２２は、プリンタドライバ３００が利用するサービス３３０が起動済みか否か判定する機能を有する。また、印刷設定部３１０が備えるサービス起動判断部３１２は、起動していないサービスがあると判断した場合、サービス管理部３１１に対し、そのサービスの起動を指示する機能も有する。一方、描画部３２０が備えるサービス起動判断部３２２は、起動していないサービスがあると判断しても、サービスの起動は行わない。これは、描画部３２０では実行ファイルの実行は推奨されないためである。そしてこのため、描画部３２０にはサービス管理部は設けていない。
【００３４】
サービス通信部３１３，３２３は、印刷設定部３１０あるいは描画部３２０からの指示に応じて、起動済みのサービス３３０に対し、処理の実行指示を送信する機能を有する。また、サービス３３０による処理の実行結果を処理の指示元へ返す機能も有する。すなわち、印刷設定部３１０あるいは描画部３２０とサービス３３０との間のプロセス間通信を仲介する機能を有する。
【００３５】
次に、図４に、サーバ装置２０が記憶するプリンタドライバのインストーラパッケージの例を示す。
サーバ装置２０のドライバ管理部２０１は、ＭＦＰ３０の制御に用いるプリンタドライバをはじめ、各種デバイスドライバを、図４に示すインストーラパッケージ４００の形式で記憶している。
【００３６】
このインストーラパッケージ４００は、ドライバパッケージ４１０、インストーラ４２１、プログラムファイル４２２、およびデータファイル４２３を備える。
このうちドライバパッケージ４１０は、デバイスドライバの機能実現に必要なプログラム及びデータを集めたパッケージであり、ＩＮＦファイル４１１、ドライバモジュール４１２、データファイル４１３、サービスモジュール４１４を備える。
【００３７】
ＩＮＦファイル４１１は、デバイスドライバのインストール用の設定を記載した設定データである。その詳細については後述する。
ドライバモジュール４１２は、図３に示したプリンタドライバ３００のようなデバイスドライバの機能を実現するためのデバイスドライバプログラムモジュールである。
【００３８】
データファイル４１３は、ドライバモジュール４１２が動作する際に使用するデータを格納するファイルである。
サービスモジュール４１４は、図３に示したサービス３３０のような、プリンタドライバ３００が使用するサービスの機能を実現するためのアプリケーションプログラムモジュールである。
【００３９】
ポイントアンドプリント機能によりデバイスドライバをインストールする場合、以上のドライバパッケージ４１０のみでインストール可能である。また、ドライバパッケージ４１０をネットワークを介したダウンロードや記録媒体からの読み出しによりクライアント装置１０に読み込ませた上で適切な操作を行えば、ポイントアンドプリント機能を用いなくても、ＯＳ１００の機能によりドライバをインストールすることができる。
【００４０】
次に、インストーラ４２１は、ドライバパッケージ４１０を用いてデバイスドライバ及びサービスをインストールするためのプログラムである。このインストーラ４２１は、ポイントアンドプリント機能を用いずにドライバをインストールする場合に用いる。すなわち、インストーラパッケージ４００をネットワークを介したダウンロードや記録媒体の配布によりユーザに配布する場合に用いるものである。
【００４１】
この場合、ユーザはデバイスドライバ及びサービスをインストールしたいコンピュータでインストーラ４２１を起動することにより、複雑な操作を行うことなく、自動的にデバイスドライバ及びサービスをインストールすることができる。インストーラ４２１は、上述のＯＳ１００の機能によるインストールを自動で行うためのプログラムであるということができる。
【００４２】
また、インストーラ４２１は、一度インストールしたデバイスドライバ及びサービスをアンインストールする機能も提供する。
プログラムファイル４２２は、ドライバパッケージ４１０に含まれるドライバが使用するユーティリティのプログラムファイルである。インストーラ４２１がデバイスドライバをインストールする場合、オプションとして、このプログラムファイル４２２に係るユーティリティもインストールすることができる。しかし、ユーティリティがなくても、デバイスドライバ自体の動作には問題はない。
データファイル４２３は、プログラムファイル４２２が動作する際に使用するデータを格納するファイルである。
【００４３】
次に、図５に、図４に示したＩＮＦファイル４１１の内容のうち、この実施形態の特徴に関連する部分を示す。
ＩＮＦファイル４１１には、ポイントアンドプリント機能によりドライバをインストールする際にインストール要求元へ転送すべきファイルのリストを記載する。図５に示しているのは、そのリストの部分である。
【００４４】
符号４３１で示すのが、サービスモジュール４１４を構成する、サービス３３０の機能と対応するファイルのファイル名である。符号４３２で示すのが、ドライバモジュール４１２を構成する、印刷設定部３１０の機能と対応するプログラムファイルのファイル名である。符号４３３で示すのが、ドライバモジュール４１２を構成する、描画部３２０の機能と対応するプログラムファイルのファイル名である。
【００４５】
すなわち、ドライバパッケージ４１０中のＩＮＦファイル４１１には、ドライバモジュール４１２及びサービスモジュール４１４を構成するファイルのファイル名が記載されている。前者はダイナミックリンクライブラリのファイル(ｄｌｌファイル)であり、後者は実行ファイル(ｅｘｅファイル)である。図５に示したファイル名は一例であり、サービスモジュール４１４を構成するファイルが複数あってもよい。ドライバモジュール４１２を構成するファイルが１つであっても、あるいはより細分化されていてもよい。
【００４６】
一方、Ｗｉｎｄｏｗｓにおいては、ＯＳの仕様として、ポイントアンドプリント機能によりドライバをインストールする際に、ＩＮＦファイル４１１に記載されているファイルをサーバ装置（ここではサーバ装置２０）からインストール先装置（ここではクライアント装置１０）に転送し、種類毎にインストール先装置の所定の記憶場所にコピーすることが定められている。例えばＷｉｎｄｏｗｓ  ＸＰ  ｘ８６の場合には、ｅｘｅファイルは、「c:\windows\system32\spool\drivers\w32x86\3」に格納する。
【００４７】
そして、インストール先装置のＯＳがこのコピー先の実行ファイルを実行することにより、サービス３３０を起動することができる。また、これに伴い、サービス３３０を、ＯＳのサービスリストに登録する。また、実行ファイルの実行を停止することにより、サービス３３０を停止することができる。
【００４８】
従って、図５に示すようにＩＮＦファイル４１１にドライバモジュール４１２を構成するファイルだけでなくサービスモジュール４１４を構成するファイルの情報も記載することにより、サービスモジュール４１４を構成するファイルを所定の記憶領域にコピーすべきことを設定できる。そして、ポイントアンドプリント機能によるドライバをインストールする際に、ドライバだけでなく、サービスもインストールされることが保証できる。
なお、万一ＩＮＦファイル４１１に記載されているファイルがドライバパッケージ４１０に存在しない場合、エラーとなり、ドライバのインストール自体行われない。従って、サービスなしでドライバのみ単独でインストールされてしまうことはない。
【００４９】
次に、上述したデバイスドライバのインストールのための処理について説明する。
まず図６に、ポイントアンドプリント機能によりプリンタドライバをインストールする場合の処理を示す。
クライアント装置１０のＣＰＵ１１は、ポイントアンドプリント機能により特定のプリンタドライバをインストールする旨の指示を検出すると、図６の左側のフローチャートに示す処理を開始する。
そしてまず、ドライバの取得先として指定されている所定のサーバ装置（ここではサーバ装置２０）へ、インストール指示に係るプリンタドライバの送信を要求する（Ｓ１１）。
【００５０】
一方、サーバ装置２０のＣＰＵ２１は、この要求を検出すると、図６の右側のフローチャートに示す処理を開始する。
そしてまず、送信を要求されたプリンタドライバのドライバパッケージ４１０に含まれるＩＮＦファイル４１１を参照する（Ｓ２１）。そして、ＩＮＦファイルにおいて指定されているファイル（ここでは図５を用いて説明したようにドライバモジュール４１２を構成するｄｌｌファイル及びサービスモジュール４１４を構成するｅｘｅファイル）及び、ＩＮＦファイル自体を要求元に送信して（Ｓ２２）処理を終了する。
【００５１】
一方、クライアント装置１０のＣＰＵ１１は、サーバ装置２０から送信されてきたこれらのファイルを受信する（Ｓ１２）。その後、受信したｄｌｌファイルを、ドライバのファイルを保存すべき所定のフォルダに保存すると共に、ドライバを使用した印刷に必要な設定を行う（Ｓ１３）。すなわち、ドライバのインストールを行う。また、ステップＳ１３で行う設定は、クライアント装置１０がサポートするプリンタのリストに、インストールするドライバで制御可能なプリンタの情報を追加する等である。
【００５２】
また、ステップＳ１３の処理において、ドライバのインストールが正常に進行していることを示す所定のイベントを検出すると、サービスのインストールに関するステップＳ１４以下の処理に進む。この処理は、ステップＳ１３の処理と並行して行ってもよい。
ここで用いるイベントとしては、ドライバパッケージのファイルが全てコピーされた後にＯＳから呼ばれるＤＤＩ（Device Driver Interface）のDrvDriverEvent()関数のDRIVER_EVENT_INITIALIZEイベント、あるいはプリンタアイコンが生成されるタイミングでＯＳから呼ばれるＤＤＩのDrvPrinterEvent()関数のPRINTER_EVENT_INITIALIZEあるいはPRINTER_EVENT_ADD_CONNECTIONイベントなどが考えられる。
【００５３】
上記の所定のイベントを検出すると、ＣＰＵ１１は、サービスを登録して実行可能な状態であるか否か判断する（Ｓ１４）。一般に、サービスは管理者権限がないと登録や起動ができないが、プリンタドライバのインストールも管理者権限がないとできない。そして、プリンタドライバのインストールに係る図６の処理を開始できるということは、その時点でログインしているユーザは管理者権限を持っていると考えられ、通常はステップＳ１４の判断はＹＥＳになると考えられる。
【００５４】
この場合、ＣＰＵ１１は、ステップＳ１２で受信したｅｘｅファイルを、サービスのファイルを保存すべき所定のフォルダに保存すると共に、必要な設定を行い、さらにこのｅｘｅファイルを起動することにより、サービス３３０の起動を行う（Ｓ１５）。すなわち、サービスのインストール及び起動を行う。また、ステップＳ１５で行う設定は、クライアント装置１０が提供するサービスのリストに、インストールしたサービスの情報を追加する等である。
【００５５】
なお、サービスのインストール及び起動は、Ｗｉｎｄｏｗｓで提供されるｓｃコマンドにより行うことができる。サービスのインストールでは、「sc create サービス名 binPath=”パス名” DisplayName=”サービス名”」とする。サービスをクライアント装置１０が起動したときに自動的に起動するように設定する場合は「sc
config サービス名 start=auto」とする。サービスを起動する場合は「sc start サービス名」とする。
【００５６】
ステップＳ１５の後は、ステップＳ１２で受信したＩＮＦファイルを、インストールしたプリンタドライバと関連付けて記憶し（Ｓ１６）、処理を終了する。ここで記憶させるＩＮＦファイルは、ドライバのアンインストールの際に、ドライバと共にアンインストールすべきサービスを把握するために用いる。
【００５７】
一方、ステップＳ１４でＮＯの場合、サービスの登録をせずにインストールを続行するか否かを、ユーザに問い合わせる（Ｓ１７）。この問い合わせは、ポップアップ画面の表示等により行えばよい。
そして、続行する場合には、ステップＳ１６に進んでＩＮＦファイルを登録し、処理を終了する。この場合、インストールしたドライバはサービスを利用しない制限モードで動作させることになる。
【００５８】
続行しない場合には、プリンタドライバのインストールを中止して（Ｓ１８）、処理を終了する。この場合、ステップＳ１３で保存したｄｌｌファイルは削除し、ステップＳ１３で行った設定も元に戻す。
以上の処理により、ポイントアンドプリント機能を用いてプリンタドライバをインストールする際に、そのプリンタドライバが利用するサービスも併せてインストールすると共に起動して、プリンタドライバから利用可能とすることができる。
【００５９】
次に、図７に、インストーラ４２１によりプリンタドライバをインストールする場合の処理を示す。
クライアント装置１０のＣＰＵ１１は、適当な記憶手段に記憶されたインストーラパッケージ４００にアクセス可能な状態で、インストーラ４２１が起動され、プリンタドライバをインストールする旨の指示がなされたことを検出すると、図７のフローチャートに示す処理を開始する。
【００６０】
そしてまず、ドライバパッケージ４１０中のドライバモジュール４１２を構成するｄｌｌファイルを、ドライバのファイルを保存すべき所定のフォルダに保存すると共に、ドライバを使用した印刷に必要な設定を行う（Ｓ３１）。すなわち、ファイルの取得先以外は図６のステップＳ１３の場合と同様にドライバのインストールを行う。
【００６１】
そして、図６のステップＳ１３の場合と同様に、ドライバのインストールが正常に進行していることを示す所定のイベントを検出すると、サービスのインストールに関するステップＳ３２以下の処理に進む。
すなわち、所定のイベントを検出すると、ＣＰＵ１１は、サービスを登録して実行可能な状態であるか否か判断する（Ｓ３２）。この判断が通常はＹＥＳになると考えられるのも、図６のステップＳ１４の場合と同様である。
【００６２】
そして、Ｙｅｓの場合、ＣＰＵ１１は、ドライバパッケージ４１０中のサービスモジュール４１４を構成するｅｘｅファイルを、サービスのファイルを保存すべき所定のフォルダに保存すると共に、必要な設定を行い、さらにこのｅｘｅファイルを起動することにより、サービス３３０の起動を行う（Ｓ３３）。すなわち、ファイルの取得先以外は図６のステップＳ１５の場合と同様にサービスのインストール及び起動を行う。
【００６３】
ステップＳ３３の後は、ドライバパッケージ４１０に含まれるＩＮＦファイル４１１を、図６のステップＳ１６の場合と同様にインストールしたプリンタドライバと関連付けて記憶し（Ｓ３４）、処理を終了する。なお、ドライバのアインインストールもインストーラ４２１を用いて行うことが前提の場合、ドライバと共にアンインストールすべきサービスは、インストーラ４２１に予め設定しておくことができる。この場合、ＩＮＦファイルの記憶は不要である。
【００６４】
一方、ステップＳ３２でＮＯの場合、サービスの登録をせずにインストールを続行するか否かを、ユーザに問い合わせる（Ｓ３５）。この問い合わせは、ポップアップ画面の表示等により行えばよい。
そして、続行する場合には、ステップＳ３４に進んで必要に応じてＩＮＦファイルを登録し、処理を終了する。この場合、インストールしたドライバはサービスを利用しない制限モードで動作させることになる。
続行しない場合には、プリンタドライバのインストールを中止して（Ｓ３６）、処理を終了する。この場合、ステップＳ３１で保存したｄｌｌファイルは削除し、ステップＳ３１で行った設定も元に戻す。
【００６５】
以上の処理により、インストーラ４２１によりプリンタドライバのインストールを行う場合も、ポイントアンドプリント機能を用いた場合と同様、プリンタドライバをインストールする際に、そのプリンタドライバが利用するサービスも併せてインストールすると共に起動して、プリンタドライバから利用可能とすることができる。
【００６６】
次に、上述したデバイスドライバのアンインストールのための処理について説明する。
図８に、プリンタドライバをアンインストールする場合の処理を示す。
クライアント装置１０は、ＯＳ１００の機能によりプリンタドライバ３００のアンインストール指示を受け付けたことを検出すると、図８のフローチャートに示す処理を開始する。この場合、ＯＳ１００の機能によりアンインストールの処理を行うことになる。ポイントアンドプリント機能を用いてプリンタドライバをインストールした場合、クライアント装置１０にインストーラ４２１が記憶されていないと考えられるので、このようにアンインストールを行う。インストーラ４２１を用いてインストールした場合でも、このようにインストーラ４２１にアンインストールを行うことも可能である。
【００６７】
また、インストーラ４２１が起動され、プリンタドライバをアンインストールする旨の指示がなされたことを検出した場合も、図８のフローチャートに示す処理を開始する。処理自体はほぼ共通なのでまとめて説明するが、この場合、インストーラ４２１がＯＳ１００の機能を利用してアンインストールの処理を行うことになる。
どちらの場合も、まずアンインストールするプリンタドライバ３００に係るｄｌｌファイルを削除すると共に、ドライバの削除に伴って必要な設定を行う（Ｓ４１）。すなわち、ドライバのアンインストールを行う。また、ステップＳ４１で行う設定は、クライアント装置１０がサポートするプリンタのリストから、アンインストールに伴って制御できなくなるプリンタの情報を削除する等である。
【００６８】
また、ステップＳ４１の処理において、ドライバのアンインストールが正常に進行していることを示す所定のイベントを検出すると、サービスのアンインストールに関するステップＳ４２以下の処理に進む。この処理は、ステップＳ４１の処理と並行して行ってもよい。
ここで用いるイベントとしては、ドライバパッケージのファイルが全て削除される前にＯＳから呼ばれるＤＤＩのDrvDriverEvent()関数のDRIVER_EVENT_DELETEイベント、あるいはプリンタアイコンが削除されるタイミングでＯＳから呼ばれるＤＤＩのDrvPrinterEvent()関数のPRINTER_EVENT_DELETEイベントなどが考えられる。
【００６９】
上記の所定のイベントを検出すると、ＣＰＵ１１は、アンインストールしようとするプリンタドライバと共にインストールしたサービスがまだ登録されているか否か判断する（Ｓ４２）。この判断は、該当のプリンタドライバと関連付けて記憶したＩＮＦファイル４１１に含まれるｅｘｅファイルの情報と、クライアント装置１０が提供するサービスのリストとを比較することにより、行うことができる。また、図８の処理をインストーラ４２１により実行する場合には、ＩＮＦファイル４１１に代えて、インストーラ４２１が持つドライバとサービスの対応関係の情報を用いることができる。
【００７０】
そして、ステップＳ４２でＹＥＳの場合、該当のまだ登録されているサービスを削除可能な状態であるか否か判断する（Ｓ４３）。一般に、サービスは管理者権限がないと停止や削除ができないが、プリンタドライバのアンインストールも管理者権限がないとできない。そして、プリンタドライバのアンインストールに係る図８の処理を開始できるということは、その時点でログインしているユーザは管理者権限を持っていると考えられ、通常はステップＳ４３の判断はＹＥＳになると考えられる。
【００７１】
この場合、ＣＰＵ１１は、該当のサービスに係るｅｘｅファイルの実行を停止させることによりサービス３３０を停止させ、さらにファイル自体も削除する。また、それに伴って必要な設定を行う（Ｓ４４）。すなわち、サービスの停止及び削除（アンインストール）を行う。また、ステップＳ４４で行う設定は、クライアント装置１０が提供するサービスのリストから、アンインストールしたサービスの情報を削除する等である。
【００７２】
なお、サービスの停止及び削除は、Ｗｉｎｄｏｗｓで提供されるｓｃコマンドにより行うことができる。サービスの停止では、「sc stop サービス名」とする。サービスの削除では、「sc delete サービス名」とする。
以上の処理により、プリンタドライバをアンインストールする際に、そのプリンタドライバが利用するサービスも併せて停止して削除し、クライアント装置１０に不要なサービスが残って処理能力を浪費しないようにすることができる。
【００７３】
次に、サービス３３０を利用するプリンタドライバ３００の動作について説明する。なお、以下の説明において、ＣＰＵ１１が所要のプログラムを実行して行う、図３に示した各部の機能と対応する処理は、説明の便宜のため、その「各部が」行うものとして説明する。
まず、図９に、印刷設定部３１０がサービス３３０を利用した処理を行う場合の各部の動作シーケンスの例を示す。この例は、ユーザがアプリケーション１３０においてＭＦＰ３０による印刷の設定を行うための印刷設定画面の表示を指示した場合の動作である。
【００７４】
この場合、アプリケーション１３０は、ＯＳ１００に対し、ＭＦＰ３０の制御に用いるプリンタドライバ３００の印刷設定画面を開く要求を送信する（Ｓ１０１）。ＯＳ１００は、この要求を受けると、ＤＤＩコールにより、対象のプリンタドライバ３００の印刷設定部３１０へその要求を伝える（Ｓ１０２）。
これを受けた印刷設定部３１０は、印刷設定画面の表示のためにサービス３３０の利用が必要であるとすると、サービス起動判断部３１２に対し、起動すべきサービスを特定したサービス起動指示を送信する（Ｓ１０３）。
【００７５】
これを受けたサービス起動判断部３１２は、指示に係るサービスが既に起動されているか否か判断する。ここでは未起動であるとすると（Ｓ１０４）、サービス管理部３１１に対し、該当サービスの起動指示を送信する（Ｓ１０５）。必要なサービスがブート時自動起動になっていなかったり、何らかの理由で停止されていたりした場合が、このケースに該当する。
【００７６】
ステップＳ１０５の指示を受けたサービス管理部３１１は、ユーザの権限等に基づき、指示に係るサービスの起動条件が満たされていると判断すると（Ｓ１０６）、指示に係るサービス３３０を起動する（Ｓ１０７）とともに、その結果をサービス起動判断部３１２に返す（Ｓ１０８）。図９の例では起動ＯＫを返しているが、起動条件が満たされていなかったり、起動に失敗したりすれば、起動ＮＧを返す。
【００７７】
サービス起動判断部３１２は、起動ＯＫの応答を受けると、ステップＳ１０３での指示に対する応答として、印刷設定部３１０に起動ＯＫの応答を返す（Ｓ１０９）。起動ＮＧの場合については、図１１乃至図１３の説明で後述する。
印刷設定部３１０は、ステップＳ１０９での応答により、サービス３３０が利用可能となったことがわかる。そこで、サービス３３０に対して処理を依頼すべく、サービス通信部３１３に、サービス３３０に依頼したい処理の内容を示すサービス利用処理実行指示を送信する（Ｓ１１０）。
【００７８】
これを受けたサービス通信部３１３は、指示に従って処理依頼をサービス３３０に渡し（Ｓ１１１）、サービス３３０はこれに従って処理を実行して（Ｓ１１２）、実行結果を返す（Ｓ１１３）。サービス通信部３１３は、その実行結果を印刷設定部３１０に返す（Ｓ１１４）。
【００７９】
そして、印刷設定部３１０は、受け取った実行結果に基づき、印刷設定画面の表示や、その画面における印刷設定の受付等の印刷設定処理を行う（Ｓ１１５）。なお、印刷設定処理中あるいは処理終了後にも、必要に応じてステップＳ１１０〜Ｓ１１４と同様にサービス３３０を利用した処理を行うことができる。
そして、設定が完了すると、確定された印刷設定の内容を、ステップＳ１０１及びＳ１０２の指示に対する実行結果として、ＯＳ１００を介してアプリケーション１３０に返す（Ｓ１１６，Ｓ１１７）。
【００８０】
以上の処理により、アプリケーション１３０は、印刷設定部３１０が受け付けた印刷設定の情報を取得することができる。そして、ＭＦＰ３０による印刷を行う場合、この印刷設定の情報を描画部３２０に渡し、その印刷設定に従った印刷をＭＦＰ３０に行わせるための印刷データを生成させることができる。
【００８１】
次に、図１０に、描画部３２０がサービス３３０を利用した処理を行う場合の各部の動作シーケンスの例を示す。この例は、ユーザがアプリケーション１３０においてＭＦＰ３０による印刷の実行を指示した場合の動作である。
この場合、アプリケーション１３０は、ＯＳ１００に対し、ＭＦＰ３０を用いた印刷実行を要求すると共に、印刷すべき文書のデータと、印刷に用いる印刷設定のデータを渡す（Ｓ１２１）。ＯＳ１００は、この指示を受けると、ＤＤＩコールにより、ＭＦＰ３０の制御に用いるプリンタドライバ３００の描画部３２０へその要求を伝える（Ｓ１２２）。
【００８２】
これを受けた描画部３２０は、印刷データ生成のためにサービス３３０の利用が必要であるとすると、サービス起動判断部３２２に対し、起動すべきサービスを特定したサービス起動指示を送信する（Ｓ１２３）。
これを受けたサービス起動判断部３２２は、指示に係るサービスが既に起動されているか否か判断する。ここでは起動済みであるとすると（Ｓ１２４）、そのことを示す起動ＯＫの応答を返す（Ｓ１２５）。なお、描画部３２０においては、既に述べたようにサービス管理部は設けていない。従って、起動済みでない場合にも、サービスの起動は行わず、起動ＮＧの応答を返す。
【００８３】
一方、起動ＯＫの応答を受けた描画部は、サービス３３０が利用可能であることがわかるので、サービス３３０に対して処理を依頼すべく、サービス通信部３２３に、サービス３３０に依頼したい処理の内容を示すサービス利用処理実行指示を送信する（Ｓ１２６）。
これを受けたサービス通信部３２３は、指示に従って処理依頼をサービス３３０に渡すが、ここでは、依頼された処理が、一旦記憶手段１４０から取得したデータをサービス通信部３２３において処理して記憶手段１４０に書き出す処理であるとする。
【００８４】
そこで、サービス通信部３２３は、まずサービス３３０に情報取得指示を送信し（Ｓ１２７）、これを受け取ったサービス３３０が記憶手段１４０から情報を取得して（Ｓ１２８）、サービス通信部３２３に返す（Ｓ１２９）。サービス通信部３２３はその返された情報を処理する（Ｓ１３０）と共に、その情報を記憶手段１４０へ書き出すことをサービス３３０に指示する（Ｓ１３１）。サービス３３０はこの指示に応じて記憶手段１４０に情報を書き出し、実行結果を返す（Ｓ１３３）。
【００８５】
以上によりステップＳ１２６の指示に応じた処理が完了するので、サービス通信部３２３は実行結果を描画部３２０へ返す（Ｓ１３４）。
そして、描画部３２０は、受け取った実行結果に基づき、ＯＳ１００から渡された印刷すべき文書のデータを、同じく渡された印刷設定に基づき、ＭＦＰ３０が解釈してその印刷設定に従った印刷を実行可能な印刷データに変換して、ＭＦＰ３０への送信を担当する不図示のスプーラに渡す印刷処理を行う（Ｓ１３５）。
【００８６】
なお、印刷処理中あるいは処理終了後にも、必要に応じてステップＳ１２６〜Ｓ１３４と同様にサービス３３０を利用した処理を行うことができる（図９のステップＳ１１０〜Ｓ１１４のような手順でもよい）。
そして、印刷処理が完了すると、ステップＳ１２１及びＳ１２２の指示に対する実行結果を、ＯＳ１００を介してアプリケーション１３０に返す（Ｓ１３６，Ｓ１３７）。
以上の処理により、指定した文書を指定した印刷設定に従ってＭＦＰ３０に印刷させるための印刷データを、描画部３２０に生成させることができる。
【００８７】
以上の図９及び図１０の処理において、一旦起動されたサービス３３０は停止されるまで常に動作しており、任意のタイミングで処理を依頼することができる。
また、印刷設定部３１０及び描画部３２０からサービス３３０に依頼可能な処理には、例えば図１１に示すような各種データの、記憶手段１４０に対する読み書きが挙げられる。なお、記憶手段１４０は、ＲＡＭ２３又はＨＤＤ２５の適当な記憶領域に設けることができる。
【００８８】
そして、記憶手段１４０に読み書きするデータとしては、以下のものが挙げられる。
・ある程度以上の時間がかかる計算を高速に実施するために印刷設定部３１０で使用する印刷設定部用キャッシュデータ
・印刷設定画面等で頻繁に使用するプリンタドライバの印刷設定をユーザがお気に入りとして保存する機能における、その設定内容を保存したお気に入り印刷設定データ
・印刷実行時の特定のタイミングに印刷設定部３１０で決定した印刷設定データ（描画部３２０における描画に反映させるべき印刷設定を後で描画部３２０に読み出させるために保存）
・ある程度以上の時間がかかる計算を高速に実施するために描画部３２０で使用する描画部用キャッシュデータ
・集約印刷や逆順印刷等のページのレイアウトや順番を表現するために保存するページの描画データ（印刷データ）
【００８９】
これらのデータは、ファイルあるいはレジストリの形式で記憶手段１４０に保存することができる。また、保存位置は、印刷設定部３１０及び描画部３２０が適宜定めることができる。
これらの処理を印刷設定部３１０及び描画部３２０から随時サービス３３０に依頼することにより、単なる記憶手段１４０からのデータの読み出しや記憶手段１４０へのデータの書き込みだけでなく、印刷設定部３１０及び描画部３２０あるいは不図示の他のプロセスの間での、同期又は非同期のプロセス間通信を行うことができる。そして、これらを用いて各種の便利な機能を提供することができる。
【００９０】
例えば、印刷設定部３１０が作成した設定情報をキャッシュデータとして保存しておき、次に印刷設定画面を開くときに、前回保存したキャッシュデータが示す設定内容を初期値として用いることができる。
また、印刷設定部３１０における任意の時点の設定内容をお気に入り設定情報として保存しておき、以後その設定情報をアイコンのクリック等の簡単な操作で印刷設定画面に呼び出せるようにすることができる。
【００９１】
また、印刷設定部３１０において確定させた設定情報を記憶手段１４０に保存しておき、後で描画部３２０が読み出して印刷に反映させられるようにすることができる。
また、描画部３２０が描画して生成した各ページの印刷データを、集約や逆順ページ等の面付け処理や、印刷ページ順の変更等のために、一時的に記憶手段１４０に保存して、必要に応じて読み出すことができる。
【００９２】
サービス３３０が利用できない場合、これらの機能の提供には支障が出ることが考えられる。しかし、基本的な、印刷設定を受け付けてアプリケーションに返す機能や、集約やページ順変更等の特殊な処理をせずに文書をページ順に描画して印刷データを生成する機能などは、サービス３３０を利用しなくても提供可能とすることができる。従って、サービス３３０が利用できない場合、印刷設定部３１０及び描画部３２０を、サービス３３０を利用しなくても提供可能な範囲で機能を提供する制限モードで動作させるとよい。
【００９３】
次に、図９及び図１０に示した動作シーケンスを実現するための各部の処理について説明する。
まず図１２に、印刷設定部３１０の機能と対応する処理を示す。
印刷設定部３１０は、印刷設定画面を開く処理を検出すると、図１２のフローチャートに示す処理を開始する。
【００９４】
そしてまず、印刷設定画面の提供に必要なサービスの起動指示を、サービス起動判断部３１２へ送信する（Ｓ５１）。そして、その指示に対する応答が起動ＯＫであれば（Ｓ５２）、サービス３３０が利用可能であると判断し、サービス３３０を利用する通常モードで動作をすることとして、以下の、印刷設定画面の表示等の処理へ進む（Ｓ５３）。
【００９５】
一方、応答が起動ＮＧであれば、サービス３３０が利用不能であると判断し、サービス３３０を利用しない制限モードで動作をすることとして、以下の、印刷設定画面の表示等の処理へ進む（Ｓ５４）。
描画部３２０が印刷を要求された場合の処理も、これと同趣旨である。
【００９６】
次に図１３に、サービス起動判断部の機能と対応する処理を示す。
サービス起動判断部３１２は、図１２のステップＳ５１で送信されるサービス起動指示を検出すると、図１３のフローチャートに示す処理を開始する。
そして、まず指示に係るサービスが起動済みであるか否か判断し（Ｓ６１）、起動済みであればサービス起動指示の送信元へ起動ＯＫの応答を送信して（Ｓ６２）処理を終了する。
【００９７】
また、ステップＳ６１で起動済みでなければ、指示に係るサービスの起動指示をサービス管理部３１１へ送信する（Ｓ６３）。そして、起動指示に対する応答が起動ＯＫか否か判断し（Ｓ６４）、起動ＯＫであれば、サービス起動指示の送信元へ起動ＯＫの応答を送信して（Ｓ６２）処理を終了する。
起動ＮＧであれば、サービス起動指示の送信元へ起動ＮＧの応答を送信して（Ｓ６５）処理を終了する。
【００９８】
以上の処理を行うサービス起動判断部３１２が起動手段に該当する。
なお、描画部３２０のサービス起動判断部３２２が行う処理には、ステップＳ６３及びＳ６４に当たる処理がなく、単に指示に係るサービスが起動済みか否かに応じて、ＯＫ又はＮＧの応答を返す。
【００９９】
次に図１４に、サービス管理部の機能と対応する処理を示す。
サービス管理部３１３は、図１３のステップＳ６３で送信されるサービス起動指示を検出すると、図１４のフローチャートに示す処理を開始する。
そして、まず指示に係るサービスの起動条件が満たされているか否か判断し（Ｓ７１）、満たされていれば、該当サービスを起動する（Ｓ７２）。そして、起動が成功すれば（Ｓ７３）、サービス起動指示の送信元へ起動ＯＫの応答を送信し（Ｓ７４）、処理を終了する。起動が失敗すれば、サービス起動指示の送信元へ起動ＮＧの応答を送信し（Ｓ７５）、処理を終了する。
また、ステップＳ７１で起動条件が満たされていない場合も、ステップＳ７５で起動ＮＧの応答を送信し、処理を終了する。
【０１００】
以上の図１２乃至図１４の各部の処理により、印刷設定部３１０及び描画部３２０における処理に必要な場合に、サービス３３０を利用可能な状態とすることができる。また、サービス３３０が利用できない場合でも制限モードでの動作は可能であるので、何らかの事情でサービスを起動できない場合も、最低限の印刷は実行可能である。
【０１０１】
ここで、インストーラパッケージの構成につき、比較例を示す。上述した実施形態においては、ドライバパッケージ４１０がサービスモジュール４１４を含み、ＩＮＦファイル４１１中にインストールすべきサービスのファイル名を記載する例について説明した。
しかし、印刷設定部３１０及び描画部３２０が利用するサービスを確実にインストールする必要がない場合、インストーラパッケージを図１６に示すように構成することも考えられる。
【０１０２】
すなわち、図１６に示すインストーラパッケージ４００′において、サービスモジュール４１４をドライバパッケージ４１０′に含めず、これに対応して、ＩＮＦファイル４１１′にもサービスのファイル名を記載しないようにする。
図１６のＩＮＦファイル４１１′における図５と対応する箇所は、図１７に示すようなる。すなわち、サービス３３０の機能と対応するファイルの記載がない。
【０１０３】
このようにすると、ポイントアンドプリント機能を利用した場合、サービスなしでドライバをインストールすることになる。このため、上述した実施形態のように、プリンタドライバをインストールする際に、そのプリンタドライバが利用するサービスも併せてインストールすると共に起動して、プリンタドライバから利用可能とすることはできない。
従って、サービスを別途インストールする手段が必要となったり、ドライバを制限モードでしか動作させられなかったりすることになるという不具合がある。
【０１０４】
以上で実施形態の説明を終了するが、この発明において、各装置やソフトウェアの具体的な構成、処理の内容、操作の手順、用いるデータの形式等は、実施形態で説明したものに限るものではない。
【０１０５】
印刷設定部３１０及び描画部３２０は、サービス３３０を利用可能な場合には必ずサービス３３０を利用するようにしていたが、必ずしもこのようにする必要はない。例えば、記憶手段１４０に対してデータを読み書きしようとする場合、サービス３３０を介すと種々の構成要素が読み書きに介在するので、処理負荷が高くなる。そこで、可能な場合には、サービス３３０を利用せず、プリンタドライバ３００が備えるＡＰＩ(Application Program Interface)を使用して読み書きを行うようにすることにより、処理負荷を低減することができる。
【０１０６】
なお、InternetExplorer9などのセキュリティが強化されたアプリケーションからの指示により印刷を行う場合、ファイルの書き込みを無効化するサンドボックス等の働きにより、上記のプリンタドライバ３００が備えるＡＰＩを利用しても、記憶手段１４０に対してファイルの書き込みを行うことができない。
【０１０７】
一方、サービス３３０は、セッション０でアプリケーションのプロセスとは独立して動作しているため、ファイル書き込みの制約を受けない。従って、上記のプリンタドライバ３００が備えるＡＰＩでは不可能な場合でも、サービス３３０を利用することにより、ファイルの書き込みを実施することができる可能性がある。
【０１０８】
これらの点を考慮して、例えば、印刷設定部３１０及び描画部３２０が図１２の処理に代えて図１５の処理を実行するようにしてもよい。
この処理において、印刷設定部３１０はまず、受け取った指示が、サービス３３０を利用すべき特定のアプリケーションからの指示であるか否か判断する（ＳＡ）。この特定のアプリケーションは、上述のInternetExplorer9など、プリンタドライバ３００備えるＡＰＩでは記憶手段１４０に対するデータの読み書きの全部又は一部が行えない恐れがあるアプリケーションであり、予め印刷設定部３１０あるいはプリンタドライバ３００に設定しておく。
【０１０９】
そして、ステップＳＡでＹｅｓであれば、サービス３３０を用いないと以後の処理を正常に行えない恐れがあるため、図１２の場合と同様にサービス３３０を利用して処理を行うべく、ステップＳ５１以下の処理に進む。この部分の処理は図１２と同じである。
一方、ステップＳＡでＮｏであれば、プリンタドライバ３００が備えるＡＰＩを用いて、記憶手段１４０へのファイル書き込みをトライする（ＳＢ）。そして、書き込みが成功した場合（ＳＣ）、サービス３３０を利用しなくても記憶手段１４０へのアクセスが可能であることがわかるので、サービス３３０を利用せずに処理を行う通常モードでの動作に移行する（ＳＤ）。
【０１１０】
一方、ステップＳＣで書き込み失敗の場合、ステップＳＡでＹｅｓの場合と同様、ステップＳ５１以下の処理に進む。
以上の処理により、サービス３３０を用いなくても印刷設定部３１０が要求された処理に支障がない場合を適切に選別して、より処理負荷の小さいＡＰＩを利用できるので、全体として印刷設定部３１０の機能を実現するための処理負荷を低減することができる。
【０１１１】
また、上述した実施形態では、デバイスドライバの一例としてプリンタドライバを採り上げて説明したが、これに限られることはない。この発明は、任意のデバイスを制御するデバイスドライバに適用可能である。
また、上述した実施形態におけるクライアント装置１０あるいはサーバ装置２０の機能を、複数の装置に分散して設けたり、１台の装置にまとめて設けたりしてもよい。記憶手段１４０は、クライアント装置１０の外部にある記憶手段であってもよい。
また、使用するＯＳもＷｉｎｄｏｗｓに限られるものではない。
また、この発明は、上述したデバイスドライバ及びサービスの機能と対応する手段を有するプログラムと、そのプログラムから送信された情報を出力する出力手段を有する出力装置とを備えるシステムとして実現することもできる。
【０１１２】
また、この発明によるプログラムは、上述したドライバパッケージあるいはインストーラパッケージと対応するプログラム、あるいはコンピュータに上述したデバイスドライバ及びサービスの機能を実現させるためのプログラムである。
このようなプログラムは、はじめからコンピュータに備えるＲＯＭ等の記憶手段に格納しておいてもよいが、記録媒体であるＣＤ−ＲＯＭあるいはフレキシブルディスク，ＳＲＡＭ，ＥＥＰＲＯＭ，メモリカード等の不揮発性記録媒体（メモリ）に記録して提供することもできる。
【０１１３】
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
また、以上説明してきた各実施形態、動作例及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
【符号の説明】
【０１１４】
１０：クライアント装置、１１，２１：ＣＰＵ、１２，２２：ＲＯＭ、１３，２３：ＲＡＭ、１４，２４：通信Ｉ／Ｆ、１５，２５：ＨＤＤ、１６，２６：ＵＩ部、２０：サーバ装置、３０：ＭＦＰ、４０：ネットワーク、１００：ＯＳ、１１０，１３０：アプリケーション、１２０：ドライバ転送要求部、１４０：記憶手段、２０１：ドライバ管理部、２０２：ドライバ転送部、３００：プリンタドライバ、３１０：印刷設定部、３１１：サービス管理部、３１２，３２２：サービス起動判断部、３１３，３２３：サービス通信部、３２０：描画部、４００，４００′：インストーラパッケージ、４１０，４１０′：ドライバパッケージ、４１１：ＩＮＦファイル、４１２：ドライバモジュール、４１３：データファイル、４２１：インストーラ、４２２：プログラムファイル、４２３：データファイル
【先行技術文献】
【特許文献】
【０１１５】
【特許文献１】特開２００７−２７２２６２号公報
【図１】
2014013426.tif 000003
【図２】
2014013426.tif 000004
【図３】
2014013426.tif 000005
【図４】
2014013426.tif 000006
【図５】
2014013426.tif 000007
【図６】
2014013426.tif 000008
【図７】
2014013426.tif 000009
【図８】
2014013426.tif 000010
【図９】
2014013426.tif 000011
【図１０】
2014013426.tif 000012
【図１１】
2014013426.tif 000013
【図１２】
2014013426.tif 000014
【図１３】
2014013426.tif 000015
【図１４】
2014013426.tif 000016
【図１５】
2014013426.tif 000017
【図１６】
2014013426.tif 000018
【図１７】
2014013426.tif 000019