IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 沖電気工業株式会社の特許一覧

特開2022-150320設定情報更新方法及びデバイスドライバー
<>
  • 特開-設定情報更新方法及びデバイスドライバー 図1
  • 特開-設定情報更新方法及びデバイスドライバー 図2
  • 特開-設定情報更新方法及びデバイスドライバー 図3
  • 特開-設定情報更新方法及びデバイスドライバー 図4
  • 特開-設定情報更新方法及びデバイスドライバー 図5
  • 特開-設定情報更新方法及びデバイスドライバー 図6
  • 特開-設定情報更新方法及びデバイスドライバー 図7
  • 特開-設定情報更新方法及びデバイスドライバー 図8
  • 特開-設定情報更新方法及びデバイスドライバー 図9
  • 特開-設定情報更新方法及びデバイスドライバー 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022150320
(43)【公開日】2022-10-07
(54)【発明の名称】設定情報更新方法及びデバイスドライバー
(51)【国際特許分類】
   G06F 3/12 20060101AFI20220929BHJP
【FI】
G06F3/12 353
G06F3/12 305
G06F3/12 325
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021052883
(22)【出願日】2021-03-26
(71)【出願人】
【識別番号】000000295
【氏名又は名称】沖電気工業株式会社
(74)【代理人】
【識別番号】100174104
【弁理士】
【氏名又は名称】奥田 康一
(72)【発明者】
【氏名】尾形 恵一
(57)【要約】
【課題】標準設定情報の更新を容易にユーザー毎設定情報に反映できるようにする。
【解決手段】デバイスドライバーの設定情報を更新する設定情報更新方法であり、前記設定情報には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とがあり、前記デバイスドライバーが前記設定情報を扱う際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報が更新される設定情報更新ステップを有する。
【選択図】図5

