(57)【要約】本発明の印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体は、電子計算機から印刷装置へのアクセスをカーネルモードで制御する。  アプリケーションプログラム（４）からプリンタ（６９）へアクセスするときにスプーラ（６５）が動作する。このスプーラ（６５）動作時に発生するイベントによってアクセス要求が検出される。共通インターフェースドライバ（７）は、予め制御条件データベース（３６）に登録された制御条件に従ってプリンタ（６９）へのデータ出力をフィルタ（４１）や、スプーラ（６５）において制御する。
2004077287.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む印刷制御プログラムを格納した電子計算機において、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、前記オペレーティングシステム（ＯＳ）のイベントを監視するための監視部（４３）と、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、前記印刷装置（６９）を制御するプリンタデバイスドライバ（６８）の前に挿入され、前記スプーラ（６５）から前記印刷装置（６９）に送られる前記印刷データを制御するためのフィルタ（４１）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記フィルタ（４１）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取り、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信し、かつ
前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた前記制御条件で制御する
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項２】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む印刷制御プログラムを格納した電子計算機において、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、前記オペレーティングシステム（ＯＳ）のイベントを監視するための監視部（４３）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、前記印刷データを制御するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取り、前記スプーラ（６５）によって作成され、保存されたスプーラ一時ファイルを前記制御条件によって制御する
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項３】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む印刷制御プログラムを格納した電子計算機において、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、スプーラ（６５）の前に挿入され、前記アプリケーションプログラム（４）から前記スプーラ（６５）に送られる前記出力データを制御するための第２プリンタ出力監視ドライバ部（４８）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記第２プリンタ出力監視ドライバ部（４８）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記出力データが前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）を介し、
前記第２プリンタ出力監視ドライバ部（４８）は、前記プリンタ出力監視ドライバ部（４２）から前記制御条件、前記制御命令を受け取り、前記印刷データの制御を行う
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項４】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む印刷制御プログラムを格納した電子計算機において、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、スプーラ（６５）の前に挿入され、前記アプリケーションプログラム（４）から前記スプーラ（６５）に送られる前記出力データを制御するための第２プリンタ出力監視ドライバ部（６１）と、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、前記印刷装置（６９）を制御するプリンタデバイスドライバ（６８）の前に挿入され、前記スプーラ（６５）から前記印刷装置（６９）に送られる前記印刷データを制御するためのフィルタ（４１）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラム（４）とのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記フィルタ（４１）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記出力データが前記第２プリンタ出力監視ドライバ部（４８）を介して前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）は、前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、
前記出力データが前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）を介し、
前記第２プリンタ出力監視ドライバ部（４８）は、前記前記出力データが前記スプーラ（６５）に送られるとき前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取って、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信し、
前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた制御条件で制御する
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項５】
請求項１、３、４の中から選択される１項において、
前記制御条件は、
前記データ出力の停止、前記データ出力の出力スピードの変更、及び前記データ出力の一部の繰り返し出力の中から選択される１以上である
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項６】
請求項２において、
前記制御条件は、
前記スプーラ一時ファイルの属性の変更、前記スプーラ一時ファイルの中身の変更、及び前記スプーラ一時ファイルの中身を削除し空ファイルにする制御の中から選択される１以上である
ことを特徴とする印刷制御用プログラムを格納した電子計算機。
【請求項７】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む電子計算機の印刷制御プログラムにおいて、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、前記オペレーティングシステム（ＯＳ）のイベントを監視するための監視部（４３）と、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、前記印刷装置（６９）を制御するプリンタデバイスドライバ（６８）の前に挿入され、前記スプーラ（６５）から前記印刷装置（６９）に送られる前記印刷データを制御するためのフィルタ（４１）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記フィルタ（４１）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出するステップと、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡すステップとを含み、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取るステップと、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信するステップを含み、かつ
前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた前記制御条件で制御するステップを含む
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項８】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む電子計算機の印刷制御プログラムにおいて、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、前記オペレーティングシステム（ＯＳ）のイベントを監視するための監視部（４３）と、とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御を行うプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出するステップと、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡すステップとを含み、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取るステップと、前記スプーラ（６５）によって作成され、保存されたスプーラ一時ファイルを前記制御条件によって制御するステップとを含む
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項９】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む電子計算機の印刷制御プログラムにおいて、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、スプーラ（６５）の前に挿入され、前記アプリケーションプログラム（４）から前記スプーラ（６５）に送られる前記出力データを制御するための第２プリンタ出力監視ドライバ部（４８）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記第２プリンタ出力監視ドライバ部（４８）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記出力データが前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）を介し、
前記第２プリンタ出力監視ドライバ部（４８）は、前記プリンタ出力監視ドライバ部（４２）から前記制御条件、前記制御命令を受け取るステップと、前記印刷データの制御を行うステップとを含む
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１０】
オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、
前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、
前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）と
を含む電子計算機の印刷制御プログラムにおいて、
前記制御手段（７，４１）は、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、
前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、スプーラ（６５）の前に挿入され、前記アプリケーションプログラム（４）から前記スプーラ（６５）に送られる前記出力データを制御するための第２プリンタ出力監視ドライバ部（６１）と、
前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、前記印刷装置（６９）を制御するプリンタデバイスドライバ（６８）の前に挿入され、前記スプーラ（６５）から前記印刷装置（６９）に送られる前記印刷データを制御するためのフィルタ（４１）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラム（４）とのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記フィルタ（４１）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記出力データが前記第２プリンタ出力監視ドライバ部（４８）を介して前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）は、前記印刷要求を検出するステップと、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡すステップとを有し、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取るステップと、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信するステップとを含み、かつ
前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた制御条件で制御するステップとを含む
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１１】
請求項７、９、１０の中から選択される１項において、
前記制御条件は、
前記データ出力の停止、前記データ出力の出力スピードの変更、及び前記データ出力の一部の繰り返し出力の中から選択される１以上である
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１２】
請求項８において、
前記制御条件は、
前記スプーラ一時ファイルの属性の変更、前記スプーラ一時ファイルの中身の変更、及び前記スプーラ一時ファイルの中身を削除し空ファイルにする制御の中から選択される１以上である
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１３】
請求項７なし１０の中から選択される１項において、
前記制御条件は、
前記印刷制御を対象とする印刷データのファイル、前記印刷制御が可能な期間を示す印刷期間、前記ファイルを印刷できないアプリケーションプログラム、及びユーザの中から選択される１以上の条件である
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１４】
請求項７ないし１０項の中から選択される１項に記載の印刷制御プログラムにおいて、
前記検出手段は、
前記イベントが発生すると前記イベントと連動してフックプログラムを動作させるステップからなり、
前記フックプログラムは、前記イベント発生を制御手段へ通知する送信ステップを有する
ことを特徴とする電子計算機の印刷制御用プログラム。
【請求項１５】
前記制御手段は、前記印刷制御を行ったログを取得して、ログデータベースに保存する機能を備えて、
前記ログデータベースは、印刷を行ったユーザを示すユーザの欄、印刷を行ったファイルを示す印刷ファイル名の欄、印刷を行ったアプリケーションプログラムを示すアプリケーションプログラムの欄、印刷を行った印刷装置を示すプリンタの欄、印刷を行った条件設定を示す印刷条件の欄、印刷を行った日時を示す日時の欄、及び印刷制御を行った印刷制御の欄から選択される１以上の欄から構成されている
ことを特徴とする印刷制御プログラム。
【請求項１６】
請求項６ないし１２項の中から選択される１項に記載の電子計算機の印刷制御プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】  本発明は、電子計算機から周辺装置へのアクセスを制御する制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体に関する。詳しくは、電子計算機から印刷装置へのアクセスを制御する印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体に関する。更に詳しくは、電子計算機から印刷装置へのアクセスのログの取得、その保存、印刷、印刷されるデータの印刷制御プログラムに関する。
【背景技術】  電子計算機上で動作するソフトウェアによって文書作成、画像処理等の作業を行い、その作業結果、又はすでに電子計算機の記憶媒体に保存されているファイルを外部の印刷装置に送って印刷することがある。ソフトウェアから印刷装置への印刷は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供するサービス、電子計算機に接続されている印刷装置を制御するプリンタドライバ、プリンタポートを通して行われる。
〔電子計算機の概要〕
電子計算機は、中央演算処理装置（ＣＰＵ）、記憶装置（メモリ、ハードディスク等）、入力装置（キーボード、マウス等）、出力装置（ディスプレイ等）、周辺機器（プリンタ、スキャナ等）へ接続するためのカードスロット等の多くのハードウェア資源からなり、かつ記憶装置に記憶されているＯＳによってこれらのハードウェアが制御されて動作する。
電子計算機で動作する各種アプリケーションプログラムはＯＳ上で動作する。ＯＳは、キーボード入力や画面出力といった入出力機能、ディスクやメモリの管理等、多くのアプリケーションプログラムから共通して利用される基本的な機能を提供し、電子計算機のシステム全体を管理する。
電子計算機のハードウェアと周辺器機は、複数のメーカによって生産されて、メーカによってその仕様が異なることがある。ＯＳは電子計算機の全ての動作を制御し、異なるハードウェア仕様の違いを吸収し、アプリケーションプログラムに共通の環境を提供する。
アプリケーションプログラムの開発者は、ＯＳの提供する機能を利用することによって、開発の手間を省くことができ、アプリケーションプログラムの操作性を統一することができる。よって、あるＯＳ向けに開発されたアプリケーションプログラムは、基本的にはそのＯＳが動作するどのような電子計算機でも利用できるようになる。
ＯＳには、ＭＳ−ＤＯＳ（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ、ＦｒｅｅＢＳＤ（登録商標）等に代表される数多くの種類があり、企業や家庭の一般ユーザが利用するＯＳとして最もポピュラーなのはＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）シリーズである。ＤＴＰ業界やマルチメディア業界では、Ａｐｐｌｅ社のＭａｃ  ＯＳ（登録商標）が広く利用されている。企業のサーバや学術機関では各社のＵＮＩＸ（登録商標）系のＯＳや、無償配布されているＬｉｎｕｘやＦｒｅｅＢＳＤ（登録商標）等のＵＮＩＸ（登録商標）系のＯＳが使われることが多い。近年、サーバ用のＯＳとしてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ  ＮＴ（登録商標）やＷｉｎｄｏｗｓ  ２０００（登録商標）がシェアを伸ばしている。
〔プリンタドライバの概要〕
図１１には、代表的なＯＳであるＷｉｎｄｏｗｓ  ２０００のプリンタドライバの構成及び関連サービスと、動作の概略を示す。電子計算機１はＯＳ３によって動作している。ＯＳ３上で動作しているアプリケーションプログラム４からプリンタ６９へ出力を行うとき、複雑な処理が行われる。
ＯＳ３には、カーネルモード８、ユーザモード９の２つの動作モードがある。カーネルモード８では、ＯＳ３を操作するためのすべての命令が実行可能であるから、仮に間違った命令を実行するとシステム全体に悪影響を及ぼしかねない。ユーザモード９はアプリケーションプログラム等のユーザに対して完全に開放されているモードである。
このユーザモード９では、システムに悪影響を与えないように、ＯＳ３を操作する命令を制限している。システムに悪影響を与えるような命令の実行が制限されているため、ユーザにとっては使い易い環境になっている。ＯＳは、数多くのシステム機能を提供し電子計算機を動作させる。ＯＳを起動すると自動的に起動されるシステム機能、またはその機能を実現するためのモジュールをサービスという。
図１１には、ＧＤＩ３２（６１）、ＧＲＥ（ＧＤＩ  Ｒｅｎｄｅｒｉｎｇ  Ｅｎｇｉｎｅ）６２、プリンタグラフィックドライバ６３、プリンタインターフェースドライバ６４、スプーラ６５、言語モニタ６６、ポートモニタ６７等のサービスを図示している。また、プリンタ６９を制御するためのプリンタデバイスドライバ６８を図示している。
これらのサービスはカーネルモード８又はユーザモード９で動作し、プリンタデバイスドライバ６８はカーネルモード８で動作する。ＧＤＩ３２（６１）は、３２ビットシステム用のＧｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅの略で、描画、デバイス・コンテキスト、メタファイル、座標、フォント等の、デバイスへの出力にかかわる、インターフェースを提供するサービスである。
ＧＲＥ６２は、印刷用のデータを作成するサービスである。プリンタ６９の機種や種類等の固有機能に関してはプリンタグラフィックドライバ６３を呼び出して印刷用のデータを作成する。プリンタグラフィックドライバ６３は、カーネルモード８で動作し、印刷用のデータを作成するドライバであり、ＲＡＷ（後述する）データの作成を行う。
プリンタインターフェースドライバ６４は、印刷用のデータをユーザモード９で作成するためのドライバである。プリンタインターフェースドライバ６４は、印刷するときの印刷の部数、用紙の種類、白黒／カラー印刷設定等の印刷に関する諸設定を行う機能を提供する。
スプーラ６５は、印刷用のデータを一時的に記憶媒体に保存し、プリンタ６９への出力を管理するサービスである。言語モニタ６６は、スプーラ６５からの印刷用のデータを印刷可能なデータに変換するためのサービスを行う。更に、言語モニタ６６は、プリンタ６９からの情報を解釈するためのサービスを行う。例えば、言語モニタ６６はプリンタ６９の紙詰まり、トナー切れ等の情報を上位サービスやユーザに提供する。ポートモニタ６７は、印刷するポートの制御・監視を行う。
プリンタデバイスドライバ６８は、プリンタ６９を直接制御するデバイスドライバである。プリンタインターフェースドライバ６４、ＧＲＥ６２、及び言語モニタ６６はＯＳ３から提供されている標準機能を提供する。しかし、プリンタ６９はその機種・種類に依存した独自機能がある。これらの独自機能はメーカが供給しているミニドライバ等のドライバプログラムで対応する。
プリンタインターフェースドライバ６４は、ミニドライバを呼び出した上述の独自機能を提供する。プリンタグラフィックドライバ６３は、プリンタ６９の供給メーカが提供することが殆どで、プリンタ６９独自の機能を提供できる。また、言語モニタ６６はプリンタ６９の機種・種類ごとに異なっていることが一般的でメーカが供給している。
印刷用のデータをメモリ・ハードディスク等の記憶媒体に一時的に保存して（スプーリング作業という）、プリンタ６９が空いているときに、又はプリンタ６９からの要求によって、この保存した印刷データをプリンタ６９に送って印刷を行う。この作業は、スプーラ６５によって行われる。Ｗｉｎｄｏｗｓではスプーラ６５へ渡されるスプーリング用のデータとして、ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａｆｉｌｅ  Ｆｏｒｍａｔ）とＲＡＷの２つの形式が使われている。
ＥＭＦは、３２ビットのＷｉｎｄｏｗｓシステム用に開発されたプリンタ用のフォーマットであり、アプリケーションプログラム等で作成可能である。しかし、ＥＭＦデータを受信して印刷できるのは、ＥＭＦ対応のプリンタに限られる。ＥＭＦ対応しないプリンタの場合は、データをＲＡＷデータに変換して印刷することができる。ＲＡＷデータは、プリンタ６９の機種に依存するため、プリンタ６９ごとに対応するドライバで作成する。
〔印刷の流れ〕
アプリケーションプログラム４からプリンタ６９へ印刷するときの印刷データの流れの概略を以下に説明する。アプリケーションプログラム４はＧＤＩ３２（６１）に対して印刷要求を出す。アプリケーションプログラム４からの印刷要求と出力データは、ＯＳ３のユーザモードで動作するＧＤＩ３２（６１）へ送信される。データのフォーマット形式がＥＭＦの場合、ＧＤＩ３２（６１）はデータをスプーラ６５へスプーラ用データとして送る。
データのフォーマット形式がＥＭＦではない場合、ＧＤＩ３２（６１）はデータをＧＲＥ６２へ渡す。ＧＲＥ６２がプリンタグラフィックドライバ６３を呼び出して、データからスプーラ用データの作成を行う。作成されたスプーラ用データは、プリンタインターフェースドライバ６４へ送られる。プリンタインターフェースドライバ６４は印刷の諸設定を行って、スプーラ６５に渡す。
スプーラ６５は、スプーラ用データをスプーリングして、一時ファイルを作成してハードディスクに保存する。スプーラ６５は、この一時ファイルを読み込み、データを言語モニタ６６へ渡す。言語モニタ６６は、プリンタ６９に適した印刷可能な印刷データを作成する。印刷データは、ポートモニタ６７を通って、プリンタデバイスドライバ６８へ送信される。
図１２に示すフローチャートを参照しながらプリンタ６９への印刷手順を説明する。アプリケーションプログラム４は印刷要求をＧＤＩ３２（６１）に対して出し（Ｓ３００）、印刷するデータを送信する。ＧＤＩ３２（６１）は印刷要求とデータを受け取って（Ｓ３０１）、そのデータを解析する（Ｓ３０２）。そして、ＧＤＩ３２（６１）はデータのフォーマット形式を判定し（Ｓ３０３）、フォーマット形式がＥＭＦ（Ｙｅｓ判定）の場合はスプーラ６５へスプーラ用データとして送る（Ｓ３１５→Ｓ３１６）。
ＥＭＦ形式ではない（Ｎｏ判定）場合は、データをＧＲＥ６２へ渡す（Ｓ３０４）。ＧＲＥ６２はデータを受け取り（Ｓ３０５）、プリンタグラフィックドライバ６３を呼び出してデータを渡す（Ｓ３０６）。プリンタグラフィックドライバ６３がデータを受け取り（Ｓ３０７）、スプーラ用データの作成を行う（Ｓ３０８）。作成されたスプーラ用データはＧＲＥ６２へ渡す（Ｓ３０９）。ＧＲＥ６２はスプーラ用データを受け取り（Ｓ３１０）、これをプリンタインターフェースドライバ６４へ送る（Ｓ３１１）。
プリンタインターフェースドライバ６４は、スプーラ用データを受け取り（Ｓ３１２）、印刷の諸設定を行い（Ｓ３１３）、スプーラ６５へ送信する（Ｓ３１４→Ｓ３１６）。スプーラ６５は、スプーラ用データを受け取り（Ｓ３１６）、スプーラ用データのスプーリング処理を行って一時ファイルを作成し（Ｓ３１７）、ハードディスクに保存する（Ｓ３１８）。この一時ファイルはスプーラ６５に読み込まれて、言語モニタ６６へ渡される（Ｓ３１９）。言語モニタ６６は、一時ファイルから印刷用データを作成し（Ｓ３２０）、ポートモニタ６７へ送る（Ｓ３２１）。
ポートモニタ６７は、印刷用データを受信し（Ｓ３２２）、プリンタデバイスドライバ６８へ送り（Ｓ３２３）、プリンタデバイスドライバ６８は印刷用データを最終的にプリンタ６９へ送信する（Ｓ３２４）。よって、アプリケーションプログラム４から印刷要求されたデータが印刷される。スプーリングされたデータは、プリンタデバイスドライバ６８へ送信される間では、言語モニタ６６とポートモニタ６７の監視下になる。
国際公開されたＷＯ０２／０９１１９５号公報では、電子計算機のデバイスドライバ間でのデータの送受信をカーネルモードで動作する共通のインターフェースを開示している。この共通イターフェースはセキュリティ等のために印刷履歴を取得、ユーザの印刷作業を管理して制限する技術を提案したものではない。
一方、個人情報の保護、秘密データの管理等のセキュリティの上では電子計算機から印刷装置に印刷する印刷作業、印刷されるデータの管理が重要である。そのために、印刷履歴を取得、ユーザの印刷作業を制限することが必要な場合がある。また、特定のファイルを印刷しようとするときに、その作業を中断、又は、印刷データをすり替えて印刷する等の印刷制御が望ましいこともある。
しかし、電子計算機のＯＳによりこのような印刷制御をすることは、困難な作業である。印刷データはＯＳのユーザモード、カーネルモードの複数のサービス、デバイスドライバと、これらの複雑な一連の動作によって印刷装置に送られる。このため、印刷制御しようとする印刷データを的確に制御することは困難である。また、カーネルモードで動作しているドライバを制御することはＯＳの不安定な動作を招きかねないので、従来の印刷制御システムではこのような制御は行わない。
【発明の開示】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、電子計算機から印刷装置にアクセスし、データを印刷するとき、印刷の停止、中断、印刷データの摩り替え等の印刷制御をする印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体を提供する。
本発明の他の目的は、電子計算機から印刷装置へのアクセスをカーネルモードで制御する印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体を提供する。
本発明の更に他の目的は、電子計算機から印刷装置へアクセスしたアクセスログをカーネルモードで取得する印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体を提供する。
本発明の更に他の目的は、電子計算機から印刷装置へアクセスしたアクセスログをネットワークへ転送する印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体を提供する。
本発明の更に他の目的は、電子計算機から印刷装置へ特定のアクセスが行われたとき所定条件で制御する印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体を提供する。
本発明の印刷制御プログラムを格納した電子計算機、そのプログラム及びプログラムの記録媒体は次の利点を有する。
本発明は、アプリケーションプログラムから印刷されるデータ、印刷要求をしているアプリケーションプログラム、及びユーザを的確に把握することができ、この把握した内容によって印刷の停止、中断、印刷データの摩り替え、印刷可能な期間の指定等の柔軟な条件で印刷制御をすることができる。
本発明は、電子計算機から印刷装置へのアクセス制御を、電子計算機のＯＳの動作モードであるカーネルモードで行う。このアクセス制御はデータベースを用いて制御するためファイルへのアクセスを制御することが自由になり、データベースを変更するだけで所定の制御が可能になる。
本発明は、アプリケーションプログラムとデバイスドライバとの共通のインターフェースを用い、このインターフェースドライバのプログラムを利用して印刷出力を制御するので、データの秘密性が保護され、かつデータの安全転送を図ることができる。
即ち、本発明の第１の発明の印刷制御プログラムを格納した電子計算機は、オペレーティングシステム（ＯＳ）によって動作している電子計算機から印刷装置（６９）へ印刷データの出力を行うとき、前記オペレーティングシステム上で動作しているアプリケーションプログラム（４）から前記印刷装置（６９）へ印刷を行うために出される印刷要求と出力データを検出するための検出手段（４３）と、前記出力データを加工して前記印刷データを作成し、作成された前記印刷データを一時的に記憶媒体に保存し、前記印刷装置（６９）へ出力するためのスプーラ（６５）と、前記アプリケーションプログラム（４）から前記印刷装置（６９）に印刷するために出力される前記出力データを制御する制御手段（７，４１）とを含む印刷制御プログラムを有し、
前記制御手段（７，４１）は、前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、かつ複数のデバイスドライバ間でデータの送受信を行うための共通インターフェースドライバ（７）と、前記オペレーティングシステム（ＯＳ）のユーザモードで動作し、前記オペレーティングシステム（ＯＳ）のイベントを監視するための監視部（４３）と、  前記オペレーティングシステム（ＯＳ）の全ての命令を実行できるカーネルモードで動作し、前記印刷装置（６９）を制御するプリンタデバイスドライバ（６８）の前に挿入され、前記スプーラ（６５）から前記印刷装置（６９）に送られる前記印刷データを制御するためのフィルタ（４１）とを含み、
前記共通インターフェースドライバ（７）は、
前記アプリケーションプログラムとのインターフェースであるアプリケーションインターフェース部（１７）と、
前記印刷データを制御する制御条件を確認し、制御用の命令を前記フィルタ（４１）に送信するプリンタ出力監視ドライバ部（４２）と、
記憶装置へアクセスし前記制御条件を取得し、前記プリンタ出力監視ドライバ部（４２）へ渡すデータ入出力部（２０，３０）とを含み、
前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、
前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取り、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信し、かつ
前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた前記制御条件で制御することを特徴とする。
本発明の第２の発明の印刷制御プログラムを格納した電子計算機は、前記監視部（４３）は、前記スプーラ（６５）が動作するときに発生するイベントで前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取り、前記スプーラ（６５）によって作成され、保存されたスプーラ一時ファイルを前記制御条件によって制御することを特徴とする。
本発明の第３の発明の印刷制御プログラムを格納した電子計算機は、前記制御手段（７，４１）は、第２プリンタ出力監視ドライバ部（４８）とを含み、前記出力データが前記スプーラ（６５）に渡されるとき、前記第２プリンタ出力監視ドライバ部（４８）を介し、前記第２プリンタ出力監視ドライバ部（４８）は、前記プリンタ出力監視ドライバ部（４２）から前記制御条件、前記制御命令を受け取り、前記印刷データの制御を行うことを特徴とする。
本発明の第４の発明の印刷制御プログラムを格納した電子計算機は、
前記第２プリンタ出力監視ドライバ部（４８）は、前記前記出力データが前記スプーラ（６５）に送られるとき前記印刷要求を検出し、検出した前記印刷要求を前記アプリケーションインターフェース部（１７）を介して前記プリンタ出力監視ドライバ部（４２）へ渡し、前記プリンタ出力監視ドライバ部（４２）は、前記印刷要求を受け取って、前記印刷要求に対する制御命令を前記フィルタ（４１）に送信し、前記フィルタ（４１）は、前記制御命令に従って前記印刷データを予め決められた制御条件で制御することを特徴とする。
前記制御条件は、前記データ出力の停止、前記データ出力の出力スピードの変更、及び前記データ出力の一部の繰り返し出力の中から選択される１以上であると良い。
また、前記制御条件は、前記スプーラ一時ファイルの属性の変更、前記スプーラ一時ファイルの中身の変更、及び前記スプーラ一時ファイルの中身を削除し空ファイルにする制御の中から選択される１以上であると良い。
更に、前記制御条件は、印刷制御を対象とするファイル、印刷できる期間を示す印刷期間、前記ファイルを印刷できないアプリケーションプログラム、ユーザ、制御の種類いずれか又は組み合わせであると良い。
また更に、前記検出手段は、前記イベントが発生すると前記イベントと連動してフックプログラムを動作させるステップからなり、前記フックプログラムは、前記イベント発生を制御手段へ通知する送信ステップを有すると良い。
前記制御手段は、前記印刷制御を行ったログを取得して、ログデータベースに保存する機能を備えて、前記ログデータベースは、印刷を行ったユーザを示すユーザの欄、印刷を行ったファイルを示す印刷ファイル名の欄、印刷を行ったアプリケーションプログラムを示すアプリケーションプログラムの欄、印刷を行った印刷装置を示すプリンタの欄、印刷を行った条件設定を示す印刷条件の欄、印刷を行った日時を示す日時の欄、印刷制御を行った印刷制御の欄から構成されていると良い。
前記本発明１ないし４の印刷制御プログラムを格納した電子計算機であったが、本発明は前記印刷制御プログラム又は前記印刷制御プログラムを記録した媒体を含むものであっても良い。
【図面の簡単な説明】  図１は、本発明の第１の実施の形態の電子計算機の印刷制御プログラムの機能の概要を示す概念図である。
図２は、制御条件データベースの構成を示す図である。
図３は、スプーリングイベントの検出を示す図である。
図４は、共通インターフェースドライバの動作を示す図である。
図５は、印刷制御の流れを示すフローチャートである。
図６は、フィルタの動作を示すフローチャートである。
図７は、スプーリングイベント検出の他の例を示す図である。
図８は、本発明の第２の実施の形態の電子計算機の印刷制御プログラムの機能の概要を示す概念図である。
図９は、ログファイルの例を示す図である
図１０は、印刷ログの取得動作を示すフローチャートである。
図１１は、従来の印刷関連サービスを示す概念図である。
図１２は、従来の印刷の流れを示すフローチャートである。
図１３は、本発明の第３の実施の形態の電子計算機の印刷制御プログラムの機能の概要を示す概念図である。
図１４は、制御条件データベースの構成を示す図である。
【発明を実施するための最良の形態】  次に、本発明の実施の形態を説明する。図１は、本発明の第１の実施の形態の電子計算機の印刷制御プログラムの機能を示す概念図を図示している。
共通インターフェースドライバ７はカーネルモード８で動作するドライバである。共通インターフェースドライバ７は、アプリケーションプログラム４等のユーザモード９で動作するプログラムやサービスに対して、カーネルモード８で動作するドライバへの共通のインターフェースを提供するためのものである。また、これは、カーネルモード８で動作するドライバ間にデータの送受信ができる共通のインターフェースを提供する機能も果たす。この共通イターフェースについては、本発明者等が提案したものであり、国際公開ＷＯ０２／０９１１９５号公報等で公知であり、かつ本発明の要旨でもないのでその詳細な説明については省略する。
共通インターフェースドライバ７は、アプリケーションインターフェース部１７、フロー制御部２５、データ処理部１９、ＴＤＩクライアントドライバ部（ＴＤＩ  Ｃｌｉｅｎｔ  Ｄｒｉｖｅｒ部）２０、アクセスデータ管理部３０、プリンタ出力監視ドライバ部４２等から構成され、各部分の機能は次の通りである。
アプリケーションインターフェース部１７は、アプリケーションプログラム４と共通インターフェースドライバ７間のインターフェースである。アプリケーションインターフェース部１７は、アプリケーションプログラム４からのファイルアクセス要求等のコマンドを受け取り、そのコマンドの実行結果、またはフロー制御部２５から受信したその他のデータをアプリケーションプログラム４に送信するためのものである。データ処理部１９は、アクセスデータ管理部３０、ＴＤＩクライアントドライバ部２０への入出力を行うためのものである。
ＴＤＩクライアントドライバ部２０は、ネットワークドライバ２１と共通インターフェースドライバ７とのインターフェースである。ネットワークドライバ２１は、プロトコルドライバ２２と、ＮＤＩＳ（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ドライバ２３から構成され、ネットワークカード１６を制御し、ネットワーク２６へデータを伝送するときの接続の確立とプロトコルの制御を行う。
プロトコルドライバ２２は、ネットワーク２６にデータを転送する際の通信プロトコルを制御するものである。ＮＤＩＳドライバ２３は、プロトコルドライバ２２とネットワークカード１６とのインターフェースを提供するものである。ＴＤＩクライアントドライバ部２０は、パケット化されたデータをデータ処理部１９から受け取ってプロトコルドライバ２２に出力する。
フロー制御部２５は、アプリケーションインターフェース部１７を介して受け取ったアプリケーションプログラム４からの命令等を解析して、データ処理部１９、プリンタ出力監視ドライバ部４２等に指示を出して制御するためのものである。データベース３５は、ハードディスク等の補助記憶装置に格納される。データベース３５には、ユーザのファイルに関する情報が格納されている。アクセスデータ管理部３０は、データベース３５を参照・登録・制御し管理するためのものである
共通インターフェースドライバ７は、プリンタ出力監視ドライバ部４２等を含むものである。プリンタ出力監視ドライバ部４２は、プリンタ６９へのデータの出力を監視し、必要に応じてプリンタ６９への出力を制御するものである。プリンタ出力監視ドライバ部４２は、後述するようにプリンタ６９へのプリンタ出力のログを取得し、かつ共通インターフェースドライバ７の他の各機能部１９、２０、３０、２５等を介して、プリンタ出力のログを電子計算機１のハードディスクに保存、又はネットワークカード１６、ネットワーク２６を介して他の電子計算機に送信して保存することができる。
プリンタ出力監視ドライバ部４２は、データベース３５に予め設定されている制御条件によって、プリンタ６９への出力を制御する。例えば、ユーザが特定のファイルを印刷しようとするときに、その作業を制限、中断、停止させる。あるいは、ユーザが印刷しようとする印刷データを摩り替えて別のものを印刷する。更に、プリンタ６９への印刷を非常に遅くする制御も可能である。
無論、これらの制御に関して、管理者又は管理サーバへの通知を行うことができる。管理サーバ（図示せず）からはネットワーク２６を介して電子計算機１へアクセスし、データベース３５の内容を変更することによって、プリンタ６９への制御を変更又は中断／再開することも可能である。管理サーバは、フロー制御部２５へ命令を送り、フロー制御部２５はその命令に従ってプリンタ出力監視ドライバ部４２へ指示を出し、プリンタ６９への出力を制御することもできる。
データ処理部１９は、フロー制御部２５とプリンタ出力監視ドライバ部４２との情報を元に印刷のログを作成し、データベース３５に保存する機能を有する。また、このログをＴＤＩクライアントドライバ部２０へ送り、ネットワーク２６に接続されている別の電子計算機へ送信する。
ユーザモード９では、インターフェース部４３が設けられてあり、主にユーザモード９で動作するＯＳ３のサービス、アプリケーションプログラム４とのインターフェースを提供する。インターフェース部４３には、アプリケーションプログラム４の動作状況を監視しインターフェースを提供するためのアプリケーション監視部４４、スプーラ６５等の印刷関連のサービスを監視するための印刷監視部４５がある。
スプーラ６５から共通インターフェースドライバ７への情報はこの印刷監視部４５を通って行われる。共通インターフェースドライバ７は、アプリケーションプログラム４等と直接データの送受信を行うことができる。
データベース３５には、ファイルとそれに対する制御のデータを有する制御条件データベース３６がある。制御条件データベース３６は図２に図示したようなテーブル１００からなる。テーブル１００は、ファイルを印刷するときにどのような制限をするか等の制御条件を示すテーブルである。テーブル１００は、「ファイル名」１０１の欄と「制御の種類」１０２の欄からなっている。「ファイル名」１０１の欄は制御対象のファイルの一覧である。
「制御の種類」１０２の欄は、「ファイル名」１０１の欄に示す各ファイルに対して予め設定する制御の種類である。制御は、プリンタ出力監視ドライバ部４２からフィルタ４１に出される命令として行われる。例えば、この制御の種類は、「印刷停止」１０３、「負荷」１０４、「白紙印刷」１０５、「ウォーターマーク」１０６、「印刷完了通知」１０７、「書き込み成功」１０８、「スプーラ読出し不可」１０９の欄からなる。「印刷停止」１０３は、対象ファイルの印刷を停止する制御であり、プリンタ出力監視ドライバ部４２はフィルタ４１に対してプリンタ６９へ印刷データを出力しないようにする命令を出す。
「負荷」１０４は、対象ファイルの印刷作業を遅くする、即ち負荷をかける制御であり、プリンタ出力監視ドライバ部４２はフィルタ４１に対してプリンタ６９へ印刷データを時間的に遅く出力するようにする命令を出す。「白紙印刷」１０５は、対象ファイルの印刷の変わりに真っ白のページを印刷する制御であり、プリンタ出力監視ドライバ部４２はフィルタ４１に対してプリンタ６９へ印刷データを削除して、その代わりに白紙を印刷するデータを出力するようにする命令を出す。
「ウォーターマーク」１０６は、対象ファイルの印刷には特殊の字・文章を上書きするウォーターマークを印刷する制御であり、プリンタ出力監視ドライバ部４２はフィルタ４１に対してプリンタ６９への印刷データにウォーターマークを負荷して出力するようにする命令を出す。「印刷完了通知」１０７は、対象ファイルを印刷するときに、プリンタデバイスドライバ６８からプリンタ６９への印刷が完了したように見せかけて通知する制御である。この制御のとき、プリンタ出力監視ドライバ部４２はフィルタ４１に対してその胸のメッセージを送信するようにする命令を出す。
「書き込み成功」１０８は、スプーラ６５が一時ファイルを作成しハードディスクに書き込むときの制御であり、スプーラ６５へ書き込みが成功した旨の通知をするものである。このときは、作成された一時ファイルの内容を削除し空のファイルにする。「スプーラ読出し不可」１０９の場合は、スプーラ６５が作成した一時ファイルの属性を変更してスプーラ６５が再度読み込み出来ないようにして印刷を停止させる制御である。
（印刷制御の方法）
プリンタ６９への出力を制御するためには、アプリケーションプログラム４等から出される印刷要求の出力を検出する。印刷要求を検出したらアプリケーションプログラム４からプリンタ６９に送られる印刷データを制御する。印刷要求の検出は、スプーラ６５が一時ファイルを作成する機能を利用している。印刷作業又は印刷データを制御する印刷制御は、カーネルモード８で動作するプリンタデバイスドライバ６８へ印刷データを送信する機能、スプーリング、印刷装置へのアクセスのいずれかを制御している。
スプーリングされた印刷用データは、言語モニタ６６とポートモニタ６７を通って、プリンタデバイスドライバ６８へ送信される。ポートモニタ６７は、プリンタ６９へ出力するポートをモニタリングし、プリンタ６９が空いているときに印刷データをプリンタデバイスドライバ６８へ送信する。プリンタデバイスドライバ６８は、実際にハードウェアを制御するためのドライバであり、プリンタ６９を直接制御して印刷処理を行う。
（印刷要求の検出）
図３を参照して印刷要求の検出を説明する。スプーラ６５は、ＧＤＩ３２（６１）又はプリンタインターフェースドライバ６４から送られてくるスプーラ用データを受信する。そして、スプーラ６５はスプーリングを開始すると、スプーリングイベントが発生する。イベントは、ハードウェア又はソフトウェアの動作状態が変化するときに、その変化を他のハードウェア又はソフトウェアに通知することである。スプーリングイベントは、スプーリングが行われていることを示す。
スプーリングイベントはＯＳ３のイベント管理に登録されており、スプーリングイベントが発生するとスプーリングイベントに関連付けられて登録されているフックプログラム７１が動作を開始する。フックプログラム７１は、スプーリングプログラムに割り込みをかけてフックプログラム７３を動作させる。
フックプログラム７３が開始し（Ｓ１）、印刷イベント発生したことを共通インターフェースドライバ７へ通知する（Ｓ２）。そして、共通インターフェースドライバ７からの返事を待って待機する（Ｓ３）。共通インターフェースドライバ７から返事の通知を受け取るとフックプログラム７３が終了し（Ｓ４、Ｓ５）、スプーリングプログラムのプログラム本体７２が開始する。
よって、スプーリング用データのスプーリングが引き続き行われる。このスプーリング作業は、従来技術で詳しく説明しているため省略する。
（印刷制御の手順）
次に、印刷時の印刷制御の手順を図４のフローチャートを参照して説明する。印刷監視部４５が、全てのスプーリングイベントを監視している。印刷監視部４５はスプーリングイベントが発生すると、印刷要求をしたアプリケーションプログラム４と関連付けて、「スプーリングイベントの通知」を作成する。「スプーリングイベントの通知」は、アプリケーションインターフェース部１７へ送られてくる。
アプリケーションインターフェース部１７は、「スプーリングイベントの通知」を受信し（Ｓ５０）、フロー制御部２５へ送る（Ｓ５１）。フロー制御部２５は、アプリケーションインターフェース部１７からの「スプーリングイベントの通知」を受信し（Ｓ５２）、解析する（Ｓ５３）。データをデータ処理部１９へ送信する（Ｓ５４）。
データ処理部１９は、データを受信する（Ｓ５５）。データ処理部１９は、データベース３５に登録されている、制御条件データベース３６を参照し（Ｓ５６）、印刷しようとしているファイル名に関連づけられたテーブル１００から制御条件を参照し、ファイル名１０１に対する制御条件を取得する（Ｓ５７）。データ処理部１９は、データベース３５へのアクセスデータ管理部３０を介してアクセスするが、説明上は省略している。
取得したファイル名１０１と制御条件をプリンタ出力監視ドライバ部４２に送信する（Ｓ５８）。例えば、図２のテーブル１００を参照して、「ファイル名」１０１欄の「ファイル１」を印刷しようとするときは、データ処理部１９は「印刷停止」の制御条件を取得し、「ファイル１」、「印刷停止」をプリンタ出力監視ドライバ部４２に送信する。
プリンタ出力監視ドライバ部４２は、ファイル名と制御条件を受け取り（Ｓ５９）、プリンタデバイスドライバ６８とポートモニタ６７の中間に設けているフィルタ４１へ制御条件を送信する（Ｓ６０）。そして、「命令出力完了」の通知をフロー制御部２５へ送信する（Ｓ６１）。
フロー制御部２５は、「命令出力完了」を受信し（Ｓ６２）、アプリケーションインターフェース部１７へ「スプーリングイベント受信完了」を送信する（Ｓ６３）。アプリケーションインターフェース部１７は、「スプーリングイベント受信完了」を受信し（Ｓ６４）、フックプログラム７３へ「スプーリングイベント受信完了」を通知する（Ｓ６５）。よって、一連の印刷制御の条件設定が終了する。
（印刷制御の流れ１）
図５は印刷制御の流れの一例を示すフローチャートであり、印刷せずに擬似信号である「印刷完了」信号を送信して実際の印刷をしない制御の例である。スプーラ６５がスプーラ用データを受信し（Ｓ８１）、一時ファイルを作成し（Ｓ８２）、ハードディスクに保存する。スプーラ６５が、この一時ファイルを再度読み込み、プリンタ６９に対応する言語モニタ６６へ渡す（Ｓ８３）。言語モニタ６６は、印刷用データを作成して（Ｓ８４）、ポートモニタ６７へ渡す（Ｓ８５）。ポートモニタ６７は、フィルタ４１へ印刷用データを送信する（Ｓ８６）。
フィルタ４１は、印刷用データを受け取り、「印刷完了」を返信する（Ｓ８７）。ポートモニタ６７は「印刷完了」を受け取り、「印刷完了」を言語モニタ６６へ送信する（Ｓ８８）。言語モニタ６６は「印刷完了」を受信し、スプーラ６５へ「印刷完了」を送信する（Ｓ８９）。スプーラ６５は、「印刷完了」を受信して、「印刷完了」をアプリケーションプログラム４へ送信する（Ｓ９０）。
（フィルタ４１の動作）
図６は、前述した「印刷完了」制御の場合のフィルタ４１の動作を示すフローチャートである。プリンタ出力監視ドライバ部４２がフィルタ４１へ制御条件を送信する（Ｓ６０→Ｓ１０１）。フィルタ４１が制御条件を受信して（Ｓ１０２）、待機する（Ｓ１０３）。フィルタ４１はプリンタ出力監視ドライバ部４２から命令、又はポートモニタ６７から印刷データが送信されてくるまで待機する。フィルタ４１がポートモニタ６７から印刷データを受信する（Ｓ１０４）。
フィルタ４１が印刷データを受信完了したら「印刷完了」をポートモニタ６７へ返信する（Ｓ１０５→Ｓ８７）。この印刷データの制御条件を判定する（Ｓ１０６）。印刷データは制御条件に合っている（Ｙｅｓ判定）場合は、制御条件を実行する（Ｓ１０７）。印刷データは制御条件に合ってない（Ｎｏ判定）場合は、印刷データをプリンタデバイスドライバ６８へ送信する（Ｓ１０８）。制御条件に合ってない（Ｎｏ判定）印刷データは制御しないデータであるため、プリンタデバイスドライバ６８へ送信されて普段通り印刷される。
印刷データの制御の結果をプリンタ出力監視ドライバ部４２へ通知する（Ｓ１０９）。上記例の「ファイル１」を「印刷停止」する場合は、フィルタ４１は事前にプリンタ出力監視ドライバ部４２から「印刷停止」の命令を受け取っているため、印刷用データを削除する。印刷の制御の一種である「印刷停止」１０３の一連の制御である。
同様に、「負荷」１０４、「白紙印刷」１０５、「ウォーターマーク」１０６、「印刷完了通知」１０７等の制御はフィルタ４１で制御を行うものである。「負荷」１０４は印刷用データを削除する変わりに、プリンタデバイスドライバ６８へ非常に遅いスピードで送ることによって達成できる。または、印刷しようとするデータの一部を繰り返してプリンタデバイスドライバ６８へ送信する。「白紙印刷」１０５は、印刷用データを削除して、プリンタデバイスドライバ６８へ白紙のページを印刷する命令を出力する。「ウォーターマーク」１０６は、印刷用データの上にウォーターマークをつけて、そのデータをプリンタデバイスドライバ６８へ送信する。
（印刷制御の流れ２）
次にフィルタ６８ではなくスプーラ６５の機能を利用して印刷制御を行う例を説明する。プリンタ出力監視ドライバ部４２は、「スプーラ読出し不可」１０９の印刷制御の命令を受け取って、スプーラ６５が作成する一時ファイルの監視をはじめる。この監視は、一定の時間ごとに一時ファイルの書き込み情報を受け取り、書き込みが終了したかを監視する。一時ファイルの書き込みが終了したら、スプーラ６５がこの一時ファイルを読み込みできないようにファイルの属性を書き換える。
よって、スプーラ６５は続けて、一時ファイルを読み込んで言語モニタ６６へ渡し、印刷を続けて行うことができなくなる。また、「書き込み成功」１０８の場合、プリンタ出力監視ドライバ部４２は、スプーラ６５がハードディスクに書き込みした一時ファイルを削除し、同様のファイル名の空のファイルを作成しておく。このとき、スプーラ６５から見れば一時ファイルの作成が成功したかのように見え、通常通り次の処理に移る。最終的には、空のファイルが印刷されるため本来の印刷データが印刷されない。
以上説明した印刷の制御は、スプーラ６５又はプリンタデバイスドライバ６８への出力の機能を利用して行っているがこれだけに限るものではない。言語モニタ６６、プリンタインターフェースドライバ６４、プリンタグラフィックドライバ６３の機能を利用しても良い。また、ＧＤＩ３２（６１）からＧＲＥ６２へデータを渡すときに、その中間にフィルタを作成して印刷制御を行っても良い。
（印刷制御の他の例）
図３に示したスプーラ６５の印刷要求の検出は、図７に図示するような手順であっても良い。スプーラ６５は、ＧＤＩ３２（６１）又はプリンタインターフェースドライバ６４から送られてくるスプーラ用データを受信する。スプーラ６５がスプーリングを開始するとスプーリングイベントが発生する。スプーリングイベントが発生するとスプーリングイベントに関連付けられて登録されているフックプログラム７１が動作を開始する。フックプログラム７１は、スプーリングプログラムに割り込みをかけてフックプログラム７３を動作させる。
フックプログラム７３が開始し（Ｓ１１）、印刷イベントが発生したことを共通インターフェースドライバ７へ通知する（Ｓ１２）。共通インターフェースドライバ７へ通知して、フックプログラム７３が終了し（Ｓ１３）、スプーリングプログラムへ戻り、プログラム本体７２が開始する。よって、スプーラ６５によるスプーリング用データのスプーリングが引き続き行われる。
（第２の実施の形態）
本発明の第２の実施の形態の印刷制御プログラムは、プリンタへの出力したログを取得して、ハードディスク等に保管する。図８は、第２の実施の形態の印刷制御プログラムの機能の概要を示す図である。プリンタ６９へアクセスして印刷するときに、この印刷に関連する取得可能な情報として、印刷したユーザ、印刷したファイル名、印刷要求したアプリケーション、プリンタ、印刷条件、印刷した日時等がある。この印刷条件は、ファイルの印刷するとき設定する用紙サイズ、印刷方向、印刷部数、色設定（白黒／カラー印刷）、画質、割り付け設定、ページ指定等の情報である。
印刷するときに、これらの情報を取得して、ログファイルとして保存することができる。図９にはログファイルの例を図示している。ログファイルは、「ユーザ」１１１、「印刷ファイル名」１１２、「アプリケーション」１１３、「プリンタ」１１４、「印刷条件」１１５、「日時」１１６、「制御の種類」１１７の欄からなるテーブル１１０になっている。「ユーザ」１１１の欄は、印刷を行ったユーザを示すもので、印刷した時の電子計算機１を利用しているユーザ名である。
「印刷ファイル名」１１２は、印刷したファイルの名称である。「アプリケーション」１１３は、印刷を行ったアプリケーションプログラム４又はサービスの名称である。「プリンタ」１１４は、印刷したプリンタの名前である。「印刷条件」１１５は、ファイルを印刷するときに設定した印刷条件（前述した）である。「日時」１１６は、印刷した日時であり、例えば「２００２年１１月１日１０時４５分０５秒」と表示する。
「制御の種類」１１７は、ファイルを印刷したときの制御を示す欄である。「制御の種類」１１７は、図２に図示したテーブル１００での「制御の種類」１０２である。ログファイルは、共通インターフェースドライバ７で情報を取得して、電子計算機１のハードディスク等に保存される。データベースになって保存されても良い。また、ネットワーク２６に接続されている別の電子計算機等の記憶装置に保存されても良い。
図１０は、ログファイルを取得する手順の例を示すフローチャートであり、印刷するときのログを取得する手順を説明する。印刷要求は、第１の実施の形態で示す手順と同様であり、データ処理部１９が制御条件を取得してからログファイルを作成するまでの手順を説明する。データ処理部１９が制御条件を取得して（Ｓ５７→Ｓ７１）、印刷のログの作成を行う（Ｓ７２）。
ログには、図９に示すようなテーブル１１０の情報がある。作成したログをアクセスデータ管理部３０へ送信する（Ｓ７３）。アクセスデータ管理部３０はログを受信する（Ｓ７４）。アクセスデータ管理部３０がハードディスク上のデータベース３５にアクセスして、印刷ログデータベース４６にログを追加する（Ｓ７５）。
（第３の実施の形態）
図１３は、本発明の第３の実施の形態の印刷制御プログラムの機能の概念を図示している図である。第３の実施の形態の印刷制御プログラムは、ＧＤＩ３２（６１）とスプーラ６５の間に、第２プリンタ出力監視ドライバ部４８を介在させている点で前述した第１及び第２の実施の形態と異なる。第２プリンタ出力監視ドライバ部４８は、ＧＤＩ３２（６１）から出力されるデータを監視して、制御する機能を有する。第３の実施の形態のものは、第１の実施の形態、第２の実施の形態のものとは印刷を制御して履歴を残す基本的な機能は同じであり、以下に相違する部分だけを説明する。
第２プリンタ出力監視ドライバ部４８は、フロー制御部２５、プリンタ出力監視ドライバ部４２と直接的に連絡を取り合っている。プリンタ出力監視ドライバ部４２は、指定された条件設定によって印刷制御を行う。この条件設定は、印刷できる時間の指定、印刷するアプリケーションの指定、ユーザの指定が可能である。フロー制御部２５は、データベース３５から制御条件を取得して、プリンタ出力監視ドライバ部４２に渡す。
制御条件の例を図１４に図示している。制御条件テーブル１２０は、ファイル１２１、印刷期間１２２、印刷禁止アプリケーション１２３、ユーザ１２４、制御１２５の欄からなっている。ファイル１２１は、被制御ファイルを示す。印刷期間１２２は、印刷できる期間を示す欄で、印刷の開始時間と終了時間を指定する。印刷期間１２２は、特定の日、特定の日時で指定しても良い。
印刷禁止アプリケーション１２３は、印刷制御を行うアプリケーションプログラムを示す。ユーザ１２４は、印刷制御を行うユーザを示す。制御１２５は、どのような印刷制御を行うかを示す。例えば、印刷を禁止する「印刷禁止」、印刷を許可する「印刷許可」、印刷を待機させる「待機」等の制御であっても良い。
ユーザは、アプリケーションプログラム４を操作して印刷しようとする。アプリケーションプログラム４からの印刷命令が出され、印刷データがＧＤＩ３２（６１）に渡され、それからスプーラ６５に渡される。ＧＤＩ３２（６１）と、スプーラ６５との間に入っている第２プリンタ出力監視ドライバ部４８が印刷データをチェックし、印刷制御条件に該当するかを判断する。
印刷制御条件は、制御条件データベース３６に格納されていて、フロー制御部２５によって、プリンタ出力監視ドライバ部４２に渡されている。また、共通インターフェースドライバ７は、アプリケーションプログラム４、それを操作しているユーザを常時監視している。この情報から得た、アプリケーションプログラム４の名称、ユーザの情報を第２プリンタ出力監視ドライバ部４８に渡している。
そのため、印刷データは、制御条件に該当するかの判断を第２プリンタ出力監視ドライバ部４８ですることができる。印刷データは、印刷できないと判断した場合は、ＧＤＩ３２（６１）に「印刷エラー」メッセージを返信し、印刷データをスプーラ６５に渡さない。印刷データは、印刷できると判断した場合は、印刷データをスプーラ６５に渡す。
第２プリンタ出力監視ドライバ部４８は、プリンタ出力監視ドライバ部４２とデータの送受信を行うことができる。プリンタ出力監視ドライバ部４２は、第２プリンタ出力監視ドライバ部４８からの指示によって、フィルタ４１に指示して印刷制御を行うことができる。
産業上の利用分野
本発明は、電子計算機から印刷を行うとき、印刷するときのログの取得、その保存、印刷データの制御、印刷制御を行うことができている。そのため、印刷データの管理が重要な分野、例えば、個人情報、国家機密情報、企業秘密等の管理システムに組み込んで利用すればよりセキュリティ上の安全が高めることが可能で、管理が容易になる。
【図１】
2004077287.tif 000003
【図２】
2004077287.tif 000004
【図３】
2004077287.tif 000005
【図４】
2004077287.tif 000006
【図５】
2004077287.tif 000007
【図６】
2004077287.tif 000008
【図７】
2004077287.tif 000009
【図８】
2004077287.tif 000010
【図９】
2004077287.tif 000011
【図１０】
2004077287.tif 000012
【図１１】
2004077287.tif 000013
【図１２】
2004077287.tif 000014
【図１３】
2004077287.tif 000015
【図１４】
2004077287.tif 000016
【国際調査報告】
2004077287.tif 000017
2004077287.tif 000018