JPH10320343A - プリンタドライバの切替えを行う情報の配信装置 - Google Patents
プリンタドライバの切替えを行う情報の配信装置Info
- Publication number
- JPH10320343A JPH10320343A JP10061761A JP6176198A JPH10320343A JP H10320343 A JPH10320343 A JP H10320343A JP 10061761 A JP10061761 A JP 10061761A JP 6176198 A JP6176198 A JP 6176198A JP H10320343 A JPH10320343 A JP H10320343A
- Authority
- JP
- Japan
- Prior art keywords
- output
- driver
- printer
- file
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1206—Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1296—Printer job scheduling or printer resource handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/126—Job scheduling, e.g. queuing, determine appropriate device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】 複数の異なる出力デバイスの任意の1つに
出力のするソースジョブの配信を改良する。 【解決手段】情報の配信装置であって、コンピュータ上
で動き、出力命令ファイルを含む中間ファイルのフォー
マットの形でソースジョブを生成するアプリケーション
と、出力命令ファイルを処理するための中間の実行可能
なコードの形のプリントプロセッサと、出力デバイスが
使用することができる出力命令に出力命令ファイルを変
換する出力デバイスドライバを有する少なくとも1つの
出力デバイスと、を備え、プリントプロセッサは出力命
令ファイルに作用し、出力命令ファイルを描画するため
少なくとも1つの出力デバイスの1つのデバイスドライ
バを選択し、少なくとも1つの出力デバイスの1つの出
力デバイスドライバに出力命令ファイルを送り込むよう
にした配信装置。
出力のするソースジョブの配信を改良する。 【解決手段】情報の配信装置であって、コンピュータ上
で動き、出力命令ファイルを含む中間ファイルのフォー
マットの形でソースジョブを生成するアプリケーション
と、出力命令ファイルを処理するための中間の実行可能
なコードの形のプリントプロセッサと、出力デバイスが
使用することができる出力命令に出力命令ファイルを変
換する出力デバイスドライバを有する少なくとも1つの
出力デバイスと、を備え、プリントプロセッサは出力命
令ファイルに作用し、出力命令ファイルを描画するため
少なくとも1つの出力デバイスの1つのデバイスドライ
バを選択し、少なくとも1つの出力デバイスの1つの出
力デバイスドライバに出力命令ファイルを送り込むよう
にした配信装置。
Description
【0001】
【発明の属する技術分野】本発明は、例えばアプリケー
ション内の単一の印刷要求から1つあるいは複数の異な
るデバイスに印刷ジョブを送るウィンドウズのオペレー
ティングシステムのように、コンピュータネットワーク
環境内のプリンタドライバ切替えのためのシステムに関
する。
ション内の単一の印刷要求から1つあるいは複数の異な
るデバイスに印刷ジョブを送るウィンドウズのオペレー
ティングシステムのように、コンピュータネットワーク
環境内のプリンタドライバ切替えのためのシステムに関
する。
【0002】
【従来の技術】集中化及び分散化されたコンピュータネ
ットワークは、一緒に接続される周辺装置の幅広い多様
性により利用されるので、それらは互いに通信できる。
コンピュータシステムからデータの出力を必要とするア
プリケーションのために、1つあるいは複数の出力デバ
イスがモニター、プリンタ、ディスクドライブ、あるい
は他の周辺装置の形で提供される。コンピュータネット
ワークの場合においては、利用可能な出力デバイスの数
と多様性が非常に大きく、その結果データ転送の不一致
の問題をもたらす。
ットワークは、一緒に接続される周辺装置の幅広い多様
性により利用されるので、それらは互いに通信できる。
コンピュータシステムからデータの出力を必要とするア
プリケーションのために、1つあるいは複数の出力デバ
イスがモニター、プリンタ、ディスクドライブ、あるい
は他の周辺装置の形で提供される。コンピュータネット
ワークの場合においては、利用可能な出力デバイスの数
と多様性が非常に大きく、その結果データ転送の不一致
の問題をもたらす。
【0003】現在のコンピュータネットワーク環境に関
連する1つの問題は、あるアプリケーションから電子的
データ(electronic material)を、単一のソースアプ
リケーションあるいはソース文書から異なる宛先へ自動
的に送ることが不可能なことである。例えば、現在のウ
ィンドウ・ドライバの解決方法では、オペレーターが印
刷ジョブを、プリントドライバからいくつかの受信デバ
イスまたはプリンタの任意の1つに自動的に送ることが
不可能である。代わりにオペレーターは、選択された出
力デバイスの固有のプリントドライバに出力を配信する
ためシステムを再構成しなければならない。
連する1つの問題は、あるアプリケーションから電子的
データ(electronic material)を、単一のソースアプ
リケーションあるいはソース文書から異なる宛先へ自動
的に送ることが不可能なことである。例えば、現在のウ
ィンドウ・ドライバの解決方法では、オペレーターが印
刷ジョブを、プリントドライバからいくつかの受信デバ
イスまたはプリンタの任意の1つに自動的に送ることが
不可能である。代わりにオペレーターは、選択された出
力デバイスの固有のプリントドライバに出力を配信する
ためシステムを再構成しなければならない。
【0004】現在のウィンドウ・ドライバの解決方法で
は、それぞれのプリンタは専用のプリント・エンジンを
有する出力デバイスを形成するが、関連するプリントプ
ロセッサのために専用のコード化を必要とする。例え
ば、プリントプロセッサは設定されたプリンタのための
描画命令ファイルを作成する。普通、恒久的な連結がア
プリケーション(例えばワードプロセッサ)、中間の描
画ファイル及び単一の専用の出力デバイスの間で備えら
れる。ユーザーは任意に、ウィンドウズによるメニュー
を介していくつかの専用の出力デバイスの1つを選ぶこ
とができる。しかし、このような構成はユーザーが選択
した1つの出力デバイスを使用するために形成され、手
操作で再構成されるまでそのようなデバイスに専用され
たままである。
は、それぞれのプリンタは専用のプリント・エンジンを
有する出力デバイスを形成するが、関連するプリントプ
ロセッサのために専用のコード化を必要とする。例え
ば、プリントプロセッサは設定されたプリンタのための
描画命令ファイルを作成する。普通、恒久的な連結がア
プリケーション(例えばワードプロセッサ)、中間の描
画ファイル及び単一の専用の出力デバイスの間で備えら
れる。ユーザーは任意に、ウィンドウズによるメニュー
を介していくつかの専用の出力デバイスの1つを選ぶこ
とができる。しかし、このような構成はユーザーが選択
した1つの出力デバイスを使用するために形成され、手
操作で再構成されるまでそのようなデバイスに専用され
たままである。
【0005】
【発明が解決しようとする課題】従って、コンピュータ
ネットワーク環境内のコンピュータ操作からの印刷ジョ
ブを、アプリケーション内の単一の印刷要求から、いく
つかの異なる出力デバイスの任意の1つへ配信するシス
テムの必要性が存在する。
ネットワーク環境内のコンピュータ操作からの印刷ジョ
ブを、アプリケーション内の単一の印刷要求から、いく
つかの異なる出力デバイスの任意の1つへ配信するシス
テムの必要性が存在する。
【0006】現在のコンピュータネットワーク環境に関
係する他の問題は、オリジナルのソースデータを複数の
出力デバイスに複数回送ることが不可能なことである。
例えば、現在のウィンドウ・ドライバの解決方法では、
それぞれの出力デバイスに対する必要なコード化を取得
するために、オペレーターがソースデータを複数回自動
的に解析することができない。代わりにオペレーター
は、それぞれの選択された出力デバイスのそれぞれ指定
したプリントドライバにそれぞれ出力の配信を行うため
に、システムを再構成しなければならない。
係する他の問題は、オリジナルのソースデータを複数の
出力デバイスに複数回送ることが不可能なことである。
例えば、現在のウィンドウ・ドライバの解決方法では、
それぞれの出力デバイスに対する必要なコード化を取得
するために、オペレーターがソースデータを複数回自動
的に解析することができない。代わりにオペレーター
は、それぞれの選択された出力デバイスのそれぞれ指定
したプリントドライバにそれぞれ出力の配信を行うため
に、システムを再構成しなければならない。
【0007】本発明は上の欠点を克服する情報の配信装
置と方法に関する。本発明の情報の配信装置は、複数の
異なる出力デバイスの任意の1つに出力のためのソース
ジョブの配信を改良する。また本発明の情報の配信装置
は、単一のソースアプリケーション/ソース文書から複
数の受信側の出力デバイスへのソースジョブの配信を改
良する。
置と方法に関する。本発明の情報の配信装置は、複数の
異なる出力デバイスの任意の1つに出力のためのソース
ジョブの配信を改良する。また本発明の情報の配信装置
は、単一のソースアプリケーション/ソース文書から複
数の受信側の出力デバイスへのソースジョブの配信を改
良する。
【0008】
【課題を解決するための手段】本発明の1つの側面によ
ると、図1から5に一般的に描かれた情報の配信装置は
コンピュータネットワーク環境内で動作する。情報の配
信装置は、オペレーティングシステムを有するコンピュ
ータを含み、コンピュータネットワーク環境内で動作す
るために構成される。装置は、オペレーティングシステ
ムを介してコンピュータ上で走るために構成されたアプ
リケーションを有し、このアプリケーションは出力命令
ファイルを含む中間ファイルのフォーマットの形でソー
スジョブを生成するよう構成されている。装置は、出力
命令ファイルを処理するため中間の実行コードの形でプ
リントプロセッサを含む。また装置は、少なくとも1つ
の出力デバイスを含み、出力デバイスは、出力を作成す
るため出力デバイスが使用できる出力命令に出力命令フ
ァイルを変換するよう構成される出力デバイスドライバ
を有する。プリントプロセッサは、出力命令ファイルを
描画するため少なくとも1つの出力デバイスの1つのデ
バイスドライバを選択し、この出力デバイスドライバに
出力命令ファイルを送り込む。
ると、図1から5に一般的に描かれた情報の配信装置は
コンピュータネットワーク環境内で動作する。情報の配
信装置は、オペレーティングシステムを有するコンピュ
ータを含み、コンピュータネットワーク環境内で動作す
るために構成される。装置は、オペレーティングシステ
ムを介してコンピュータ上で走るために構成されたアプ
リケーションを有し、このアプリケーションは出力命令
ファイルを含む中間ファイルのフォーマットの形でソー
スジョブを生成するよう構成されている。装置は、出力
命令ファイルを処理するため中間の実行コードの形でプ
リントプロセッサを含む。また装置は、少なくとも1つ
の出力デバイスを含み、出力デバイスは、出力を作成す
るため出力デバイスが使用できる出力命令に出力命令フ
ァイルを変換するよう構成される出力デバイスドライバ
を有する。プリントプロセッサは、出力命令ファイルを
描画するため少なくとも1つの出力デバイスの1つのデ
バイスドライバを選択し、この出力デバイスドライバに
出力命令ファイルを送り込む。
【0009】本発明の他の側面によれば、図1から5に
一般的に示された情報の配信装置は、コンピュータネッ
トワーク環境内で動作するための方法を実現する。この
方法はシステム内で実行され、オペレーティングシステ
ム、オペレーティングシステム上で動き出力命令ファイ
ルを含むソースジョブを生成するよう構成されたアプリ
ケーション、および出力を作成するために出力命令ファ
イルを受信するための出力デバイスドライバを有する少
なくとも1つの出力デバイス、を有する型のコンピュー
タネットワーク環境で動作するコンピュータから印刷ジ
ョブを配信する。この方法は次のステップを含む。 ・出力命令ファイルを処理するため中間の実行可能な形
でプリントプロセッサを提供するステップ、 ・コンピュータのメモリ内のメモリの位置から識別され
たプリンタドライバ名のプリンタの詳細を検索するステ
ップ、 ・メモリ内のプリンタドライバの名前を、異なるプリン
タの異なるドライバに変更するステップ、 ・識別されたプリンタドライバ名のプリンタの詳細を、
システム・レジストリ内に新しいプリンタの情報の形で
保存するステップ、 ・保存されたプリンタの詳細の印刷文書の特性をメモリ
から検索するステップ、 ・新しい印刷文書の特性をシステム・レジストリ内に保
存するステップ、 ・新しいプリンタ上で印刷ジョブを実行するために使用
することができるプリントプロセッサのデータ構造を割
り振って初期化するステップ。
一般的に示された情報の配信装置は、コンピュータネッ
トワーク環境内で動作するための方法を実現する。この
方法はシステム内で実行され、オペレーティングシステ
ム、オペレーティングシステム上で動き出力命令ファイ
ルを含むソースジョブを生成するよう構成されたアプリ
ケーション、および出力を作成するために出力命令ファ
イルを受信するための出力デバイスドライバを有する少
なくとも1つの出力デバイス、を有する型のコンピュー
タネットワーク環境で動作するコンピュータから印刷ジ
ョブを配信する。この方法は次のステップを含む。 ・出力命令ファイルを処理するため中間の実行可能な形
でプリントプロセッサを提供するステップ、 ・コンピュータのメモリ内のメモリの位置から識別され
たプリンタドライバ名のプリンタの詳細を検索するステ
ップ、 ・メモリ内のプリンタドライバの名前を、異なるプリン
タの異なるドライバに変更するステップ、 ・識別されたプリンタドライバ名のプリンタの詳細を、
システム・レジストリ内に新しいプリンタの情報の形で
保存するステップ、 ・保存されたプリンタの詳細の印刷文書の特性をメモリ
から検索するステップ、 ・新しい印刷文書の特性をシステム・レジストリ内に保
存するステップ、 ・新しいプリンタ上で印刷ジョブを実行するために使用
することができるプリントプロセッサのデータ構造を割
り振って初期化するステップ。
【0010】他の目的、特徴及び有利な点は、本発明の
以下に与えられる装置及び方法の詳細な説明とシステム
の実施形態から明らかである。
以下に与えられる装置及び方法の詳細な説明とシステム
の実施形態から明らかである。
【0011】
【発明の実施の形態】図1は、コンピュータ10を示
し、これは「コンピュータA」で表され、コンピュータ
ネットワーク環境12で情報を配信するために構成され
る。コンピュータ10は、ソース文書の形で電子的デー
タ(electronic material)を送信することができ、あ
るいはネットワーク環境の複数の受信デバイスにジョブ
を送信することができる。ソース文書は、コンピュータ
10のオペレーティングシステム上で走るアプリケーシ
ョンに応じて生成される。さらに、多数の出力デバイス
14、16及び18は、それぞれ「出力デバイスA」、
「出力デバイスB」、「出力デバイスC」で表し、出力
命令ファイルを受信して出力を作るため受信デバイスを
備える。加えてコンピュータ10は、他のコンピュータ
20と22に接続されており、これらは同様に関連した
出力デバイスを有する(図には示されていないが)。コ
ンピュータ10は、ソース文書をこれらの出力デバイス
の任意の1つに送ることができる。コンピュータ10は
信号通信のため、それぞれの通信リンク24を介して出
力デバイス14、16及び18のそれぞれに一緒に接続
され、あるいは連結されている。同様にコンピュータ1
0は、信号の通信のためそれぞれの通信リンク26を介
して他のコンピュータ20と22に接続され、あるいは
連結されている。リンク24と26は、多くの現在利用
可能な有線あるいは無線の信号接続を用いて形成するこ
とができ、これらの接続はコンピュータネットワークの
接続を形成するのに使用される。そのような接続の1つ
は、ネットワーク12のそれぞれの構成要素を配線で結
びつけることにより形成される。
し、これは「コンピュータA」で表され、コンピュータ
ネットワーク環境12で情報を配信するために構成され
る。コンピュータ10は、ソース文書の形で電子的デー
タ(electronic material)を送信することができ、あ
るいはネットワーク環境の複数の受信デバイスにジョブ
を送信することができる。ソース文書は、コンピュータ
10のオペレーティングシステム上で走るアプリケーシ
ョンに応じて生成される。さらに、多数の出力デバイス
14、16及び18は、それぞれ「出力デバイスA」、
「出力デバイスB」、「出力デバイスC」で表し、出力
命令ファイルを受信して出力を作るため受信デバイスを
備える。加えてコンピュータ10は、他のコンピュータ
20と22に接続されており、これらは同様に関連した
出力デバイスを有する(図には示されていないが)。コ
ンピュータ10は、ソース文書をこれらの出力デバイス
の任意の1つに送ることができる。コンピュータ10は
信号通信のため、それぞれの通信リンク24を介して出
力デバイス14、16及び18のそれぞれに一緒に接続
され、あるいは連結されている。同様にコンピュータ1
0は、信号の通信のためそれぞれの通信リンク26を介
して他のコンピュータ20と22に接続され、あるいは
連結されている。リンク24と26は、多くの現在利用
可能な有線あるいは無線の信号接続を用いて形成するこ
とができ、これらの接続はコンピュータネットワークの
接続を形成するのに使用される。そのような接続の1つ
は、ネットワーク12のそれぞれの構成要素を配線で結
びつけることにより形成される。
【0012】図1に示されたネットワーク環境12によ
ると、出力デバイス14、16及び18とコンピュータ
10、20及び22が、ネットワークのデバイスの間で
ソースジョブと出力命令を転送する時に必要な処理と通
信を行うため、専用のプロセッサを有することが理解で
きる。コンピュータ10、20及び22はウィンドウズ
95(Windows95)のオペレーティングシステムを有
し、ウインドウズ95用の本発明の特化したプリントプ
ロセッサを有する。出力デバイス14、16及び18は
同じ特化したプリントプロセッサを有し、コンピュータ
10のオペレーティングシステム上で走るアプリケーシ
ョンから出力デバイス14、16または18の任意の1
つに直接印刷することを可能にする。
ると、出力デバイス14、16及び18とコンピュータ
10、20及び22が、ネットワークのデバイスの間で
ソースジョブと出力命令を転送する時に必要な処理と通
信を行うため、専用のプロセッサを有することが理解で
きる。コンピュータ10、20及び22はウィンドウズ
95(Windows95)のオペレーティングシステムを有
し、ウインドウズ95用の本発明の特化したプリントプ
ロセッサを有する。出力デバイス14、16及び18は
同じ特化したプリントプロセッサを有し、コンピュータ
10のオペレーティングシステム上で走るアプリケーシ
ョンから出力デバイス14、16または18の任意の1
つに直接印刷することを可能にする。
【0013】コンピュータ10はウィンドウズ95のオ
ペレーティングシステムを含むことが好ましい。「オペ
レーティングシステム」はその資源を管理するためコン
ピュータによって特に使用されるコンピュータプログラ
ムの集合である。
ペレーティングシステムを含むことが好ましい。「オペ
レーティングシステム」はその資源を管理するためコン
ピュータによって特に使用されるコンピュータプログラ
ムの集合である。
【0014】オペレーティングシステムはコンピュータ
システムのすべての資源を制御し、これにはユーザーと
コンピュータとの間の通信を含む。いくつかの典型的な
オペレーティングシステムには、DOS,ウィンドウズ
(Windows)、OS/2,UNIX、そしてマッキント
ッシュ(Macintosh)のシステムが含まれる。またウィ
ンドウズ95(Windows95)のオペレーティングシステ
ムは「マイクロソフトウィンドウズ95 デバイスドラ
イバ開発キット(Microsoft Windows95 Device Driv
er Developers Kit)」を含むことが好ましく、これ
は「マイクロソフト・デベロッパー・ネットワーク・プ
ロフェッショナル・サブスクリプション(Microsoft D
eveloper Network Professional Subscription)」
を注文することによりマクロソフト社から取得すること
ができる。メールアドレスは、”Microsoft Developers
Network、P.O.Box5549、Pleasanton、CA 94556-1549”
である。「マイクロソフト・デベロッパー・ネットワー
ク・プロフェッショナル・サブスクリプション」はCDRO
Mを含み、サンプルのソースコードとアプリケーション
及びデバイスドライバを開発するやり方を記述する説明
資料が添付されている。ドライバ開発キット(DDK)
の1つの構成要素は、印刷システムの構成要素を開発す
るやり方を詳述する。プリントプロセッサは、ドライバ
開発キット(Driver Developers Kit)の中で文書化
された印刷システムの構成要素である。サブスクリプシ
ョン(subscription)は、開発キットの使い方について
のすべての説明資料を含む。
システムのすべての資源を制御し、これにはユーザーと
コンピュータとの間の通信を含む。いくつかの典型的な
オペレーティングシステムには、DOS,ウィンドウズ
(Windows)、OS/2,UNIX、そしてマッキント
ッシュ(Macintosh)のシステムが含まれる。またウィ
ンドウズ95(Windows95)のオペレーティングシステ
ムは「マイクロソフトウィンドウズ95 デバイスドラ
イバ開発キット(Microsoft Windows95 Device Driv
er Developers Kit)」を含むことが好ましく、これ
は「マイクロソフト・デベロッパー・ネットワーク・プ
ロフェッショナル・サブスクリプション(Microsoft D
eveloper Network Professional Subscription)」
を注文することによりマクロソフト社から取得すること
ができる。メールアドレスは、”Microsoft Developers
Network、P.O.Box5549、Pleasanton、CA 94556-1549”
である。「マイクロソフト・デベロッパー・ネットワー
ク・プロフェッショナル・サブスクリプション」はCDRO
Mを含み、サンプルのソースコードとアプリケーション
及びデバイスドライバを開発するやり方を記述する説明
資料が添付されている。ドライバ開発キット(DDK)
の1つの構成要素は、印刷システムの構成要素を開発す
るやり方を詳述する。プリントプロセッサは、ドライバ
開発キット(Driver Developers Kit)の中で文書化
された印刷システムの構成要素である。サブスクリプシ
ョン(subscription)は、開発キットの使い方について
のすべての説明資料を含む。
【0015】この発明によると、図1に示されているよ
うにアプリケーションはコンピュータ10のオペレーテ
ィングシステム上で走る。「アプリケーション」は、コ
ンピュータプログラムであり、仕事のある型の実行を支
援するために構成される。対照的に、オペレーティング
システムはコンピュータを動かし、ユーティリティは保
守(メンテナンス)あるいは一般的な目的の雑用を実行
し、言語はコンピュータプログラムを作るために使用さ
れる。アプリケーションはその個々の設計に基づいて、
テキスト、グラフィックス、数字、あるいはこれらの要
素の組合わせを操作することができる。
うにアプリケーションはコンピュータ10のオペレーテ
ィングシステム上で走る。「アプリケーション」は、コ
ンピュータプログラムであり、仕事のある型の実行を支
援するために構成される。対照的に、オペレーティング
システムはコンピュータを動かし、ユーティリティは保
守(メンテナンス)あるいは一般的な目的の雑用を実行
し、言語はコンピュータプログラムを作るために使用さ
れる。アプリケーションはその個々の設計に基づいて、
テキスト、グラフィックス、数字、あるいはこれらの要
素の組合わせを操作することができる。
【0016】コンピュータ10のオペレーティングシス
テムとネットワーク12はアプリケーションプログラミ
ングインターフェース(API)を含む。APIは、ア
プリケーションが使用するための、オペレーティングシ
ステムにより提供される定義された機能の集合から構成
されている。インターフェースは、所有権がらみのアプ
リケーション・プログラムが通信のソフトウェアと会話
すること、または他のベンダーの製品のプロトコルに準
拠することが必要な場合に使用する機能の定義された集
合の形で存在する。APIは、ネットワーク環境の内外
での垂直方向の通信の標準的な方法を提供する。
テムとネットワーク12はアプリケーションプログラミ
ングインターフェース(API)を含む。APIは、ア
プリケーションが使用するための、オペレーティングシ
ステムにより提供される定義された機能の集合から構成
されている。インターフェースは、所有権がらみのアプ
リケーション・プログラムが通信のソフトウェアと会話
すること、または他のベンダーの製品のプロトコルに準
拠することが必要な場合に使用する機能の定義された集
合の形で存在する。APIは、ネットワーク環境の内外
での垂直方向の通信の標準的な方法を提供する。
【0017】出力デバイス14、16及び18がプリン
タである場合には、各プリンタはプリンタドライバを有
する。「プリンタドライバ」はソフトウェアプログラム
であり、他のプログラムがプリンタのハードウェア及び
内部の言語の詳細と関係なく特定のプリンタを扱うこと
を可能とする。それぞれのプリンタは、正しく動作し固
有の機能と能力の利用を提供するため一定のコードとコ
マンドの集合を必要とする。あるいは出力デバイスがプ
リンタでない場合、出力デバイスはプリンタドライバの
ように機能するデバイスドライバを有する。
タである場合には、各プリンタはプリンタドライバを有
する。「プリンタドライバ」はソフトウェアプログラム
であり、他のプログラムがプリンタのハードウェア及び
内部の言語の詳細と関係なく特定のプリンタを扱うこと
を可能とする。それぞれのプリンタは、正しく動作し固
有の機能と能力の利用を提供するため一定のコードとコ
マンドの集合を必要とする。あるいは出力デバイスがプ
リンタでない場合、出力デバイスはプリンタドライバの
ように機能するデバイスドライバを有する。
【0018】「ドライバ」は、デバイスドライバ及びプ
リンタドライバにおいて言及されているように、特定の
ハードウェア・デバイスあるいは他のソフトウェア・ル
ーチンのいずれかを制御するために書かれたプログラム
あるいはサブプログラムである。「ドライバ」という言
葉は、競馬の騎手あるいは自動車の運転手の概念から起
こり、彼らは馬あるいは車の能力を測定するためにそれ
らのペースを管理する。ハードウェア・ドライバの最も
共通した例は、ハードウェアを制御することであり、こ
れはパーソナルコンピュータに接続されたプリンタの特
定の銘柄あるいは型(モデル)に属するものである。例
えば、ある特定のプリンタドライバは、ワードプロセッ
サが特定の型のドットマトリクスプリンタあるいはレー
ザープリンタと通信することを可能にする。
リンタドライバにおいて言及されているように、特定の
ハードウェア・デバイスあるいは他のソフトウェア・ル
ーチンのいずれかを制御するために書かれたプログラム
あるいはサブプログラムである。「ドライバ」という言
葉は、競馬の騎手あるいは自動車の運転手の概念から起
こり、彼らは馬あるいは車の能力を測定するためにそれ
らのペースを管理する。ハードウェア・ドライバの最も
共通した例は、ハードウェアを制御することであり、こ
れはパーソナルコンピュータに接続されたプリンタの特
定の銘柄あるいは型(モデル)に属するものである。例
えば、ある特定のプリンタドライバは、ワードプロセッ
サが特定の型のドットマトリクスプリンタあるいはレー
ザープリンタと通信することを可能にする。
【0019】他の重要な側面は、出力デバイスをサポー
トするためのプリンタドライバ・ソフトウェアの形で
の、ソフトウェアの必要性である。この時点までは、プ
リンタの機械的な側面のみを詳述してきた。他のレベル
においては、固有の機能の全種類を持ち、幅広い多様な
生産者によって生産される膨大な種類のプリンタによ
り、問題はより複雑になっている。
トするためのプリンタドライバ・ソフトウェアの形で
の、ソフトウェアの必要性である。この時点までは、プ
リンタの機械的な側面のみを詳述してきた。他のレベル
においては、固有の機能の全種類を持ち、幅広い多様な
生産者によって生産される膨大な種類のプリンタによ
り、問題はより複雑になっている。
【0020】プリンタの初期の開発においては、状況は
かなりシンプルだった。使用できるプリンタは、アスキ
ー(ASCII)のテキストと制御文字に応答した。プリン
タに送られた各キャラクタに対して文字が作られた。テ
キストの次の行へ送るには、キャリッジリターン(carr
iage return)と行送りの手段によりなされていた。太
字にするために重ね刷りが必要な場合は、キャリッジリ
ターンのみが送られ、行が再度印刷された。また、タイ
プライタのようなプリンタも使用でき、これはバックス
ペースのキャラクタに対応しているため、太字及び下線
は簡単に成し遂げられた。
かなりシンプルだった。使用できるプリンタは、アスキ
ー(ASCII)のテキストと制御文字に応答した。プリン
タに送られた各キャラクタに対して文字が作られた。テ
キストの次の行へ送るには、キャリッジリターン(carr
iage return)と行送りの手段によりなされていた。太
字にするために重ね刷りが必要な場合は、キャリッジリ
ターンのみが送られ、行が再度印刷された。また、タイ
プライタのようなプリンタも使用でき、これはバックス
ペースのキャラクタに対応しているため、太字及び下線
は簡単に成し遂げられた。
【0021】プリンタ技術がドットマトリクス・プリン
タの開発とともに進歩するにつれて、フォントの変換及
び図形オプションのための機能が実現可能となった。こ
の進歩の結果、ワードプロセッサがそれぞれの使用可能
なプリンタに対して1組のソフトウェアを必要とするよ
うになってきた。それぞれのメーカーがどの機能が役立
つかについて自分自身の考えを持ち、それらを異なる方
法で実施したからである。それぞれの新しいプリンタの
製作あるいは型(モデル)と共に、ドライバ・ソフトウ
ェアと呼ばれるような、新しい組のソフトウェアが必要
となった。結果として、具合の悪い問題がワードプロセ
ッサのユーザーとワードプロセッサのベンダーの両方に
発生した。
タの開発とともに進歩するにつれて、フォントの変換及
び図形オプションのための機能が実現可能となった。こ
の進歩の結果、ワードプロセッサがそれぞれの使用可能
なプリンタに対して1組のソフトウェアを必要とするよ
うになってきた。それぞれのメーカーがどの機能が役立
つかについて自分自身の考えを持ち、それらを異なる方
法で実施したからである。それぞれの新しいプリンタの
製作あるいは型(モデル)と共に、ドライバ・ソフトウ
ェアと呼ばれるような、新しい組のソフトウェアが必要
となった。結果として、具合の悪い問題がワードプロセ
ッサのユーザーとワードプロセッサのベンダーの両方に
発生した。
【0022】より手の込んだ印刷能力の必要性が増すに
つれて、数多くの解決方法が生まれた。主な問題は、印
刷処理に対する「インテリジェンス(intelligence)」
をどこに据えるかを決定することだった。これには3つ
の選択肢がある。
つれて、数多くの解決方法が生まれた。主な問題は、印
刷処理に対する「インテリジェンス(intelligence)」
をどこに据えるかを決定することだった。これには3つ
の選択肢がある。
【0023】1.ワードプロセッサ自身内に据える。ワ
ードプロセッサは、速いCPUと良いインターフェース
が使用できない限り使用するのにいくぶんぎこちなくな
ってきている。とりわけ、これはワードプロセス処理の
文書に対する知的所有権がらみのファイルフォーマット
につながる。異なるプラットフォームあるいはワードプ
ロセッサの間で高度にフォーマットされた文書を移動す
ることは、RTFやDCAのように共通のデータフォー
マットが使用できない限りぎこちなくなってきている。
共通のフォーマットされたデータ構造が見つからない場
合、「包括的(generic)」なフォーマットでファイル
を転送することは可能であり、その場合は復帰/改行は
段落の最後でのみ使用される。その後ファイルを再度フ
ォーマットすることが必要になる。
ードプロセッサは、速いCPUと良いインターフェース
が使用できない限り使用するのにいくぶんぎこちなくな
ってきている。とりわけ、これはワードプロセス処理の
文書に対する知的所有権がらみのファイルフォーマット
につながる。異なるプラットフォームあるいはワードプ
ロセッサの間で高度にフォーマットされた文書を移動す
ることは、RTFやDCAのように共通のデータフォー
マットが使用できない限りぎこちなくなってきている。
共通のフォーマットされたデータ構造が見つからない場
合、「包括的(generic)」なフォーマットでファイル
を転送することは可能であり、その場合は復帰/改行は
段落の最後でのみ使用される。その後ファイルを再度フ
ォーマットすることが必要になる。
【0024】2.プリンタ内に据える。これはページ記
述言語(PDL)として知られているものにつながる。
これらの最も共通のものは、ポストスクリプト(PostSc
ript)として知られているものである。プリンタはポス
トスクリプトの出力ファイルに含まれるコマンドを解釈
するためプロセッサとプログラムを含む。ポストスクリ
プトの出力ファイルは、アスキー(ASCII)のテキスト
であり、必要あれば手で編集できる。ヒューレット・パ
ッカード社のレーザープリンタの製品におけるように、
他の所有権がらみのページ記述および制御言語もまた使
用可能である。ポストスクリプトの実現は、プリンタの
ためのポストスクリプト言語のチップを購入して導入す
ることにより活動化される。
述言語(PDL)として知られているものにつながる。
これらの最も共通のものは、ポストスクリプト(PostSc
ript)として知られているものである。プリンタはポス
トスクリプトの出力ファイルに含まれるコマンドを解釈
するためプロセッサとプログラムを含む。ポストスクリ
プトの出力ファイルは、アスキー(ASCII)のテキスト
であり、必要あれば手で編集できる。ヒューレット・パ
ッカード社のレーザープリンタの製品におけるように、
他の所有権がらみのページ記述および制御言語もまた使
用可能である。ポストスクリプトの実現は、プリンタの
ためのポストスクリプト言語のチップを購入して導入す
ることにより活動化される。
【0025】3.他の選択方法。最後の選択肢は、これ
ら2つの中間であり、例えばタイプセット・コマンドを
含むファイルを作るTeXのように、タイプセットのプ
ログラムである。このファイルはその後、特定のプリン
タに対するドライバのプログラムを通過できるデバイス
独立のフォーマットに変換される。
ら2つの中間であり、例えばタイプセット・コマンドを
含むファイルを作るTeXのように、タイプセットのプ
ログラムである。このファイルはその後、特定のプリン
タに対するドライバのプログラムを通過できるデバイス
独立のフォーマットに変換される。
【0026】インテリジェンスの搭載に加え、図形表示
(グラフィックス)のサポートが2つの一般的な方法で
実現されている。 1.ワードプロセシング・スクリーンの本質的なグラフ
ィックスの「ダンプ」。さらに必然的なプリンタドライ
バが使用されているプリンタに対して必要とされる。マ
イクロソフト・ワード(Microsoft Word)におけるよう
に、文書自身の中にアートを埋め込むことも可能であ
る。 2.「カプセル化された」ポストスクリプト・ファイ
ル。これは、解釈されるべきフォーマットでの描画プロ
グラムにより作成されるコードを含む。カプセル化され
たポストスクリプト・ファイルは、例えばTIFFのよ
うなラスター・フォーマットで画像のプレビュー・イメ
ージを含むことができ、あるいはシンプルだが画像の直
接的な画面操作をするウィンドウズのメタファイルのよ
うなベクター・フォーマットで含むことができる。
(グラフィックス)のサポートが2つの一般的な方法で
実現されている。 1.ワードプロセシング・スクリーンの本質的なグラフ
ィックスの「ダンプ」。さらに必然的なプリンタドライ
バが使用されているプリンタに対して必要とされる。マ
イクロソフト・ワード(Microsoft Word)におけるよう
に、文書自身の中にアートを埋め込むことも可能であ
る。 2.「カプセル化された」ポストスクリプト・ファイ
ル。これは、解釈されるべきフォーマットでの描画プロ
グラムにより作成されるコードを含む。カプセル化され
たポストスクリプト・ファイルは、例えばTIFFのよ
うなラスター・フォーマットで画像のプレビュー・イメ
ージを含むことができ、あるいはシンプルだが画像の直
接的な画面操作をするウィンドウズのメタファイルのよ
うなベクター・フォーマットで含むことができる。
【0027】更に、どの方法を選ぶかは、個人的な好み
の問題であり、利用することができる特定の機能の問題
である。図1から11のデバイスと方法の実現するとい
う目的のため、ウィンドウズ95のようなオペレーティ
ングシステムで使用するための特化したプリントプロセ
ッサが、ウィンドウズの拡張メタファイル(enhancedme
tafiles)の作成をサポートするオペレーティングシス
テムのためのプリンタドライバと共に使用される。
の問題であり、利用することができる特定の機能の問題
である。図1から11のデバイスと方法の実現するとい
う目的のため、ウィンドウズ95のようなオペレーティ
ングシステムで使用するための特化したプリントプロセ
ッサが、ウィンドウズの拡張メタファイル(enhancedme
tafiles)の作成をサポートするオペレーティングシス
テムのためのプリンタドライバと共に使用される。
【0028】図2と3はソースジョブ28を1つあるい
は複数の宛先である30、32及び34に配信するため
の方法を図示しており、宛先の1つの例は出力デバイス
14、16及び18(図1の)である。宛先の他の例は
コンピュータ20と22とすることもできる。現在のウ
ィンドウズ・ドライバの解決方法では、あるアプリケー
ションから複数の宛先に送信することはできない。しか
しドライバは、効果的であるために、単一のソースアプ
リケーション/文書から複数の受信デバイスに電子的デ
ータ(electronic material)を送信することができな
ければならない。これは、オリジナルの文書データある
いはソースジョブ28の保存を必要とし、図2で示され
ているように所望のコード化(encodings)を得るため
複数回解析されることができる形でなされる。もしソー
ス文書あるいはソースジョブ28が複数のページである
場合、送信の仕組は図3に示されているように、次のコ
ード化の型へ行く前に、目的のページすべてを送信する
ことをサポートしなければならない。図3に示されてい
るように、ソースジョブの複数の宛先への配信を実現す
るために、多重スレッドの配信の仕組が必然的である。
は複数の宛先である30、32及び34に配信するため
の方法を図示しており、宛先の1つの例は出力デバイス
14、16及び18(図1の)である。宛先の他の例は
コンピュータ20と22とすることもできる。現在のウ
ィンドウズ・ドライバの解決方法では、あるアプリケー
ションから複数の宛先に送信することはできない。しか
しドライバは、効果的であるために、単一のソースアプ
リケーション/文書から複数の受信デバイスに電子的デ
ータ(electronic material)を送信することができな
ければならない。これは、オリジナルの文書データある
いはソースジョブ28の保存を必要とし、図2で示され
ているように所望のコード化(encodings)を得るため
複数回解析されることができる形でなされる。もしソー
ス文書あるいはソースジョブ28が複数のページである
場合、送信の仕組は図3に示されているように、次のコ
ード化の型へ行く前に、目的のページすべてを送信する
ことをサポートしなければならない。図3に示されてい
るように、ソースジョブの複数の宛先への配信を実現す
るために、多重スレッドの配信の仕組が必然的である。
【0029】図2と3に示されているように、ソースジ
ョブ28を複数の宛先30、32及び34に配信するた
めの多数の選択肢が存在する。以下は、送信のための選
択肢の概要である。 1)ジョブのすべてのページが他の宛先に配信される前
に特定の宛先に送信されることができる。この選択肢
は、単一スレッドのスプールの配信を介する1度で1つ
の宛先への順次配信と呼ばれる。現在のウィンドウズの
ドライバのアーキテクチャは、このような単一スレッド
のスプールの配信を使用する。 2)配信は、ソースジョブの次のページに行く前に1の
ページを1度にそれぞれの(あるいはすべての)宛先へ
送信することで実現される。しかし、遅延配信の問題が
あり、これはしばしば良い配信の選択を示さない。 3)スレッドはそれぞれの宛先(多重スレッド)に対し
て準備され、ジョブ全体がそれぞれのスレッドにより配
信される。この方法では、すべてのスレッドが同時に走
ることができ、結果として並列実行となる。これはウィ
ンドウズをデスプーリング(despooling)の仕組に変更
することが必要とされるが、すべての受信に対して最良
の配信を提供する。
ョブ28を複数の宛先30、32及び34に配信するた
めの多数の選択肢が存在する。以下は、送信のための選
択肢の概要である。 1)ジョブのすべてのページが他の宛先に配信される前
に特定の宛先に送信されることができる。この選択肢
は、単一スレッドのスプールの配信を介する1度で1つ
の宛先への順次配信と呼ばれる。現在のウィンドウズの
ドライバのアーキテクチャは、このような単一スレッド
のスプールの配信を使用する。 2)配信は、ソースジョブの次のページに行く前に1の
ページを1度にそれぞれの(あるいはすべての)宛先へ
送信することで実現される。しかし、遅延配信の問題が
あり、これはしばしば良い配信の選択を示さない。 3)スレッドはそれぞれの宛先(多重スレッド)に対し
て準備され、ジョブ全体がそれぞれのスレッドにより配
信される。この方法では、すべてのスレッドが同時に走
ることができ、結果として並列実行となる。これはウィ
ンドウズをデスプーリング(despooling)の仕組に変更
することが必要とされるが、すべての受信に対して最良
の配信を提供する。
【0030】中間ファイルのフォーマットの実現は、1
つの形態としては拡張メタファイル(EMF)である
が、図2と3の上に述べた配信機能を実現するのに必要
な多重パスを可能とするであろう。しかし、拡張メタフ
ァイルは一般的にはスプーラーを介してメモリに書込ま
れ、拡張メタファイルのスプーラーの再生はメモリから
の多重パスの配信を許さない。拡張メタファイル(EM
F)は高レベルで図形操作の一連を記述する機能拡張さ
れたファイル・フォーマットであり、デバイス独立のデ
ータ・フォーマットである。
つの形態としては拡張メタファイル(EMF)である
が、図2と3の上に述べた配信機能を実現するのに必要
な多重パスを可能とするであろう。しかし、拡張メタフ
ァイルは一般的にはスプーラーを介してメモリに書込ま
れ、拡張メタファイルのスプーラーの再生はメモリから
の多重パスの配信を許さない。拡張メタファイル(EM
F)は高レベルで図形操作の一連を記述する機能拡張さ
れたファイル・フォーマットであり、デバイス独立のデ
ータ・フォーマットである。
【0031】このような中間ファイルのフォーマットを
実現するため、出願人が設計した特化したプリントプロ
セッサが、拡張メタファイルを複写することによりこの
問題を解決する。図4から6を参照して以下に示し記述
されるように、このような特化したプリントプロセッサ
は、スプーラー/デスプーラーを介してメモリから配信
されるべき多重パスが、図2と3を参照して上に開示さ
れた配信の図式を介して複数の宛先にソースジョブを配
信することを可能にする。「スプーラー(spooler)」
は、印刷用の出力を生成したアプリケーションを取得
し、それをディスク上に一時的に保管する構成要素であ
る。「デスプーラー(despooler)」は、スプールファ
イル内のデータに対して責任を有するシステム構成要素
であり、出力デバイスにそのデータを書込む役割のソフ
トウェアにそのデータを渡す。
実現するため、出願人が設計した特化したプリントプロ
セッサが、拡張メタファイルを複写することによりこの
問題を解決する。図4から6を参照して以下に示し記述
されるように、このような特化したプリントプロセッサ
は、スプーラー/デスプーラーを介してメモリから配信
されるべき多重パスが、図2と3を参照して上に開示さ
れた配信の図式を介して複数の宛先にソースジョブを配
信することを可能にする。「スプーラー(spooler)」
は、印刷用の出力を生成したアプリケーションを取得
し、それをディスク上に一時的に保管する構成要素であ
る。「デスプーラー(despooler)」は、スプールファ
イル内のデータに対して責任を有するシステム構成要素
であり、出力デバイスにそのデータを書込む役割のソフ
トウェアにそのデータを渡す。
【0032】しかしこれを行うため、本発明のデバイス
は、宛先と各宛先に対して描画されたコード化を記述す
るために専用のスプールジョブ・ヘッダを必要とする。
デスプール操作が実行されると、グラフィックスデバイ
ス・インターフェース(GDI)はデバイスコンテキス
ト(DC)内の図形表示機能をプリンタドライバを通し
てスプーラーに送る。「GDI」は、グラフィックスデ
バイス・インターフェース(GDI)であり、線の描画
や色の管理のような図形表示機能を実行する役割を有す
るウィンドウズの構成要素である。GDIは、ウィンド
ウズの図形表示のアプリケーションプログラム・インタ
ーフェース(API)のすべてを含むダイナミックリン
ク・ライブラリ(DLL)である。デバイスコンテキス
ト(DC)は、デバイスや面描画の現在の状況を記述す
るデータ構造であり、アプリケーションレベルにおいて
見られる論理的なオブジェクトである。すなわち、デバ
イスコンテキストは図形データを表示する目的のため
(画面上での描画あるいはページの印刷)、GDIにお
いて内部的に保守される構造である。印刷を扱う任意の
アプリケーション開発者は、デバイスコンテキストの概
念について熟知している。ダイナミックリンク・ライブ
ラリ(DLL)はコンパイル時とは対照的に、実行時に
アプリケーションが連係する共通機能のライブラリであ
る。ダイナミックリンク・ライブラリ(DLL)のメモ
リ内の1回の複写はすべての呼出しからの要求を満足す
る。
は、宛先と各宛先に対して描画されたコード化を記述す
るために専用のスプールジョブ・ヘッダを必要とする。
デスプール操作が実行されると、グラフィックスデバイ
ス・インターフェース(GDI)はデバイスコンテキス
ト(DC)内の図形表示機能をプリンタドライバを通し
てスプーラーに送る。「GDI」は、グラフィックスデ
バイス・インターフェース(GDI)であり、線の描画
や色の管理のような図形表示機能を実行する役割を有す
るウィンドウズの構成要素である。GDIは、ウィンド
ウズの図形表示のアプリケーションプログラム・インタ
ーフェース(API)のすべてを含むダイナミックリン
ク・ライブラリ(DLL)である。デバイスコンテキス
ト(DC)は、デバイスや面描画の現在の状況を記述す
るデータ構造であり、アプリケーションレベルにおいて
見られる論理的なオブジェクトである。すなわち、デバ
イスコンテキストは図形データを表示する目的のため
(画面上での描画あるいはページの印刷)、GDIにお
いて内部的に保守される構造である。印刷を扱う任意の
アプリケーション開発者は、デバイスコンテキストの概
念について熟知している。ダイナミックリンク・ライブ
ラリ(DLL)はコンパイル時とは対照的に、実行時に
アプリケーションが連係する共通機能のライブラリであ
る。ダイナミックリンク・ライブラリ(DLL)のメモ
リ内の1回の複写はすべての呼出しからの要求を満足す
る。
【0033】長さが1ページのみであるソース文書に対
しては、拡張メタファイル(EMF)の代わりに、プリ
ンタ言語にフォーマットされた行データを選択的に使用
することができる。しかしこの場合は、”すべての”宛
先が同じコード化をサポートし選択することが必要であ
る。このため、拡張メタファイルのサポートはGDIINFO
構造体の中で印がつけられている。
しては、拡張メタファイル(EMF)の代わりに、プリ
ンタ言語にフォーマットされた行データを選択的に使用
することができる。しかしこの場合は、”すべての”宛
先が同じコード化をサポートし選択することが必要であ
る。このため、拡張メタファイルのサポートはGDIINFO
構造体の中で印がつけられている。
【0034】本発明の装置と方法は、データをデバイス
に配信し、配信リスト内にプリンタ、スキャナー、プロ
ッタのような出力デバイスを含む。配信リストは出力を
受信できるデバイスの一覧である。配信リストは別個の
アプリケーションにより制御されることができ、これに
よりプリントプロセッサが通信を行うことができる。別
個のアプリケーションはコンピュータネットワーク環境
内にある数多くのデバイスの任意の上におくこともでき
る。その後プリントプロセッサはデバイスのリストを使
用し、本発明のデバイスと方法に応じてドライバ切替え
の操作を実行する。
に配信し、配信リスト内にプリンタ、スキャナー、プロ
ッタのような出力デバイスを含む。配信リストは出力を
受信できるデバイスの一覧である。配信リストは別個の
アプリケーションにより制御されることができ、これに
よりプリントプロセッサが通信を行うことができる。別
個のアプリケーションはコンピュータネットワーク環境
内にある数多くのデバイスの任意の上におくこともでき
る。その後プリントプロセッサはデバイスのリストを使
用し、本発明のデバイスと方法に応じてドライバ切替え
の操作を実行する。
【0035】出願人は、下の表1で提供されるプログラ
ムとファイルを走らせることにより、本発明によるドラ
イバ切替えの操作を試験した。実行の詳細を、図4から
6、そして図7から11のフローチャートに関連して以
下に説明する。出願人はウィンドウズ95のシステム上
でこのような試験を実行した。EMFのジョブは5個の
ドライバの待ち行列(queue)に入れられ、ドライバは
ユーザーインターフェース(UI)を通してビットマッ
プ・ドライバに切り替わった。結果として、ソースジョ
ブが処理され、切り替えられ、そして解放される共に、
印刷ジョブは適正にファイルに印刷された。
ムとファイルを走らせることにより、本発明によるドラ
イバ切替えの操作を試験した。実行の詳細を、図4から
6、そして図7から11のフローチャートに関連して以
下に説明する。出願人はウィンドウズ95のシステム上
でこのような試験を実行した。EMFのジョブは5個の
ドライバの待ち行列(queue)に入れられ、ドライバは
ユーザーインターフェース(UI)を通してビットマッ
プ・ドライバに切り替わった。結果として、ソースジョ
ブが処理され、切り替えられ、そして解放される共に、
印刷ジョブは適正にファイルに印刷された。
【0036】下の表1に掲載されたCのコードプログラ
ムは、本発明による「ドライバ切替えのための特化した
プリントプロセッサ」である。このコードは、図7から
11のフローチャート内で詳述されているように、構成
要素の切替えを印刷ジョブを受信するための出力デバイ
スの形で可能にしている。構成要素の切替えはウィンド
ウズ95用の特化したプリントプロセッサを介して実行
され、ドライバはウィンドウのビットマップを作成し、
HP PCL5のプリンタ言語を作成する。これを効果
的に行うため、ウィンドウズ95あるいはウィンドウズ
NT用のプリンタドライバは、ウィンドウズの拡張メタ
ファイル(EMF)の作成をサポートしなければならな
い。オペレーターは、ウィンドウズのアプリケーション
を走らせ、最初の希望したプリンタドライバと共に、希
望する印刷オブジェクトを選ぶだけでよい。しかし、こ
のドライバはこれに関連する特化したプリンタドライバ
を有しなければならない。その後オペレーターあるいは
ネットワークは、いくつかの優先順位付け手法を介して
アプリケーションから直接印刷ジョブを印刷することが
できる。結果として印刷ジョブはスプーラー内に一時的
に保管される。ジョブの印刷がスケジュールされた時、
スプーラーはジョブを印刷するため特化したプリントプ
ロセッサを呼出す。プリントプロセッサはシステムに対
しドライバが存在するかどうか判断するために質問す
る。次にプリントプロセッサはアプリケーションによっ
て選ばれたプリンタをオープンし、ドライバの名前とプ
リンタについての他の情報を得るため現在のPRINTER.IN
FO.2構造体を得る。
ムは、本発明による「ドライバ切替えのための特化した
プリントプロセッサ」である。このコードは、図7から
11のフローチャート内で詳述されているように、構成
要素の切替えを印刷ジョブを受信するための出力デバイ
スの形で可能にしている。構成要素の切替えはウィンド
ウズ95用の特化したプリントプロセッサを介して実行
され、ドライバはウィンドウのビットマップを作成し、
HP PCL5のプリンタ言語を作成する。これを効果
的に行うため、ウィンドウズ95あるいはウィンドウズ
NT用のプリンタドライバは、ウィンドウズの拡張メタ
ファイル(EMF)の作成をサポートしなければならな
い。オペレーターは、ウィンドウズのアプリケーション
を走らせ、最初の希望したプリンタドライバと共に、希
望する印刷オブジェクトを選ぶだけでよい。しかし、こ
のドライバはこれに関連する特化したプリンタドライバ
を有しなければならない。その後オペレーターあるいは
ネットワークは、いくつかの優先順位付け手法を介して
アプリケーションから直接印刷ジョブを印刷することが
できる。結果として印刷ジョブはスプーラー内に一時的
に保管される。ジョブの印刷がスケジュールされた時、
スプーラーはジョブを印刷するため特化したプリントプ
ロセッサを呼出す。プリントプロセッサはシステムに対
しドライバが存在するかどうか判断するために質問す
る。次にプリントプロセッサはアプリケーションによっ
て選ばれたプリンタをオープンし、ドライバの名前とプ
リンタについての他の情報を得るため現在のPRINTER.IN
FO.2構造体を得る。
【0037】その後、プリントプロセッサは、「SetPri
nter API」をPRINTER.INFO.2構造体および新しいド
ライバ名のフィールドに使用して、ドライバの名前を新
しい所望の名前に変更する。次に「文書の特性(Docume
nt Properties)」を使用して、プリントプロセッサは
新しいドライバのDEVMODE構造体を入手し、それは新し
いドライバにより使用され理解される。これはまた、PR
INTER.INFO.2構造体に保存される。上記は、プリントプ
ロセッサがスプーラーにより「プロセッサをオープンせ
よ」と命令された時にすべて行われる。プロセッサは次
に、データの処理を行うためスプーラーに呼ばれる。プ
ロセッサは、新しいドライバの拡張メタファイルを処理
するためグラフィックスデバイス・インターフェース
(GDI)を呼ぶ。ジョブの最後で、ドライバはオリジ
ナルにリセットされ、そのためユーザーには常に同じ情
報が与えられる。
nter API」をPRINTER.INFO.2構造体および新しいド
ライバ名のフィールドに使用して、ドライバの名前を新
しい所望の名前に変更する。次に「文書の特性(Docume
nt Properties)」を使用して、プリントプロセッサは
新しいドライバのDEVMODE構造体を入手し、それは新し
いドライバにより使用され理解される。これはまた、PR
INTER.INFO.2構造体に保存される。上記は、プリントプ
ロセッサがスプーラーにより「プロセッサをオープンせ
よ」と命令された時にすべて行われる。プロセッサは次
に、データの処理を行うためスプーラーに呼ばれる。プ
ロセッサは、新しいドライバの拡張メタファイルを処理
するためグラフィックスデバイス・インターフェース
(GDI)を呼ぶ。ジョブの最後で、ドライバはオリジ
ナルにリセットされ、そのためユーザーには常に同じ情
報が与えられる。
【0038】上の処理を実現するため、いくつかの制約
が適用される。第1に、使用される任意のドライバのDE
VMODEは、拡張メタファイル(EMF)のジョブに含ま
れるものと同じ個人的なデータをすべてのドライバがサ
ポートしない限り、個人的なDEVMODEのデータに依存す
ることができない。第2に、ユーザーはいつでも呼び出
されることができるので、すべてのドライバに対するユ
ーザーインターフェースは同一に見えるべきである。
が適用される。第1に、使用される任意のドライバのDE
VMODEは、拡張メタファイル(EMF)のジョブに含ま
れるものと同じ個人的なデータをすべてのドライバがサ
ポートしない限り、個人的なDEVMODEのデータに依存す
ることができない。第2に、ユーザーはいつでも呼び出
されることができるので、すべてのドライバに対するユ
ーザーインターフェースは同一に見えるべきである。
【0039】本発明の装置と方法によるドライバ切替え
をより理解するため、表1のアルゴリズムを介して実現
されるようなシステムを通してのステップごとのフロー
を、図4から6に関して見直す。本発明によるドライバ
切替えの基本的な利益は、ウィンドウズ95あるいはN
T(これは概念において同様であるOS/2のキュープ
ロセッサ(キュードライバ)にも適用される)で印刷ジ
ョブを作成するために使用されるものとは異なるプリン
タドライバのシステム選択を可能にすることである。異
なるドライバを選択することは単一スプール化されたジ
ョブが、「HPDesk Jetプリンタ」、や「Laser Jetプ
リンタ」あるいはプロッタのような複数の異なるデバイ
スに送られることを可能にする。また、ネットワークプ
リンタやインターネットのデバイスのようなデバイスの
宛先への送信が、複数回処理されることができる。
をより理解するため、表1のアルゴリズムを介して実現
されるようなシステムを通してのステップごとのフロー
を、図4から6に関して見直す。本発明によるドライバ
切替えの基本的な利益は、ウィンドウズ95あるいはN
T(これは概念において同様であるOS/2のキュープ
ロセッサ(キュードライバ)にも適用される)で印刷ジ
ョブを作成するために使用されるものとは異なるプリン
タドライバのシステム選択を可能にすることである。異
なるドライバを選択することは単一スプール化されたジ
ョブが、「HPDesk Jetプリンタ」、や「Laser Jetプ
リンタ」あるいはプロッタのような複数の異なるデバイ
スに送られることを可能にする。また、ネットワークプ
リンタやインターネットのデバイスのようなデバイスの
宛先への送信が、複数回処理されることができる。
【0040】図4から6に示されたドライバ切替えのジ
ョブフローの解析は、アプリケーション36を介して起
動される第1パスの印刷要求で始まる。アプリケーショ
ン36は印刷ジョブあるいはソースジョブを生成し、こ
れはグラフィックスデバイス・インターフェース(GD
I)のダイナミックリンク・ライブラリ(DLL)に配
信される。グラフィックスデバイス・インターフェース
(GDI)は、アプリケーション36とオリジナル・ド
ライバ38の間の接続時に、共通機能を実行する。グラ
フィックスデバイス・インターフェース(GDI)はウ
ィンドウズに図形表示のアプリケーションプログラム・
インターフェース(API)のすべてを含み、拡張メタ
ファイル42の形でスプールされたデータを生成する。
ョブフローの解析は、アプリケーション36を介して起
動される第1パスの印刷要求で始まる。アプリケーショ
ン36は印刷ジョブあるいはソースジョブを生成し、こ
れはグラフィックスデバイス・インターフェース(GD
I)のダイナミックリンク・ライブラリ(DLL)に配
信される。グラフィックスデバイス・インターフェース
(GDI)は、アプリケーション36とオリジナル・ド
ライバ38の間の接続時に、共通機能を実行する。グラ
フィックスデバイス・インターフェース(GDI)はウ
ィンドウズに図形表示のアプリケーションプログラム・
インターフェース(API)のすべてを含み、拡張メタ
ファイル42の形でスプールされたデータを生成する。
【0041】ドライバ切替えの第2パスの操作による
と、図5はスプーラー46を示し、これはスプール・ヘ
ッダ48を介して、メモリデバイス44から、スプール
された印刷データあるいは拡張メタファイル42の保管
と検索を命じる。スプーラー46は印刷ジョブとプリン
タの情報を本発明の特化したプリントプロセッサに渡
す。より具体的には、プリントプロセッサ50は表1及
び図7から11のコードの実行を介して、オリジナル・
ドライバ38(図4)からドライバをリセットする。レ
ジストリ54は、ドライバをリセットする時にプリント
プロセッサ50を支援するため、システムのアプリケー
ションプログラム・インターフェース(API)により
検索され使用されるハードウェアとソフトウェアの構成
の情報を保管する。プリントプロセッサ50は、グラフ
ィックスデバイス・インターフェース(GDI)に新し
いあるいはリセットしたドライバ上の印刷ジョブを配信
することを命令する。拡張メタファイル(EMF)42
はメモリデバイス44からグラフィックスデバイス・イ
ンターフェース(GDI)により検索され、「GDIプ
レイ・スプール・ストリーム(GDI play spool strea
m)」の部分を形成する。グラフィックスデバイス・イ
ンターフェース(GDI)は、新しいドライバ56及び
出力デバイス14のポート・モニター/プリント・プロ
バイダー58と直接通信する。続いてデバイス14はド
ライバ56から出力命令を受信する。この出力命令は、
プリントプロセッサ50から受信される描画命令を含む
描画命令ファイルから成る出力命令ファイルから変換さ
れる。プリントプロセッサ50は出力命令ファイルを優
先順位付け手法を基に出力デバイスドライバ56に送り
込む。
と、図5はスプーラー46を示し、これはスプール・ヘ
ッダ48を介して、メモリデバイス44から、スプール
された印刷データあるいは拡張メタファイル42の保管
と検索を命じる。スプーラー46は印刷ジョブとプリン
タの情報を本発明の特化したプリントプロセッサに渡
す。より具体的には、プリントプロセッサ50は表1及
び図7から11のコードの実行を介して、オリジナル・
ドライバ38(図4)からドライバをリセットする。レ
ジストリ54は、ドライバをリセットする時にプリント
プロセッサ50を支援するため、システムのアプリケー
ションプログラム・インターフェース(API)により
検索され使用されるハードウェアとソフトウェアの構成
の情報を保管する。プリントプロセッサ50は、グラフ
ィックスデバイス・インターフェース(GDI)に新し
いあるいはリセットしたドライバ上の印刷ジョブを配信
することを命令する。拡張メタファイル(EMF)42
はメモリデバイス44からグラフィックスデバイス・イ
ンターフェース(GDI)により検索され、「GDIプ
レイ・スプール・ストリーム(GDI play spool strea
m)」の部分を形成する。グラフィックスデバイス・イ
ンターフェース(GDI)は、新しいドライバ56及び
出力デバイス14のポート・モニター/プリント・プロ
バイダー58と直接通信する。続いてデバイス14はド
ライバ56から出力命令を受信する。この出力命令は、
プリントプロセッサ50から受信される描画命令を含む
描画命令ファイルから成る出力命令ファイルから変換さ
れる。プリントプロセッサ50は出力命令ファイルを優
先順位付け手法を基に出力デバイスドライバ56に送り
込む。
【0042】ある適した優先順位付け手法は、出力デバ
イス14の印刷能力に基づいて、出力命令ファイルをプ
リントプロセッサ50から少なくとも1つの出力デバイ
スの1つへと送ることを含む。他の方法は、出力デバイ
ス14及び(あるいは)関連したデバイスドライバ56
の相対的な利用可能性に基づいて、出力命令ファイルを
出力デバイスへ送ることに基づくものである。例えば、
特定のドライバ56とプリンタ14は、待ち行列の中に
既に多すぎるほどの印刷ジョブを含むことができる。代
わりに、ドライバ56とプリンタ14は紙切れあるいは
インク切れにしておくことができる。さらに、特定のド
ライバ56とプリンタ14は、色、正しいサイズの紙、
イメージの解像度などのような希望する印刷能力を有し
ないこともあり、数多くの知られた優先順位付け手法の
いずれかに基づいてプリントプロセッサ50に、印刷ジ
ョブを他のより適したドライバとデバイスに配信させる
ことが重要になる。
イス14の印刷能力に基づいて、出力命令ファイルをプ
リントプロセッサ50から少なくとも1つの出力デバイ
スの1つへと送ることを含む。他の方法は、出力デバイ
ス14及び(あるいは)関連したデバイスドライバ56
の相対的な利用可能性に基づいて、出力命令ファイルを
出力デバイスへ送ることに基づくものである。例えば、
特定のドライバ56とプリンタ14は、待ち行列の中に
既に多すぎるほどの印刷ジョブを含むことができる。代
わりに、ドライバ56とプリンタ14は紙切れあるいは
インク切れにしておくことができる。さらに、特定のド
ライバ56とプリンタ14は、色、正しいサイズの紙、
イメージの解像度などのような希望する印刷能力を有し
ないこともあり、数多くの知られた優先順位付け手法の
いずれかに基づいてプリントプロセッサ50に、印刷ジ
ョブを他のより適したドライバとデバイスに配信させる
ことが重要になる。
【0043】使用されている特定のドライバ56とデバ
イス14を考慮すると、各方法がどのように作用するか
は、ワードプロセッサにより使用されるプリンタドライ
バに依存する。ドライバはオペレーティングシステムへ
の拡張であり、ヒューレットパッカード社のLaser Jet
〓プリンタあるいはスーパーVGA画面のような特定の
ハードウェア用に調整される。プリンタドライバはデー
タのインライン・ストリームあるいはページ記述言語に
より提供される情報を取得し、それをプリンタが認識で
きる低レベルのコマンドに変換する。(スクリーンドラ
イバは、モニターにテキストを表示するためにビデオア
ダプターで同じことを行う。)異なるドライバとともに
働くことにより、ワードプロセッサは多種の画面とプリ
ンタの上で同じ文書を取扱うことができる。「レジスト
リ(registry)」はウィンドウズ内の構造化ファイルで
あり、ウィンドウズがホストシステムのハードウェア、
ユーザーの選択、及び他の構成(configuration)デー
タを記述する索引つきの情報を保管する。レジストリは
ウィンドウズの機械を困らせる構成データの増殖を低下
させる役割を果たす。
イス14を考慮すると、各方法がどのように作用するか
は、ワードプロセッサにより使用されるプリンタドライ
バに依存する。ドライバはオペレーティングシステムへ
の拡張であり、ヒューレットパッカード社のLaser Jet
〓プリンタあるいはスーパーVGA画面のような特定の
ハードウェア用に調整される。プリンタドライバはデー
タのインライン・ストリームあるいはページ記述言語に
より提供される情報を取得し、それをプリンタが認識で
きる低レベルのコマンドに変換する。(スクリーンドラ
イバは、モニターにテキストを表示するためにビデオア
ダプターで同じことを行う。)異なるドライバとともに
働くことにより、ワードプロセッサは多種の画面とプリ
ンタの上で同じ文書を取扱うことができる。「レジスト
リ(registry)」はウィンドウズ内の構造化ファイルで
あり、ウィンドウズがホストシステムのハードウェア、
ユーザーの選択、及び他の構成(configuration)デー
タを記述する索引つきの情報を保管する。レジストリは
ウィンドウズの機械を困らせる構成データの増殖を低下
させる役割を果たす。
【0044】図6は1つあるいは複数の出力デバイスに
多重パスのジョブを配信するためのドライバ切替えを示
す。プリントプロセッサ50は、図9に関して以下に記
述されたステップ”S7.20”により、メモリデバイ
ス44に保管されているオリジナルの拡張メタファイル
(EMF)42を複写するため、スプーラー46により
「オープン」される。また、スプーラー46は、プリン
トプロセッサにブロック50及び図11のステップ”S
7.30”を介して、プリントプロセッサ上の文書の印
刷を命じる。操作ブロック50は閉じられたループ62
を実行し、これは新しい印刷ジョブ64を指し、拡張メ
タファイル42を検索してメモリ44に再書込みし、さ
らに拡張メタファイルはループ62とポインタ64に応
じて出力デバイス一連のそれぞれへ配信を行うプリント
プロセッサを介して再検索される。
多重パスのジョブを配信するためのドライバ切替えを示
す。プリントプロセッサ50は、図9に関して以下に記
述されたステップ”S7.20”により、メモリデバイ
ス44に保管されているオリジナルの拡張メタファイル
(EMF)42を複写するため、スプーラー46により
「オープン」される。また、スプーラー46は、プリン
トプロセッサにブロック50及び図11のステップ”S
7.30”を介して、プリントプロセッサ上の文書の印
刷を命じる。操作ブロック50は閉じられたループ62
を実行し、これは新しい印刷ジョブ64を指し、拡張メ
タファイル42を検索してメモリ44に再書込みし、さ
らに拡張メタファイルはループ62とポインタ64に応
じて出力デバイス一連のそれぞれへ配信を行うプリント
プロセッサを介して再検索される。
【0045】論理フローダイアグラム 図7によると、「プリントプロセッサ」は、複数の出力
デバイスに印刷ジョブを与えるコンピュータネットワー
ク環境で動作するためのコンピュータのプログラミング
に対する最初のレベルの論理フローダイアグラムとして
示される。表1はさらに、上の図5と6に関して示され
ているように、C言語で表現されたプリントプロセッサ
の実行を詳細に記述する。「プリントプロセッサ」は、
コンピュータネットワーク環境内におけるコンピュータ
操作用のプリンタドライバ切替えを実行するデバイスを
形成する。「プリントプロセッサ」は自動的に実行する
ことができ、これは図7から11の論理フローダイアグ
ラムに対応する。代わりに、特化したプリントプロセッ
サはHP PCL5を作ることができる。この方法で
は、プリントプロセッサはウィンドウズの拡張メタファ
イル(EMF)の作成を支援する。ユーザーはウィンド
ウズのアプリケーションを走らせ、希望する最初のプリ
ンタドライバとともに希望する印刷オブジェクトを選択
する。コンピュータネットワーク環境で動作するデバイ
スドライバは、これらに関係する特化したプリンタプロ
セッサを持たなければならない。印刷ジョブはアプリケ
ーションから印刷される。その結果、印刷ジョブは一時
的にメモリ内にスプーラーを介して保管される。ジョブ
が印刷のためにスケジュールされると、ジョブを印刷す
るためにスプーラーは特化したプリントプロセッサを呼
出す。プリントプロセッサはシステムにドライバが存在
するかどうか質問する。その後、アプリケーションによ
り選択されたプリンタをオープンし、ドライバの名前と
プリンタについての他の情報を得るため現在のPRINTER.
INFO.2構造体を得る。次に、プリントプロセッサは、ド
ライバの名前を前に示したように、新しい希望する名前
に変更する。
デバイスに印刷ジョブを与えるコンピュータネットワー
ク環境で動作するためのコンピュータのプログラミング
に対する最初のレベルの論理フローダイアグラムとして
示される。表1はさらに、上の図5と6に関して示され
ているように、C言語で表現されたプリントプロセッサ
の実行を詳細に記述する。「プリントプロセッサ」は、
コンピュータネットワーク環境内におけるコンピュータ
操作用のプリンタドライバ切替えを実行するデバイスを
形成する。「プリントプロセッサ」は自動的に実行する
ことができ、これは図7から11の論理フローダイアグ
ラムに対応する。代わりに、特化したプリントプロセッ
サはHP PCL5を作ることができる。この方法で
は、プリントプロセッサはウィンドウズの拡張メタファ
イル(EMF)の作成を支援する。ユーザーはウィンド
ウズのアプリケーションを走らせ、希望する最初のプリ
ンタドライバとともに希望する印刷オブジェクトを選択
する。コンピュータネットワーク環境で動作するデバイ
スドライバは、これらに関係する特化したプリンタプロ
セッサを持たなければならない。印刷ジョブはアプリケ
ーションから印刷される。その結果、印刷ジョブは一時
的にメモリ内にスプーラーを介して保管される。ジョブ
が印刷のためにスケジュールされると、ジョブを印刷す
るためにスプーラーは特化したプリントプロセッサを呼
出す。プリントプロセッサはシステムにドライバが存在
するかどうか質問する。その後、アプリケーションによ
り選択されたプリンタをオープンし、ドライバの名前と
プリンタについての他の情報を得るため現在のPRINTER.
INFO.2構造体を得る。次に、プリントプロセッサは、ド
ライバの名前を前に示したように、新しい希望する名前
に変更する。
【0046】ステップ”S1”によれば、コンピュータ
・オペレーティング・ネットワーク内のコンピュータ上
のオペレーティングシステム、及び出力デバイスのオペ
レーティングシステムとデバイスドライバが開始され
る。例えば、ネットワークのそれぞれのデバイスの電源
投入の際に、システムBIOSがオペレーティングシステム
とスプーラーを開始し、これにより自動的に初期化がな
され、または図7と8のフローチャートの起動を引き起
こされるようにすることができる。これによってコンピ
ュータは、拡張メタファイルを作成し、オリジナルのプ
リンタドライバのデバイスの情報を集め、メタファイル
を受信するためのプリンタ(あるいは出力デバイス)を
切替える。ステップ”S1”を実行した後、処理はステ
ップ”S2”に進む。
・オペレーティング・ネットワーク内のコンピュータ上
のオペレーティングシステム、及び出力デバイスのオペ
レーティングシステムとデバイスドライバが開始され
る。例えば、ネットワークのそれぞれのデバイスの電源
投入の際に、システムBIOSがオペレーティングシステム
とスプーラーを開始し、これにより自動的に初期化がな
され、または図7と8のフローチャートの起動を引き起
こされるようにすることができる。これによってコンピ
ュータは、拡張メタファイルを作成し、オリジナルのプ
リンタドライバのデバイスの情報を集め、メタファイル
を受信するためのプリンタ(あるいは出力デバイス)を
切替える。ステップ”S1”を実行した後、処理はステ
ップ”S2”に進む。
【0047】ステップ”S2”では、オペレーティング
システム上で走るアプリケーションが印刷ジョブを起動
する。ある方法では自動的に印刷要求を生成する。他の
方法ではユーザーが印刷ジョブを要求する。ステップ”
S2”を実行した後、処理はステップ”S3”に進む。
システム上で走るアプリケーションが印刷ジョブを起動
する。ある方法では自動的に印刷要求を生成する。他の
方法ではユーザーが印刷ジョブを要求する。ステップ”
S2”を実行した後、処理はステップ”S3”に進む。
【0048】ステップ”S3”では、オペレーティング
システム上で走るアプリケーションが印刷ジョブをグラ
フィックスデバイス・インターフェース(GDI)に転
送する。GDIはウィンドウズのオペレーティングシス
テムの構成要素であって、線の描画や色の管理というよ
うな図形表示機能を実現するための責任を有する。GD
Iは拡張メタファイルの形で中間の描画命令の中にデー
タを生成する。ステップ”S3”を実行した後、処理は
ステップ”S6”に進む。
システム上で走るアプリケーションが印刷ジョブをグラ
フィックスデバイス・インターフェース(GDI)に転
送する。GDIはウィンドウズのオペレーティングシス
テムの構成要素であって、線の描画や色の管理というよ
うな図形表示機能を実現するための責任を有する。GD
Iは拡張メタファイルの形で中間の描画命令の中にデー
タを生成する。ステップ”S3”を実行した後、処理は
ステップ”S6”に進む。
【0049】ステップ”S4”では、オリジナルのプリ
ンタドライバが、プリンタ、モニター、あるいは他の出
力デバイスのような関連する周辺装置を操作するのに必
要な情報を提供する。プリンタドライバは、描画を行う
デバイスの性能についての情報を提供する。例えば、使
用される紙のサイズ、色、モノクロのサポートなどが提
供されうるデバイスの性能についての情報のいくつかで
ある。ステップ”S4”と”S5”を実行した後、処理
はステップ”S5”と”S6”に進む。
ンタドライバが、プリンタ、モニター、あるいは他の出
力デバイスのような関連する周辺装置を操作するのに必
要な情報を提供する。プリンタドライバは、描画を行う
デバイスの性能についての情報を提供する。例えば、使
用される紙のサイズ、色、モノクロのサポートなどが提
供されうるデバイスの性能についての情報のいくつかで
ある。ステップ”S4”と”S5”を実行した後、処理
はステップ”S5”と”S6”に進む。
【0050】ステップ”S5”では、GDIは拡張メタ
ファイルの形式で生成された中間の描画命令を転送し、
それはメモリに保管される。
ファイルの形式で生成された中間の描画命令を転送し、
それはメモリに保管される。
【0051】ステップ”S6”では、アプリケーション
により定義されたように、メモリに保管された印刷ジョ
ブを出力デバイスに送るため、処理はスプーラーに対し
印刷ジョブにおける第2パスを起動するよう命令する。
ステップ”S6”を実行後、処理はステップ”S7”に
進む。
により定義されたように、メモリに保管された印刷ジョ
ブを出力デバイスに送るため、処理はスプーラーに対し
印刷ジョブにおける第2パスを起動するよう命令する。
ステップ”S6”を実行後、処理はステップ”S7”に
進む。
【0052】ステップ”S7”では、処理はプリントプ
ロセッサの実行を起動する。プリントプロセッサは次の
3つの態様で動作する。即ち、プリントプロセッサは、
図8に描かれたフローチャートの操作を介して初期化さ
れる。プリントプロセッサがオープンされ、プリンタド
ライバの詳細が検索され、新しいプリンタドライブの設
定がシステム・レジストリに保管され、プリントプロセ
ッサのデータ構造を達成する。プリントプロセッサが関
連するデバイスドライバを介して新しい出力デバイス上
の印刷ジョブの印刷(あるいは出力)を実行する。ステ
ップ”S7”を実行後(集合的に図8、9、10また
は、図11)、処理はステップ”S8”に進む。
ロセッサの実行を起動する。プリントプロセッサは次の
3つの態様で動作する。即ち、プリントプロセッサは、
図8に描かれたフローチャートの操作を介して初期化さ
れる。プリントプロセッサがオープンされ、プリンタド
ライバの詳細が検索され、新しいプリンタドライブの設
定がシステム・レジストリに保管され、プリントプロセ
ッサのデータ構造を達成する。プリントプロセッサが関
連するデバイスドライバを介して新しい出力デバイス上
の印刷ジョブの印刷(あるいは出力)を実行する。ステ
ップ”S7”を実行後(集合的に図8、9、10また
は、図11)、処理はステップ”S8”に進む。
【0053】ステップ”S8”ではGDIは新しいプリ
ンタドライバを使用して印刷ジョブを描画する。ステッ
プ”S8”を実行後、処理はステップ”S10”に進
む。図11の操作によると、丸で囲んだ数字1は、GD
Iにバッファを渡すためにステップ”S7.36”につ
ながる。ステップ”S8”を実行後、処理はステップ”
S10”に進む。
ンタドライバを使用して印刷ジョブを描画する。ステッ
プ”S8”を実行後、処理はステップ”S10”に進
む。図11の操作によると、丸で囲んだ数字1は、GD
Iにバッファを渡すためにステップ”S7.36”につ
ながる。ステップ”S8”を実行後、処理はステップ”
S10”に進む。
【0054】ステップ”S9”では、アプリケーション
により選択された新しいプリンタドライバが、出力デバ
イスの情報をGDIに提供し、これによりGDIはステ
ップ”S10”を介して印刷ジョブの出力ができるよう
に印刷ジョブの描画を行うことができる。
により選択された新しいプリンタドライバが、出力デバ
イスの情報をGDIに提供し、これによりGDIはステ
ップ”S10”を介して印刷ジョブの出力ができるよう
に印刷ジョブの描画を行うことができる。
【0055】ステップ”S10”では、印刷ジョブは文
書として印刷される。この時、処理は終了する。
書として印刷される。この時、処理は終了する。
【0056】図8によると、プリントプロセッサは第1
の操作を実行する。ステップ”S7.10”によると、
処理はプリントプロセッサの機能のポインタを初期化
し、メモリを割り振る。ステップ”S7.10”を実行
後、処理はステップ”S7.11”に進む。
の操作を実行する。ステップ”S7.10”によると、
処理はプリントプロセッサの機能のポインタを初期化
し、メモリを割り振る。ステップ”S7.10”を実行
後、処理はステップ”S7.11”に進む。
【0057】ステップ”S7.11”では、処理は、ス
プーラーへのリターンを起動する。ステップ”S7.1
1”を実行後、処理はステップ”S7.12”に進む。
プーラーへのリターンを起動する。ステップ”S7.1
1”を実行後、処理はステップ”S7.12”に進む。
【0058】ステップ”S7.12”で処理は終わる。
その後、処理は図9と10のフローチャートの実行へ進
む。
その後、処理は図9と10のフローチャートの実行へ進
む。
【0059】図9と10の処理によると、処理はプリン
トプロセッサによる第2の操作を実行する。ステップ”
S7.20”によると、処理はプリントプロセッサをオ
ープンする。ステップ”S7.20”を実行後、処理は
ステップ”S7.21”へ進む。
トプロセッサによる第2の操作を実行する。ステップ”
S7.20”によると、処理はプリントプロセッサをオ
ープンする。ステップ”S7.20”を実行後、処理は
ステップ”S7.21”へ進む。
【0060】ステップ”S7.21”では、プリントプ
ロセッサはプリンタをオープンする。ステップ”S7.
10”によると、処理は「openprinter API」を介し
てオープンを起動する。「Openprinter API」は、
「マイクロソフトウィンドウズ95 デバイスドライバ
開発キット」の中でプリントプロセッサが呼ぶサブルー
チンの名前である。「openprinter API」はスプーラ
ー内に存在し、スプーラーにより必要とされる機能を実
行する。ステップ”S7.21”を実行後、処理はステ
ップ”S7.22”へ進む。
ロセッサはプリンタをオープンする。ステップ”S7.
10”によると、処理は「openprinter API」を介し
てオープンを起動する。「Openprinter API」は、
「マイクロソフトウィンドウズ95 デバイスドライバ
開発キット」の中でプリントプロセッサが呼ぶサブルー
チンの名前である。「openprinter API」はスプーラ
ー内に存在し、スプーラーにより必要とされる機能を実
行する。ステップ”S7.21”を実行後、処理はステ
ップ”S7.22”へ進む。
【0061】ステップ”S7.22”では、プリントプ
ロセッサは「printerinfo2 構造体」を使用してプリン
タの詳細を検索する。ステップ”S7.22”による
と、詳細は「getprinter API」を介して検索され
る。「Getprinter API」はスプーラー内のサブルー
チンの名前であり、スプーラーから情報を検索する。ス
テップ”S7.22”を実行後、処理はステップ”S
7.23”に進む。
ロセッサは「printerinfo2 構造体」を使用してプリン
タの詳細を検索する。ステップ”S7.22”による
と、詳細は「getprinter API」を介して検索され
る。「Getprinter API」はスプーラー内のサブルー
チンの名前であり、スプーラーから情報を検索する。ス
テップ”S7.22”を実行後、処理はステップ”S
7.23”に進む。
【0062】ステップ”S7.23”では、プリントプ
ロセッサは「printinfo2」構造体のプリンタドライバ
の名前を新しいデバイスドライバに変更する。ステッ
プ”S7.23”を実行後、処理はステップ”S7.2
4”へ進む。
ロセッサは「printinfo2」構造体のプリンタドライバ
の名前を新しいデバイスドライバに変更する。ステッ
プ”S7.23”を実行後、処理はステップ”S7.2
4”へ進む。
【0063】ステップ”S7.24”では、プリントプ
ロセッサはシステムのレジストリ内に新しいプリンタの
の情報を保管する。このようなことは「setprinter A
PI」を介して実現される。「Setprinter API」は
プリンタあるいは出力デバイスについての情報を保管す
るスプーラー内に存在し、このためスプーラーはその情
報について知っている。ステップ”S7.24”を実行
後、処理はステップ”S7.25”へ進む。
ロセッサはシステムのレジストリ内に新しいプリンタの
の情報を保管する。このようなことは「setprinter A
PI」を介して実現される。「Setprinter API」は
プリンタあるいは出力デバイスについての情報を保管す
るスプーラー内に存在し、このためスプーラーはその情
報について知っている。ステップ”S7.24”を実行
後、処理はステップ”S7.25”へ進む。
【0064】ステップ”S7.25”では、プリントプ
ロセッサは印刷文書の特性を検索する。検索は「docume
ntproperties API」として実現される。「Documentp
roperties API」は生成されている文書についてスプ
ーラーから情報を取得する。ステップ”S7.25”を
実行後、処理はステップ”S7.26”へ進む。
ロセッサは印刷文書の特性を検索する。検索は「docume
ntproperties API」として実現される。「Documentp
roperties API」は生成されている文書についてスプ
ーラーから情報を取得する。ステップ”S7.25”を
実行後、処理はステップ”S7.26”へ進む。
【0065】ステップ”S7.26”では、プリントプ
ロセッサは新しいドライバの設定に一致させるため、文
書の特性を変更する。プリントプロセッサは本質的にde
vmode構造体を更新する。「Devmode 構造体」はコンピ
ュータネットワーク環境内でプリンタドライバ使用の能
力を記述するスプーラーの中に存在する構造体である。
ステップ”S7.26”を実行後、処理はステップ”S
7.27”へ進む。
ロセッサは新しいドライバの設定に一致させるため、文
書の特性を変更する。プリントプロセッサは本質的にde
vmode構造体を更新する。「Devmode 構造体」はコンピ
ュータネットワーク環境内でプリンタドライバ使用の能
力を記述するスプーラーの中に存在する構造体である。
ステップ”S7.26”を実行後、処理はステップ”S
7.27”へ進む。
【0066】ステップ”S7.27”では、プリントプ
ロセッサはシステムのレジストリに新しいプリンタの文
書の特性を保管する。このため、プリントプロセッサは
「setprinter API」を使用することによりドライバ
の名前を新しい希望する名前に変更する。「Setprinter
API」はプリンタあるいは出力デバイスについての
情報を保管するスプーラーの中に存在するサブルーチン
であるので、スプーラーはその情報について知ってい
る。ステップ”S7.27”を実行後、処理はステッ
プ”7.28”へ進む。
ロセッサはシステムのレジストリに新しいプリンタの文
書の特性を保管する。このため、プリントプロセッサは
「setprinter API」を使用することによりドライバ
の名前を新しい希望する名前に変更する。「Setprinter
API」はプリンタあるいは出力デバイスについての
情報を保管するスプーラーの中に存在するサブルーチン
であるので、スプーラーはその情報について知ってい
る。ステップ”S7.27”を実行後、処理はステッ
プ”7.28”へ進む。
【0067】ステップ”S7.28”では、プリントプ
ロセッサはプリントプロセッサのデータ構造を割り振
り、初期化する。ステップ”S7.28”を実行後、処
理はステップ”S7.29”へ進む。
ロセッサはプリントプロセッサのデータ構造を割り振
り、初期化する。ステップ”S7.28”を実行後、処
理はステップ”S7.29”へ進む。
【0068】ステップ”S7.29”では、プリントプ
ロセッサはスプーラーへのリターンを起動する。ステッ
プ”S7.29”を実行後、処理はステップ”S7.2
91”へ進む。
ロセッサはスプーラーへのリターンを起動する。ステッ
プ”S7.29”を実行後、処理はステップ”S7.2
91”へ進む。
【0069】ステップ”S7.291”で、プリントプ
ロセッサは図9と10のサブルーチンを終了し、好まし
くは図11のサブルーチンの実行へと移る。
ロセッサは図9と10のサブルーチンを終了し、好まし
くは図11のサブルーチンの実行へと移る。
【0070】図11の処理によると、処理はプリントプ
ロセッサによる第3の処理を実行する。ステップ”S
7.30”によると、処理は拡張メタファイルから文書
を印刷する。さらに、スプーラーは印刷文書をプリント
プロセッサに送る。ステップ”S7.30”を実行後、
処理はステップ”S7.31”へ進む。
ロセッサによる第3の処理を実行する。ステップ”S
7.30”によると、処理は拡張メタファイルから文書
を印刷する。さらに、スプーラーは印刷文書をプリント
プロセッサに送る。ステップ”S7.30”を実行後、
処理はステップ”S7.31”へ進む。
【0071】ステップ”S7.31”では、プリントプ
ロセッサは入力パラメーターを確認する。例えば、プリ
ントプロセッサはプリンタ・ハンドルとデータ・タイプ
を確認する。ステップ”S7.31”を実行後、処理は
ステップ”S7.32”へ進む。
ロセッサは入力パラメーターを確認する。例えば、プリ
ントプロセッサはプリンタ・ハンドルとデータ・タイプ
を確認する。ステップ”S7.31”を実行後、処理は
ステップ”S7.32”へ進む。
【0072】ステップ”S7.32”では、プリントプ
ロセッサはプリンタをオープンする。ステップ”S7.
32”を実行後、処理はステップ”S7.33”へ進
む。
ロセッサはプリンタをオープンする。ステップ”S7.
32”を実行後、処理はステップ”S7.33”へ進
む。
【0073】ステップ”S7.33”では、プリントプ
ロセッサはスプーラーの開始をセットし、文書を読みこ
む。さらに、「startdocprinter API」ファイルが実
行される。「StartdocprinterAPI」はプリントプロ
セッサの中に存在する機能であり、そしてプリントプロ
セッサに文書の開始を指示するためスプーラーにより呼
ばれる。ステップ”S7.33”を実行後、処理はステ
ップ”S7.34”へ進む。
ロセッサはスプーラーの開始をセットし、文書を読みこ
む。さらに、「startdocprinter API」ファイルが実
行される。「StartdocprinterAPI」はプリントプロ
セッサの中に存在する機能であり、そしてプリントプロ
セッサに文書の開始を指示するためスプーラーにより呼
ばれる。ステップ”S7.33”を実行後、処理はステ
ップ”S7.34”へ進む。
【0074】ステップ”S7.34”では、プリントプ
ロセッサは拡張メタファイルのバッファを読み込む。ス
テップ”S7.34”を実行後、処理はステップ”S
7.36”へ進む。
ロセッサは拡張メタファイルのバッファを読み込む。ス
テップ”S7.34”を実行後、処理はステップ”S
7.36”へ進む。
【0075】ステップ”S7.35”では、プリントプ
ロセッサは拡張メタファイルをバッファへ転送し、ここ
で読み込まれる。ステップ”S7.35”を実行後、処
理はステップ”S7.36”へ進む。
ロセッサは拡張メタファイルをバッファへ転送し、ここ
で読み込まれる。ステップ”S7.35”を実行後、処
理はステップ”S7.36”へ進む。
【0076】ステップ”S7.36”では、プリントプ
ロセッサは、描画するため新しいドライバのGDIへバ
ッファを渡す。「GDIplayspoolstream API」ファイ
ルが実行される。「GDIplayspoolstream API」は、
GDIの中に存在するサブルーチンである。ステップ”
S7.36”を実行後、処理はステップ”S7.34”
へ進む。
ロセッサは、描画するため新しいドライバのGDIへバ
ッファを渡す。「GDIplayspoolstream API」ファイ
ルが実行される。「GDIplayspoolstream API」は、
GDIの中に存在するサブルーチンである。ステップ”
S7.36”を実行後、処理はステップ”S7.34”
へ進む。
【0077】ステップ”S7.37”では、プリントプ
ロセッサはファイルの終わりに達するまで処理を進め
る。ステップ”S7.37”を実行後、処理はステッ
プ”S7.38”へ進む。
ロセッサはファイルの終わりに達するまで処理を進め
る。ステップ”S7.37”を実行後、処理はステッ
プ”S7.38”へ進む。
【0078】ステップ”S7.38”では、プリントプ
ロセッサはプリンタをクローズする。ステップ”S7.
38”を実行後、処理はステップ”S7.39”へ進
む。
ロセッサはプリンタをクローズする。ステップ”S7.
38”を実行後、処理はステップ”S7.39”へ進
む。
【0079】ステップ”S7.39”では、プリントプ
ロセッサは図11のサブルーチンを終了し、図7のサブ
ルーチンの実行へ戻る。
ロセッサは図11のサブルーチンを終了し、図7のサブ
ルーチンの実行へ戻る。
【0080】本発明は例として次の実施態様を含む。 (1)コンピュータネットワーク環境内で使用できる情
報の配信装置であって、オペレーティングシステムを有
し、コンピュータネットワーク環境内で動作するために
構成されたコンピュータと、オペレーティングシステム
を介してコンピュータ上で走るために構成されたアプリ
ケーションであって、出力命令ファイルを含む中間ファ
イルのフォーマットの形でソースジョブを生成するよう
構成されたアプリケーションと、出力命令ファイルを処
理するための中間の実行可能なコードの形のプリントプ
ロセッサと、出力を作成するため出力命令ファイルを出
力デバイスが使用することができる出力命令に、変換す
るよう構成された出力デバイスドライバを有する少なく
とも1つの出力デバイスと、を備え、前記プリントプロ
セッサは、出力命令ファイルを描画するため少なくとも
1つの出力デバイスの1つのデバイスドライバを選択
し、該出力デバイスドライバに出力命令ファイルを送り
込むようにした、配信装置。
報の配信装置であって、オペレーティングシステムを有
し、コンピュータネットワーク環境内で動作するために
構成されたコンピュータと、オペレーティングシステム
を介してコンピュータ上で走るために構成されたアプリ
ケーションであって、出力命令ファイルを含む中間ファ
イルのフォーマットの形でソースジョブを生成するよう
構成されたアプリケーションと、出力命令ファイルを処
理するための中間の実行可能なコードの形のプリントプ
ロセッサと、出力を作成するため出力命令ファイルを出
力デバイスが使用することができる出力命令に、変換す
るよう構成された出力デバイスドライバを有する少なく
とも1つの出力デバイスと、を備え、前記プリントプロ
セッサは、出力命令ファイルを描画するため少なくとも
1つの出力デバイスの1つのデバイスドライバを選択
し、該出力デバイスドライバに出力命令ファイルを送り
込むようにした、配信装置。
【0081】(2)上記(1)の情報の配信装置におい
て、出力命令ファイルは描画命令を含む描画命令ファイ
ルを含む。 (3)上記(1)の情報の配信の装置において、出力デ
バイスはプリンタドライバを有するプリンタを含み、プ
リンタドライバは、命令を処理するため出力命令の中間
ファイルのフォーマットを受信する。 (4)上記(1)の情報の配信装置において、出力命令
の中間ファイルのフォーマットは、拡張メタファイルを
含む。
て、出力命令ファイルは描画命令を含む描画命令ファイ
ルを含む。 (3)上記(1)の情報の配信の装置において、出力デ
バイスはプリンタドライバを有するプリンタを含み、プ
リンタドライバは、命令を処理するため出力命令の中間
ファイルのフォーマットを受信する。 (4)上記(1)の情報の配信装置において、出力命令
の中間ファイルのフォーマットは、拡張メタファイルを
含む。
【0082】(5)上記(1)の情報の配信装置におい
て、プリントプロセッサは出力命令ファイルを描画する
ため少なくとも1つの出力デバイスの1つのデバイスド
ライバへの連続した送信を介して、出力命令ファイルを
複数の出力デバイスへ送り込む。 (6)上記(1)の情報の配信装置において、プリント
プロセッサは出力命令ファイルを描画するため少なくと
も1つの出力デバイスの1つのデバイスドライバへのイ
ンターリーブ(interleave)の送信を介して、出力命令
ファイルを複数の出力デバイスへ送り込む。 (7)上記(1)の情報の配信装置において、プリント
プロセッサは出力命令ファイルを描画するため少なくと
も1つの出力デバイスの1つのデバイスドライバへ並列
に送信する多重スレッドを介して、出力命令ファイルを
複数の出力デバイスへ送り込む。
て、プリントプロセッサは出力命令ファイルを描画する
ため少なくとも1つの出力デバイスの1つのデバイスド
ライバへの連続した送信を介して、出力命令ファイルを
複数の出力デバイスへ送り込む。 (6)上記(1)の情報の配信装置において、プリント
プロセッサは出力命令ファイルを描画するため少なくと
も1つの出力デバイスの1つのデバイスドライバへのイ
ンターリーブ(interleave)の送信を介して、出力命令
ファイルを複数の出力デバイスへ送り込む。 (7)上記(1)の情報の配信装置において、プリント
プロセッサは出力命令ファイルを描画するため少なくと
も1つの出力デバイスの1つのデバイスドライバへ並列
に送信する多重スレッドを介して、出力命令ファイルを
複数の出力デバイスへ送り込む。
【0083】(8)上記(1)の情報の配信装置はさら
に、レジストリと、アプリケーションプログラミング・
インターフェース(API)とを含み、レジストリは、
出力命令ファイルを受信する少なくとも1つの出力デバ
イスを構成するため、アプリケーションプログラミング
・インターフェースを通じてプリントプロセッサに作用
する。 (9)上記(1)の情報の配信装置はさらに、メモリデ
バイスと、出力命令ファイルを生成したアプリケーショ
ンを取得し保管するためのスプーラーと、を含む。
に、レジストリと、アプリケーションプログラミング・
インターフェース(API)とを含み、レジストリは、
出力命令ファイルを受信する少なくとも1つの出力デバ
イスを構成するため、アプリケーションプログラミング
・インターフェースを通じてプリントプロセッサに作用
する。 (9)上記(1)の情報の配信装置はさらに、メモリデ
バイスと、出力命令ファイルを生成したアプリケーショ
ンを取得し保管するためのスプーラーと、を含む。
【0084】(10)上記(9)の情報の配信装置はさ
らに、図形表示機能を実行し、システムの図形表示のア
プリケーションプログラム・インターフェース(AP
I)を、少なくとも1つの出力デバイスの出力デバイス
ドライバ、メモリデバイス、および出力命令ファイルを
生成するために使用されるオリジナル・ドライバと動的
に連係するためグラフィックスデバイス・インターフェ
ース(GDI)を含む。 (11)上記(9)の情報の配信装置は更に、スプーラ
ーにより生成され出力命令ファイルに割当てられたスプ
ール・ヘッダを含み、スプール・ヘッダは、出力命令フ
ァイルを生成したアプリケーションの宛先とそれぞれの
宛先に対する描画化/コード化を記述するためのスプー
ルジョブ・ヘッダファイルを含む。
らに、図形表示機能を実行し、システムの図形表示のア
プリケーションプログラム・インターフェース(AP
I)を、少なくとも1つの出力デバイスの出力デバイス
ドライバ、メモリデバイス、および出力命令ファイルを
生成するために使用されるオリジナル・ドライバと動的
に連係するためグラフィックスデバイス・インターフェ
ース(GDI)を含む。 (11)上記(9)の情報の配信装置は更に、スプーラ
ーにより生成され出力命令ファイルに割当てられたスプ
ール・ヘッダを含み、スプール・ヘッダは、出力命令フ
ァイルを生成したアプリケーションの宛先とそれぞれの
宛先に対する描画化/コード化を記述するためのスプー
ルジョブ・ヘッダファイルを含む。
【0085】(12)上記(11)の情報の配信装置に
おいて、出力命令ファイルは拡張メタファイルを含み、
プリントプロセッサがスプーラーに応答して印刷文書を
起動した後、プリントプロセッサは拡張メタファイルの
オリジナルのコピーをメモリデバイスに複写し、フィー
ドバックのループは宛先に対する多重パスのジョブを構
成する複数の印刷文書のタスクを起動する。
おいて、出力命令ファイルは拡張メタファイルを含み、
プリントプロセッサがスプーラーに応答して印刷文書を
起動した後、プリントプロセッサは拡張メタファイルの
オリジナルのコピーをメモリデバイスに複写し、フィー
ドバックのループは宛先に対する多重パスのジョブを構
成する複数の印刷文書のタスクを起動する。
【0086】(13)オペレーティングシステムを有す
る型のコンピュータネットワーク環境内で動作するため
に使用できるコンピュータから印刷ジョブを配信するた
めのシステムにおいて、アプリケーションはオペレーテ
ィングシステム上で走り、かつ出力命令ファイルを含む
ソースジョブを生成するよう構成され、少なくとも1つ
の出力デバイスは出力を作成するための出力命令ファイ
ルを受信するための出力デバイスドライバを有し、方法
は、出力命令ファイルを処理するため中間の実行可能な
形でプリントプロセッサを提供するステップ、コンピュ
ータのメモリデバイス内のメモリの位置から識別された
プリンタドライバ名のプリンタの詳細を検索するステッ
プ、識別されたプリンタドライバの名前を異なるプリン
タの異なる識別されたプリンタドライバの名前に変更す
るステップ、異なる識別されたプリンタドライバ名のプ
リンタの詳細を、システム・レジストリ内に新しいプリ
ンタの情報の形で保存するステップ、保存されたプリン
タの詳細の印刷文書の特性をメモリデバイスから検索す
るステップ、新しいドライバの設定に一致させるために
検索された印刷文書の特性を変更するステップ、印刷文
書の特性をシステム・レジストリ内に保存するステッ
プ、異なるプリンタ上で印刷ジョブを実行するために使
用することができるプリントプロセッサのデータ構造を
割り振り初期化するステップ、とを含む。
る型のコンピュータネットワーク環境内で動作するため
に使用できるコンピュータから印刷ジョブを配信するた
めのシステムにおいて、アプリケーションはオペレーテ
ィングシステム上で走り、かつ出力命令ファイルを含む
ソースジョブを生成するよう構成され、少なくとも1つ
の出力デバイスは出力を作成するための出力命令ファイ
ルを受信するための出力デバイスドライバを有し、方法
は、出力命令ファイルを処理するため中間の実行可能な
形でプリントプロセッサを提供するステップ、コンピュ
ータのメモリデバイス内のメモリの位置から識別された
プリンタドライバ名のプリンタの詳細を検索するステッ
プ、識別されたプリンタドライバの名前を異なるプリン
タの異なる識別されたプリンタドライバの名前に変更す
るステップ、異なる識別されたプリンタドライバ名のプ
リンタの詳細を、システム・レジストリ内に新しいプリ
ンタの情報の形で保存するステップ、保存されたプリン
タの詳細の印刷文書の特性をメモリデバイスから検索す
るステップ、新しいドライバの設定に一致させるために
検索された印刷文書の特性を変更するステップ、印刷文
書の特性をシステム・レジストリ内に保存するステッ
プ、異なるプリンタ上で印刷ジョブを実行するために使
用することができるプリントプロセッサのデータ構造を
割り振り初期化するステップ、とを含む。
【0087】(14)上記(13)のシステムにおい
て、プリントプロセッサのデータ構造を初期化すること
に続き、さらなる改良は、宛先に対する多重パスの印刷
ジョブを実行する上記(13)のステップを介して、他
の印刷ジョブを再実行するためシステムを再度初期化す
るためにスプーラーへリターンするステップを含む。
て、プリントプロセッサのデータ構造を初期化すること
に続き、さらなる改良は、宛先に対する多重パスの印刷
ジョブを実行する上記(13)のステップを介して、他
の印刷ジョブを再実行するためシステムを再度初期化す
るためにスプーラーへリターンするステップを含む。
【0088】(15)システム内において上記(13)
の改良された方法によると、出力命令ファイルは拡張メ
タファイルの形で実現化され、方法はさらに、アプリケ
ーションから拡張メタファイルを取得して保管するため
のスプーラーを提供するステップ、スプーラーを介して
スプール・ヘッダを生成し、拡張メタファイルにスプー
ル・ヘッダを割当てるステップ、とを含み、スプール・
ヘッダは、拡張メタファイルを生成したアプリケーショ
ンの宛先とそれぞれの宛先に対する描画化/コード化を
記述するためのスプールジョブ・ヘッダファイルを含
む。
の改良された方法によると、出力命令ファイルは拡張メ
タファイルの形で実現化され、方法はさらに、アプリケ
ーションから拡張メタファイルを取得して保管するため
のスプーラーを提供するステップ、スプーラーを介して
スプール・ヘッダを生成し、拡張メタファイルにスプー
ル・ヘッダを割当てるステップ、とを含み、スプール・
ヘッダは、拡張メタファイルを生成したアプリケーショ
ンの宛先とそれぞれの宛先に対する描画化/コード化を
記述するためのスプールジョブ・ヘッダファイルを含
む。
【0089】
【発明の効果】本発明の情報の配信装置により、複数の
異なる出力デバイスの任意の1つに出力のためのソース
ジョブの配信を行うことができる。また、本発明の情報
の配信装置により、単一のソースアプリケーション/ソ
ース文書を形成する複数の受信の出力デバイスへのソー
スジョブの配信を行うことができる。
異なる出力デバイスの任意の1つに出力のためのソース
ジョブの配信を行うことができる。また、本発明の情報
の配信装置により、単一のソースアプリケーション/ソ
ース文書を形成する複数の受信の出力デバイスへのソー
スジョブの配信を行うことができる。
【0090】 表1 /* 以下のコードは、ウィンドウズ95デバイスドライバ開発キットでマイクロ ソフト社により提供されるサンプルのプリントプロセッサを基準としている。サ ンプルコードは、マイクロソフト・ウィンドウズ・オペレーティング・システム 上で使用されるデバイスの製造により、必要に応じて変更及び適合のために自由 に使用できると仮定する。「プリンタドライバ切替え」の考えを試験するために なされる変更は、変更の前後に続くコメントにより以下に示される。以下のマイ クロソフト著作権の文はコメント内のコードには適用されない。*/ /*** >> プリンタドライバ切替えを試験するための変更。開始/終了***/ /*** >> L. Snyders 8/29/96 Copyright 1996 Hewlett-Packard Company << ***/ /*********************************************************************** ****************** * * このコードと情報は明示、黙示を問わず一切の保証をも含むものではなく「現 状のまま」で提供される。* * * * Copyright (C) 1993-95 Microsoft Corporation. All Rights Reserved. * * ************************************************************************ **********/ #define TIMING #include <windows.h> #include <wingdi.h> #include <winspool.h> #include <winsplp.h> #include <winuser.h> #include <winbase.h> #include "local.h" #include "winprint.h" TCHAR FAR *szWinPrint = TEXT("WinPrint"); LPTSTR Datatypes[] = {"RAW", "EMF", 0}; LPTSTR pSimple = NULL; LPTSTR pFull = NULL; /*** >> プリンタドライバ切替の試験のための変更。開始<<***/ /*** >> L. Snyders 8/29/96 Copyright 1996 Hewlett-Packard Company << ***/ LPTSTR pNewPrinterName = NULL; LPDEVMODE pDevMode = NULL; /***>> プリンタドライバ切替の試験のための変更。終了<<***/ /***>>L. Snyders 8/29/96 <<***/ HDC WINAPI gdiPlaySpoolStream(LPSTR, LPSTR, LPSTR, DWORD, LPDWORD, HDC); #define PRINTPROCESSOR_TYPE_RAW 0 #define PRINTPROCESSOR_TYPE_EMF 1 #define PRINTPROCESSOR_TYPE_NUM 2 #ifdef TIMING HWND hWndBench = 0; #endif //------------------------------- // //------------------------------- BOOL WINAPl InitializePrintProcessor ( LPPRINTPROCESSOR pPrintProoessor, DWORD cbPrintProcessor ) { char szBuf[MAX_PATH]; pPrintProcessor->fpEnumDatatypes = WinprintEnumPrintProcessorDatatypes; pPrintProcessor-> fpOpenPrintProcessor = WinprintOpenPrintProcessor; pPrintProcessor-> fpPrintDocument = WinprintPrintDocumentOnPrintProcessor; pPrintProcessor-> fpClosePrintProcessor = WinprintClosePrintProcessor; pPrintProcessor-> fpControlPrintProcessor = WinprintControlPrintProces sor; if (LoadString(hInst, IDS_BANNERSIMPLE, szBuf, sizeof(szBuf))) pSimple = AllocSplStr(szBuf); if (LoadString(hInst, IDS_BANNERFULL, szBuf, Sizeof (szBuf)) pFull = AllocSplStr (szBuf); return TRUE; } // ----------------------------------------------------------- // // ----------------------------------------------------------- BOOL WINAPl Win printEnumPrintProcessorDatatypes( LPTSTR pName, LPTSTR pPrintProcessorName, DWORD Level, LPSTR pDatatypes, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned ) { DATATYPES_INFO_1 FAR*pInfo1 = (DATATYPES_INFO_1 FAR*)p Datatypes; LPTSTR FAR *pMyDatatypes = Datatypes; DWORD cbTotal = 0; LPBYTE pEnd; *pcReturned = 0; pEnd = (LPBYTE)pInfo1 + cbBuf; while (*pMyDatatypes) { cbTotal + = wcslen(*pMyDatatypes)*sizeof(TCHAR) + sizeof(TCHAR) + sizeof(DATATYPES_INFO_1); pMyDatatypes ++; } *pcbNeeded = cbTotal; if (cbTotal < = cbBuf) { pMyDatatypes = Datatypes; while (*pMyDatatypes) { pEnd - = wcslen(*pMyDatatypes)*sizeof(TCHAR) + sizeof(TCHAR); wcscpy((LPTSTR)pEnd, *pMyDatatypes); pInfo1->pName = (LPTSTR)pEnd; pInfo1 ++; (*pcReturned)++; pMyDatatypes++; } }else{ SetLastError(ERROR_INSUFFICIENT_BUFFER); return FALSE; } return TRUE; } //------------------- // //------------------- HANDLE WINAPl WinprintOpenPrint Processor( LPTSTR pPrinterName ) { PRINTPROCESSORDATA pDATA; HANDLE hPrinter = NULL; HDC hDC= 0; /***>> プリンタドライバ切替の試験のための変更。開始 << ***/ /***>> L. Snyders 8/29/96 Copyright 1996 Hewlett-Packard Company << ***/ DWORD dwBytesNeeded = 0; /*Get/SetPrintersのため*/ DWORD dwDMBytesNeeded = 0; DWORD dwModeFlag = DM_OUT_BUFFER; BOOL bRetcode = TRUE; PRINTER_INFO_2 *pPrtInfO2 = NULL; char buf[256]; /* デバッグ・ストリングのためのバッファ */ OutputDebugString("HPPRINTP: Request to Open printer:"); Out putDebugString(pPrinterName); /***>> プリンタドライバ切替の試験のための変更。終了 << ***/ /***>> L. Snyders 8/29/96 Copyright 1996 << ***/ if(!OpenPrinter(pPrinterName, &hPrinter, NULL)) { OutputDebugString("HPPRINTP.DLL Open Printer failed"); return FALSE; } /***>> プリンタドライバ切替の試験のための変更。開始 << ***/ /***>> L. Snyders 8/29/96 Copyright 1996 Hewlett-Packard Company << ***/ // // バッファに必要なバイト数を取得するため、最初にGetPrinterを呼ぶ // GetPrinter (hPrinter, 2, 0, 0, &dwBytesNeeded); // //Printer infoバッファのためのメモリの割り振り // if(!(pPrtInfo2 = (PRINTER_INFO_2 *) AllocSplMem (dwBytesNeeded))) { OutputDebugString("HPPRINTP.DLL AllocSplMem failed\n\r"); return FALSE; } // // GetPrinters level 2 // bRetcode = GetPrinter (hPrinter, 2, (LPBYTE)pPrtInfo2, dwBytesNeeded, &dwBYtesNeeded); if (bRetcode = = FALSE) { OutputDebugString("HPPRINTP.DLL Second GetPrinter failed\n\r"); return FALSE; } // // ドライバをモノビットマップ・ドライバに変更 // pPrtlnfo2->pDriverName = AllocSplStr("Mono Bitmap Driver"); /* 新しい ドライバの名前 */ bRetcode = SetPrinter(hPrinter, 2, (LPBYTE)pPrtInfo2, 0); if (bRetcode = = FALSE) { OutputDebugString(" HPPRINTP. DLL SetPrinter failed\n\r"); return FALSE; } // // 新しいドライバのdevmode構造体をセット、最初にそのサイズを得る // dwDMBytesNeeded = DocumentProperties(NULL. hPrinter, pPrinterName, NULL. NULL, O); pDevMode = (LPDEVMODE)AllocSplMem(dwDMBytesNeeded); // // その後既定値のdevmodeの値を取得 // bRetcode = DocumentProperties(NULL, hPrinter, pPrinterName, pDevMode. NULL, dwModeFlag); if(bRetcode < 0) { OutputDebugString("HPPRINTP.DLL DocProp Failed\n\r"); return (FALSE) ; } // // 既定値のdevmodeの値をレジストリ内にセット // pPrtInfo2->pDevMode = pDevMode; bRetcode = SetPrinter(hPrinter, 2, (LPBYTE)pPrtInfo2, O); /***>> プリンタドライバ切替の試験のための変更。終了 << ***/ /***>> L. Snyders 8/29/96 Copyright 1996 << ***/ pData = (PPRINTPROCESSORDATA)AllocSplMem(sizeof(PRINTPROCESSORDATA)); pData- > cb = sizeof(PRINTPROCESSORDATA); pData-> signature = PRINTPROCESSORDATA SIGNATURE; pData- > hPrinter = hPrinter; pData- > semPaused = CreateEvent(NULL, FALSE, TRUE,NULL); pData->pPrinterName = AllocSplStr(pPrinterName); return (HANDLE)pData; } // ---------------------------------------------------------------- // // --------------------------------------------------------------- UINT ValidateDatatype(LPTSTR pDatatype) { LPTSTR FAR *pMyDatatypes = Datatypes; DWORD uDatatype = O; while (*pMyDatatypes && wcscmp(*pMyDatatypes pDatatype)) { pMyDatatypes + + ; uDatatype + + ; } return uDatatype; } // ---------------------------------------------------------- // // ---------------------------------------------------------- DWORD ValidateBannerType(LPTSTR lpBanner) { if (lpBanner && *lpBanner) { if (!lwcscmp(lpBanner, pFull)) return BANNER_FULL; if (!wcscmp(lpBanner, pSimple)) return BANNER_SIMPLE; #ifdef TIMING if (!wcscmp(lpBanner, "Bench")) { hWndBench = FindWindow("BNCH32PRT", "PRTWIN"); if (hWndBench) SendMessage(hWndBench, WM_USER + 801 , 0, 0); return 0; } else hWndBench = 0; #endif return BANNER_CUSTOM; } return 0; } // ------------------------------------------------------------------- // // ------------------------------------------------------------------- BOOL WINAPl Win printPrintDocumentOnPrintProoessor( HANDLE hPrintProcessor, LPPRINTPROCESSORDOCUMENTDATA lpDOC ) { PPRINTPROCESSORDATA pData; DOC_INFO_2 DocInfo; DWORD LastError = 0; DWORD NoRead, NoWritten; DWORD iBannerType; BYTE Buffer [4096] ; HANDLE hPrinterRead; HDC hDC = NULL; LPBYTE pReadBuf; DWORD cbReadBuf; DWORD NoLeftOver = O; BOOL ret = TRUE; if (!(pData = ValidateHandle(hPrintProcessor))) { SetLastError(ERROR_lNVALID_HANDLE); return FALSE; } pData- > uDatatype = ValidateDatatype(lpDoc- > pDatatype); iBannerType = ValidateBannerType(lpDoc-> pSepFile); if (iBannerType) InsertBannerPage(pData- > hPrinter, lpDoc- > JobId, lpDoc- > pOutputFile, iBannerType, lpDoc- > pSepFile); DocInfo.pDocName = lpDoc->pDocumentName; DocInfo.pOutputFile = lpDoc->pOutputFile; // スプール・ファイル DocInfo.pDatatype = lpDoc-> pDatatype; DocInfo.Jobld = lpDoc->JobId; // スプール・ファイルを読むために同じプリンタをオープン。 if (!OpenPrinter(pData- > pPrinterName, &hPrinterRead, NULL)) return FALSE; // ReadPrinter()にスプール・ファイルを読ませる。 DocInfo.dwMode = DI_READ_SPOOL_JOB; if (!StartDocPrinter(hPrinterRead, 2, (LPBYTE)&DocInfo)) { LastError = GetLastError(); ret = FALSE; goto Exit_2; } if (pData->uDatatype = = PRINTPROCESSOR_TYPE_RAW) { // ポートへの直接書き込みを開始 DocInfo.dwMode = DI_CHANNEL_WRITE; if (!StartDocPrinter(pData-> hPrinter, 2, (LPBYTE)&DocInfo)) { // SetJob(pData-> hPrinter, lpDoc->JobId, 0, NULL, JOB_CONTROL_CANCEL); LastError = GetLastError(); ret = FALSE; goto Exit_1 ; } } pReadBuf = (LPBYTE)Buffer; cbReadBuf = sizeof(Buffer); //ここでReadPrinter()は実際にスプール・ファイルの4Kを読むために使用さ //れる。その後、このデータはRAWであれば直接プリンタに、EMFであればGDI //に送られる。後者の場合は、メタファイルののデータはプリンタのDC上に再 //生され、その後プリンタに送られる(これらすべてがgdiPlaySpoolStream() //により行われる)。 while (((ReadPrinter(hPrinterRead, pReadBuf, cbReadBuf, &NoRead)) && NoRead) || NoLeftOver) { // gdiPlaySpoolStreamは1度に1ページ再生する。 // そのため、再生されたEMFはそれぞれのページで停止する機会を得る。 if (pData->fsStatus & PRINTPROCESSOR_PAUSED) WaitForSingleObject(pData- > semPaused , INFINITE) ; if (pData->fsStatus & PRINTPROCESSOR_ABORTED) { // EMFは中断できない // DC等をクリーンアップする必要あり。 if (pData->uDatatype = = PRINTPROCESSOR_TYPE_EMF) gdiPlaySpoolStream(NULL, NULL, IpDoc-> pSpoolFileName, 0, 0, hD); break; } // RAWかEMFかチェックし、それに応じてそれを正しい場所へ送る。 if (pData->uDatatype = = PRINTPROCESSOR_TYPE_RAW) WritePrinter(pData- > hPrinter, Buffer, NoRead, &NoWritten); else { NoRead + = NoLeftOver; NoWritten = NoRead; SetLastError(ERROR_SUCCESS); // 最初はhDCはNULLである // ここでメタファイルが再生される。 hDC = gdiPlaySpoolStream( pData- > pPrinterName, lpDoc- > pOutputFile, Buffer, lpDoc->JobId, &NoRead, hDC); // リターンに際し、NoReadは前のバッファで処理されるバイト数である。 // これは、NoWrittenより大きくあってはならない。 if (hDC && (NoWritten > = NoRead)) { NoLeftOver = NoWritten - NoRead; // 処理されなかった結果、未完成のSPブロックが存在したら、繰り返す必 // 要あり。 if (NoLeftOver) CopyMemory(Buffer, Buffer + NoRead, NoLeftOver); pReadBuf = Buffer + NoLeftOver; cbReadBuf = sizeof(Buffer) - NoLeftOver; } else { // 失敗したら、 // EMF????.TMP. ??? を削除 // もしくは、EMFをそのままにしておき、 // ユーザに???をリトライさせますか LastError = GetLastError(); DBGMSG(DBG_ERROR, <"WinprintPrintDoc: gdiPlaySpoolStream failed %d\n", LastError)); // ユーザにリトライ/キャンセル/OK?か促す gdiPlaySpoolStream(NULL, NULL, lpDoc->pSpoolFileName, 0, 0, 0); ret = FALSE; break; } } } if (pData->uDatatype = = PRINTPROCESSOR_TYPE_RAW) EndDocPrinter(pData- > hPrinter) ; Exit_1: EndDocPrinter(hPrinterRead); Exit_2: ClosePrinter(hPrinterRead); if (LastError) SetLastError(LastError) ; #ifdef TIMING if (hWndBenoh) SendMessage(hWndBench, WM_USER + 802, 0, 0); #endif return ret; } // ------------------------------- // // ------------------------------- BOOL WINAPl WinprintClosePrintProcessor( HANDLE hPrintProcessor ) { PPRINTPROCESSORDATA pData; pData = ValidateHandle(hPrintProcessor); if (!pData) { SetLastError(ERROR_INVALID_HANDLE) ; return FALSE; } pData->signature = O; /* 任意に割り振られた資源を解放*/ if (pData- > hPrinter) ClosePrinter< pData- > hPrinter) ; CloseHandle( pData- > sem Paused) ; if (pData- > pPrinterName) FreeSplStr(pData- > pPrinterName) ; FreeSplMem(pData, pData- > cb); return TRUE; } // ---------------------------------------- // // ---------------------------------------- BOOL WINAPl WinprintControlPrintProoessor( HANDLE hPrintProcessor, DWPRD Command, DWORD JobID, LPTSTR pDatatype, LPTSTR pSpoolFile ) { PRINTPROCESSORDATA pData; PRINTROCESSORDATA DATA; if (hPrintProcessor) pData = ValidateHandle(hPrintProcessor); else { if (Command ! = JOB_CONTROL_CANCEL) return FALSE; Data.uDatatype = ValidateDatatype(pDatatype); if (Data,uDatatype > = 0) pData = &Data; else pData = 0; } if (pData) { switch (Command) { case JOB_CONTROL_PAUSE: ResetEvent( pData- > semPaused); pData->fsStatus | = PRINTPROCESSOR_PAUSED; return TRUE; case JOB_CONTROL_CANCEL: if (!hPrintProcessor) { // 印刷を開始しなかったジョブを削除 if (pData->uDatatype = = PRINTPROCESSOR_TYPE_EMF) { return (BOOL)gdiPlaySpoolStream(NULL, NULL, pSpooIFile, 0, 0, 0); } return TRUE; } pData->fsStatus | = PRINTPROCESSOR_ABORTED; /* 停止したときはジョブの解放が失敗*/ case JOB_CONTROL_RESUME: if (pData->fsStatus & PRINTPROCESSOR_PAUSED) { pData->fsStatus &= 〜PRINTPROCESSOR_PAUSED; SetEvent( p Data- > sem Paused) ; } return TRUE; default: break; } } return FALSE; } // ---------------------------------------- // // ---------------------------------------- BOOL WINAPl WinprintlnstallPrintProcessor( HWND hWnd ) { return TRUE; } // ----------------------------------------- // // ----------------------------------------- PPRINTPROCESSORDATA ValidateHandle( HANDLE hQProc ) { PRINTPROCESSORDATA pData = (PRINTPROCESSORDATA)hQProc; if (pData && pData->signature = = PRINTPROCESSORDATA_SIGNATURE) return( pData ); return( NULL ); } /* ファイル名: Iocal.h */ /*********************************************************************** *************** * * このコードと情報は明示、黙示を問わず一切の保証をも含むものではなく「現 状のまま」で提供される。* * * * *Copyright (C) 1993-95 Microsoft Corporation. All Rights Reserved.* * * ************************************************************************ ***************/ // -------------------------------------------- // WINPRINT #define IDS_BANNERTITLE1 521 #define IDS_BANNERTITLE2 522 #define IDS_BANNERJOB 523 #define IDS_BANNERUSER 524 #define IDS_BANNERDATE 525 #define IDS_BANNERSIMPLE 526 #define IDS_BANNERFULL 527 // -------------------------------------------- // -------------------------------------------- // WINPRINT #define IDC_STANDBAN 600 #define RT_CLIPFILE 601 // -------------------------------------------- //--------------------------------------------- // EXTERN VARIABLES / --------------------------------------------- extern HANDLE hInst; // -------------------------------------------- // DEBUG STUFF // -------------------------------------------- #ifdef DEBUG extern DWORD SplDbgLevel; VOID cdecl DbgMsg( LPSTR MsgFormat, ... ); /* これらのフラグは、DBGMSGマクロの引数としては使用されない。 * 中断するには、グローバル変数のハイ・ワード(high word)をセットしなけれ ば * ならない。 * DBGMSGを使用するときは無視される。 * (ここは主に説明の目的のため。) */ #define DBG_BREAK_ON_WARNING ( DBG_WARNING < < 16 ) #define DBG_BREAK_ON_ERROR ( DBG_ERROR < < 16 ) #define DBG_NONE 0 #define DBG INFO 1 #define DBG_TRACE DBG_INFO #define DBG_WARNING 2 #define DBG_ERROR 4 /* 2重の中括弧記号は例えば以下のために必要である。: * * DBGMSG(DBG_ERROR,("Error code %d", Error)); * * これはマクロでは可変のパラメーターリストを使用できないからである。 * ノンデバッグ・モードでは前処理の結果、セミコロンになる。 * * デバッガを介してグローバル変数GLOBAL_DEBUG_FLAGSをセットする。 * ローワード(low word)にフラグをセットすることが印刷レベルを引きおこす * 。ハイワード(high word)をセットすることはデバッガへの割り込みを引き起 * こす。例えば、0x00040006をセットすると、すべての警告とエラーメッセー * ジを印刷し、エラーの際に中断する。 */ #define DBGMSG( Level, MsgAndArgs ) {if (Level > = SplDbgLevel) {DbgMsg MsgAndArgs;}} #define DBGBREAKO {DebugBreak();} #define ASSERT( Expr, MsgAndArgs ) {if (!Expr) {DbgMsg MsgAndArgs; DebugBreakO;}} VOID SplInSem(VOID); VOID SplOutSem(VOID); #else #define DBGMSG( Level, MsgAndArgs ) #define DBGBREAK() #define ASSERT( Expr, MsgAndArgs ) #define SpllnSem() #define SplOutSemO #endif // ----------------------------------------- // FUNCTION PROTOTYPE //------------------------------------------ #define AllocSplMem(a) LocalAlloc( LPTR, a ) #define FreeSplMem(a, b) LocalFree( a ) LPVOID ReallocSplMem( LPVOID lpOldMem, DWORD cbOld, DWORD cbNew ); LPTSTR AIlocSplStr( LPTSTR lpStr ); BOOL FreeSplStr( LPTSTR lpStr ); BOOL ReallocSplStr( LPTSTR FAR *plpStr, LPTSTR lpStr ); // ------------------------------------ // ANSIマクロに対するユニコード(UNICODE) // ??? !!! これらを遅かれ早かれ除かなければならない // ------------------------------------ #include <string.h> #include <stdlib.h> #include <stdio.h> #ifndef UNICODE LPSTR mystrstr( LPSTR cs, LPSTR ct ); LPSTR mystrrchr( LPSTR cs, char c ); LPSTR mystrchr( LPSTR cs, char c ); int mystrnicmp( LPSTR cs, LPSTR ct, int n ); #define wcscat(a, b) lstrcat(a, b) #define wcscmp(a, b) lstrcmp(a, b) #define woscpy(a, b) lstrcpy(a, b) #define wcslen(a) lstrcpy(a) #undef wcsicmp #define wcsicmp(a, b) lstrcmpi(a, b) #define woschr(a, b) mystrchr(a, b) #define wcsrchr(a, b) mystrrchr(a, b) // #define wcsncmp(a, b, c) strncmp(a, b, c) #undef wcsnicmp #define wcsnicmp(a, b, c) mystrnicmp(a, b, c) #define wcsstr(a, b) mystrstr(a, b) #endif // UNICODE // ccteng
【図1】本発明のプリンタドライバ切替えのメカニズム
及び方法を実現するためのコンピュータネットワーク環
境の概念的なブロック図。
及び方法を実現するためのコンピュータネットワーク環
境の概念的なブロック図。
【図2】図1のプリンタドライバ切替えのメカニズムの
構造と操作を示す図式化したブロック図。
構造と操作を示す図式化したブロック図。
【図3】図1のプリンタドライバ切替えの構造と操作を
示す図式化したブロック図。
示す図式化したブロック図。
【図4】メモリに拡張メタファイルのデータをスプール
するためのオリジナルのデバイス/ドライバからの第1
パスの操作におけるデバイスドライバ切替えのメカニズ
ムの第1の実施形態を図式化したブロック図。
するためのオリジナルのデバイス/ドライバからの第1
パスの操作におけるデバイスドライバ切替えのメカニズ
ムの第1の実施形態を図式化したブロック図。
【図5】新しいデバイスドライバに対するプリントプロ
セッサを介して、印刷ジョブとプリンタの情報をデスプ
ールするための第2パスの操作におけるデバイスドライ
バ切替えのメカニズムの第1の実施形態を図式化したブ
ロック図。
セッサを介して、印刷ジョブとプリンタの情報をデスプ
ールするための第2パスの操作におけるデバイスドライ
バ切替えのメカニズムの第1の実施形態を図式化したブ
ロック図。
【図6】印刷ジョブの宛先への多重パスにおけるデバイ
スドライバ切替えのメカニズムの第1の実施形態を図式
化したブロック図。
スドライバ切替えのメカニズムの第1の実施形態を図式
化したブロック図。
【図7】本発明のある実施形態において、アプリケーシ
ョン内の印刷要求の中で印刷ジョブを複数の異なるジョ
ブに配信するためのウィンドウズのオペレーティングシ
ステム内のプリンタドライバ切替えのためのメカニズム
を自動的に実現するのに使用されるステップの順序を示
したフローチャート。
ョン内の印刷要求の中で印刷ジョブを複数の異なるジョ
ブに配信するためのウィンドウズのオペレーティングシ
ステム内のプリンタドライバ切替えのためのメカニズム
を自動的に実現するのに使用されるステップの順序を示
したフローチャート。
【図8】図7のプリントプロセッサにより実現される第
1の操作を示すフローチャート。
1の操作を示すフローチャート。
【図9】図7のプリントプロセッサにより実現される第
2の操作を描いたフローチャート。
2の操作を描いたフローチャート。
【図10】図7のプリントプロセッサにより実現される
第2の操作を描いたフローチャート。
第2の操作を描いたフローチャート。
【図11】図7のプリントプロセッサにより実現される
第3の操作を示すフローチャート。
第3の操作を示すフローチャート。
10 コンピュータ 12 コンピュータネットワーク環境 14〜18 出力デバイス 20〜22 コンピュータ 28 ソースジョブ 30、32、34 宛先 36 アプリケーション(印刷) 40 GDI 42 EMF 46 スプーラー 48 スプール・ヘッダ 50 プリントプロセッサ
Claims (1)
- 【請求項1】コンピュータネットワーク環境内で使用す
る情報の配信装置であって、 オペレーティングシステムを有し、コンピュータネット
ワーク環境内で動作するために構成されたコンピュータ
と、 前記オペレーティングシステムを介して前記コンピュー
タ上で走るために構成されたアプリケーションであっ
て、出力命令ファイルを含む中間ファイルのフォーマッ
トの形でソースジョブを生成するよう構成されたアプリ
ケーションと、 前記出力命令ファイルを処理するための中間の実行可能
なコードの形のプリントプロセッサと、 出力を作成するため出力デバイスが使用することができ
る出力命令に前記出力命令ファイルを変換するよう構成
された出力デバイスドライバを有する少なくとも1つの
出力デバイスと、を備え、 前記プリントプロセッサは、前記出力命令ファイルに作
用し、前記出力命令ファイルを描画するため前記少なく
とも1つの出力デバイスの1つの前記デバイスドライバ
を選択し、該出力デバイスドライバに前記出力命令ファ
イルを送り込むようにした、配信装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/816,978 US5982996A (en) | 1997-03-13 | 1997-03-13 | Mechanism for printer driver switching in windows operating systems to allow distribution of print jobs to an output device from a single print request within an application |
| US816,978 | 1997-03-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10320343A true JPH10320343A (ja) | 1998-12-04 |
| JPH10320343A5 JPH10320343A5 (ja) | 2005-07-21 |
Family
ID=25222075
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10061761A Withdrawn JPH10320343A (ja) | 1997-03-13 | 1998-03-12 | プリンタドライバの切替えを行う情報の配信装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5982996A (ja) |
| EP (1) | EP0864964B1 (ja) |
| JP (1) | JPH10320343A (ja) |
| DE (1) | DE69727906T2 (ja) |
Families Citing this family (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5874960A (en) * | 1995-07-05 | 1999-02-23 | Microsoft Corporation | Method and system for sharing applications between computer systems |
| US6760118B1 (en) * | 1996-03-27 | 2004-07-06 | Canon Kabushiki Kaisha | Printing device control apparatus and method |
| US6560621B2 (en) * | 1997-12-29 | 2003-05-06 | Intel Corporation | World wide web formatting for program output through print function |
| JP3278394B2 (ja) * | 1998-02-25 | 2002-04-30 | キヤノン株式会社 | 情報処理装置、情報処理方法、及び、記憶媒体 |
| JP4708518B2 (ja) * | 1998-05-21 | 2011-06-22 | キヤノン株式会社 | 情報処理装置、データ処理方法、情報処理システム、及びコンピュータ読み取り可能な記憶媒体 |
| US6636891B1 (en) * | 1998-11-06 | 2003-10-21 | Seiko Epson Corporation | Methods and apparatus for controlling an input or output device over the internet |
| DE19911461A1 (de) * | 1999-03-15 | 2000-09-28 | Oce Printing Systems Gmbh | Verfahren zur Übertragung von Computerdaten an ein Ausgabegerät |
| US6967728B1 (en) | 1999-07-23 | 2005-11-22 | Electronics For Imaging, Inc. | Reusable and transferable printer driver preference system |
| EP1675013A3 (en) * | 1999-11-01 | 2007-06-27 | Seiko Epson Corporation | Data output control apparatus |
| US7401113B1 (en) * | 1999-12-09 | 2008-07-15 | Microsoft Corporations | Printer driver identification for a remote printer |
| US7143150B1 (en) * | 1999-12-09 | 2006-11-28 | Ricoh Company, Ltd. | Method of configuring a computer to include the available options of a printer |
| JP3946397B2 (ja) | 1999-12-24 | 2007-07-18 | 三菱電機株式会社 | 車載情報処理装置 |
| US8527872B1 (en) * | 2000-01-18 | 2013-09-03 | Autodesk, Inc. | Multiple output device association |
| US7072052B1 (en) | 2000-07-21 | 2006-07-04 | Canon Kabushiki Kaisha | Efficient rasterization system and method |
| AUPR161800A0 (en) * | 2000-11-22 | 2000-12-14 | Canon Kabushiki Kaisha | Peripheral driver forward compatibility |
| US7225040B2 (en) * | 2001-11-14 | 2007-05-29 | Exxon Mobil Oil Corporation | Method and system for reducing lead-time in the packaging industry |
| US7636757B2 (en) * | 2000-12-15 | 2009-12-22 | Canon Kabushiki Kaisha | Printing over the internet |
| US7180619B2 (en) * | 2001-01-11 | 2007-02-20 | Sharp Laboratories Of America, Inc. | Methods and systems for recovering a failed print job |
| US8411298B2 (en) * | 2001-01-11 | 2013-04-02 | Sharp Laboratories Of America, Inc. | Methods and systems for printing device load-balancing |
| US20030227644A1 (en) * | 2001-01-11 | 2003-12-11 | Sharp Laboratories Of America, Inc. | Methods and systems for driver independent customized printing |
| US20020113989A1 (en) * | 2001-01-11 | 2002-08-22 | Ferlitsch Andrew Rodney | Methods and systems for print-processor modified printing |
| US7480068B2 (en) * | 2001-01-11 | 2009-01-20 | Sharp Laboratories Of America, Inc. | Methods and systems for page-independent spool file sheet assembly |
| US8456665B2 (en) * | 2001-01-11 | 2013-06-04 | Sharp Laboratories Of America, Inc. | Methods and systems for printing error recovery |
| US20020089687A1 (en) | 2001-01-11 | 2002-07-11 | Ferlitsch Andrew Rodney | Methods and systems for print-processor-based printer status detection and print task distribution |
| US7548331B2 (en) | 2001-01-11 | 2009-06-16 | Sharp Laboratories Of America, Inc. | Methods and systems for print system component-based remote printing |
| US7046384B2 (en) | 2001-01-11 | 2006-05-16 | Sharp Laboratories Of America, Inc. | Methods and systems for print-processor-based print task error recovery |
| JP2002289878A (ja) * | 2001-03-26 | 2002-10-04 | Pioneer Electronic Corp | 有機半導体ダイオード |
| US6975419B2 (en) * | 2001-06-18 | 2005-12-13 | Hewlett-Packard Development Company, L.P. | System and method for mobile printing |
| US7324220B1 (en) | 2001-07-09 | 2008-01-29 | Lexmark International, Inc. | Print performance under the windows® operating system |
| US7113299B2 (en) * | 2001-07-12 | 2006-09-26 | Canon Development Americas, Inc. | Printing with credit card as identification |
| US7365870B2 (en) * | 2001-08-17 | 2008-04-29 | Sharp Laboratories Of America, Inc | Methods and systems for page-independent spool file face-up emulation |
| US7280241B2 (en) * | 2001-09-04 | 2007-10-09 | Xerox Corporation | Print driver user interface |
| JP3634783B2 (ja) * | 2001-09-14 | 2005-03-30 | キヤノン株式会社 | 印刷システム及び印刷データ処理方法 |
| US7171468B2 (en) * | 2001-11-10 | 2007-01-30 | Kabushiki Kaisha Toshiba | System and method for accessing a document management repository |
| US7315824B2 (en) * | 2001-12-04 | 2008-01-01 | Canon Development Americas, Inc. | Internet printing by hotel guests |
| US7996492B2 (en) * | 2002-02-20 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | System for providing information regarding network resources |
| JP3740472B2 (ja) | 2002-03-12 | 2006-02-01 | キヤノン株式会社 | プログラム、印刷ジョブ制御システム、印刷データ処理方法及び記憶媒体 |
| US8681352B2 (en) * | 2002-04-18 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Pull based computer output devices |
| US20030200353A1 (en) * | 2002-04-19 | 2003-10-23 | Vikas Dogra | Browser-implemented upload/download of a driver |
| US20030210834A1 (en) * | 2002-05-13 | 2003-11-13 | Gregory Hitchcock | Displaying static images using spatially displaced sampling with semantic data |
| US8886701B1 (en) | 2002-07-15 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Network based software agent to allow dynamic resource access |
| US20040057078A1 (en) * | 2002-09-20 | 2004-03-25 | Coffin Roderick Franklin | Method and system for printing |
| US8582139B2 (en) * | 2002-11-19 | 2013-11-12 | Hewlett-Packard Development Company, L.P. | Driver upgrading |
| US7251047B2 (en) * | 2003-01-31 | 2007-07-31 | Hewlett-Packard Development Company, L.P. | Virtual media tray |
| US20060017955A1 (en) * | 2003-03-31 | 2006-01-26 | Sharp Laboratories Of America, Inc. | Selective graphic instance rendering |
| US7508532B2 (en) * | 2003-05-20 | 2009-03-24 | Microsoft Corporation | Method and system for sandboxing printer drivers |
| US20050012951A1 (en) * | 2003-07-18 | 2005-01-20 | Madril Robert J. | Printer driver management |
| JP4006392B2 (ja) * | 2003-12-03 | 2007-11-14 | キヤノン株式会社 | 情報処理装置、及び、制御プログラム |
| US20050225789A1 (en) * | 2003-12-09 | 2005-10-13 | Sharp Laboratories Of America, Inc. | Print subsystem despooling backplane |
| US20050157321A1 (en) * | 2004-01-20 | 2005-07-21 | Alacar Arthur E. | Printer driver plug-in module management system |
| US20060132835A1 (en) * | 2004-12-17 | 2006-06-22 | Prasad Nagaraja | Application interface for device driver settings |
| KR20060086997A (ko) * | 2005-01-27 | 2006-08-02 | 삼성전자주식회사 | 컨텐츠 재생을 위한 장치간의 자동 인터페이스 방법 및장치와 그 방법을 수행하기 위한 프로그램이 저장된 기록매체 |
| US7266320B2 (en) * | 2005-09-07 | 2007-09-04 | Xerox Corporation | Automated duplex printing of heavyweight sheets in special simplex mode |
| JP4651112B2 (ja) * | 2006-03-17 | 2011-03-16 | キヤノン株式会社 | 情報処理装置及びその制御方法とプログラム |
| US20070268510A1 (en) * | 2006-05-19 | 2007-11-22 | Dilinur Wushour | Service dialog system supporting user reporting of printing errors |
| US20090323099A1 (en) * | 2008-06-27 | 2009-12-31 | Konica Minolta Systems Laboratory, Inc. | Printing method and printer driver providing user interface for generating output files |
| US8559036B1 (en) | 2010-03-26 | 2013-10-15 | Open Invention Networks, Llc | Systems and methods for managing the execution of print jobs |
| US9552317B2 (en) * | 2012-10-19 | 2017-01-24 | Fairchild Semiconductor Corporation | Apparatus and method for operating and switching a single conductor interface |
| DE102016007170A1 (de) * | 2016-06-13 | 2017-12-14 | Bomag Gmbh | Gummiradwalze |
| CN109799963B (zh) * | 2019-01-24 | 2022-06-07 | 南京沁恒微电子股份有限公司 | 微型打印机点阵指令解析方法 |
| WO2021225594A1 (en) * | 2020-05-07 | 2021-11-11 | Hewlett-Packard Development Company, L.P. | Imaging device driver modification |
| CN114661253B (zh) * | 2022-03-24 | 2025-01-24 | 杭州利江电子科技有限公司 | 一种用微软系统直接驱动的打印系统、装置及方法 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3874493A (en) * | 1972-11-06 | 1975-04-01 | Texas Instruments Inc | Electronic page printer |
| US4452136A (en) * | 1979-10-19 | 1984-06-05 | International Business Machines Corporation | Printer subsystem with dual cooperating microprocessors |
| WO1991015831A1 (fr) * | 1990-04-05 | 1991-10-17 | Seiko Epson Corporation | Interpreteur de langage de description de page |
| US5414812A (en) * | 1992-03-27 | 1995-05-09 | International Business Machines Corporation | System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem |
| US6667812B1 (en) * | 1992-06-19 | 2003-12-23 | Canon Kabushiki Kaisha | Information processing apparatus with device control language based program selection |
| US5625757A (en) * | 1993-12-24 | 1997-04-29 | Hitachi, Ltd. | Printing system |
| JPH07295911A (ja) * | 1994-04-20 | 1995-11-10 | Canon Inc | データ処理装置およびネットワークシステム |
| US5692111A (en) * | 1994-10-05 | 1997-11-25 | Microsoft Corporation | Automatic installation of printers in a distributed environment |
| US5602974A (en) * | 1994-10-05 | 1997-02-11 | Microsoft Corporation | Device independent spooling in a print architecture |
-
1997
- 1997-03-13 US US08/816,978 patent/US5982996A/en not_active Expired - Fee Related
- 1997-09-24 DE DE69727906T patent/DE69727906T2/de not_active Expired - Fee Related
- 1997-09-24 EP EP97116646A patent/EP0864964B1/en not_active Expired - Lifetime
-
1998
- 1998-03-12 JP JP10061761A patent/JPH10320343A/ja not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP0864964A3 (en) | 2000-05-24 |
| DE69727906T2 (de) | 2005-02-03 |
| EP0864964B1 (en) | 2004-03-03 |
| EP0864964A2 (en) | 1998-09-16 |
| DE69727906D1 (de) | 2004-04-08 |
| US5982996A (en) | 1999-11-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH10320343A (ja) | プリンタドライバの切替えを行う情報の配信装置 | |
| JP3587863B2 (ja) | デュアルステージ分解器 | |
| US5504843A (en) | Apparatus and method for processing a stream of image data in a printing system | |
| US9304897B2 (en) | Image data producing apparatus, image forming apparatus and computer readable medium | |
| US5566278A (en) | Object oriented printing system | |
| US8305610B2 (en) | Method for changing printer drivers in information processing apparatus | |
| US5699495A (en) | Point-and-print in a distributed environment | |
| JP2002041261A (ja) | 情報処理装置及び情報処理方法及びコンピュータ読み取り可能なプログラムを格納した記憶媒体 | |
| JPH09114611A (ja) | 印刷処理装置および方法 | |
| US7068388B2 (en) | Printing a plurality of print jobs of a group in a designated order | |
| US5857064A (en) | System for imaging complex graphical images | |
| JP4785577B2 (ja) | 情報処理装置及びその制御方法、プログラム | |
| US5592654A (en) | Apparatus and method for converting a job conforming to a first protocol into a job conforming to a second protocol | |
| US8559032B2 (en) | Automatically configuring a raster image processor | |
| US6999188B1 (en) | Dynamically configurable printer and method of use thereof | |
| JP5268604B2 (ja) | 情報処理装置及び情報処理方法 | |
| JP2004192507A (ja) | 印刷処理システム、管理装置 | |
| US5825989A (en) | System for diagnosing a source of malfunction resulting from the execution of a print job in a network printing system | |
| JPH11143656A (ja) | 印刷システムおよび印刷システムのデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 | |
| JP2004246583A (ja) | 画像処理装置、画像処理方法、およびプログラム | |
| JPH1173381A (ja) | 画像送信装置、画像受信装置および画像処理システム、並びに文書・画像フォーマット | |
| JP2001109599A (ja) | 情報処理装置およびデータ処理方法および記憶媒体 | |
| JP2004110337A (ja) | 画像形成方法、画像形成システム、クライアント端末、サーバ装置、プログラム、記憶媒体 | |
| JP3408107B2 (ja) | データ処理装置および印刷制御装置およびデータ処理装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 | |
| JP3810238B2 (ja) | プリントジョブ管理装置およびプリントジョブ管理方法並びにプログラムを記録した記録媒体 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041210 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041210 |
|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060327 |