JP5361358B2 - 情報処理装置およびその制御方法、並びにプログラム - Google Patents

情報処理装置およびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP5361358B2
JP5361358B2 JP2008316274A JP2008316274A JP5361358B2 JP 5361358 B2 JP5361358 B2 JP 5361358B2 JP 2008316274 A JP2008316274 A JP 2008316274A JP 2008316274 A JP2008316274 A JP 2008316274A JP 5361358 B2 JP5361358 B2 JP 5361358B2
Authority
JP
Japan
Prior art keywords
shared memory
information
named shared
printer driver
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008316274A
Other languages
English (en)
Other versions
JP2010140281A (ja
Inventor
英夫 名取
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2008316274A priority Critical patent/JP5361358B2/ja
Priority to US12/620,937 priority patent/US9298522B2/en
Publication of JP2010140281A publication Critical patent/JP2010140281A/ja
Application granted granted Critical
Publication of JP5361358B2 publication Critical patent/JP5361358B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device

Description

本発明は、オペレーティングシステムが提供するAPI(Application Programming Interface)を呼び出すアプリケーションプログラムと、オペレーティングシステムにより呼び出されるプリンタドライバとの間のデータ通信方法、及びプログラムに関するものである。
印刷を行うアプリケーションプログラムは、一般的にオペレーティングシステム(以下OSと略す)が提供するAPIを介して、印刷にかかわる様々な情報を取得し、また、印刷設定を通知する。
アプリケーションプログラムはプリンタの性能を取得するために、OSが提供するAPIの関数を呼び出す。OSはプリンタの性能をプリンタドライバに問い合わせ、アプリケーションプログラムに返却する。アプリケーションプログラムは返却されたプリンタの性能情報を利用し、印刷時に使用する印刷設定を決定する。そして、アプリケーションプログラムはOSが提供するAPIを呼び出すことで印刷設定をOSやプリンタドライバに通知する。
例えば取り扱うことのできる用紙の種類はプリンタの性能に依存している。そこで、アプリケーションプログラムは、印刷を行うプリンタで取り扱うことができる用紙の種類の一覧を取得する。印刷に使用する用紙の種類はユーザあるいはアプリケーションプログラムが指定する。ユーザに指定させる場合は、アプリケーションプログラムは取得した用紙の種類の一覧を画面に表示し、印刷に使用する用紙の種類をユーザに選択させる。印刷時に用いるためにユーザから選択された設定項目の選択値の集合は印刷設定と呼ばれ、アプリケーションプログラムはOSが提供するAPIを呼び出すことで、OSやプリンタドライバに通知することができる。一般的な設定項目には用紙の種類の他に、用紙のサイズや給紙方法、両面印刷、印刷の向き、部数等が挙げられる。
マイクロソフト社のOSであるWindows(登録商標)の場合、プリンタが取り扱うことができる用紙の種類等の一般的な設定項目に関する情報は、DeviceCapabilities関数というAPIを介して取得できる。用紙の種類IDの一覧等における設定項目の情報種別ごとに本関数を呼び出すことで、アプリケーションプログラムは種別ごとの設定値の一覧を取得することが出来る。また、印刷で使用する印刷設定の情報は、CreateDC関数やResetDC関数というAPIを呼び出すことで、アプリケーションプログラムからOSやプリンタドライバに通知出来る。
一方、プリンタ固有の機能に関する情報は、OSが提供する既定のAPI関数では取得出来ないことが多い。例えば、写真印刷で頻繁に用いられる縁無し印刷では、画像を用紙のサイズより大きい領域に印刷する必要が有る為、用紙のサイズからのはみ出し量を指定出来ることが一般的である。これは、ユーザが用紙を斜めにプリンタにセットしたり、あるいは用紙が正しくセットされてもプリンタが用紙を搬送する間に斜めになったりすること想定しているためである。従って、縁無し印刷のはみ出し量の設定値はプリンタにより異なり、はみ出し量が大・中・小の三段階に設定できるプリンタもあれば、はみ出し量が小のみの設定しかできないプリンタも存在する。以下、縁無し印刷のはみ出し量と同様にOSが提供する既定のAPI関数では取得出来ない情報を、ベンダー独自情報と呼ぶ。
Windowsにおいてアプリケーションプログラムがベンダー独自情報を取得するには、プリンタドライバのモジュールが提供するベンダー独自のAPIを利用する手法がある。また、アプリケーションプログラムはOSが提供するExtEscape関数というAPIを利用し、プリンタドライバからベンダー独自情報を取得する手法が有る。
まず、ベンダー独自のAPIを利用する手法について説明する。ベンダー独自のAPIは、プリンタドライバを構成するモジュールにより提供される。このモジュールはプリンタドライバSDKモジュールと呼ばれることがある。アプリケーションプログラムは、まず、プリンタドライバSDKモジュールを特定する。次にLoadLibrary関数を呼び出すことで、プリンタドライバSDKモジュールを、アプリケーションプログラムのプロセスのアドレス空間にマップする。そして、プリンタドライバSDKモジュールが提供するベンダー独自のAPIの関数を呼び出すことで、ベンダー独自情報を取得することができる。(例えば、特許文献1参照)。
次にExtEscape関数を用いる手法について説明する。ExtEscape関数はOSが提供するAPIであり、アプリケーションプログラムとプリンタドライバとの間で独自のデータを受け渡すために使用される。例えば、プリンタドライバが独自の画像処理を行う為のインタフェースを備えているかどうかをアプリケーションプログラムが確認する際にExtEscape関数が使用されている(例えば、特許文献2参照)。
プリンタには数多くの種類があり、その種類ごとに能力が異なるため、OSの種類ごとにプリンタドライバが必要となる。Windowsの場合、多数のプリンタドライバがOSの製品に同梱されている。また、OSの製品に同梱されていない場合でもネットワーク経由で適切なプリンタドライバがマイクロソフト社から自動的にダウンロードされる仕組みがOSに備わっている。このように、Windowsでは多種多様のプリンタに対して印刷するための環境が提供されている。Windowsには、32bit版OSと64bit版OSが存在する。プリンタドライバはOSと密接に動作する為、32bit版Windows製品に同梱されるプリンタドライバは32bitであり、64bit版Windows製品に同梱されるプリンタドライバは64bitとなっている。自動的にダウンロードされるプリンタドライバも同様であり、64bit版OSであれば64bitプリンタドライバが、32bit版OSであれば32bitプリンタドライバがダウンロードされる。
また、Windowsで動作するプリンタドライバにはGDIプリンタドライバとXPSプリンタドライバの二種がある。GDIとはGraphics Device Interfaceの略で、アプリケーションプログラムに対し、出力装置に依存しない画一的な描画指示を行わせるためのプログラムで、Windowsにより提供されている。GDIを介して行われたアプリケーションプログラムの描画指示をプリンタドライバのレンダリングモジュールが解釈し、印刷処理を行うのがGDIプリンタドライバの特徴である。
一方、XPSプリンタドライバの特徴の一つに、スプールファイルに格納されるデバイス非依存の印刷データの形式がXPSであることが挙げられる。XPSとはXML Paper Specificationの略で、マイクロソフト社が提案しているオープン規格の電子文書フォーマットの一つである。GDIを介して行われたアプリケーションプログラムの描画指示は、マイクロソフト社が提供するMXDC(Microsoft XPS Document Converter)によりXPSに変換され、スプールファイルに格納される。XPSプリンタドライバのレンダリングフィルタがXPSを解釈して、印刷処理が行われる。ここで、XPSプリンタドライバのMXDCは、GDIプリンタドライバのレンダリングモジュールに相当する。
図2はベンダー独自のAPIを利用する手法における、アプリケーションプログラムとプリンタドライバの関係を示す模式図の一例である。アプリケーションプログラム201がベンダー独自API関数213を利用する場合、前述した様にベンダー独自API提供モジュール211を、アプリケーションプログラムのプロセスのアドレス空間203にマップする。このためアプリケーションプログラム201は最初に、ベンダー独自API提供モジュール211のモジュール名を特定する必要がある。例えば、アプリケーションプログラム201はOSが提供するAPIであるGetPrinterDriver関数を呼び出すことで、プリンタドライバを構成するモジュールのうち、ユーザインタフェースモジュールと、レンダリングモジュールのファイル名を取得することができる。従って、ユーザインタフェースモジュールあるいはレンダリングモジュールがベンダー独自API関数213を内包することで、アプリケーションプログラム201は、ベンダー独自API提供モジュール211のモジュール名を特定することができる。また、ユーザインタフェースモジュールとレンダリングモジュール以外のモジュールでベンダー独自APIを提供する場合は、後述するExtEscape関数を用いてベンダー独自API提供モジュール211のモジュール名を特定するようにしてもよい。アプリケーションプログラムのプロセスのアドレス空間203にベンダー独自API提供モジュール211をマップした後、アプリケーションプログラム201はベンダー独自API関数213のアドレスを取得し、呼び出しを行う。
図3(A)はOSが提供するAPIであるExtEscape関数の動作を示す模式図の一例である。ExtEscape関数を利用することにより、アプリケーションプログラム201とプリンタドライバはベンダー独自情報の受け渡しを行うことができる。OSの印刷サポート機能301はOSにより提供される機能であり、アプリケーションプログラム201が呼び出したAPI関数の処理を行い、必要に応じてプリンタドライバを呼び出す機能を有する。ユーザインタフェースモジュール311とレンダリングモジュール321はプリンタドライバを構成するモジュール群に含まれる。ユーザインタフェースモジュール311は、印刷に関する各種項目の設定をユーザに行わせ、ユーザの指示に基づいて印刷設定を作成する機能を有する。レンダリングモジュール321は、GDIを介して受け取ったアプリケーションプログラム201の描画指示を、画像に変換したり、あるいは、ページ記述言語に変換したりする機能を有する。
アプリケーションプログラム201は、例えば縁無し印刷におけるはみ出し量の一覧等にて所望するベンダー独自情報を得る為に、ExtEscape関数の引数に、ベンダー独自のEscapeコードを指定する(S311)。また、同時に、後述するEscape処理に必要なデータをExtEscape関数の引数で渡す。アプリケーションプログラム201がExtEscape関数を呼び出すと、OSの印刷サポート機能301は、プリンタドライバのユーザインタフェースモジュール311のDrvDocumentEvent関数を呼び出す(S312)。DrvDocumentEvent関数は、アプリケーションプログラム201がExtEscape関数を呼び出した時の引数を参照することができる。Escapeイベントが通知され、DrvDocumentEvent関数の処理が終了すると(S313)、OSの印刷サポート機能301はプリンタドライバのレンダリングモジュール321のDrvEscape関数を呼び出す(S314)。DrvEscape関数は、アプリケーションプログラム201がExtEscape関数を呼び出した時の引数を参照することができる。DrvEscape関数は引数に応じた処理を行い、ExtEscape関数の返却データを生成することができる。ここで返却データはベンダー独自情報を含む様にする。DrvEscape関数により生成された返却データは、OSの印刷サポート機能301を介してアプリケーションプログラム201に返却される(S315及びS316)。
ここで、32bit版Windows上の32bitアプリケーションプログラム、或いは64bit版Windows上の64bitアプリケーションプログラムがExtEscape関数を呼び出した場合、プリンタドライバは一般的にアプリケーションプログラムと同一プロセスで動作する。一方、64bit版Windows上の32bitアプリケーションプログラムがExtEscape関数を呼び出した場合、64bitプリンタドライバはアプリケーションプログラムの32bitプロセスとは異なる64bitプロセスで動作する。
特開2004−288013 特開平10−248014
しかしながら、従来の手法により、ベンダー独自情報をプリンタドライバからアプリケーションプログラムに返却する場合、下記のような問題があった。
まず、XPSプリンタドライバではExtEscape関数の返却データを生成することが出来ない問題が有る。図3(B)はXPSプリンタドライバにおけるExtEscape関数の動作を示す模式図の一例である。アプリケーションプログラム201はベンダー独自情報を取得する為にベンダー独自のEscapeコードを指定してExtEscape関数を呼び出す(S321)。OSの印刷サポート機能301は、最初にXPSプリンタドライバのユーザインタフェースモジュール331のDrvDocumentEvent関数を呼び出す(S322)。Escapeイベントを通知し、XPSプリンタドライバのユーザインタフェースモジュール331の処理が終了した後(S323)、OSの印刷サポート機能301はMXDC341のDrvEscape関数を呼び出す(S324)。前述した様にMXDC341はマイクロソフト社により提供されているため、ベンダー独自のEscapeコードは未知のEscapeコードとして処理される。従って、ExtEscape関数はベンダー独自のコードに対し、返却データを生成できないため、アプリケーションプログラム201はベンダー独自情報を取得出来ない問題が発生している(S325及びS326)。
次に、64bit版Windows製品に同梱されるプリンタドライバは、ベンダー独自のAPIを32bitアプリケーションプログラムに対して提供出来ない問題が有る。Windowsの仕様により64bitモジュールを32bitアプリケーションプログラムのプロセスのアドレス空間にマップできない。64bit版Windowsでは64bitプリンタドライバが必要とされるが、32bitアプリケーションプログラムも64bitアプリケーションプログラムも動作する。従って64bit版Windowsで動作する32bitアプリケーションプログラムに対して、64bitプリンタドライバがベンダー独自のAPIを提供する為には、64bitプリンタドライバを構成するモジュールに32bitモジュールを少なくとも一つは含める必要が有る。しかしながら、前述した様に64bit版Windows製品に同梱されるプリンタドライバは64bitであるため、32bitモジュールを含まない。従って、64bit版Windows製品に同梱される64bitプリンタドライバでは、ベンダー独自のAPIを32bitアプリケーションプログラムに対して提供出来ない問題が有る。
加えて、Windows製品に同梱されるプリンタドライバの場合、ユーザインタフェースモジュールとレンダリングモジュールではベンダー独自のAPIを提供できない問題がある。これはGetPrinterDriver関数で取得できるユーザインタフェースモジュールとレンダリングモジュールはマイクロソフト社製のモジュールとなっており、他社の独自APIを提供できないためである。さらに、Windows製品に同梱されるXPSプリンタドライバの場合、前述した様にExtEscape関数の返却データを生成できないため、アプリケーションプログラムはベンダー独自API提供モジュールを特定出来ない問題がある。
そこで、本発明は上記の問題に鑑みて成されたものであり、オペレーティングシステム上で動作するアプリケーションプログラムとプリンタドライバとの間のデータ通信方法であり、ベンダー独自APIを用いず、かつ、レンダリングモジュールに依存しないデータ通信方法を提供することを目的とする。
上記目的を達成するために本発明は次のような構成からなる。すなわち、情報処理装置であって、第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成手段と、前記作成手段が作成する前記名前付き共有メモリに情報を格納する格納手段と、前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得する取得手段と、を有し、前記格納手段は、前記プリンタドライバによって実行され、前記取得手段は、前記アプリケーションによって実行されることを特徴とする。
本発明によれば、プリンタドライバはベンダー独自情報を名前付きオブジェクトに格納し、アプリケーションプログラムは名前付きオブジェクトに格納された情報を参照することにより、OSが提供するAPIの仕様に制限されず処理を実行できるという効果を奏する。
さらに、アプリケーションプログラムは名前付き共有メモリ及びExtEscape関数を利用するとしたため、ユーザインタフェースモジュールのイベント処理部あるいはレンダリングモジュールのEscape処理部のどちらでも、ベンダー独自情報を名前付き共有メモリに格納することが可能になる。このことにより、ユーザインタフェースモジュールでの処理が可能になる為、XPSプリンタドライバでも、ベンダー独自情報をアプリケーションプログラムに返却することが出来るという効果を奏する。
さらに、名前付きオブジェクトを用いることで、動作条件の異なるアプリケーションプログラムとプリンタドライバとが別個のプロセスとして動作する場合にも、ベンダー独自情報をアプリケーションプログラムに返却することが出来るという効果を奏する。
さらに、64bit版Windows製品に同梱されているプリンタドライバが、ベンダー独自情報を32bit版アプリケーションプログラムに返却することができるという効果を奏する。
また、アプリケーションプログラムがAPIを呼び出した時にのみプリンタドライバが動作する為、ベンダー独自情報を提供する為のプログラムをサービスや別プロセスとして待機させておく必要が無いという効果を奏する。
以下、図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
まず、本実施形態におけるXPSプリンタドライバの構成と、印刷動作について図5を用いて説明する。また、本実施形態を適用可能なハードウェア構成に関しては図1にて後述する。
<印刷時のXPSプリンタドライバの動作>
図5はオペレーティングシステム上のアプリケーションプログラムが印刷処理をする際にXPSプリンタドライバが動作した場合におけるデータの流れを説明する為のブロック図の一例である。図5において、XPSプリンタドライバを構成するモジュールはユーザインタフェースモジュール411、MXDC421、レイアウトフィルタ523、レンダーフィルタ525である。
アプリケーションプログラム201からOSの印刷サポート機能301を介してユーザインタフェースモジュール411を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。
アプリケーションプログラム201からユーザ操作により印刷指示がなされると、その指示内容はOSの印刷サポート機能301に送られる。具体的にはGDIにより仮想化された印刷領域であるDC(Device Context)が作成され、アプリケーションプログラム201へ供給される。そして、アプリケーションプログラム201により文書データの描画処理がDCに対して行われる。描画内容はMXDC421によりXPS形式に変換され、その結果、XPS形式の印刷データが生成される。XPS形式の印刷データは、OSの印刷サポート機能301によって、印刷ジョブ毎にスプールファイル501として一時的に記憶装置にスプールされる。
ここでアプリケーションプログラム201はGDIに描画を行わせることを前提に説明した。一方、XPS形式の電子文書を作成することができるアプリケーションプログラムの場合は、GDIとMXDC421に頼らずに、作成したXPS形式の印刷データをスプールすることも可能である。
スプールファイル501に格納されたデータはOSの印刷パイプラインサービス511により呼び出されたフィルタパイプライン521に供給される。フィルタパイプライン521は、図示しないXPSプリンタドライバのパイプライン構成ファイルに記述されている任意の数のフィルタによって構成される。印刷装置120が解釈可能な印刷コマンドがXPS形式では無い場合、少なくとも、スプールされたXPS形式のデータを印刷装置が解釈可能な形式の印刷コマンドに変換する為のフィルタが必要となる。図5ではフィルタパイプライン521はレイアウトフィルタ523とレンダーフィルタ525で構成される。レイアウトフィルタ523はスプールファイルからXPS形式の印刷データを取得し、印刷設定に基づき必要に応じて印刷データを編集し出力する。印刷データを加工する必要が無い場合は、取得した印刷データをそのまま出力する。レイアウトフィルタ523の出力は、レンダーフィルタ525に供給される。レンダーフィルタ525は、供給されたXPS形式の印刷データにおける各ページのレンダリング処理を行い、必要な画像処理を行ったうえで、印刷コマンドに変換して出力する。レンダーフィルタ525が出力した印刷コマンドは印刷装置120に供給され、印刷装置120が印刷動作を実行する。
<印刷設定ダイアログ>
次に、ユーザインタフェースモジュール411がユーザに提供する印刷設定ダイアログについて説明する。図6は本実施形態における印刷設定をユーザが操作する際に表示される印刷設定ダイアログの一例を示す図である。印刷設定ダイアログは設定に関する内容を表示するとともに、ユーザによる上記設定内容の変更指示や入力を受け付ける。図6では、OSが提供するAPIでは取得出来ない、縁無し印刷のはみ出し量の情報に関する設定を例として示す。ここでは、前述したDeviceCapabilities関数で得られるプリンタが取り扱うことができる一般的な情報に関する設定項目は図示しない。
図6は縁無し印刷に関する印刷設定を行う為の縁無し設定ダイアログの表示例である。縁無し設定ダイアログ601は表示エリア611、613、615、617、621、623から構成される。縁無し設定部621ではチェックボックスをONに設定することで縁無し印刷機能を有効にすることができる。縁無しはみ出し量設定部623では、縁無し印刷機能が有効な時に、用紙のサイズよりも印刷文書のページを大きく印刷する必要が有る為、印刷文書のページのはみ出し量をどの程度にするかを指定することが出来る。ここでは4段階の調整が可能として、右から、大、中、小、はみ出し量無し、となっている。
ユーザは各項目を選択した後にOKボタン611を押下することで縁無し設定ダイアログ601を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン613を押下すると縁無し設定ダイアログ601が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。標準に戻すボタン615が押下されると縁無し設定ダイアログ601上の各設定項目の設定値が標準状態に戻される。ヘルプボタン617は縁無し設定ダイアログ601の各設定項目に関する説明文を別ウィンドウで表示させることができる。
この様にしてユーザは、ユーザインタフェースモジュール411がユーザに提供する印刷設定ダイアログを介して、用紙のサイズなどの一般的な情報だけではなく、プリンタ固有の性能に関する印刷設定も行うことができる。
<名前付き共有メモリとExtEscape関数を用いた独自データの取得>
次に、アプリケーションプログラム201がExtEscape関数を用いて、XPSプリンタドライバからベンダー独自情報を取得する処理の流れについて説明する。まず名前付き共有メモリについて説明する。名前付き共有メモリは、ファイルマッピングオブジェクトの一種であり、OSにより提供される名前付きオブジェクトの一つである。名前付き共有メモリの特徴として、複数のプロセスからアクセス可能である事が挙げられる。ここでの複数のプロセスというのは32bitプロセスや64bitプロセスを含み、32bitプロセスと64bitプロセスの両方からアクセスが可能であることを意味する。例えば、ExtEscape関数を呼び出すアプリケーションプログラムのプロセスと、OSの印刷サポート機能から呼び出されるプリンタドライバが動作するプロセスとがbit数において一致しない場合でも、名前付き共有メモリを使用することにより各プロセスよりアクセスが可能になる。
図4は本実施形態におけるXPSプリンタドライバにおけるExtEscape関数の動作を示す模式図の一例である。アプリケーションプログラム201はExtEscape関数を呼び出す前に名前付き共有メモリ401を作成し、取得したいベンダー独自情報の種類(例えば、設定項目)を格納する(S401)。続いてベンダー独自情報を取得する為にベンダー独自のEscapeコードと、作成済みの名前付き共有メモリ401の名称とを指定してExtEscape関数を呼び出す(S402)。OSの印刷サポート機能301は、最初にXPSプリンタドライバのユーザインタフェースモジュール331のDrvDocumentEvent関数を呼び出す(S403)。XPSプリンタドライバのユーザインタフェースモジュール331はベンダー独自のEscapeコードを判定し、ExtEscape関数のイベントであれば、ベンダー独自情報の生成を行う。XPSプリンタドライバのユーザインタフェースモジュール331は、引数で渡された名前付き共有メモリ401の名称情報を元に、生成したベンダー独自情報を名前付き共有メモリ401に格納する(S404)。XPSプリンタドライバのユーザインタフェースモジュール331の処理が終了した後(S405)、OSの印刷サポート機能301はMXDC341のDrvEscape関数を呼び出す(S406)。前述した様にMXDC341はマイクロソフト社により提供されているため、ベンダー独自のEscapeコードは未知のEscapeコードとして処理される。従って、ベンダー独自のExtEscape関数の返却データを生成できないため、アプリケーションプログラム201はベンダー独自情報を取得出来ない(S407及びS408)。以上のようにExtEscape関数の処理によってベンダー独自情報を取得できないため、アプリケーションプログラム201はExtEscape関数の処理結果を無視し、名前付き共有メモリ401からベンダー独自情報を取得する(S409)。そして最後にアプリケーションプログラム201は名前付き共有メモリ401を削除する。
図7は名前付き共有メモリとExtEscape関数を用いて、アプリケーションプログラムがベンダー独自情報を取得する処理のタイミングチャートの一例である。最初に、アプリケーションプログラム201が、名前付き共有メモリの名称を決定し、決定した名称を付与した名前付き共有メモリを作成する(701)。アプリケーションプログラム201のプロセス内において複数のベンダー独自情報を同時に取得する可能性があるため、名前付き共有メモリの名称は、プロセスIDとスレッドIDを利用して決定するのが望ましい。続いて、アプリケーションプログラム201は、ExtEscape関数を呼び出す為の処理を行う(702)。まず、アプリケーションプログラム201は、取得したいベンダー独自情報の種類を名前付き共有メモリに格納する。そして、名前付き共有メモリの名称情報を引数に指定し、ベンダー独自のEscapeコードでOSの印刷サポート機能301のExtEscape関数を呼び出す。OSの印刷サポート機能301はExtEscape関数呼び出し(703)を解釈し、ユーザインタフェースモジュール411のDrvDocumentEvent関数の呼び出し(705)を行う。
DrvDocumentEvent関数を呼び出されたユーザインタフェースモジュール411は、名前付き共有メモリへのベンダー独自情報の格納処理を行う(707)。処理の条件として、DrvDocumentEvent関数に通知されたイベントがEscapeイベントで、かつベンダー独自のEscapeコードが指定されている場合、ExtEscape関数の引数で渡された名前付き共有メモリの名称情報に基づいて、名前付き共有メモリにアクセスする。ユーザインタフェースモジュール411は名前付き共有メモリに格納された、ベンダー独自情報の種類を読み出し、この種類に応じたベンダー独自情報を生成し、名前付き共有メモリに格納する。またこの時、ベンダー独自情報の生成に成功したか、或いは、失敗したかを示す生成成否情報も併せて名前付き共有メモリに格納する。以上でユーザインタフェースモジュール411はDrvDocumentEvent関数の処理を終了し、OSの印刷サポート機能301に処理の終了を通知する(709)。
OSの印刷サポート機能301はユーザインタフェースモジュール411のDrvDocumentEvent関数の処理が終了した後に、レンダリングモジュールであるMXDC421のDrvEscape関数を呼び出す(711)。DrvEscape関数を呼び出されたMXDC421は、ベンダー独自Escapeコードが指定されている場合は、その内容を解釈することができない(713)。従って、DrvEscape関数は処理を実行できず、失敗した結果をOSの印刷サポート機能301に返却する(715)。OSの印刷サポート機能301はMXDC421のDrvEscape関数が失敗した処理結果から、ExtEscape関数が処理に失敗した結果をアプリケーションプログラム201に返却値として返却する(717)。
ExtEscape関数の処理が終了した後、アプリケーションプログラム201は次の手順にてベンダー独自情報を取得する(719)。まず、ExtEscape関数の返却値は常に処理失敗を意味することとなるため、アプリケーションプログラム201はこの返却値を無視する。続いてアプリケーションプログラム201は名前付き共有メモリに格納された生成成否情報を参照する。ユーザインタフェースモジュール411がベンダー独自情報の生成に成功していれば、アプリケーションプログラム201は名前付き共有メモリに格納されたベンダー独自情報を取得する。最後に、アプリケーションプログラム201は名前付き共有メモリを削除する(721)。
以上の様に、名前付き共有メモリとOSが提供するExtEscape関数を用いることで、アプリケーションプログラム201はXPSプリンタドライバからベンダー独自情報を取得することができる。従って、64bit版Windows上で32bitアプリケーションプログラムが動作する環境においても、本手法を用いることによりアプリケーションプログラムのプロセスとは異なる64bitプロセスで動作するプリンタドライバがベンダー独自情報を提供することが出来る。
なお、複数の種類のベンダー独自情報を取得する場合、アプリケーションプログラム201は処理701の後に、必要に応じて処理702と処理719を複数回繰り返し、最後に処理721を行えばよいことは言うまでもない。
なお、ここではExtEscape関数の引数として、名前付き共有メモリの名称情報を渡しているが、名称情報を生成する為の情報であってもよい。例えば名前付き共有メモリの名称は、前述した様にプロセスIDとスレッドIDを用いて生成するのが望ましい。従って、プロセスIDとスレッドIDをExtEscape関数の引数に渡してもよい。その場合、ユーザインタフェースモジュール411は、引数として渡されたプロセスIDとスレッドIDを用いて名前付き共有メモリの名称情報を生成し、その名称情報を用いて名前付き共有メモリにアクセスする。
<名前付き共有メモリに格納されるデータの構造>
次に名前付き共有メモリに格納されるデータの構造について説明する。図8は本実施形態における名前付き共有メモリに格納されるデータの構造の一例を示す図である。名前付き共有メモリ801はメンバ811から851までの領域で構成される。
メンバ811は名前付き共有メモリ801のサイズを示す。シグネチャ813は名前付き共有メモリに利用者が付加する任意の値であり、一般的に整数値や短い文字列が用いられる。このシグネチャ813はアプリケーションプログラムとプリンタドライバが共通で識別出来る値にしておくと良い。入力データオフセット815は入力データの位置を示すオフセットであり、名前付き共有メモリ801の先頭からのバイト数などで表される。入力データサイズ817は入力データのサイズであり、後述する入力データ831のサイズをバイト数等で表す。出力データオフセット819は出力データの位置を示すオフセットであり、名前付き共有メモリ801の先頭からのバイト数などで表される。出力データ821は出力データのサイズであり、後述する出力データ841のサイズをバイト数等で表す。
生成可否情報823には、ユーザインタフェースモジュール411がベンダー独自情報の生成に成功したか否かを示す情報が格納される。アプリケーションプログラム201は本情報を参照し、ベンダー独自情報の生成状況を判定する。入力データ831は、アプリケーションプログラム201がプリンタドライバに渡すデータが格納される。ここで、入力データ831はベンダー独自情報における単一の項目のみを要求しても良いし、設定項目の内容を細分化し、複数の設定項目を要求するようなデータを入力データとしてもよい。例えば、複数の設定項目の場合には、印刷設定情報と共に、ベンダー独自情報の種類として縁無し印刷におけるはみ出し量の設定値のリストをまとめて要求するデータを入力データとしても良い。
出力データ841は、ユーザインタフェースモジュール411が生成した、ベンダー独自情報が格納される。例えば、印刷設定情報に応じた縁無し印刷におけるはみ出し量のリスト等が格納される。ここで、入力データ831の入力内容などに従って、メンバ841の内容を細分化し、複数の設定項目を出力データとしてもよい。例えば、機能に応じた縁無し印刷におけるはみ出し量の設定値のリストと共に、リストに含まれる要素の個数を格納しても良い。ただし、入力データ831及び出力データ841に含まれるデータはこれに限定するものではなく、アプリケーションプログラムとユーザインタフェースモジュールとの間で通信すべきデータであればどのようなものでもかまわない。メンバ851は名前付き共有メモリ801の未使用領域である。
<アプリケーションプログラムのベンダー独自情報の取得処理>
次に、アプリケーションプログラムがベンダー独自情報を取得する処理について説明する。図9はアプリケーションプログラムがベンダー独自情報を取得する処理のフローチャートの一例である。まずS901で処理を開始する。続いて、名前付き共有メモリの名称を決定し、名前付き共有メモリを作成する(S903)。次にS905で取得するベンダー独自情報の種類を名前付き共有メモリに格納する。そして名前付き共有メモリの名称情報を引数に指定し、ベンダー独自EscapeコードでExtEscape関数301を呼び出す。続いてS907において、アプリケーションプログラムはExtEscape関数301の返却データを無視し、名前付き共有メモリに格納された生成成否情報823を参照する。続くS909で生成成否情報801からベンダー独自情報の生成に成功したかどうかを判定し、成功していればS911に移り、失敗していればS913に移る。S911では名前付き共有メモリ801に格納されたベンダー独自情報を取得する。S913では、アプリケーションプログラムが取得したいベンダー独自情報を全て取得したかどうかを判定し、取得済みであればS915に移り、取得済みでなければS905に移る。S915では、S903で作成した名前付き共有メモリを削除し、最後にS916で処理を終了する。
<DrvDocumentEvent関数の処理>
次に、ユーザインタフェースモジュールのDrvDocumentEvent関数の処理について説明する。図10はDrvDocumentEvent関数における処理のフローチャートの一例である。
まず、S1001で処理を開始する。続いてS1003で、通知されたイベントの種類がEscapeイベントかどうかを判定し、EscapeイベントならS1005に移り、Escapeイベントで無ければS1011に移る。S1005ではEscapeイベントで渡されたEscapeコードがベンダー独自Escapeコードかどうかを判定し、ベンダー独自EscapeコードであればS1007に移り、ベンダー独自EscapeコードでなければS1009に移る。S1007ではExtEscape関数から引数で渡された名前付き共有メモリの名称情報を取得し、名前付き共有メモリから、ベンダー独自情報の種類を参照する。そして、これに従いベンダー独自情報を生成し、ベンダー独自情報の生成に成功したか失敗したかを示す生成成否情報と共に、名前付き共有メモリに格納する。S1011では通知されたEscapeイベント以外の各種イベントに応じた処理を行い、S1009に移る。S1011の各種イベントと、イベントに応じた処理の内容は本発明に関連が無いため詳細は説明しない。最後にS1009で処理を終了する。
<印刷システムの構成例>
次に図1を用いて本実施形態を適用可能な印刷システムについて説明する。図1は本実施形態における印刷システムの構成を示すブロック図の一例である。本実施形態における印刷システムは大きく印刷装置120とデータ処理装置100により構成され、データ処理装置100はブロック101〜114により構成される。データ処理装置はパーソナルコンピュータなどが想定されるが、本実施形態が実現できれば、どのようなものでも構わない。アプリケーションプログラム及びプリンタドライバが動作可能なOSの環境を有していればよい。
101は、CRT表示装置であり、プリンタドライバのユーザインタフェースモジュールが提供する印刷設定ダイアログ等を表示する。102はCRTCで表示装置用のコントローラである。103は、キーボードなどのデータ入力装置であり、104は、キーボードコントローラである。105は、ポインティングデバイス等の座標入力装置であり、106は、ポインティングデバイスコントローラである。107は、装置全体の制御を司るCPUである。108は、ブートプログラムなどを記憶しているROMである。109は、OS、各アプリケーションプログラム、本実施形態のフローチャートに関るプリンタドライバプログラムの格納場所としてや、さらにはワークエリアとしても利用されるRAMである。110は、OS、各アプリケーションプログラム、本実施形態のフローチャートに関るプログラムを含むプリンタドライバプログラム、フォントデータ、さらにはデータファイル等を記憶しているハードディスク装置であり、111はハードディスクコントローラである。ハードディスク装置110には、スプールファイルも一時的に格納される。112は、可搬性記憶媒体の駆動装置であるフロッピー(登録商標)ディスク装置であり、113はフロッピー(登録商標)ディスクコントローラである。
130はインタフェースであり、114はインタフェースコントローラである。データ処理装置100はインタフェースケーブルを介してインクジェットプリンタなどの印刷装置120に接続される。116は、各デバイスを接続するシステムバスである。本装置に電源が投入されると、CPU107はROM108に格納されているブートプログラムに従って起動し、ハードディスク装置110からOSをロードし、操作者の操作待ち状態になる。そして、操作者からKB103またはPD105からアプリケーションプログラムを介して印刷指示やプリンタドライバの印刷設定変更指示を受けた場合、もしくは自動的に起動するように設定されている場合は、ハードディスク装置110に格納されているプリンタドライバプログラムがRAM109にロードされCPU107により実行される。
<その他の実施形態に関して>
なお、本実施形態では、単一の名前付き共有メモリで入力データと出力データの両方を格納する例を示したが、複数の名前付き共有メモリに分割して格納するようにしても良いことは言うまでもない。
なお、本実施形態では、入力データと出力データを格納するために名前付き共有メモリを使用した例を示したが、他の名前付きオブジェクトでも良いことは言うまでもない。例えば、名前付き共有メモリの代わりにファイルを利用して、入力データと出力データを格納し、ファイルの名称をOSが提供するAPIを介してアプリケーションプログラムからプリンタドライバに通知するといった方法が挙げられる。
また、本実施形態では、名前付き共有メモリの名称を、OSが提供するAPIを介してアプリケーションプログラムからプリンタドライバに通知する例を示したが、名称情報を渡すのではなく、名前付き共有メモリにアクセスするための情報を渡せばよいことは言うまでもない。例えば、名前付き共有メモリにアクセスするために利用する名称情報を生成するための情報を通知する様にしても良い。具体的にはプロセスIDとスレッドIDから名称情報を生成するのであれば、名称情報の生成規則をアプリケーションプログラムとプリンタドライバとの間で合致させた上で、プロセスIDとスレッドIDを通知する様な方法が挙げられる。
また、名前付き共有メモリではなく、他の名前付きオブジェクトを用いる場合、複数のプロセス間で名前付きオブジェクトのハンドルを共用できる場合は、名前付きオブジェクトにアクセスするための情報として、ハンドルを渡せばよいことは言うまでもない。
なお、本実施形態では、OSが提供するAPIとしてExtEscape関数を使用する例を示したが、これに限定されるものではなく、OSの印刷サポート機能を介してプリンタドライバを構成するモジュールが呼び出されるAPIであれば良いことは言うまでもない。例えば、印刷設定情報を格納するDEVMODE構造体のプライベート領域等に、名前付き共有メモリの名称情報とベンダー独自情報を取得するための領域を付加し、DocumentProperties関数や、DeviceCapabilities関数を用いても良いことは言うまでもない。
<本実施形態の効果>
以上の様にすることで、プリンタドライバはベンダー独自情報を名前付きオブジェクトに格納し、アプリケーションプログラムはプリンタドライバによって名前付きオブジェクトに格納された情報を参照することにより、OSが提供するAPIの仕様に制限されず処理を実行できる。また、アプリケーションプログラムがAPIを呼び出した時にのみプリンタドライバが動作する為、ベンダー独自情報を提供する為の別プログラムをサービスや別プロセスとして待機させておく必要が無い。
さらに、アプリケーションプログラムは名前付き共有メモリとExtEscape関数としたため、プリンタドライバにおけるユーザインタフェースモジュールのイベント処理部あるいはレンダリングモジュールのEscape処理部のどちらでも、ベンダー独自情報を名前付き共有メモリに格納することが可能になる。ユーザインタフェースモジュールでの処理が可能になる為、XPSプリンタドライバでも、ベンダー独自情報をアプリケーションプログラムに返却することが出来る。
さらに、名前付きオブジェクトを用いることで、動作条件の異なるアプリケーションプログラムとプリンタドライバが別個のプロセスとして動作する場合にも、ベンダー独自情報をアプリケーションプログラムに返却することが出来る。もちろん、アプリケーションプログラムとプリンタドライバが同一プロセスとして動作する場合でも適用可能である。
さらに、64bit版Windows製品に同梱されているプリンタドライバが、ベンダー独自情報を32bit版アプリケーションプログラムに返却することができる。
以上により、ベンダー独自APIを用いず、かつ、レンダリングモジュールに依存しないデータ通信方法が可能となる。
<備考>
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また本発明の目的は、前述の実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムを読み出し実行することによっても達成される。この場合、記憶媒体から読み出された実行可能なプログラム自体が前述した実施形態の機能を実現することになり、そのプログラム自体およびプログラムを記憶した記憶媒体は本発明を構成することになる。
また、本発明には、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
また、発明の実施の形態は、本発明を中核として構成される装置又は方法を説明している。このため本実施形態には本発明の本質的部分を加えて付加的な構成要件も記載されている。すなわち発明の実施の形態において説明した装置又は方法の構成要件を備えることは、本発明を成立させるための十分条件ではあるものの、必要条件ではない。
印刷システムの構成を示すブロック図である。 ベンダー独自のAPIを利用する手法における、アプリケーションプログラムとプリンタドライバの関係を示す模式図である。 アプリケーションプログラムがExtEscape関数を呼び出した時の従来の処理の流れを説明する為の模式図である。 アプリケーションプログラムがExtEscape関数を呼び出した時の本発明における処理の流れを説明する為の模式図である。 XPSプリンタドライバの構成と印刷動作を説明するための模式図である。 縁無し印刷に関る印刷設定を行う為のダイアログの表示例である。 名前付き共有メモリとExtEscape関数を用いたベンダー独自情報の取得及び関数呼び出しのタイミングチャートである。 名前付き共有メモリに格納されるデータの構造の模式図である。 アプリケーションプログラムがベンダー独自情報を取得する処理のフローチャートである。 DrvDocumentEvent関数の処理のフローチャートである。
符号の説明
120 印刷装置
201 アプリケーションプログラム
301 OSの印刷サポート機能
411 ユーザインタフェースモジュール
421 MXDC
501 スプールファイル
511 OSの印刷パイプラインサービス
521 フィルタパイプライン
523 レイアウトフィルタ
525 レンダーフィルタ

Claims (17)

  1. 第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成手段と、
    前記作成手段が作成する前記名前付き共有メモリに情報を格納する格納手段と、
    前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得する取得手段と、
    を有し、
    前記格納手段は、前記プリンタドライバによって実行され、
    前記取得手段は、前記アプリケーションによって実行されることを特徴とする情報処理装置。
  2. 前記格納手段は、前記アプリケーションが関数を呼び出した場合に、前記作成手段が作成する前記名前付き共有メモリに情報を格納し、
    前記取得手段は、前記アプリケーションが前記関数の返却を受け取った場合に、前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とする請求項1に記載の情報処理装置。
  3. 前記名前付き共有メモリを特定する特定情報を前記アプリケーションから取得する第2の取得手段を更に有し、
    前記第2の取得手段は、前記プリンタドライバによって実行され、
    前記格納手段は、前記第2の取得手段が取得する前記特定情報に基づいて前記名前付き共有メモリを特定して、前記作成手段が作成する前記名前付き共有メモリに情報を格納することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記格納手段は、オペレーティングシステムが用意するアプリケーションプログラミングインタフェースでは取得できない情報を、前記作成手段が作成する前記名前付き共有メモリに格納することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記格納手段は、前記作成手段が作成する前記名前付き共有メモリに前記情報と前記情報の生成に成功したか又は失敗したかを示す生成成否情報とを格納し、
    前記取得手段は、前記格納手段が格納する前記生成成否情報が前記情報の生成に成功したことを示す場合に、前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記オペレーティングシステムが用意する前記アプリケーションプログラミングインタフェースでは取得できない前記情報とは、縁無し印刷のはみ出し量であることを特徴とする請求項4に記載の情報処理装置。
  7. 第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成手段と、
    前記作成手段が作成する前記名前付き共有メモリから情報を取得する取得手段と、
    を有し、
    前記情報は、前記作成手段が作成する前記名前付き共有メモリに前記プリンタドライバによって格納され、
    前記取得手段は、前記アプリケーションによって実行されることを特徴とする情報処理装置。
  8. 第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリに情報を格納する格納手段を有し、
    前記名前付き共有メモリは、前記アプリケーションによって作成され、
    前記格納手段は、前記プリンタドライバによって実行され、
    前記アプリケーションは、前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とする情報処理装置。
  9. コンピューターを、
    第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成手段、
    前記作成手段が作成する前記名前付き共有メモリに情報を格納する格納手段、
    前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得する取得手段、
    として機能させ、
    前記格納手段は、前記プリンタドライバによって実行され、
    前記取得手段は、前記アプリケーションによって実行されることを特徴とするプログラム。
  10. 前記格納手段は、前記アプリケーションが関数を呼び出した場合に、前記作成手段が作成する前記名前付き共有メモリに情報を格納し、
    前記取得手段は、前記アプリケーションが前記関数の返却を受け取った場合に、前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とする請求項9に記載のプログラム。
  11. コンピューターを、
    前記名前付き共有メモリを特定する特定情報を前記アプリケーションから取得する第2の取得手段として更に機能させ、
    前記第2の取得手段は、前記プリンタドライバによって実行され、
    前記格納手段は、前記第2の取得手段が取得する前記特定情報に基づいて前記名前付き共有メモリを特定して、前記作成手段が作成する前記名前付き共有メモリに情報を格納することを特徴とする請求項9または10に記載のプログラム。
  12. 前記格納手段は、オペレーティングシステムが用意するアプリケーションプログラミングインタフェースでは取得できない情報を、前記作成手段が作成する前記名前付き共有メモリに格納することを特徴とする請求項9乃至11のいずれか1項に記載のプログラム。
  13. 前記格納手段は、前記作成手段が作成する前記名前付き共有メモリに前記情報と前記情報の生成に成功したか又は失敗したかを示す生成成否情報とを格納し、
    前記取得手段は、前記格納手段が格納する前記生成成否情報が前記情報の生成に成功したことを示す場合に、前記作成手段が作成する前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とする請求項9乃至12のいずれか1項に記載のプログラム。
  14. 前記オペレーティングシステムが用意する前記アプリケーションプログラミングインタフェースでは取得できない前記情報とは、縁無し印刷のはみ出し量であることを特徴とする請求項12に記載のプログラム。
  15. コンピューターを、
    第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成手段、
    前記作成手段が作成する前記名前付き共有メモリから情報を取得する取得手段、
    として機能させ、
    前記情報は、前記作成手段が作成する前記名前付き共有メモリに前記プリンタドライバによって格納され、
    前記取得手段は、前記アプリケーションによって実行されることを特徴とするプログラム。
  16. コンピューターを、
    第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリに情報を格納する格納手段として機能させ、
    前記名前付き共有メモリは、前記アプリケーションによって作成され、
    前記格納手段は、前記プリンタドライバによって実行され、
    前記アプリケーションは、前記名前付き共有メモリから前記格納手段が格納する前記情報を取得することを特徴とするプログラム。
  17. 第1のビット数で動作するアプリケーションと、前記第1のビット数とは異なる第2のビット数で動作するプリンタドライバの両方がアクセスできる名前付き共有メモリを作成する作成工程と、
    前記作成工程にて作成する前記名前付き共有メモリに情報を格納する格納工程と、
    前記作成工程にて作成する前記名前付き共有メモリから前記格納工程にて格納する前記情報を取得する取得工程と、
    を有し、
    前記格納工程は、前記プリンタドライバによって実行され、
    前記取得工程は、前記アプリケーションによって実行されることを特徴とする情報処理装置の制御方法。
JP2008316274A 2008-12-11 2008-12-11 情報処理装置およびその制御方法、並びにプログラム Active JP5361358B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008316274A JP5361358B2 (ja) 2008-12-11 2008-12-11 情報処理装置およびその制御方法、並びにプログラム
US12/620,937 US9298522B2 (en) 2008-12-11 2009-11-18 Method of data communication between application program and printer driver, and program therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008316274A JP5361358B2 (ja) 2008-12-11 2008-12-11 情報処理装置およびその制御方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2010140281A JP2010140281A (ja) 2010-06-24
JP5361358B2 true JP5361358B2 (ja) 2013-12-04

Family

ID=42240163

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008316274A Active JP5361358B2 (ja) 2008-12-11 2008-12-11 情報処理装置およびその制御方法、並びにプログラム

Country Status (2)

Country Link
US (1) US9298522B2 (ja)
JP (1) JP5361358B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6127695B2 (ja) * 2013-05-01 2017-05-17 株式会社リコー 印刷処理装置及びプログラム
CN106717016B (zh) * 2014-07-18 2020-01-03 惠普发展公司,有限责任合伙企业 一种非瞬变机器可读存储介质、计算设备的系统和用于创建统一资源标识符的方法
JP6632424B2 (ja) * 2016-02-25 2020-01-22 キヤノン株式会社 情報処理装置、プログラム及び制御方法
JP6890938B2 (ja) 2016-08-12 2021-06-18 キヤノン株式会社 情報処理装置
JP2019074884A (ja) 2017-10-13 2019-05-16 キヤノン株式会社 プログラム、データ通信方法、および情報処理装置
JP7234687B2 (ja) 2019-02-27 2023-03-08 ブラザー工業株式会社 モジュール及びプログラム
JP7234688B2 (ja) * 2019-02-27 2023-03-08 ブラザー工業株式会社 プログラム、アプリケーション、情報処理装置
JP7263837B2 (ja) 2019-02-27 2023-04-25 ブラザー工業株式会社 プログラム、アプリケーション、情報処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5964843A (en) * 1996-04-25 1999-10-12 Microsoft Corporation System for enhancing device drivers
US5898422A (en) * 1996-05-31 1999-04-27 International Business Machines Corporation Method and system for recognition of pointers
US5867633A (en) * 1996-12-09 1999-02-02 Hewlett-Packard Company Method and apparatus for processing and printing documents
GB2345557A (en) * 1999-01-07 2000-07-12 Ibm Fast trace log for a multi-processing environment
JP2004288013A (ja) * 2003-03-24 2004-10-14 Canon Inc 印刷制御方法
JP4458929B2 (ja) 2003-07-16 2010-04-28 キヤノン株式会社 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム
JP2005258712A (ja) * 2004-03-10 2005-09-22 Canon Inc オブジェクト管理システム
US20060197968A1 (en) * 2005-03-01 2006-09-07 Vannostrand S L Dicom print driver
JP4165537B2 (ja) * 2005-06-29 2008-10-15 ブラザー工業株式会社 色変換装置および色変換プログラム
JP4551835B2 (ja) * 2005-07-28 2010-09-29 キヤノン株式会社 情報処理装置及び情報処理方法及び印刷制御プログラム

Also Published As

Publication number Publication date
US9298522B2 (en) 2016-03-29
US20100149586A1 (en) 2010-06-17
JP2010140281A (ja) 2010-06-24

Similar Documents

Publication Publication Date Title
US10152332B2 (en) Information processing apparatus, information processing method, and storage medium
JP5361358B2 (ja) 情報処理装置およびその制御方法、並びにプログラム
US9442678B2 (en) Information processing apparatus, information processing system and non-transitory computer-readable information recording medium
KR102549370B1 (ko) 정보 처리 장치, 제어 방법 및 프로그램
US20190303076A1 (en) Print processing system and control method
JP5072676B2 (ja) 情報処理装置、情報処理方法及び印刷システム
US8605316B2 (en) Information processing apparatus and control method thereof, and storage medium
JP2013149085A (ja) 印刷システム、印刷制御装置、および印刷制御プログラム
JP2006309724A (ja) 情報処理装置及び情報処理方法、プログラム、記憶媒体
US8922823B2 (en) Information processing apparatus and storage medium with the function of adding a cover letter to a print job
JP2013004010A (ja) 印刷制御プログラム、情報処理装置及び印刷装置
JP4702948B2 (ja) デバイスドライバをカスタマイズする情報処理装置、方法、記憶媒体
JP6111728B2 (ja) 画像形成出力制御システム、画像形成出力制御プログラム及び情報処理装置
JP2012252635A (ja) 印刷制御装置、印刷制御プログラム及び記録媒体
JP7187226B2 (ja) プログラム、記憶媒体、情報処理装置、及び情報処理装置の制御方法
JP5173354B2 (ja) 印刷システムおよび印刷用プログラム
JP7350525B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP7171227B2 (ja) 情報処理装置、その制御方法およびアプリケーション
JP7242203B2 (ja) 情報処理装置、アプリケーションおよび制御方法
JP4143598B2 (ja) 情報処理装置における管理方法、情報処理装置、プログラム及び記憶媒体
JP2019128856A (ja) プリンタードライバーのカスタマイズツール
JP2006072526A (ja) 情報処理装置およびセットアッププログラム
JP2020071693A (ja) 情報処理装置、及びその制御方法並びにプログラム
JP2008102643A (ja) 画像出力装置、画像出力プログラム、可搬記憶媒体および画像出力システム
JP2018018444A (ja) 情報処理装置および制御方法およびプログラム。

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130415

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130903

R151 Written notification of patent or utility model registration

Ref document number: 5361358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151