【特許請求の範囲】
【請求項1】
デバイスドライバーの設定情報を更新する設定情報更新方法であり、
前記設定情報には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とがあり、
前記デバイスドライバーが前記設定情報を扱う際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報が更新される設定情報更新ステップを有する
ことを特徴とする設定情報更新方法。
【請求項2】
前記設定情報更新ステップでは、前記デバイスドライバーが前記設定情報を要求された際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、設定情報更新部が、前記標準設定情報に基づいて前記ユーザー毎設定情報を更新し、
さらに前記設定情報更新部が、更新後の前記ユーザー毎設定情報を要求元に返送する設定情報返送ステップを有する
ことを特徴とする請求項1に記載の設定情報更新方法。
【請求項3】
前記標準設定情報は、前記デバイスドライバーのアップデート時にバージョンアップされるようになっていて、
前記設定情報更新ステップでは、前記標準設定情報とは別に前記ユーザー毎設定情報が存在し、且つ当該ユーザー毎設定情報のバージョンが前記標準設定情報のバージョンと異なる場合に、設定情報更新部が、前記標準設定情報に基づいて前記ユーザー毎設定情報を更新するとともに、前記ユーザー毎設定情報のバージョンを前記標準設定情報のバージョンに一致させる
ことを特徴とする請求項1に記載の設定情報更新方法。
【請求項4】
前記デバイスドライバーの確認ダイアログ表示部が、前記ユーザー毎設定情報を更新してもよいか否かを確認する為の確認ダイアログを表示部に表示させる確認ダイアログ表示ステップをさらに有し、
前記設定情報更新ステップでは、前記確認ダイアログ表示ステップで表示した前記確認ダイアログ上で前記ユーザー毎設定情報の更新を許可する操作が行われた場合には、前記標準設定情報に基づいて前記ユーザー毎設定情報を更新するとともに前記ユーザー毎設定情報のバージョンを前記標準設定情報のバージョンに一致させる処理を実行し、当該確認ダイアログ上で前記ユーザー毎設定情報の更新を許可しない操作が行われた場合には、前記ユーザー毎設定情報のバージョンを前記標準設定情報のバージョンに一致させる処理のみを実行する
ことを特徴とする請求項3に記載の設定情報更新方法。
【請求項5】
前記設定情報更新ステップでは、前記設定情報更新部が、前記標準設定情報の各初期設定値で、前記ユーザー毎設定情報の対応する各設定値を更新する
ことを特徴とする請求項3又は4に記載の設定情報更新方法。
【請求項6】
前記設定情報更新ステップでは、前記設定情報更新部が、前記標準設定情報の各初期設定値のうち、当該標準設定情報のバージョンアップにより更新された設定値で、前記ユーザー毎設定情報の対応する設定値を更新する
ことを特徴とする請求項3又は4に記載の設定情報更新方法。
【請求項7】
前記標準設定情報のバージョンアップ時に、前記標準設定情報の各設定値のうち、更新された設定値がどれなのかを示すマスクデータをマスクデータ作成部が作成するマスクデータ作成ステップをさらに有し、
前記設定情報更新ステップでは、前記設定情報更新部が、前記標準設定情報と、前記ユーザー毎設定情報と、前記マスクデータとをマージ処理部によりマージさせることで、前記標準設定情報の各初期設定値のうち、当該標準設定情報のバージョンアップにより更新された設定値で、前記ユーザー毎設定情報の対応する設定値を更新する
ことを特徴とする請求項6に記載の設定情報更新方法。
【請求項8】
コンピュータにインストールされるデバイスドライバーであり、
前記デバイスドライバーの設定情報には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とがあり、
前記デバイスドライバーが前記設定情報を扱う際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報を更新する処理を前記コンピュータに実行させる
ことを特徴とするデバイスドライバー。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、設定情報更新方法及びデバイスドライバーに関するものである。
【背景技術】
【0002】
PCには、PCに接続されているデバイスをオペレーティングシステム(例えばWindows(登録商標)であり、以下、OSと呼ぶ)によって制御できるようにする為にデバイスドライバーがインストールされている。デバイスドライバーとして例えばプリンタードライバーがインストールされたPCでは、OSによって当該プリンタードライバーに基づく論理プリンターが作成され、当該論理プリンターをアプリケーション上で印刷出力先として選択できるようになっている。OSは、論理プリンターの情報としてプリンターの様々な設定を示す設定情報を保持していて、当該設定情報に基づく印刷出力が可能となっている。
【0003】
論理プリンターの設定情報(つまりプリンタードライバーの設定情報)には、標準の設定を示す設定情報(ここでは標準設定情報と呼ぶ)と、OSにログインするユーザー毎の設定を示す設定情報(ここではユーザー毎設定情報と呼ぶ)とがある。このうち、標準設定情報については、PCにプリンタードライバーをインストールした際にOSによって作成されて保持される。つまり、標準設定情報は、論理プリンターの初期設定値(デフォルト設定値)を示す設定情報となっている。一方で、ユーザー毎設定情報については、ログインしているユーザーがドライバー設定画面などで設定値を指定して保存する操作を行った際にOSによって作成されて保持される。つまり、ユーザー毎設定情報は、ユーザーにより指定された設定値を示す設定情報となっている。
【0004】
プリンタードライバーは、アプリケーションからの設定情報の問い合わせに応じて、保持されている設定情報を返送するようになっている。これにより、アプリケーションでは、設定情報に基づいた印刷出力が可能となっている。
【0005】
ところで、プリンタードライバー(論理プリンター)の設定情報として、標準設定情報のみが保持されている場合(つまりユーザー毎設定情報がまだ作成されていない場合)、プリンタードライバーは、アプリケーションからの設定情報の問い合わせに応じて、保持されている標準設定情報を返送する。これに対して、プリンタードライバー(論理プリンター)の設定情報として、標準設定情報とユーザー毎設定情報の両方が保持されている場合(つまりユーザー毎設定情報が既に作成されている場合)、プリンタードライバーは、アプリケーションからの設定情報の問い合わせに応じて、保持されている標準設定情報とユーザー毎設定情報のうち、ユーザー毎設定情報を返送する。
【0006】
このように、プリンタードライバーは、標準設定情報とユーザー毎設定情報の両方が保持されている場合、ユーザー毎設定情報を優先してアプリケーションに返送するようになっている。
【0007】
また一方で、設定情報の内容(つまり設定値)などを更新する為に、PC上で、プリンタードライバーをアップデートする場合がある。ここで、プリンタードライバーのアップデート時に更新されるのは、標準設定情報のみであり、ユーザー毎設定情報については更新されない。
【0008】
この為、ユーザー毎設定情報が既に作成されている場合、プリンタードライバーを更新しても、設定情報の内容(つまりユーザー毎設定情報の内容)を更新することはできなかった。
【0009】
そこで従来、標準設定情報の設定項目ごとに設定値の更新内容をユーザー毎設定情報に反映するか否かを、専用の設定画面上で管理者に指定させ、反映すると指定された設定項目については、標準設定情報で設定値が更新された際に、当該設定値の更新内容を各ユーザーのユーザー毎設定情報にも反映させるようにした方法が提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2007-122137号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、従来の方法では、わざわざ専用の設定画面を用意して、管理者が、標準設定情報の設定項目ごとに設定値の更新をユーザー毎設定情報に反映するか否か指定しなければならず、標準設定情報の更新内容を容易にユーザー毎設定情報に反映できるとは言い難かった。
【0012】
本発明は以上の点を考慮したものであり、標準設定情報の更新内容を容易にユーザー毎設定情報に反映できる設定情報更新方法及びデバイスドライバーを提案しようとするものである。
【課題を解決するための手段】
【0013】
本発明の設定情報更新方法は、デバイスドライバーの設定情報を更新する設定情報更新方法であり、前記設定情報には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とがあり、前記デバイスドライバーが前記設定情報を扱う際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報が更新される設定情報更新ステップを有する。
【0014】
また本発明のデバイスドライバーは、コンピュータにインストールされるデバイスドライバーであり、前記デバイスドライバーの設定情報には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とがあり、前記デバイスドライバーが前記設定情報を扱う際、前記標準設定情報とは別に前記ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報を更新する処理を前記コンピュータに実行させる。
【0015】
このように、デバイスドライバーが設定情報を扱うタイミングで、ユーザー毎設定情報が存在する場合に、前記標準設定情報に基づいて前記ユーザー毎設定情報を自動的に更新するようにしたことにより、専用の設定画面を用意したり、標準設定情報の設定項目ごとに設定値の更新をユーザー毎設定情報に反映するか否か管理者が指定したりすることなく、標準設定情報の更新内容をユーザー毎設定情報に反映することができる。
【発明の効果】
【0016】
本発明は、標準設定情報の更新内容を容易にユーザー毎設定情報に反映できる設定情報更新方法及びデバイスドライバーを実現できる。
【図面の簡単な説明】
【0017】
図1】第1の実施の形態によるコンピュータシステムの全体構成を示す図である。
図2】第1の実施の形態によるDEVMODEの構成を示す図である。
図3】第1の実施の形態によるUIモジュールの機能構成を示すブロック図である。
図4】第1の実施の形態による確認ダイアログの構成を示す図である。
図5】第1の実施の形態によるUIモジュールの動作を示すフローチャートである。
図6】第1の実施の形態によるDEVMODEの更新例を示す図である。
図7】第2の実施の形態によるUIモジュールの機能構成を示すブロック図である。
図8】第2の実施の形態によるプリンタードライバーのアップデート時のUIモジュールの動作を示すフローチャートである。
図9】第2の実施の形態によるアプリケーションからDEVMODEを要求された際のUIモジュールの動作を示すフローチャートである。
図10】第2の実施の形態によるDEVMODEの更新例を示す図である。
【発明を実施するための形態】
【0018】
以下、発明を実施するための形態(以下、これを実施の形態と呼ぶ)について、図面を用いて詳細に説明する。
【0019】
[1.第1の実施の形態]
[1-1.コンピュータシステムの全体構成]
図1に、第1の実施の形態による、コンピュータシステム1の全体構成を示す。コンピュータシステム1は、ホストコンピュータ10と、ホストコンピュータ10と接続されたプリンター50とで構成される。尚、ホストコンピュータ10とプリンター50とは、例えば、ケーブルにより直接接続されていてもよいし、有線LANや無線LANなどのネットワークを介して接続されていてもよい。
【0020】
つづけて、図1を用いて、ホストコンピュータ10のソフトウェア構成について説明する。尚、ホストコンピュータ10は、CPU、メモリ、記憶装置、各種インタフェースなどの一般的なハードウェアを有していて、CPUが記憶装置に格納されているプログラムをメモリに読み出して実行することにより、図1に示すソフトウェア構成を構築している。
【0021】
すなわち、ホストコンピュータ10上では、OS11とアプリケーション12が動作している。本実施の形態では、OS11としてWindows(登録商標)を想定している。OS11は、複数のユーザーがログインする為のユーザーアカウント13を有している。ここでは、一例として、OS11が、ユーザーAのユーザーアカウント13Aと、ユーザーBのユーザーアカウント13Bと、ユーザーCのユーザーアカウント13Cを有しているとする。
【0022】
またホストコンピュータ10には、プリンター50をOS11によって制御できるようにする為のプリンタードライバー14がインストールされている。プリンタードライバー14は、UIモジュール15と、レンダリングモジュール16とで構成されている。ホストコンピュータ10では、OS11によってプリンタードライバー14に基づく論理プリンターが作成され、当該論理プリンターをアプリケーション12上で印刷出力先として選択できるようになっている。
【0023】
またOS11は、論理プリンターの情報としてプリンター50の様々な設定を示す設定情報を保持していて、当該設定情報に基づく印刷出力が可能となっている。尚、論理プリンターの設定情報(つまりプリンタードライバー14の設定情報)には、標準設定情報としての「標準の設定」DEVMODE17と、ユーザー毎設定情報としての「ユーザー毎」DEVMODE18とがある。
【0024】
「標準の設定」DEVMODE17は、プリンタードライバー14をインストールした際にOS11によって作成されて保持される設定情報であり、論理プリンターの初期設定値(デフォルト設定値)を示す設定情報となっている。この「標準の設定」DEVMODE17は、OS11のプリンタースプーラーサービス19によって保持される。
【0025】
一方、「ユーザー毎」DEVMODE18は、ユーザー毎の設定を示す設定情報であり、ログインしているユーザーがドライバー設定画面などで設定値を指定して保存する操作を行った際にOS11によって作成され、当該ユーザーのユーザーアカウント13に対応付けて保持される。この為、設定値を指定して保存する操作を行っていないユーザーについては、「ユーザー毎」DEVMODE18は存在しない。
【0026】
図1に示す例では、ユーザーAとユーザーBについては、設定値を指定して保存する操作を行った為に、それぞれのユーザーアカウント13A、13Bに対応付けて「ユーザー毎」DEVMODE18A、18Bが保持されている。一方で、ユーザーCについては、設定値を指定して保存する操作を行っていない為に、「ユーザー毎」DEVMODE18が保持されていない。
【0027】
このようにOS11は、プリンタードライバー14に基づく論理プリンターの設定情報(DEVMODE)として、1つの「標準の設定」DEVMODE17と、ユーザー毎の「ユーザー毎」DEVMODE18(18A、18B)を保持している。
【0028】
ここで、図2に、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18の構成を示す。「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18の構成は同一であり、それぞれ基本DEVMODE領域30と、拡張DEVMODE領域31とで構成されている。
【0029】
基本DEVMODE領域30には、主に、一般的なプリンターが共通して備える機能に対応する設定値が含まれている。具体的には、用紙サイズ、給紙箇所、両面印刷の有無などを示す設定値が含まれている。
【0030】
これに対して、拡張DEVMODE領域31には、主に、一般的なプリンターが共通して備える機能以外の独自機能(機種固有の機能など)に対応する設定値が含まれている。具体的には、トナーセーブの有無、カラー調整値などを示す設定値が含まれている。またこの拡張DEVMODE領域31には、DEVMODEのバージョンを示す初期値バージョンが設定値として含まれている。この初期値バージョンについて詳しくは後述する。
【0031】
図1に戻り、アプリケーション12は、OS11の一部であるDDI(Device Driver Interface)20を経由して、プリンタードライバー14による印刷処理を行う。このとき、アプリケーション12は、DDI20に含まれるDocumentProperties関数21を用いて、プリンタードライバー14のUIモジュール15に対する印刷設定の要求(つまりDEVMODEの要求)を行う。またアプリケーション12は、プリンタードライバー14のレンダリングモジュール16に対する描画処理により、プリンター50への印刷出力指示(印刷データの作成指示及び送信指示)を行う。
【0032】
プリンタードライバー14のUIモジュール15は、アプリケーション12から、印刷設定が要求されると、これに応じて、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のどちらか一方を返送する。このとき、UIモジュール15は、ログインしているユーザーの「ユーザー毎」DEVMODE18がまだ作成されていない場合には、「標準の設定」DEVMODE17を返送する。これに対して、ログインしているユーザーの「ユーザー毎」DEVMODE18が既に作成されている場合には、「ユーザー毎」DEVMODE18を返送する。
【0033】
このように、プリンタードライバー14のUIモジュール15は、「ユーザー毎」DEVMODE18が既に作成されているユーザーの場合、「ユーザー毎」DEVMODE18を優先してアプリケーション12に返送するようになっている。
【0034】
ところで、「標準の設定」DEVMODE17の設定内容(つまりデフォルト設定値)などを更新する為に、ホストコンピュータ10上で、プリンタードライバー14をアップデートする場合がある。ここで、論理プリンターを削除せずにプリンタードライバー14のみをアップデートする場合、更新(つまりバージョンアップ)されるのは「標準の設定」DEVMODE17のみであり、「ユーザー毎」DEVMODE18については更新されない。
【0035】
つまり、「ユーザー毎」DEVMODE18が既に作成されているユーザーの場合、プリンタードライバー14のアップデート時に、「標準の設定」DEVMODE17の更新内容を「ユーザー毎」DEVMODE18に反映させることができない。
【0036】
そこで、本実施の形態では、プリンタードライバー14のアップデートにより「標準の設定」DEVMODE17が更新(バージョンアップ)された場合、プリンタードライバー14のUIモジュール15が、アプリケーション12から印刷設定が要求されたタイミングで、「標準の設定」DEVMODE17の更新内容を、「ユーザー毎」DEVMODE18に反映させたうえで、当該「ユーザー毎」DEVMODE18をアプリケーション12に返送するようになっている。
【0037】
つまり、本実施の形態では、プリンタードライバー14のUIモジュール15に、「標準の設定」DEVMODE17の更新内容を、「ユーザー毎」DEVMODE18に反映させる機能を持たせている。
【0038】
ここで、図3に、プリンタードライバー14のUIモジュール15の機能構成を示す。UIモジュール15は、DEVMODE選択処理部40と、初期値バージョン取得・判断部41と、「ユーザー毎」DEVMODE更新処理部42とを有している。またUIモジュール15は、「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43を保持している。尚、プリンタードライバー14のアップデート時、新しいバージョンのプリンタードライバー14に含まれるドライバー初期値DEVMODE43の設定内容が、「標準の設定」DEVMODE17に上書きされることで、「標準の設定」DEVMODE17が更新(バージョンアップ)されるようになっている。
【0039】
DEVMODE選択処理部40は、DDI20に対するプリンタードライバー14側の受け口となるDrvDocumentPropertySheets関数44の処理部であり、アプリケーション12からの印刷設定の要求に応じて、DrvDocumentPropertySheets関数44を用いて返送するDEVMODEとして「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のいずれかを選択する。具体的には、DEVMODE選択処理部40は、ログインしているユーザーの「ユーザー毎」DEVMODE18がまだ作成されていない場合には、「標準の設定」DEVMODE17を選択し、ログインしているユーザーの「ユーザー毎」DEVMODE18が既に作成されている場合には、「ユーザー毎」DEVMODE18を選択する。
【0040】
初期値バージョン取得・判断部41は、ドライバー初期値DEVMODE43に含まれるドライバー定義初期値バージョンと、「ユーザー毎」DEVMODE18に含まれる初期値バージョンとを比較して相違を判断する。ドライバー初期値DEVMODE43に含まれるドライバー定義初期値バージョンは、プリンタースプーラーサービス19によって保持されている「標準の設定」DEVMODE17の初期値バージョンを示している。
【0041】
つまり、ドライバー初期値DEVMODE43に含まれるドライバー定義初期値バージョンと、「ユーザー毎」DEVMODE18に含まれる初期値バージョンとが一致していれば、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のバージョンが一致していることを意味する。一方で、ドライバー初期値DEVMODE43に含まれるドライバー定義初期値バージョンと、「ユーザー毎」DEVMODE18に含まれる初期値バージョンとが一致していなければ、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のバージョンが一致していないこと、つまりプリンタードライバー14のアップデートにより「標準の設定」DEVMODE17が更新(バージョンアップ)されたが、その更新内容が「ユーザー毎」DEVMODE18にはまだ反映されていないことを意味する。
【0042】
「ユーザー毎」DEVMODE更新処理部42は、ログインしているユーザーの「ユーザー毎」DEVMODE18が既に作成されていて、且つ初期値バージョン取得・判断部41によりドライバー初期値DEVMODE43に含まれるドライバー定義初期値バージョン(つまり「標準の設定」DEVMODE17の初期値バージョン)と当該「ユーザー毎」DEVMODE18に含まれる初期値バージョンとが一致していないと判断された場合に、ドライバー初期値DEVMODE43の設定内容に基づいて(つまり「標準の設定」DEVMODE17の設定内容に基づいて)「ユーザー毎」DEVMODE18を更新する。これにより「標準の設定」DEVMODE17の更新内容が「ユーザー毎」DEVMODE18に反映されることになる。
【0043】
また「ユーザー毎」DEVMODE更新処理部42は、「ユーザー毎」DEVMODE18を更新する(つまり印刷設定を上書き更新する)際に、その旨をユーザーに通知する為の確認ダイアログを図示しない表示部に表示させる確認ダイアログ表示部45の機能も有している。
【0044】
ここで、図4に、確認ダイアログ表示部45によって表示される確認ダイアログ46の構成を示す。確認ダイアログ46には、プリンタードライバー14がアップデートされたことによりデフォルトの設定値(つまり「標準の設定」DEVMODE17)が更新された旨と、その更新を、保存されている設定値(つまり「ユーザー毎」DEVMODE18)に反映するか否かを問うメッセージMs1と、OKボタンBt1と、キャンセルボタンBt2とが表示される。
【0045】
「ユーザー毎」DEVMODE更新処理部42は、確認ダイアログ46のOKボタンBt1が押下操作された場合、確認ダイアログ46の表示を終了するとともに、「標準の設定」DEVMODE17の更新内容を「ユーザー毎」DEVMODE18に反映する処理を実行する。これに対して、確認ダイアログ46のキャンセルボタンBt2が押下操作された場合、「ユーザー毎」DEVMODE更新処理部42は、「標準の設定」DEVMODE17の更新内容を「ユーザー毎」DEVMODE18に反映することなく、確認ダイアログ46の表示を終了する。
【0046】
尚、キャンセルボタンBt2が押下操作された場合、「ユーザー毎」DEVMODE更新処理部42は、「ユーザー毎」DEVMODE18の初期値バージョンを、ドライバー初期値DEVMODE43のドライバー定義初期値バージョン(つまり「標準の設定」DEVMODE17の初期値バージョン)で更新する処理のみを実行するようになっている。これにより、キャンセルボタンBt2が押下操作された場合、「標準の設定」DEVMODE17の初期値バージョンと、「ユーザー毎」DEVMODE18の初期値バージョンとが一致することになり、以降、プリンタードライバー14が再びアップデートされるまで、確認ダイアログ46は表示されなくなる。ホストコンピュータ10のソフトウェア構成は、以上のようになっている。
【0047】
[1-2.ホストコンピュータの動作]
次にホストコンピュータ10の動作として、プリンタードライバー14のUIモジュール15が、アプリケーション12からDDI20のDocumentProperties関数21の呼び出しにより印刷設定(つまりDEVMODE)を要求された際の動作について、図5に示すフローチャートを用いて詳しく説明する。尚、この動作は、プリンタードライバー14のUIモジュール15による動作である。
【0048】
まずログインしているユーザーのユーザーアカウント13A上で動作するアプリケーション12が、印刷処理を行うにあたり、印刷ジョブに現在の印刷設定を反映させる為、DDI20のDocumentProperties関数21を呼び出す。DocumentProperties関数21の呼び出しにより、プリンタードライバー14のUIモジュール15は、DEVMODE選択処理部40が、DrvDocumentPropertySheets関数44の処理を開始して、ステップSP1に移る。
【0049】
ステップSP1において、UIモジュール15は、DEVMODE選択処理部40が、OS11のAPIであるGetPrinterAPIにより、ログインしているユーザーの「ユーザー毎」DEVMODE18の取得を試みる。
【0050】
つづくステップSP2において、DEVMODE選択処理部40は、「ユーザー毎」DEVMODE18の取得が成功したかどうかを判断する。ここで、「ユーザー毎」DEVMODE18がまだ作成されていない為に、「ユーザー毎」DEVMODE18の取得が失敗した場合、DEVMODE選択処理部40は、ステップSP2で否定結果を得て、ステップSP12に移り、「標準の設定」DEVMODE17を選択して、これをアプリケーション12に返送し、一連の動作を終了する。
【0051】
これに対して、「ユーザー毎」DEVMODE18が既に作成されている為に、「ユーザー毎」DEVMODE18の取得が成功した場合、DEVMODE選択処理部40は、ステップSP2で否定結果を得て、ステップSP3に移る。
【0052】
ステップSP3において、UIモジュール15の初期値バージョン取得・判断部41は、取得した「ユーザー毎」DEVMODE18から初期値バージョンを取得して、ステップSP4に移る。
【0053】
ステップSP4において、初期値バージョン取得・判断部41は、プリンタードライバー14のドライバー初期値DEVMODE43からドライバー定義初期値バージョン(つまり「標準の設定」DEVMODE17の初期値バージョン)を取得して、ステップSP5に移る。
【0054】
ステップSP5において、初期値バージョン取得・判断部41は、「ユーザー毎」DEVMODE18の初期値バージョンと、ドライバー初期値DEVMODE43のドライバー定義初期値バージョンとを比較し、一致するか否かを判断する。ここで、「ユーザー毎」DEVMODE18の初期値バージョンと、ドライバー初期値DEVMODE43のドライバー定義初期値バージョンとが一致する場合、このことは、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のバージョンが一致していることを意味する。この場合、初期値バージョン取得・判断部41は、ステップSP5で肯定結果を得て、ステップSP9に移る。ステップSP9において、DEVMODE選択処理部40は、「ユーザー毎」DEVMODE18を選択して、これをアプリケーション12に返送し、一連の動作を終了する。
【0055】
これに対して、「ユーザー毎」DEVMODE18の初期値バージョンと、ドライバー初期値DEVMODE43のドライバー定義初期値バージョンとが一致しない場合、このことは、「標準の設定」DEVMODE17と「ユーザー毎」DEVMODE18のバージョンが一致していないこと、つまりプリンタードライバー14のアップデートにより「標準の設定」DEVMODE17が更新(バージョンアップ)されたが、その更新内容が「ユーザー毎」DEVMODE18にはまだ反映されていないことを意味する。この場合、初期値バージョン取得・判断部41は、ステップSP5で否定結果を得て、ステップSP6に移る。
【0056】
ステップSP6において、「ユーザー毎」DEVMODE更新処理部42は、確認ダイアログ表示部45により確認ダイアログ46を表示部に表示させ、ステップSP7に移る。ステップSP7において、「ユーザー毎」DEVMODE更新処理部42は、確認ダイアログ46のOKボタンBt1が押下操作されたか否かを判断する。ここで、OKボタンBt1が押下操作された場合、「ユーザー毎」DEVMODE更新処理部42は、ステップSP7で肯定結果を得て、ステップSP8に移る。
【0057】
ステップSP8において、「ユーザー毎」DEVMODE更新処理部42は、ドライバー初期値DEVMODE43の設定内容に基づいてOS11のAPIであるSetPrinterAPIにより「ユーザー毎」DEVMODE18を上書き更新する。具体的には、ドライバー初期値DEVMODE43の設定内容に基づいて、「ユーザー毎」DEVMODE18の設定内容が、「標準の設定」DEVMODE17の設定内容と同一になるように更新する。これにより、「標準の設定」DEVMODE17の更新内容が、「ユーザー毎」DEVMODE18に反映されたことになる。またこのとき、「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョンと一致することになる。
【0058】
つづくステップSP9において、DEVMODE選択処理部40は、「ユーザー毎」DEVMODE18を選択して、これをアプリケーション12に返送し、一連の動作を終了する。
【0059】
これに対して、確認ダイアログ46のキャンセルボタンBt2が押下操作された場合、「ユーザー毎」DEVMODE更新処理部42は、ステップSP7で否定結果を得て、ステップSP10に移る。ステップSP10において、「ユーザー毎」DEVMODE更新処理部42は、「ユーザー毎」DEVMODE18をメモリ領域にコピーして、メモリ領域上で「ユーザー毎」DEVMODE18の初期値バージョンを、ドライバー初期値DEVMODE43のドライバー定義初期値バージョン(つまり「標準の設定」DEVMODE17の初期値バージョン)で上書きする。さらに「ユーザー毎」DEVMODE更新処理部42は、つづくステップSP11において、SetPrinterAPIにより、初期値バージョンを上書きした「ユーザー毎」DEVMODE18で、OS11に保持されている「ユーザー毎」DEVMODE18を上書き更新する。これにより、「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョンと一致することになる。
【0060】
つづくステップSP9において、DEVMODE選択処理部40は、「ユーザー毎」DEVMODE18を選択して、これをアプリケーション12に返送し、一連の動作を終了する。プリンタードライバー14のUIモジュール15が、アプリケーション12からDDI20のDocumentProperties関数21の呼び出しにより印刷設定(つまりDEVMODE)を要求された際の動作は、以上のようになっている。
【0061】
尚、上述した一連の動作では、ログインしているユーザーの「ユーザー毎」DEVMODE18のみを更新し、他のユーザーの「ユーザー毎」DEVMODE18については更新しない。他のユーザーの「ユーザー毎」DEVMODE18については、他のユーザーがログインしたときに、上述した一連の動作が行われることで更新される。
【0062】
ここで、上述した一連の動作によりDEVMODEがどのように更新されるのかを、図6に示す例を用いて簡単に説明する。
【0063】
図6に示す例は、プリンタードライバー14のアップデートにより、「標準の設定」DEVMODE17に含まれる両面印刷の設定値が「なし」から「長辺綴じ」に更新された場合を示している。
【0064】
ここで、ログインしているユーザーの「ユーザー毎」DEVMODE18がまだ作成されていない場合(つまり未保存の場合)、プリンタードライバー14からアプリケーション12に返送されるDEVMODEは、更新後の「標準の設定」DEVMODE17(つまり新バージョンの「標準の設定」DEVMODE17)となる。この点については、上述した一連の動作を行わない場合(従来)も、上述した一連の動作を行う場合(本実施の形態)も、同様の結果となる。
【0065】
これに対して、ログインしているユーザーの「ユーザー毎」DEVMODE18が既に作成されている場合(つまり保存済みの場合)、プリンタードライバー14からアプリケーション12に返送されるDEVMODEは、「ユーザー毎」DEVMODE18となるが、「ユーザー毎」DEVMODE18の設定内容が、上述した一連の動作を行わない場合(従来)と、上述した一連の動作を行う場合(本実施の形態)とで異なる。
【0066】
尚、「ユーザー毎」DEVMODE18は、ユーザーにより例えば両面印刷の設定値が「短辺綴じ」に指定されているとする。
【0067】
ここで、上述した一連の動作を行わない場合(従来)、「標準の設定」DEVMODE17の更新が「ユーザー毎」DEVMODE18には反映されない為、「標準の設定」DEVMODE17では両面印刷の設定値が「なし」から「長辺綴じ」に更新されているにも関わらず、「ユーザー毎」DEVMODE18では両面印刷の設定値が「短辺綴じ」のままであり、この「ユーザー毎」DEVMODE18がアプリケーション12に返送される。
【0068】
一方、上述した一連の動作を行う場合(本実施の形態)、「標準の設定」DEVMODE17の更新内容が「ユーザー毎」DEVMODE18に反映される為、「標準の設定」DEVMODE17において両面印刷の設定値が「なし」から「長辺綴じ」に更新されたことにともなって、「ユーザー毎」DEVMODE18においても両面印刷の設定値が「短辺綴じ」から「長辺綴じ」に更新され、更新後の「ユーザー毎」DEVMODE18がアプリケーション12に返送される。
【0069】
尚、本実施の形態では、「標準の設定」DEVMODE17の設定内容の全てが、「ユーザー毎」DEVMODE18にコピーされる為、例えば「標準の設定」DEVMODE17の用紙サイズの設定値については、「標準の設定」DEVMODE17のバージョンアップ時に更新されてはいないが(つまり「A4」のままであるが)、「ユーザー毎」DEVMODE18に反映されるようになっている。
【0070】
[1-3.まとめと効果]
ここまで説明したように、第1の実施の形態では、ホストコンピュータ10のOS11によって保持されるプリンタードライバー14の設定情報として、初期設定値を示す標準設定情報としての「標準の設定」DEVMODE17と、ユーザーにより指定された設定値を示すユーザー毎設定情報としての「ユーザー毎」DEVMODE18とがあり、プリンタードライバー14の設定情報更新部としての「ユーザー毎」DEVMODE更新処理部42が、アプリケーション12からDEVMODEを要求された際、「標準の設定」DEVMODE17とは別に「ユーザー毎」DEVMODE18が保持されている場合に、「標準の設定」DEVMODE17に基づいて(具体的には「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43に基づいて)「ユーザー毎」DEVMODE18を更新し、更新した「ユーザー毎」DEVMODE18をアプリケーション12に返送するようにした。
【0071】
すなわち、「ユーザー毎」DEVMODE更新処理部42は、アプリケーション12からDEVMODEを要求された際、ログインしているユーザーの「ユーザー毎」DEVMODE18が保持されていて、且つ当該「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョン(具体的にはドライバー初期値DEVMODE43のドライバー定義初期値バージョン)と異なる場合に、「標準の設定」DEVMODE17の各設定値で、ログインしているユーザーの「ユーザー毎」DEVMODE18の対応する各設定値を上書き更新するようにした。
【0072】
こうすることで、第1の実施の形態では、専用の設定画面を用意したり、「標準の設定」DEVMODE17の設定項目ごとに設定値の更新を「ユーザー毎」DEVMODE18に反映するか否か管理者が指定したりすることなく、ユーザー毎に「標準の設定」DEVMODE17の更新内容を「ユーザー毎」DEVMODE18に反映することができる。かくして、第1の実施の形態では、「標準の設定」DEVMODE17の更新内容を容易に「ユーザー毎」DEVMODE18に反映することができる。
【0073】
また第1の実施の形態では、「ユーザー毎」DEVMODE更新処理部42が、「ユーザー毎」DEVMODE18を更新する前に、確認ダイアログ表示部45により確認ダイアログ46を図示しない表示部に表示させ、確認ダイアログ46上で「ユーザー毎」DEVMODE18の更新を許可する操作(OKボタンBt1の押下操作)が行われた場合、「標準の設定」DEVMODE17に基づいて、「ユーザー毎」DEVMODE18を更新するようにした。このとき、「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョンで上書き更新される。
【0074】
一方で、確認ダイアログ46上で「ユーザー毎」DEVMODE18の更新を許可しない操作(キャンセルボタンBt2の押下操作)が行われた場合、「ユーザー毎」DEVMODE更新処理部42は、「ユーザー毎」DEVMODE18の初期値バージョンのみを「標準の設定」DEVMODE17の初期値バージョンで上書き更新するようにした。
【0075】
こうすることで、第1の実施の形態では、各ユーザーが「標準の設定」DEVMODE17の更新を「ユーザー毎」DEVMODE18に反映するか否かを選択することができ、ユーザーごとに、「ユーザー毎」DEVMODE18を更新したり、更新せずにそのまま使用したりすることができる。またユーザーが確認ダイアログ46上で「ユーザー毎」DEVMODE18の更新を許可しない操作を行えば、以降、プリンタードライバー14をアップデートするまで、当該ユーザーがログインしている間は確認ダイアログ46が表示されなくなり、アプリケーション12で印刷を行う度に確認ダイアログ46が何度も表示されてしまう状況を回避することができる。
【0076】
[2.第2の実施の形態]
次に第2の実施の形態について説明する。この第2の実施の形態は、「標準の設定」DEVMODE17の更新を「ユーザー毎」DEVMODE18に反映する方法が第1の実施の形態とは異なる実施の形態である。具体的には、第1の実施の形態では、「標準の設定」DEVMODE17の設定内容の全てを、「ユーザー毎」DEVMODE18にコピーするようにした。つまり、第1の実施の形態では、更新後の「標準の設定」DEVMODE17の各設定値と、更新後の「ユーザー毎」DEVMODE18の各設定値は一致する。
【0077】
これに対して、第2の実施の形態では、「標準の設定」DEVMODE17に含まれる各設定値(つまり各デフォルト設定値)のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値のみを、「ユーザー毎」DEVMODE18に反映させるようになっている。
【0078】
尚、この第2の実施の形態は、プリンタードライバー14のUIモジュール15の機能構成が、第1の実施の形態と異なる一方で、それ以外の構成は、第1の実施の形態と同様である。ゆえに、ここでは、まずUIモジュール15の機能構成について説明する。以下の説明では、第1の実施の形態と区別する為、第2の実施の形態のUIモジュール15をUIモジュール15Xと呼ぶ。
【0079】
[2-1.UIモジュールの機能構成]
ここで、図7に、UIモジュール15Xの機能構成を示す。UIモジュール15Xは、第1の実施の形態のUIモジュール15の構成に加えて、前バージョン「標準の設定」DEVMODE取得部100と、マスクデータ作成処理部101と、マスクデータ/DEVMODEマージ処理部102とを有している。さらにUIモジュール15Xは、マスクデータ作成処理部101により作成された後述するDEVMODEマスクデータ103を保持している。
【0080】
前バージョン「標準の設定」DEVMODE取得部100は、プリンタードライバー14のアップデート時(つまり「標準の設定」DEVMODE17のバージョンアップ時)に、前バージョンの「標準の設定」DEVMODE17を取得する。尚、前バージョンの「標準の設定」DEVMODE17は、新バージョンのプリンタードライバー14のインストールが開始された直後であれば、まだプリンタースプーラーサービス19によって保持されている為、取得可能である。
【0081】
マスクデータ作成処理部101は、DEVMODEマスクデータ103を作成する。具体的には、マスクデータ作成処理部101は、新バージョンの「標準の設定」DEVMODE17の設定値のうち、前バージョンの「標準の設定」DEVMODE17から更新された設定値がどれなのかを示すDEVMODEマスクデータ103を作成する。つまり、DEVMODEマスクデータ103は、「標準の設定」DEVMODE17の各設定値のうち、プリンタードライバー14のアップデートにより更新された設定値がどれなのかを示すデータとなっている。
【0082】
マスクデータ/DEVMODEマージ処理部102は、マスクデータ作成処理部101により作成されたDEVMODEマスクデータ103と、プリンタードライバー14のアップデートにより更新された「標準の設定」DEVMODE17(つまり新バージョンの「標準の設定」DEVMODE17)と、「ユーザー毎」DEVMODE18をマージする。尚、マージ方法について詳しくは後述するが、DEVMODEマスクデータ103と、プリンタードライバー14のアップデートにより更新された「標準の設定」DEVMODE17と、「ユーザー毎」DEVMODE18をマージすることで、「標準の設定」DEVMODE17の設定値のうち、プリンタードライバー14のアップデートにより更新された設定値のみを、「ユーザー毎」DEVMODE18に反映することができるようになっている。UIモジュール15Xの機能構成は、以上のようになっている。
【0083】
[2-2.ホストコンピュータの動作]
次にホストコンピュータ10の動作として、プリンタードライバー14をアップデート(つまり新バージョンのプリンタードライバー14をインストール)する際の動作と、プリンタードライバー14のアップデート後、UIモジュール15Xが、アプリケーション12から、DDI20のDocumentProperties関数21の呼び出しにより印刷設定(つまりDEVMODE)を要求された際の動作について、順に説明する。
【0084】
まず図8に示すフローチャートを用いて、プリンタードライバー14をアップデート(つまり新バージョンのプリンタードライバー14をインストール)する際の動作について説明する。尚、この動作は、新バージョンのプリンタードライバー14のUIモジュール15Xによる動作である。
【0085】
プリンタードライバー14のアップデート時(つまり新バージョンのプリンタードライバー14のインストール時)、新バージョンのプリンタードライバー14のUIモジュール15Xは、OS11から新バージョンの「標準の設定」DEVMODE17を要求される。
【0086】
ここで、UIモジュール15Xは、ドライバー初期値DEVMODE43を新バージョンの「標準の設定」DEVMODE17として返送する直前のステップSP100において、前バージョン「標準の設定」DEVMODE取得部100が、プリンタースプーラーサービス19から前バージョンの「標準の設定」DEVMODE17を取得する。
【0087】
つづくステップSP101において、マスクデータ作成処理部101は、ドライバー初期値DEVMODE43と、前バージョンの「標準の設定」DEVMODE17と、DEVMODEマスクデータ103のそれぞれに対して、先頭アドレスを設定する。
【0088】
ここで、ドライバー初期値DEVMODE43と、前バージョンの「標準の設定」DEVMODE17は、例えばN個の設定値が所定の順に並べられた共通の構造であり、各設定値が例えば8ビット(1バイト)で示されている。よって、ドライバー初期値DEVMODE43と、前バージョンの「標準の設定」DEVMODE17のそれぞれに対して、先頭アドレスを設定することで、ドライバー初期値DEVMODE43の各設定値と、前バージョンの「標準の設定」DEVMODE17の各設定値とが、先頭アドレスからのバイト数により対応付けられたことになる。
【0089】
一方、DEVMODEマスクデータ103は、ドライバー初期値DEVMODE43の設定値と、前バージョンの「標準の設定」DEVMODE17の設定値とが一致しているか異なっているかを示す1バイトのマスク値が、ドライバー初期値DEVMODE43及び前バージョンの「標準の設定」DEVMODE17の設定値の数と同数のN個並べられた構造となっている。よって、DEVMODEマスクデータ103に対して先頭アドレスを設定することで、ドライバー初期値DEVMODE43の各設定値と、前バージョンの「標準の設定」DEVMODE17の各設定値と、DEVMODEマスクデータ103の各マスク値とが、先頭アドレスからのバイト数により対応付けられたことになる。
【0090】
尚、DEVMODEマスクデータ103の各マスク値は、ドライバー初期値DEVMODE43の設定値と、前バージョンの「標準の設定」DEVMODE17の設定値とが一致していれば「FF」、異なっていれば「00」となるが、この時点では、まだドライバー初期値DEVMODE43の設定値と、前バージョンの「標準の設定」DEVMODE17の設定値とを比較していない為、全てのマスク値が「-」(null)となっている。
【0091】
つづくステップSP102において、マスクデータ作成処理部101は、ドライバー初期値DEVMODE43の現在アドレスの値(つまりn番目の設定値(1≦n≦N))と、前バージョンの「標準の設定」DEVMODE17の現在アドレスの値(つまりn番目の設定値(1≦n≦N))とを比較して、これらが一致しているか否かを判定する。
【0092】
ここで、ドライバー初期値DEVMODE43の現在アドレスの値と、前バージョンの「標準の設定」DEVMODE17の現在アドレスの値とが異なる場合、このことは、ドライバー初期値DEVMODE43のn番目の設定値と、前バージョンの「標準の設定」DEVMODE17のn番目の設定値とが異なることを意味する。このとき、マスクデータ作成処理部101は、ステップSP102で否定結果を得て、ステップSP103に移り、DEVMODEマスクデータ103の現在アドレス値(つまりn番目のマスク値(1≦n≦N))を「00」にして、ステップSP105に移る。尚、ドライバー初期値DEVMODE43の初期値バージョン(つまり新バージョンの「標準の設定」DEVMODE17の初期値バージョン)と、前バージョンの「標準の設定」DEVMODE17の初期値バージョンは必ず異なるので、初期値バージョンに対するマスク値については「00」に固定するなどしてもよい。
【0093】
これに対して、ドライバー初期値DEVMODE43の現在アドレスの値と、前バージョンの「標準の設定」DEVMODE17の現在アドレスの値とが一致する場合、このことは、ドライバー初期値DEVMODE43のn番目の設定値と、前バージョンの「標準の設定」DEVMODE17のn番目の設定値とが一致することを意味する。このとき、マスクデータ作成処理部101は、ステップSP102で肯定結果を得て、ステップSP104に移り、DEVMODEマスクデータ103の現在アドレス値(つまりn番目のマスク値(1≦n≦N))を「FF」にして、ステップSP105に移る。
【0094】
ステップSP105において、マスクデータ作成処理部101は、ドライバー初期値DEVMODE43、前バージョンの「標準の設定」DEVMODE17、及びDEVMODEマスクデータ103のそれぞれについて、1バイト分、アドレス加算を行い(つまりn=n+1として次の設定値に移り)、ステップSP106に移る。
【0095】
ステップSP106において、マスクデータ作成処理部101は、ドライバー初期値DEVMODE43、前バージョンの「標準の設定」DEVMODE17、及びDEVMODEマスクデータ103のそれぞれの現在アドレスが最終アドレスを超えたか否かを判断する。ここで、それぞれの現在アドレスが最終アドレスを超えていない場合、このことは、ドライバー初期値DEVMODE43と、前バージョンの「標準の設定」DEVMODE17の中に、まだ比較し終えていない設定値があることを意味する。この場合、マスクデータ作成処理部101は、ステップSP106で否定結果を得て、ステップSP102に戻り、設定値の比較を継続する。
【0096】
これに対して、ドライバー初期値DEVMODE43、前バージョンの「標準の設定」DEVMODE17、及びDEVMODEマスクデータ103のそれぞれの現在アドレスが最終アドレスを超えた場合、このことは、ドライバー初期値DEVMODE43と、前バージョンの「標準の設定」DEVMODE17の設定値の全てを比較し終え、DEVMODEマスクデータ103が完成したことを意味する。この場合、マスクデータ作成処理部101は、ステップSP106で肯定結果を得て、ステップSP107に移り、完成したDEVMODEマスクデータ103を保持する。
【0097】
つづくステップSP108において、DEVMODE選択処理部40は、ドライバー初期値DEVMODE43を新バージョンの「標準の設定」DEVMODE17としてOS11に返送し、一連の動作を終了する。プリンタードライバー14をアップデート(つまり新バージョンのプリンタードライバー14をインストール)する際の動作は、以上のようになっている。
【0098】
このように、UIモジュール15Xのマスクデータ作成処理部101は、プリンタードライバー14のアップデート時に、新バージョンの「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43の各設定値と、前バージョンの「標準の設定」DEVMODE17の各設定値をそれぞれ比較し、新バージョンの「標準の設定」DEVMODE17の各設定値のうち、前バージョンの「標準の設定」DEVMODE17から更新された設定値がどれなのかを示すDEVMODEマスクデータ103を作成するようになっている。
【0099】
つづけて、図9に示すフローチャートを用いて、プリンタードライバー14のアップデート後、UIモジュール15Xが、アプリケーション12からDDI20のDocumentProperties関数21の呼び出しにより印刷設定(つまりDEVMODE)を要求された際の動作について説明する。尚、図9に示す動作は、第1の実施の形態で説明した図5に示す動作のステップSP8の処理(つまり確認ダイアログ46でOKボタンBt1が押下操作された後の処理)を、ステップSP200、SP201、SP202の処理に置き換えたものである。よって、ここでは、ステップSP200、SP201、SP202の処理を中心に説明する。
【0100】
UIモジュール15Xは、ステップSP1~SP7の処理により、ログインしているユーザーの「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョンとは異なることから、「ユーザー毎」DEVMODE18を更新するか否かをユーザーに選択させる為の確認ダイアログ46を表示部に表示させ、当該確認ダイアログ46上のOKボタンBt1がユーザーにより押下操作されたと判断する。
【0101】
このとき、UIモジュール15Xは、ステップSP7で肯定結果を得て、ステップSP200に移る。ステップSP200において、UIモジュール15Xのマスクデータ/DEVMODEマージ処理部102は、「ユーザー毎」DEVMODE18をメモリ領域にコピーする。
【0102】
つづくステップSP201において、マスクデータ/DEVMODEマージ処理部102は、メモリ領域上で、プリンタードライバー14のアップデート時に作成され保持されているDEVMODEマスクデータ103と、プリンタードライバー14のアップデートにより更新(バージョンアップ)された「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43と、「ユーザー毎」DEVMODE18をマージして、マージした結果を、新たな「ユーザー毎」DEVMODE18とする。
【0103】
具体的には、ドライバー初期値DEVMODE43の各設定値をA、DEVMODEマスクデータ103の各マスク値をB、「ユーザー毎」DEVMODE18の各設定値をCとして、設定値ごとにAor(BandC)の演算を行い、その演算結果を、新たなC(つまり「ユーザー毎」DEVMODE18の各設定値)とする。つづくステップSP202において、「ユーザー毎」DEVMODE更新処理部42は、SetPrinterAPIにより、新たな「ユーザー毎」DEVMODE18で、OS11に保持されている「ユーザー毎」DEVMODE18を上書き更新する。
【0104】
このように、「ユーザー毎」DEVMODE更新処理部42は、マスクデータ/DEVMODEマージ処理部102により、DEVMODEマスクデータ103と、ドライバー初期値DEVMODE43と、「ユーザー毎」DEVMODE18をマージさせることで、ドライバー初期値DEVMODE43の各設定値のうち、対応するマスク値が「00」となっている設定値(つまり「標準の設定」DEVMODE17のバージョンアップ時に更新されたデフォルト設定値)で、ユーザー毎「DEVMODE18」の対応する設定値を上書き更新するようになっている。こうすることで、「標準の設定」DEVMODE17の各設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新されたデフォルト設定値のみが、ユーザー毎「DEVMODE18」に反映されることになる。
【0105】
つづくステップSP9において、DEVMODE選択処理部40は、「ユーザー毎」DEVMODE18を選択して、これをアプリケーション12に返送し、一連の動作を終了する。プリンタードライバー14のUIモジュール15Xが、アプリケーション12からDDI20のDocumentProperties関数21の呼び出しにより印刷設定(つまりDEVMODE)を要求された際の動作は、以上のようになっている。
【0106】
ここで、上述した一連の動作によりDEVMODEがどのように更新されるのかを、図10に示す例を用いて簡単に説明する。
【0107】
図10に示す例は、プリンタードライバー14のアップデートにより、「標準の設定」DEVMODE17の両面印刷の設定値が「なし」から「長辺綴じ」に更新された場合を示している。
【0108】
ここで、ログインしているユーザーの「ユーザー毎」DEVMODE18がまだ作成されていない場合(つまり未保存の場合)、プリンタードライバー14からアプリケーション12に返送されるDEVMODEは、更新後の「標準の設定」DEVMODE17(つまり新バージョンの「標準の設定」DEVMODE17)となる。この点については、第1の実施の形態と同様である。
【0109】
これに対して、ログインしているユーザーの「ユーザー毎」DEVMODE18が既に作成されている場合(つまり保存済みの場合)、プリンタードライバー14からアプリケーション12に返送されるDEVMODEは、「ユーザー毎」DEVMODE18となるが、「ユーザー毎」DEVMODE18の設定内容が、上述した一連の動作を行わない場合(従来)と、上述した一連の動作を行う場合(本実施の形態)とで異なる。
【0110】
尚、「ユーザー毎」DEVMODE18は、ユーザーにより例えば用紙サイズの設定値が「A3」に指定され、両面印刷の設定値が「短辺綴じ」に指定されているとする。
【0111】
ここで、上述した一連の動作を行わない場合(従来)、「標準の設定」DEVMODE17の更新が「ユーザー毎」DEVMODE18には反映されない為、「標準の設定」DEVMODE17では両面印刷の設定値が「なし」から「長辺綴じ」に更新されているにも関わらず、「ユーザー毎」DEVMODE18では両面印刷の設定値が「短辺綴じ」のままであり、この「ユーザー毎」DEVMODE18がアプリケーション12に返送される。
【0112】
一方、上述した一連の動作を行う場合(本実施の形態)、「標準の設定」DEVMODE17の更新が「ユーザー毎」DEVMODE18に反映される為、「標準の設定」DEVMODE17において両面印刷の設定値が「なし」から「長辺綴じ」に更新されたことにともなって、「ユーザー毎」DEVMODE18においても両面印刷の設定値が「短辺綴じ」から「長辺綴じ」に更新され、更新後の「ユーザー毎」DEVMODE18がアプリケーション12に返送される。
【0113】
ところで、第1の実施の形態では、「標準の設定」DEVMODE17の設定内容の全てが「ユーザー毎」DEVMODE18にコピーされるようになっている為、「標準の設定」DEVMODE17の各設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新されていない設定値(例えば用紙サイズのデフォルト設定値「A4」)についても、「ユーザー毎」DEVMODE18に反映されるようになっていた。
【0114】
この為、ユーザーによっては、「ユーザー毎」DEVMODE18の更新後、再度、例えば用紙サイズの設定値を「A4」から「A3」に戻すような作業を行わなければならない。
【0115】
そこで、本実施の形態では、「標準の設定」DEVMODE17の各設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値のみを、「ユーザー毎」DEVMODE18に反映するようにした。
【0116】
こうすることで、図10に示すように、「標準の設定」DEVMODE17の各設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値(例えば両面印刷のデフォルト設定値「長辺綴じ」)のみが、「ユーザー毎」DEVMODE18に反映され、「標準の設定」DEVMODE17のバージョンアップ時に更新されなかった設定値(例えば用紙サイズのデフォルト設定値「A4」)については、「ユーザー毎」DEVMODE18に反映されないよう(つまり「A3」のまま)にすることができる。
【0117】
こうすることで、ユーザーが、「ユーザー毎」DEVMODE18の更新後、再度、用紙サイズの設定値を「A4」から「A3」に戻すような作業を極力行わずに済み、利便性が向上する。
【0118】
[2-3.まとめと効果]
ここまで説明したように、第2の実施の形態では、UIモジュール15Xの「ユーザー毎」DEVMODE更新処理部42が、アプリケーション12からDEVMODEを要求された際、ログインしているユーザーの「ユーザー毎」DEVMODE18が保持されていて、且つ当該「ユーザー毎」DEVMODE18の初期値バージョンが、「標準の設定」DEVMODE17の初期値バージョン(具体的にはドライバー初期値DEVMODE43のドライバー定義初期値バージョン)と異なる場合に、「標準の設定」DEVMODE17の各設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値で、「ユーザー毎」DEVMODE18の対応する設定値を上書更新するようにした。
【0119】
すなわち、「ユーザー毎」DEVMODE更新処理部42は、マスクデータ作成部としてのマスクデータ作成処理部101によって作成された、「標準の設定」DEVMODE17の各設定値のうち「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値を示すDEVMODEマスクデータ103と、新バージョンの「標準の設定」DEVMODE17(具体的にはドライバー初期値DEVMODE43)と、「ユーザー毎」DEVMODE18をマージ処理部としてのマスクデータ/DEVMODEマージ処理部102によりマージさせることで、「標準の設定」DEVMODE17の設定値のうち、「標準の設定」DEVMODE17のバージョンアップ時に更新された設定値で、「ユーザー毎」DEVMODE18の対応する設定値を上書更新するようにした。
【0120】
こうすることで、第2の実施の形態では、第1の実施の形態と同様、専用の設定画面を用意したり、「標準の設定」DEVMODE17の設定項目ごとに設定値の更新を「ユーザー毎」DEVMODE18に反映するか否か管理者が指定したりすることなく、ユーザー毎に「標準の設定」DEVMODE17の更新を「ユーザー毎」DEVMODE18に反映することができる。
【0121】
また第2の実施の形態では、「標準の設定」DEVMODE17のバージョンアップ時に更新されなかった設定値については、「ユーザー毎」DEVMODE18に反映しない為、ユーザーが、「ユーザー毎」DEVMODE18の更新後、再度、変更された設定値を変更前の設定値に戻すような作業を極力行わずに済み、利便性が向上する。
【0122】
[3.他の実施の形態]
[3-1.他の実施の形態1]
尚、上述した第1の実施の形態では、「標準の設定」DEVMODE17の各設定値で、「ユーザー毎」DEVMODE18の対応する各設定値を上書き更新するようにした。また第2の実施の形態では、「標準の設定」DEVMODE17の各設定値のうち、バージョンアップ時に更新された設定値で、「ユーザー毎」DEVMODE18の対応する設定値を更新するようにした。ここで、「ユーザー毎」DEVMODE18を、第1の実施の形態の方法と、第2の実施の形態の方法のどちらの方法で更新するかをユーザーが選択できるようにして、「ユーザー毎」DEVMODE更新処理部42が、ユーザーにより選択された方法で「ユーザー毎」DEVMODE18を更新するようにしてもよい。
【0123】
具体的には、例えば、確認ダイアログ46上で、「ユーザー毎」DEVMODE18を第1の実施の形態の方法で更新するか、第2の実施の形態の方法で更新するかを選択できるようにしたり、図示しないドライバー設定画面上で、選択できるようにしたりすればよい。尚、ユーザーが、第1の実施の形態の方法と第2の実施の形態の方法のどちらの方法を選択するかわからないので、プリンタードライバー14のアップデート時に、DEVMODEマスクデータ103を作成して保持しておくようにする。
【0124】
[3-2.他の実施の形態2]
また、上述した第2の実施の形態では、DEVMODEマスクデータ103(B)と、「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43(A)と、「ユーザー毎」DEVMODE18(C)とを、Aor(BandC)の演算でマージすることで、「標準の設定」DEVMODE17の設定値のうち、プリンタードライバー14のアップデートにより更新された設定値で、「ユーザー毎」DEVMODE18の対応する設定値を上書更新するようにした。これに限らず、同様の結果が得られるのであれば、他の演算方法などを用いて、「ユーザー毎」DEVMODE18を更新するようにしてもよい。
【0125】
[3-3.他の実施の形態3]
さらに上述した第1及び第2の実施の形態では、プリンタードライバー14の「ユーザー毎」DEVMODE更新処理部42が、アプリケーション12からDEVMODEを要求された際に、「標準の設定」DEVMODE17とは別に「ユーザー毎」DEVMODE18が保持されている場合に、「標準の設定」DEVMODE17に基づいて(具体的には「標準の設定」DEVMODE17の元となるドライバー初期値DEVMODE43に基づいて)「ユーザー毎」DEVMODE18を更新するようにした。これに限らず、要は、何らかの理由で、プリンタードライバー14が、インストール後、最初にDEVMODEを扱う際(例えばプリンタードライバー14が自ら使用したり外部に提供したりする際)に、「標準の設定」DEVMODE17に基づいて「ユーザー毎」DEVMODE18を更新するようになっていればよい。
【0126】
またこれに限らず、プリンタードライバー14の「ユーザー毎」DEVMODE更新処理部42を、プリンタードライバー14以外のプログラム(例えばプリンタードライバー14のインストーラや、プリンタードライバー14と一緒にインストールされるプリンタードライバー14から呼び出し可能なモジュールなど)に設けるようにして、当該プログラムに設けられた「ユーザー毎」DEVMODE更新処理部42が、「ユーザー毎」DEVMODE18を更新するようにしてもよい。
【0127】
[3-4.他の実施の形態4]
さらに上述した第1及び第2の実施の形態では、設定情報更新プログラムとしてのプリンタードライバー14に本発明を適用したが、これに限らず、プリンタードライバー14以外のデバイスドライバーに適用してもよい。具体的には、初期設定値を示す標準設定情報と、ユーザーにより指定された設定値を示すユーザー毎設定情報とが用意されたデバイスドライバーが好ましく、例えば、グラフィックボードを制御する為のグラフィックドライバー、DAC(D/Aコンバーター)やスピーカなどのオーディオデバイスを制御する為のオーディオドライバー、複合機やスキャナ、カメラなどのイメージデバイスを制御する為のデバイスドライバーなど、様々なデバイスドライバーに適用することができる。
【0128】
[3-5.他の実施の形態5]
さらに本発明は、上述した各実施の形態に限定されるものではない。すなわち本発明は、上述した各実施の形態の一部または全部を任意に組み合わせた実施の形態や、一部を抽出した実施の形態にもその適用範囲が及ぶものである。
【産業上の利用可能性】
【0129】
本発明は、例えば、PCなどにインストールされるデバイスドライバーで広く利用することができる。
【符号の説明】
【0130】
1……コンピュータシステム、10……ホストコンピュータ、11……OS、12……アプリケーション、13……ユーザーアカウント、14……プリンタードライバー、15、15X……UIモジュール、17……「標準の設定」DEVMODE、18……「ユーザー毎」DEVMODE、40……DEVMODE選択処理部、41……初期値バージョン取得・判断部、42……「ユーザー毎」DEVMODE更新処理部、43……ドライバー初期値DEVMODE、45……確認ダイアログ表示部、46……確認ダイアログ、100……前バージョン「標準の設定」DEVMODE取得部、101……マスクデータ作成処理部、102……マスクデータ/DEVMODEマージ処理部、103……DEVMODEマスクデータ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10