(57)【要約】【課題】メンテナンス性に優れるとともに、モジュール内部の関数名などを秘匿することが可能なログ出力機能を備えるプリンタドライバを提案すること。【解決手段】プリンタドライバ１０のモジュール内の所定の関数ａには、当該関数ａが実行されると、モジュール名に代えて第１エイリアス名と、関数名に代えて第２エイリアス名とを含む実行履歴情報を出力するツールプログラムαが組み込まれている。また、プリンタドライバ１０は、実行履歴情報が出力されると、この実行履歴情報を関数ａの実行履歴としてテキストファイル形式で出力するログ出力関数ｃを有している。この結果、実行履歴はテキストファイル形式で出力されるので、汎用のテキストエディタで実行履歴をトレースできる。また、モジュール名および関数名はエイリアス名に変更されているので、これらの情報を秘匿できる。【選択図】図４
2009199402.tif 000002
【特許請求の範囲】
【請求項１】
デバイスドライバを構成しているモジュール内の所定の関数の実行履歴をログファイルに出力するログ出力方法において、
前記所定の関数が実行されたときに、少なくとも、前記モジュールのモジュール名の代わりに当該モジュール名に予め対応付けられている第１エイリアス名および前記関数の関数名の代わりに当該関数名に予め対応付けられている第２エイリアス名を実行履歴情報として出力するツールプログラムを当該所定の関数に組み込み、
前記実行履歴情報が出力されると、当該実行履歴情報を前記所定の関数の実行履歴としてテキストファイル形式で前記ログファイルに出力することを特徴とするログ出力方法。
【請求項２】
モジュール内の所定の関数の実行履歴をログファイルに出力するデバイスドライバにおいて、
前記所定の関数には、当該所定の関数が実行されたときに、少なくとも、前記モジュールのモジュール名の代わりに当該モジュール名に予め対応付けられている第１エイリアス名および前記関数の関数名の代わりに当該関数名に予め対応付けられている第２エイリアス名を実行履歴情報として出力するツールプログラムが組み込まれており、
前記実行履歴情報が出力されると、当該実行履歴情報を前記所定の関数の実行履歴としてテキストファイル形式で前記ログファイルに出力するログ出力手段を有していることを特徴とするデバイスドライバ。
【請求項３】
プリンタを駆動制御することを特徴とする請求項２に記載のデバイスドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスドライバを構成しているモジュール内の関数の実行履歴をログファイルに出力するログ出力方法に関する。
【背景技術】
【０００２】
印刷データを印刷する際にプリンタの動作が不安定になった場合には、上位機器からプリンタを駆動制御しているプリンタドライバに不具合があることがある。このような場合には、プリンタドライバを構成しているモジュール内の関数の実行履歴をトレースし、不具合が発生した関数を突き止めてデバッグを行う。
【０００３】
ここで、不具合が発生した関数を突き止めるために、ツールプログラムを組み込んだデバイスドライバを上位機器にインストールする技術や、デバイスドライバと連携するツールプログラムを上位機器にインストールして、不具合が発生した関数を突き止めるための各種情報を外部メモリに実行履歴として保存する技術は、特許文献１に記載されている。
【特許文献１】特開２００４−１０２６１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記の文献に記載されている技術では、外部メモリに保存されている実行履歴を視認可能な状態で見るために専用の表示モジュールを実行しなければならず、実行履歴のトレースに際して、汎用のデバッグツールが使えないという問題がある。
【０００５】
ここで、実行履歴をテキストファイル形式で出力すれば、汎用のテキストエディタなどを用いて実行履歴をトレースすることができるので、デバイスドライバのメンテナンス性は向上する。しかし、実行履歴をテキストファイル形式にすれば、エンドユーザや第三者にもデバイスドライバを構成しているモジュールと、その内部で実行されている関数が丸見えになってしまう。すなわち、デバイスドライバの内部処理が解析可能になってしまうという問題がある。
【０００６】
本発明の課題は、このような点に鑑みて、メンテナンス性に優れるとともに、デバイスドライバの内部処理を秘匿することが可能なログ出力方法およびデバイスドライバを提案することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明は、デバイスドライバを構成しているモジュール内の所定の関数の実行履歴をログファイルに出力するログ出力方法において、
前記所定の関数が実行されたときに、少なくとも、前記モジュールのモジュール名の代わりに当該モジュール名に予め対応付けられている第１エイリアス名および前記関数の関数名の代わりに当該関数名に予め対応付けられている第２エイリアス名を実行履歴情報として出力するツールプログラムを当該所定の関数に組み込み、
前記実行履歴情報が出力されると、当該実行履歴情報を前記所定の関数の実行履歴としてテキストファイル形式で前記ログファイルに出力することを特徴とする。
【０００８】
本発明によれば、実行履歴を取得することが必要な所定の関数には予めツールプログラムが組み込まれており、所定の関数が実行されると、モジュール名および関数名の代わりに第１および第２エイリアス名を含む実行履歴情報が出力される。また、出力された実行履歴情報は、所定の関数の実行履歴としてテキストファイル形式でログファイルに出力される。この結果、ログファイルの内容は汎用のテキストエディタなどを用いて確認することができるので、実行履歴のトレース作業を効率よく行うことができる。よって、デバイスドライバのメンテナンス性が高い。また、モジュール名および関数名はいずれもエイリアス名に変更されているので、モジュール名とエイリアス名の対応表および関数名とエイリアス名の対応表を持っている者でなければログファイルを見てもデバイスドライバの内部処理を把握することはできない。従って、ログファイルによって、デバイスドライバの内部処理が解析可能になってしまうことがない。
【０００９】
次に、本発明は、モジュール内の所定の関数の実行履歴をログファイルに出力するデバイスドライバにおいて、
前記所定の関数には、当該所定の関数が実行されたときに、少なくとも、前記モジュールのモジュール名の代わりに当該モジュール名に予め対応付けられている第１エイリアス名および前記関数の関数名の代わりに当該関数名に予め対応付けられている第２エイリアス名を実行履歴情報として出力するツールプログラムが組み込まれており、
前記実行履歴情報が出力されると、当該実行履歴情報を前記所定の関数の実行履歴としてテキストファイル形式で前記ログファイルに出力するログ出力手段を有していることを特徴とする。
【００１０】
本発明のデバイスドライバにおいて、実行履歴を取得する必要がある所定の関数には、モジュール名および関数名の代わりに第１、第２エイリアス名を実行履歴情報として出力するツールプログラムが組み込まれている。また、ログ出力手段は、所定の関数から出力された実行履歴情報を、この所定の関数の実行履歴としてテキストファイル形式で出力する。この結果、ログファイルの内容は汎用のテキストエディタなどを用いて確認することができるので、実行履歴のトレース作業を効率よく行うことができる。よって、デバイスドライバのメンテナンス性が高い。また、モジュール名および関数名はいずれもエイリアス名に変更されているので、モジュール名とエイリアス名の対応表および関数名とエイリアス名の対応表を持っている者でなければログファイルを見てもデバイスドライバの内部処理を把握することはできない。従って、ログファイルによって、デバイスドライバの内部処理が解析可能になってしまうことがない。
【００１１】
本発明において、上記のデバイスドライバは、プリンタを駆動制御するデバイスドライバとすることができる。すなわち、プリンタドライバに本発明を適用できる。
【発明の効果】
【００１２】
本発明によれば、実行履歴を取得することが必要な所定の関数には予めツールプログラムが組み込まれており、所定の関数が実行されると、モジュール名および関数名の代わりに第１および第２エイリアス名を含む実行履歴情報が出力される。また、出力された実行履歴情報は所定の関数の実行履歴としてテキストファイル形式でログファイルに出力される。この結果、ログファイルの内容は汎用のテキストエディタなどを用いて確認することができるので、実行履歴のトレース作業を効率よく行うことができる。よって、デバイスドライバのメンテナンス性が高い。また、モジュール名および関数名はいずれもエイリアス名に変更されているので、モジュール名とエイリアス名の対応表および関数名とエイリアス名の対応表を持っている者でなければログファイルを見てもデバイスドライバの内部処理を把握することはできない。従って、ログファイルによって、デバイスドライバの内部処理が解析可能になってしまうことがない。
【発明を実施するための最良の形態】
【００１３】
以下に、図面を参照して、本発明の実施の形態を説明する。
【００１４】
（コンピュータシステム）
図１は、本発明のプリンタドライバを搭載したコンピュータシステムを示す構成図である。本例のコンピュータシステム１は、入出力装置としてディスプレイ２、キーボード３、マウス４が接続されているとともに記憶装置５を内蔵しているコンピュータ６と、このコンピュータ６に接続されたプリンタ７を備えている。コンピュータ６には、オペレーティングシステム（ＯＳ）８と、ＯＳ８上で動作するアプリケーションプログラム９と、アプリケーションプログラム９から出力される印刷データを、ＯＳ８を介して受け取って、この印刷データを印刷するためにプリンタ７を駆動制御するプリンタドライバ１０が搭載されている。
【００１５】
（プリンタドライバ）
図２はコンピュータ６に搭載されているプリンタドライバ１０を説明するための概略ブロック図である。プリンタドライバ１０は、アプリケーションプログラム９から出力された印刷データを、ＯＳ８を介して取得し、この印刷データを印刷するための複数のモジュールＡ、Ｂを有している。また、各モジュールＡ、Ｂはそれぞれ関数ａ、ｂを含む複数の関数を備えており、これらの関数を連携させて実行させることにより、プリンタ７を駆動制御して印刷データの印刷を行う。
【００１６】
ここで、プリンタドライバ１０のモジュールＡ、Ｂに含まれている複数の関数のうち、関数ａ、ｂは、デバックなどに際してその実行履歴のトレースが必要となる関数である。このため、関数ａには、関数ａが実行されたときに、関数ａの実行時刻、関数ａの駆動制御対象の装置名、モジュールＡのモジュール名の代わりにこのモジュール名に予め対応付けられている第１エイリアス名、関数ａの関数名の代わりにこの関数名に予め対応付けられている第２エイリアス名、などを実行履歴情報として出力するツールプログラムαが組み込まれている。また、関数ｂにも、関数ｂが実行されると、関数ｂの実行時刻、関数ｂの駆動制御対象の装置名、モジュールＢのモジュール名の代わりにこのモジュール名に予め対応付けられている第３エイリアス名、関数ｂの関数名の代わりにこの関数名に予め対応付けられている第４エイリアス名、などを実行履歴情報として出力するツールプログラムβが組み込まれている。
【００１７】
また、プリンタドライバ１０は、各関数ａ、ｂの実行履歴をログファイルに出力するとともに、ログファイル１１のバックアップを行うログ出力関数（ログ出力手段）ｃを備えている。
【００１８】
ログ出力関数ｃは、各関数ａ、ｂが実行されたときに各関数ａ、ｂから実行履歴情報が出力されると、この実行履歴情報を各関数ａ、ｂの実行履歴としてログファイル１１に出力する。また、ログファイル１１が存在していない場合には、記憶装置５にログファイル１１を新たに作成して、作成したログファイル１１に実行履歴を出力する。ここで、実行履歴はテキストファイル形式で出力されるようになっている。
【００１９】
また、ログ出力関数ｃは、各関数ａ、ｂから出力された実行履歴情報の容量とログファイル１１のファイルサイズを監視しており、関数ａまたは関数ｂから出力された実行履歴情報をログファイル１１に出力するとログファイル１１のファイルサイズが最大ファイルサイズの設定値を超えてしまう場合には、ログファイル１１をバックアップファイル名でコピーする。すなわち、バックアップファイル１２にバックアップする。また、バックアップの後に、ログファイル１１をファイルサイズが０の状態でオープンして、関数ａまたは関数ｂの実行履歴を出力する。
【００２０】
さらに、ログ出力関数ｃは、各関数ａ、ｂの実行履歴をログファイル１１に出力するための各種の設定を入力させるための設定用ダイアログボックスを、ディスプレイ２上に表示する。
【００２１】
図３はログ出力関数ｃによって表示される設定用ダイアログボックス２０である。設定用ダイアログボックス２０の左側上部分には、各関数ａ、ｂの実行履歴をログファイル１１へ出力するか否かを選択させるためのチェックボックス２１が設けられている。ユーザによってチェックボックス２１がチェックされると、ログ出力関数ｃは、各関数ａ、ｂから実行履歴情報が出力される毎に、関数ａ、ｂの実行履歴をログファイル１１へ出力するように設定される。また、チェックボックス２１のチェックが外されると、ログ出力関数ｃは、関数ａ、ｂの実行履歴をログファイル１１へ出力しないように設定される。
【００２２】
また、設定用ダイアログボックス２０の左側中央部分にはログファイル１１の最大ファイルサイズを設定するための入力欄２２が設けられている。ユーザによって入力欄２２に値が入力されると、この値はログファイル１１の最大ファイルサイズの設定値として記憶保持される。
【００２３】
さらに、設定用ダイアログボックス２０の右側部分には、記憶装置５において、ログファイル１１を記憶保持するフォルダを選択するためのフォルダ設定用ボタン２３と、フォルダ設定用コンボボックス２４が設けられている。フォルダ設定用ボタン２３およびフォルダ設定用コンボボックス２４によってフォルダが選択されると、ログ出力関数ｃは、選択されたフォルダをログファイル１１のパスとして記憶保持し、設定されたフォルダにログファイル１１を作成し、このログファイル１１に実行履歴を出力する。また、設定されたフォルダにおいて、ログファイル１１のバックアップを行う。
【００２４】
（実行履歴をログファイルに出力するログ出力動作）
次に、図４を参照して、プリンタドライバ１０が、このプリンタドライバ１０を構成しているモジュールＡ、Ｂの関数ａ、ｂの実行履歴をログファイル１１に出力するログ出力動作を説明する。図４はログ出力動作を示すフローチャートである。
【００２５】
まず、ユーザによって、設定用ダイアログボックス２０のチェックボックス２１がチェックされており、各関数ａ、ｂの実行履歴をログファイル１１へ出力することが選択されているものとする。また、ログファイル１１の最大ファイルサイズと、ログファイル１１のファイルパスおよびログファイル１１をバックアップするフォルダが設定されているものとする。
【００２６】
印刷データの印刷が指令されることによりプリンタドライバ１０の内部処理が開始されると、関数ａが実行される（ステップＳＴ１）。
【００２７】
すると、関数ａは、関数ａの実行時刻、駆動制御対象の装置名、モジュールＡのモジュール名に対応付けられた第１エイリアス名、関数名に対応付けられた第２エイリアス名、などを実行履歴情報として出力する（ステップＳＴ２）。
【００２８】
実行履歴情報が出力されると、ログ出力関数ｃはログファイル１１の存在を確認する（ステップＳＴ３）。ログファイル１１が存在していない場合には、新たにログファイル１１を作成して、ログファイル１１をオープンする（ステップＳＴ４、ステップＳＴ５）。ログファイル１１が存在している場合には、ログファイル１１をオープンする（ステップＳＴ５）。
【００２９】
また、ログ出力関数ｃは、関数ａから出力されている実行履歴情報の容量およびログファイル１１の容量を取得し、実行履歴情報をログファイル１１に出力するとログファイル１１の容量が入力欄２２に入力された最大ファイルサイズの設定値を超えるか否かを判断する（ステップＳＴ６）。
【００３０】
ステップＳＴ６において、ログファイル１１の容量が最大ファイルサイズを超える場合には、ログ出力関数ｃは、このログファイル１１が既にバックアップされているか否かを確認する（ステップＳＴ７）。バックアップされているか否かの確認は、例えば、バックアップファイル１２の存在、バックアップファイル１２のタイムスタンプ、バックアップファイル１２のファイル名、または、バックアップファイル１２の容量などを取得して行う。
【００３１】
ステップＳＴ７において、ログファイル１１が既にバックアップされている場合には、バックアップファイル１２を削除して（ステップＳＴ８）、しかる後に、ログファイル１１をバックアップファイル名でコピーする（ステップＳＴ９）。そして、既存のログファイル１１をファイルサイズが０の状態でオープンする（ステップＳＴ１０）。
【００３２】
ステップＳＴ７において、ログファイル１１が未だバックアップされていない場合には、ログファイル１１をバックアップファイル名でコピーする（ステップＳＴ９）。しかる後に、既存のログファイル１１をファイルサイズが０の状態でオープンする（ステップＳＴ１０）。
【００３３】
ログファイルがオープンされると、ログ出力関数ｃは、実行履歴情報を関数ａの実行履歴としてテキストファイル形式でログファイル１１に出力する。また、出力後にログファイル１１をクローズする（ステップＳＴ１２）。
【００３４】
なお、ステップＳＴ６において、ログファイル１１の容量が最大ファイルサイズを超えない場合には、ステップＳＴ７からステップＳＴ１０までの動作を行うことなく、ログ出力関数ｃは、実行履歴情報を関数ａの実行履歴としてテキストファイル形式でログファイル１１に出力する。また、出力後にログファイル１１をクローズする（ステップＳＴ１１）。
【００３５】
次に、プリンタドライバの内部処理はモジュールＢの関数ｂに移行して、関数ｂが実行される。関数ｂが実行されると、これ以降は、ステップＳＴ１からステップＳＴ１２の動作が関数ａの場合と同様に行われる。すなわち、関数ｂからは、関数ｂの実行時刻、駆動制御対象の装置名、モジュールＢのモジュール名に対応付けられた第３エイリアス名、関数ｂ名に対応付けられた第４エイリアス名、などが実行履歴情報として出力される。この実行履歴情報は、関数ｂの実行履歴としてテキストファイル形式でログファイル１１に出力される。
【００３６】
（本形態の効果）
図５は、ログファイル１１に出力された一つの関数の実行履歴の例を示す説明図である。実行履歴には、関数の実行時刻、駆動制御対象の装置名、モジュール名のエイリアス名、関数名のエイリアス名、その他の情報、が先頭からこの順番で含まれている。実行履歴に含まれている「ＥＮＴ」の文字は、モジュール名「Ｅｎｔｒｙ」のエイリアス名であり、「ＤＳＴＤ」の文字は、関数名「ＤｒｖＳｔａｒｔＤｏｃ」のエイリアス名である。
【００３７】
本例によれば、モジュール名および関数名はいずれもエイリアス名で出力されているので、モジュール名とエイリアス名との対応表、および関数名とエイリアス名との対応表を持っている者でなければ、ログファイル１１を見てもデバイスドライバの内部処理を把握することはできない。従って、ログファイル１１によって、デバイスドライバの内部処理が解析可能になってしまうことがない。
【００３８】
また、実行履歴は、ログ出力関数ｃによって、テキストファイル形式でログファイル１１に出力されている。従って、汎用のテキストエディタや汎用のデバッグツールを用いて実行履歴をトレースすることができるので、プリンタドライバ１０のメンテナンス性が向上する。
【００３９】
（その他の実施の形態）
なお、上記の例では、本発明をプリンタドライバ１０に適用した例を説明しているが、本発明は、コンピュータ６で動作するデバイスドライバに対して、適用することができる。
【図面の簡単な説明】
【００４０】
【図１】本例のコンピュータシステムの構成図である。
【図２】本例のプリンタドライバを説明するための概略ブロック図である。
【図３】実行履歴の出力先などを設定するための設定用ダイアログボックスである。
【図４】関数の実行履歴を出力するログ出力動作を示すフローチャートである。
【図５】関数の実行履歴の出力例を示す説明図である。
【符号の説明】
【００４１】
１・コンピュータシステム、２・ディスプレイ、３・キーボード、４・マウス、５・記憶装置、６コンピュータ、７・プリンタ、８・オペレーティングシステム、９・アプリケーションプログラム、１０・プリンタドライバ、１１・ログファイル、１２・バックアップファイル、２０・設定用ダイアログボックス、２１・チェックボックス、２２・入力欄、２３・フォルダ設定用ボタン、２４・フォルダ設定用コンボボックス、Ａ，Ｂ・モジュール、ａ，ｂ・関数、ｃ・ログ出力関数（ログ出力手段）、α，β・ツールプログラム
【図１】
2009199402.tif 000003
【図２】
2009199402.tif 000004
【図４】
2009199402.tif 000005
【図５】
2009199402.tif 000006
【図３】
2009199402.tif 000007