(57)【特許請求の範囲】
【請求項１】
デバイスドライバ生成ロジック及びデバイスジョブ処理ロジックを有するデータ処理システムであって、
前記デバイスドライバ生成ロジックは、
コンピュータ周辺装置の１つ以上の機能を記述している第１の機能説明情報を前記コンピュータ周辺装置から受信し、
デバイスドライバファイルを受信し、
コンフィギュレーションデータを受信し、
前記第１の機能説明情報、前記デバイスドライバファイル及びコンフィギュレーションデータに基づいて、前記コンピュータ周辺装置及びコンピュータオペレーティングシステムについてデバイスドライバを生成し、
前記デバイスジョブ処理ロジックは、
デバイス機能検出アプリケーションが利用可能な前記コンピュータ周辺装置のリストを作成し、
前記コンピュータ周辺装置のリストに含まれているコンピュータ周辺装置の選択を受け付け、
前記選択を受け付けたコンピュータ周辺装置にリクエストを送り、
前記リクエストの時点における前記コンピュータ周辺装置の第１の機能説明情報に基づいて、前記コンピュータ周辺装置の実行するジョブを記述するジョブチケットを生成し、
ページ記述言語にフォーマットされたジョブチケットを前記コンピュータ周辺装置に提供する、データ処理システム。
【請求項２】
前記デバイスドライバ生成ロジックは、前記オペレーティングシステムから、新たに発見したコンピュータ周辺装置をインストールするリクエストを表すユーザ入力を受信し、該ユーザ入力に応じて前記デバイスドライバを生成する、請求項１記載のデータ処理システム。
【請求項３】
前記デバイスドライバ生成ロジックは、前記コンピュータ周辺装置から、前記コンピュータ周辺装置の属性を特定するメタデータを受信し、前記メタデータに基づいて前記デバイスドライバを生成する、請求項１記載のデータ処理システム。
【請求項４】
前記デバイスドライバ生成ロジックは、前記コンピュータ周辺装置から、前記コンピュータ周辺装置のモデル固有の特徴及びオプションを特定するデバイスコンフィギュレーションデータを受信し、前記デバイスコンフィギュレーションデータに基づいて前記デバイスドライバを生成する、請求項１記載のデータ処理システム。
【請求項５】
前記コンフィギュレーションデータは、レンダリングモジュール、ユーザインターフェースモジュール及びデバイスドライバパッケージを構築することに関する属性値を有する請求項１記載のデータ処理システム。
【請求項６】
１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされたジョブチケットコンシューマロジックが前記コンピュータ周辺装置内に設けられており、該ジョブチケットコンシューマロジックは、
前記ジョブチケットデータを、前記コンピュータ周辺装置の１つ以上のデバイス固有の処理コマンドに変換し、
前記コンピュータ周辺装置に前記処理コマンドを実行させる、請求項１記載のデータ処理システム。
【請求項７】
前記コンピュータ周辺装置が、プリンタ、複合機、スキャナ、仕上げ装置、ディジタルカメラ又はモニタの内何れかを含む、請求項１記載のデータ処理システム。
【請求項８】
前記ジョブチケットデータが、前記第１の機能説明情報の一部をなす、請求項１記載のデータ処理システム。
【請求項９】
前記第１の機能説明情報が、前記コンピュータ周辺装置、特徴のプロパティ名、プロパティの値及びプロパティのオプションに関する特徴のリストを、ジョブ定義フォーマット(JDF)又は印刷スキーマ標準仕様の何れかで表現された形式で含んでいる、請求項１記載のデータ処理システム。
【請求項１０】
前記デバイスドライバ生成ロジックは、利用可能な複数の周辺装置のリストを表示し、該利用可能な周辺装置の１つを選択していることを表す第２のユーザ入力を受信し、前記第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものにリクエストを送るように前記デバイスドライバを生成する、請求項１記載のデータ処理システム。
【請求項１１】
１つ以上の命令シーケンスをエンコードしたコンピュータ読取可能な記憶媒体であって、該命令シーケンスは実行されると、１つ以上のプロセッサに或る手順を実行させ、該手順は、
デバイスドライバ生成ロジックが、
コンピュータ周辺装置の１つ以上の機能を記述している第１の機能説明情報を前記コンピュータ周辺装置から受信し、
デバイスドライバファイルを受信し、
コンフィギュレーションデータを受信し、
前記第１の機能説明情報、前記デバイスドライバファイル及びコンフィギュレーションデータに基づいて、前記コンピュータ周辺装置及びコンピュータオペレーティングシステムについてデバイスドライバを生成し、
デバイスジョブ処理ロジックが、
デバイス機能検出アプリケーションが利用可能な前記コンピュータ周辺装置のリストを作成し、
前記コンピュータ周辺装置のリストに含まれているコンピュータ周辺装置の選択を受け付け、
前記選択を受け付けたコンピュータ周辺装置にリクエストを送り、
前記リクエストの時点における前記コンピュータ周辺装置の第１の機能説明情報に基づいて、前記コンピュータ周辺装置の実行するジョブを記述するジョブチケットを生成し、
ページ記述言語にフォーマットされたジョブチケットを前記コンピュータ周辺装置に提供するステップを有する、コンピュータ読取可能な記憶媒体。
【請求項１２】
或る命令シーケンスを更に有し、該命令シーケンスは実行されると、前記オペレーティングシステムから、新たに発見したコンピュータ周辺装置をインストールするリクエストを表すユーザ入力を受信し、該ユーザ入力に応じて前記自動的に生成するステップを前記１つ以上のプロセッサに実行させる、請求項１１記載のコンピュータ読取可能な記憶媒体。
【請求項１３】
或る命令シーケンスを更に有し、該命令シーケンスは実行されると、前記コンピュータ周辺装置から、前記コンピュータ周辺装置の属性を特定するメタデータを受信することを１つ以上のプロセッサに実行させ、前記メタデータに基づいて前記デバイスドライバを生成する、請求項１１記載のコンピュータ読取可能な記憶媒体。
【請求項１４】
或る命令シーケンスを更に有し、該命令シーケンスは実行されると、前記コンピュータ周辺装置から、前記コンピュータ周辺装置のモデル固有の特徴及びオプションを特定するデバイスコンフィギュレーションデータを受信することを１つ以上のプロセッサに実行させ、前記デバイスコンフィギュレーションデータに基づいて前記デバイスドライバを生成する、請求項１１記載のコンピュータ読取可能な記憶媒体。
【請求項１５】
デバイスドライバ生成ロジック及びデバイスジョブ処理ロジックを有するデータ処理システムが実行する方法であって、
前記デバイスドライバ生成ロジックが、
コンピュータ周辺装置の１つ以上の機能を記述している第１の機能説明情報を前記コンピュータ周辺装置から受信し、
デバイスドライバファイルを受信し、
コンフィギュレーションデータを受信し、
前記第１の機能説明情報、前記デバイスドライバファイル及びコンフィギュレーションデータに基づいて、前記コンピュータ周辺装置及びコンピュータオペレーティングシステムについてデバイスドライバを生成し、
前記デバイスジョブ処理ロジックが、
デバイス機能検出アプリケーションが利用可能な前記コンピュータ周辺装置のリストを作成し、
前記コンピュータ周辺装置のリストに含まれているコンピュータ周辺装置の選択を受け付け、
前記選択を受け付けたコンピュータ周辺装置にリクエストを送り、
前記リクエストの時点における前記コンピュータ周辺装置の第１の機能説明情報に基づいて、前記コンピュータ周辺装置の実行するジョブを記述するジョブチケットを生成し、
ページ記述言語にフォーマットされたジョブチケットを前記コンピュータ周辺装置に提供するステップを有する、方法。
【請求項１６】
前記オペレーティングシステムから、新たに発見したコンピュータ周辺装置をインストールするリクエストを表すユーザ入力を受信し、該ユーザ入力に応じて前記自動的に生成するステップを更に有する請求項１５記載の方法。
【請求項１７】
前記コンピュータ周辺装置から、前記コンピュータ周辺装置の属性を特定するメタデータを受信するステップを更に有し、前記メタデータに基づいて前記デバイスドライバを生成する、請求項１５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータデバイスドライバ、ジョブチケットベースデバイス及びページ記述言語(PDL)周辺装置環境に関連する。
【背景技術】
【０００２】
周辺装置はコンピュータに結合可能である。コンピュータ上で動作するアプリケーションプログラムは、通常、デバイスドライバを介して周辺装置を制御し、様々な種類の周辺装置について、周辺装置毎に特定のデバイスドライバが使用される。デバイスドライバは、一般的には、デバイスタイプ、プロセッサ及びそのデバイスドライバが動作しているオペレーティングシステム(プラットフォーム)に対して特有であり、しばしば、プラットフォームが生成するデータのタイプに対してさえ特有に用意する必要がある。
【０００３】
各デバイスドライバは、オペレーティングシステムやアプリケーションプログラムに関するインターフェースとして機能し、周辺装置と通信を行う。デバイスドライバは一般的にはハードウエアに依存しており、各デバイスドライバは特定のタイプの周辺装置のハードウエア(例えば、プリンタ、スキャナ、ビデオアダプタ、ネットワークインターフェースカード、サウンドカード、WEBカメラ、ディジタルカメラ等)について設計される。
【０００４】
周辺装置がプリンタの場合、デバイスドライバはプリンタドライバと呼ばれ、図形オブジェクトを生成するアプリケーションプログラムとやりとりを行い、その図形オブジェクトは紙に印刷可能なデータである。プリンタドライバは、出力用紙トレイ及び用紙サイズのようなプリンタのハードウエア特性及び設定も制御する。プリンタドライバは、アプリケーションプログラムから発せられたリクエストを、ポストスクリプト,PCL,PJL等のようなプリンタ固有の制御言語(PDL:  Page  Description  Language)に変換する。プリンタドライバ及びプリンタ間で通信されるデータは、PDLデータストリーム内で一緒に混ざっているハードウエア制御コマンド及び印刷可能なデータの双方を含む。  
あるハイエンドのプリンタ(特に、商用に使用されるもの又は大規模な製造印刷環境で使用されるもの)は、ジョブ定義フォーマット(JDF:  Job  Definition  Format)で表現されるコマンドを使用するチケットベースのプリンタ制御(機能)をサポートする。あるデータストリームでプリンタジョブチケットベースのプリンタ制御コマンド、及び別の時点でプリンタに送信される第２データストリーム中の印刷可能なデータをプリンタドライバがプリンタへ送ることを、JDFは可能にする。この技法の場合、制御コマンド及び印刷可能なデータが混ざってしまう。
【０００５】
典型的なアプローチの場合、ある特定の周辺装置に関する特定のジョブに備えてジョブ関連の設定値を設定する際、あるアプリケーションがデバイスドライバを起動し、一定のユーザインターフェースを表示し、そのインターフェースを介してユーザは様々なパラメータ値（ジョブの設定値）又は他のジョブの設定値を選択できる。デバイスドライバは選択内容を解釈し、その選択内容を一群のジョブ設定データに変換する。ドライバはジョブ設定データを装置に送り、その際、実際のジョブデータと共に束ねて送ってもよいし、或いは「ジョブチケット(job  ticket)」と呼ばれるメッセージ又はデータ構造を用いて別個に送ってもよい。
【０００６】
従来のデバイスドライバの開発は複雑である。周辺装置の製造業者は、通常、多様な幅広いドライバを開発するためにかなりの資源を投入し、その製造業者及び目的のコンピュータプラットフォームによりなされる総てに配慮する必要がある。更に、デバイスドライバで用意されるユーザインターフェースは、通常は一定の固定されたものであり、装置が新たな特徴と共にアップグレードされた場合、製造業者はそのドライバをアップグレードし、アップグレードされたユーザインターフェースでその新たな特徴を提示するようにする必要がある。
【０００７】
ユニバーサルシリアルバス(USB)フラッシュメモリストレージ装置は周辺装置の一例であり、従来のデバイスドライバに伴う制約の影響を受ける。現在のマイクロソフト社のウインドウズの環境の場合、一般的なUSBストレージ装置又は「メモリスティック」は、その装置に対して読み書きするのに新たなソフトウエアをユーザがインストールすることを要しない。なぜなら、マイクロソフト社のウインドウズXP及びマイクロソフト社のウインドウズビスタが標準的なUSBストレージデバイスドライバを持っているからである。これは便利ではあるが、競合するUSBストレージ装置の製造業者は、ウインドウズのデバイスドライバでサポートされている標準仕様に従わなければならない。製造業者毎の特有の特徴を持つことはできず、様々な製造業者は、価格や形に基づいて市場で競争することしかできず、中身の技術的な特徴で競争することはできない。
【０００８】
マイクロソフト社は、XMLペーパ仕様(XPS:  XML  Paper  Specification)と呼ばれる書類フォーマットを導入しており、それはプリンタのハードウエアを制御することに備えて、プリントスキーマ(PrintSchema)と呼ばれるジョブチケットを含む。
【０００９】
スキャナドライバと呼ばれるスキャナ装置用のデバイスドライバは、走査された画像を取り出すためのアプリケーションプログラムとやりとりを行う。スキャナドライバ及びスキャナ装置間で通信されるデータは、スキャンされた画像データ及びスキャナ装置固有の制御コマンドを含む。画像データ及びスキャナ制御コマンドは、TWAINのようなフォーマットの中で一緒に混在してもよい。
【００１０】
このセクションで説明されるアプローチは追跡可能なアプローチであるが、考察又は追跡が過去になされているアプローチであるとは限らない。従って、特に断りのない限り、このセクションで説明されるどのアプローチも、このセクションに含まれているという理由だけで従来技術と考えるよう仮定されるべきではない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
様々な製造業者が、製品の価格や形だけでなく、中身の技術的特徴によっても市場で競争できるようにするのに相応しい装置及び方法を提供することである。
【課題を解決するための手段】
【００１２】
一実施例では、デバイスドライバ生成ロジック及びデバイスジョブ処理ロジックを有するデータ処理システムが使用され、前記デバイスドライバ生成ロジックは、１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされ、実行される際以下の手順を実行し、該手順は、コンピュータ周辺装置から第１の機能説明情報を受信するステップであって、該第１の機能説明情報は前記コンピュータ周辺装置の１つ以上の機能を記述しているステップと、一般的なデバイスドライバファイルを受信するステップと、コンフィギュレーションデータを受信するステップと、前記第１の機能説明情報、前記一般的なデバイスドライバファイル及びコンフィギュレーションデータに基づいて、前記コンピュータ周辺装置について及びコンピュータオペレーティングシステムについてデバイスドライバを自動的に生成するステップとを有し、前記デバイスジョブ処理ロジックは、前記コンピュータ周辺装置を使用するリクエストを受信するように、前記コンピュータ周辺装置から該リクエストの時点における第１の機能説明情報を要求及び受信するように、前記第１の機能説明情報に基づいて、前記コンピュータ周辺装置の実行するジョブを記述するジョブチケットを生成し、前記コンピュータ周辺装置に送信するように、及びページ記述言語にフォーマットされたジョブデータを前記コンピュータ周辺装置に提供するように構築される。
【００１３】
一実施例では、前記デバイスドライバ生成ロジックは或るロジックを更に有し、該ロジックは起動されると、前記オペレーティングシステムから、新たに発見したコンピュータ周辺装置をインストールするリクエストを表すユーザ入力を受信し、該ユーザ入力に応じて前記自動的に生成するステップを実行する。
【００１４】
一実施例では、前記デバイスドライバ生成ロジックは或るロジックを更に有し、該ロジックは起動されると、前記コンピュータ周辺装置から、前記コンピュータ周辺装置の属性を特定するメタデータを受信し、生成するロジックは、前記メタデータに基づいて前記デバイスドライバを生成するロジックを有する。
【００１５】
一実施例では、前記デバイスドライバ生成ロジックは或るロジックを更に有し、該ロジックは起動されると、前記コンピュータ周辺装置から、前記コンピュータ周辺装置のモデル固有の特徴及びオプションを特定するデバイスコンフィギュレーションデータを受信し、生成するロジックは、前記デバイスコンフィギュレーションデータに基づいて前記デバイスドライバを生成するロジックを有する。
【００１６】
一実施例では、前記デバイスドライバ生成ロジックは或るロジックを更に有し、該ロジックは起動されると、前記コンピュータ周辺装置の第１言語における第１リソース群と、第２言語における第２リソース群とを対応付けるマッピングファイルを受信し、生成するロジックは、前記マッピングファイルに基づいて前記デバイスドライバを生成するロジックを有する。
【００１７】
一実施例では、前記コンフィギュレーションデータは、レンダリングモジュール、ユーザインターフェースモジュール及びデバイスドライバパッケージを構築することに関する属性値を有する。
【００１８】
一実施例では、前記デバイスドライバ生成ロジックは、前記コンピュータ周辺装置に送られたページ記述言語でフォーマットされた前記ジョブデータのストリームに前記ジョブチケットデータを併合するように構築されている。
【００１９】
一実施例では、１つ以上のコンピュータ読取可能な記憶媒体に実行に備えてエンコードされたジョブチケットコンシューマロジックを前記コンピュータ周辺装置内に更に有し、該ジョブチケットコンシューマロジックは起動されると、前記コンピュータ周辺装置の１つ以上のデバイス固有の処理コマンドに前記ジョブチケットデータを変換し、前記コンピュータ周辺装置が前記処理コマンドを実行することを引き起こす。
【００２０】
一実施例では、前記コンピュータ周辺装置が、プリンタ、複合機、スキャナ、仕上げ装置、ディジタルカメラ又はモニタの内何れかを含む。一実施例では、前記ジョブチケットデータが、前記第１の機能説明情報の一部をなす。
【００２１】
一実施例では、前記第１の機能説明情報が、前記コンピュータ周辺装置、特徴のプロパティ名、プロパティの値及びプロパティのオプションに関する特徴のリストを、ジョブ定義フォーマット(JDF)又は印刷スキーマ標準仕様の何れかで表現された形式で含んでいる。
【００２２】
一実施例では、前記第１の機能説明情報は、前記コンピュータ周辺装置の特徴及び１つ以上の制約特徴のリストを含み、前記１つ以上の制約特徴は、(a)前記機能の利用可能性に関する制限又は(b)別の機能を利用することにより又は別の機能の別の設定により要求される機能に関する設定を含む。
【００２３】
一実施例では、前記デバイスドライバ生成ロジックは或るロジックを更に有し、該ロジックは起動されると、利用可能な複数の周辺装置のリストを表示し、該利用可能な周辺装置の１つを選択していることを表す第２のユーザ入力を受信し、前記第２のユーザ入力で表現されている利用可能な周辺装置の内選択されたものにリクエストを送るように前記デバイスドライバを生成する。
【００２４】
他の実施例はコンピュータで使用される方法及びコンピュータ読取可能な記憶媒体を含み、その方法は上記のステップに従って構築され、その機能を実行する命令と共に記憶媒体にエンコードされる。  
【発明を実施するための最良の形態】
【００２５】
説明を目的とする以下の詳細な説明では、本発明の十分な理解を図るため、様々な具体的な詳細が述べられる。しかしながら、本発明はそのような具体的詳細なしに実施されてもよいことは明白であろう。また、本発明を不必要に曖昧にするかもしれないことを避けるため、周知の構造及び装置はブロック図形式で示される。
【実施例１】
【００２６】
１．０  構造及び機能の概要
概して、以下に説明される技法は、デバイス機能及びジョブチケットをやりとりすることで、開発及び配備されるソフトウエアが、新たな周辺装置及び周辺装置の新たな機能をサポートすることを可能にする。本技法の場合、新たなデバイスドライバをリリースせずに及びユーザがソフトウエアをアップデートすることを強制せずに、周辺装置の製造業者は新たな製品及び新たな機能を導入できる。
【００２７】
一実施例では、デバイスドライバが本技法を使用する際、アプリケーションプログラムは、従来のデバイスドライバと通信するアプリケーションプログラムと同じ方法でデバイスドライバと通信する。本技法を実現するデバイスドライバを利用する際、アプリケーションプログラムは一切変更されなくてよい。
【００２８】
一実施例では、１つのドライバが或る総てのデバイスと共に動作可能であり、それらのデバイスは、各自自身の機能及び特徴をそのドライバが理解できる方法で説明できる。従って１つのドライバが複数の周辺装置と共に機能することができ、周辺装置及びコンピュータプラットフォームの総ての組み合わせについて多数のドライバを書き込む必要はない。
【００２９】
一実施例では、ジョブデータはジョブ設定データ及びデバイス機能データとは別個である。ドライバはジョブチケットを周辺装置に送るが、ドライバは、そのジョブチケットと同じ時点でジョブデータを周辺装置に送る必要はない。
【００３０】
実施例は、ジョブデータがジョブ設定値と別個に定義される様々な環境で使用可能である。例えば、印刷システムの場合、アプリケーションプログラム、デバイスドライバ及びプリンタドライバは、ジョブ設定データとは独立にジョブデータを生成及び使用できる。一実施例では、ウェブサービス印刷法が使用される。アプリケーションプログラム及びドライバは、印刷チケットメッセージ又はジョブチケットメッセージをジョブデータパッケージとは別にプリンタに送り、プリンタドライバは、２つの部分を別個に処理し、ジョブデータから印刷出力を生成する際、プリントチケットの設定を適用する。
【００３１】
２．０  実施例
２．１  コンピュータ周辺装置の機能ベースの制御  
図１は、デバイス機能検出アプリケーション(device  capability  aware  application)及び機能自覚周辺装置(capability  aware  peripheral  device、ここで、機能自覚周辺装置は以下周辺装置とも言う）が使用されるコンピュータシステム例を示す。一実施例では、ユーザ102はホストコンピュータ104と対話する。ここで、ホストコンピュータは、パーソナルコンピュータ、ワークステーション、サーバ、無線通信装置、携帯電話又は他の如何なる形式のホストコンピュータで形成されてもよい。ホストコンピュータはオペレーティングシステム106を有し、オペレーティングシステムは、デバイス機能検出アプリケーションプログラム110に対するホストを務めて制御する。ホストコンピュータはインターフェース108を更に有し、インターフェースは、1つ以上のネットワーク116を介して、１つ以上の機能自覚周辺装置112,114に直接的に又は間接的に結合される。各々の機能自覚周辺装置は、プリンタサーバのような１つ以上の物理装置を表現してもよい。
【００３２】
オペレーティングシステム106の具体例は、リナックス(LINUX)、ユニックス(UNIX(登録商標))、アップル社のMAC−OS及びマイクロソフトウインドウズ(MICROSOFT  WINDOWS(登録商標))を含む。デバイス機能検出アプリケーションプログラム110は、周辺装置112,114に関連する処理を有効に実行できる如何なるコンピュータプログラムを含んでいてもよい。アプリケーションプログラム110の具体例は、デバイスドライバ、ワードプロセッサ、スプレッドシート、電子メールクライアント及びデータベースクライアントを含む。
【００３３】
インターフェース108は、ホストコンピュータ104、周辺装置112,114及びネットワーク116の間でデータを通信できるハードウエア、ファームウエア、ソフトウエア又はそれらの組み合わせの如何なるものを含んでもよい。インターフェース108の具体例はネットワークインターフェースカード(NIC)を含み、イーサーネットインターフェース、ユニバーサルシリアルバス(USB)インターフェース、シリアルインターフェース、IEEE1394(FIREWIRE)インターフェース及びパラレルポートを含む。機密データ通信インターフェースが使用されてもよく、本実施例は標準仕様のインターフェースを必須としない。
【００３４】
本実施例は如何なる種類のコンピュータに結合される周辺装置と共に使用されてもよい。本実施例が共に使用されてもよい周辺装置112,114の具体例は、プリンタ、スキャナ、複合機、仕上げ装置（製本機、ソーター、糊付け機など）、デジタルカメラ、WEBカメラ、ストレージシステム等を含む。図１は簡明化の観点から２つの周辺装置112,114を単に示しているが、本実施例は同一の又は異なるいくつの周辺装置と共に機能してもよい。
【００３５】
デバイス機能検出アプリケーション110は、本願で説明される機能を実現する１つ以上の記憶された命令シーケンスその他のソフトウエア要素を含んでよい。一般に、デバイス機能検出アプリケーション110は、オペレーティングシステム106又はアプリケーション110からの機能呼び出しを受け、どの周辺装置112,114ともやりとりでき、アプリケーションプログラムが始めるジョブを周辺装置が実行することを引き起こす。デバイス機能検出アプリケーション110は、デバイスドライバを含んでもよい。デバイス機能検出アプリケーション110は、以下更に説明される特徴又は機能の説明を用意できる如何なる周辺装置112,114と共に処理を行える。デバイス機能検出アプリケーション110は、オペレーティングシステム106、アプリケーションプログラム110、ホストコンピュータ104の他のソフトウエア要素若しくはファームウエア要素と統合されてもよく、本実施例では、デバイス機能検出アプリケーションをスタンドアローンソフトウエア要素として実現することは必須でない。
【００３６】
図２は、図１のデバイス機能検出アプリケーション及び機能自覚周辺装置との間でデータが通信される様子を示す。一実施例では、デバイス機能検出アプリケーション110は、デバイス機能コンシューマロジック202及びジョブチケットプロデューサロジック204を有する。機能自覚周辺装置112は、デバイス機能プロデューサロジック212及びジョブチケットコンシューマロジック214を有する。
【００３７】
デバイス機能コンシューマロジック202は、デバイス機能データ206を受信及び理解する。ジョブチケットプロデューサロジック204は、ジョブチケットデータ208を生成し、それをジョブチケットコンシューマロジック214に送信する。デバイス機能プロデューサロジック212は、機能データ206を生成し、それをデバイス機能検出アプリケーション110に送信する。ジョブチケットコンシューマロジック214は、ジョブチケットを受信及び理解し、それを機能自覚周辺装置112に関するコマンドとして実行する。
【００３８】
デバイス機能データ206は、機能自覚周辺装置112の１つ以上の能力、特徴又は機能を記述するデータを有する。周辺装置112は、デバイス機能データ206を生成し、それをデバイス機能検出アプリケーション110に提供する。デバイス機能データ206はアプリケーション110からのリクエストの時点で生成される。従ってデバイス機能データ206は周辺装置112の、そのリクエストの時点での周辺装置の能力、特徴及び機能の説明を含むことができる。例えば、デバイス機能データ206は、周辺装置がプリンタの場合は、以下の特徴を有することを示す情報を含んでもよい。例えば、（１）書類サイズ：A5、A4、A3、レター、11×17、リーガル．．．（２）書類供給源：平台、シートフィーダ、．．．（３）解像度：100x100dpi、200x200dpi．．．（４）用紙供給源：手差しトレー、1段目トレー、2段目トレー等々。
【００３９】
デバイス機能データ206は様々なフォーマット、方法及び手段で使用されてもよい。様々な実施例で使用されるデバイス機能データ206の具体例は、XML、XMLベースの表現物、HTML等を含む。本実施例はXMLに限定されず、デバイスの機能を記述する他の如何なる具体的な方法又は手段が使用されてもよい。但し、デバイス機能データ206で表現されるデバイス機能の表現は、デバイスに依存しないデータ210から分離される。
【００４０】
ジョブチケット208は、設定の記述を有し、アプリケーション110から周辺装置112へ送信し、デバイス非依存データ210の全部又は一部に関連する特定のジョブをどのように処理するかを周辺装置に指示する。一実施例では、アプリケーション110は、１つ以上のジョブチケット208を周辺装置112に通知する。一般に、ジョブチケット208は或る選択内容を周辺装置112に通知するデータを有し、その選択内容は、デバイス機能データ206で表現されるような周辺装置の利用可能な機能の中から、ユーザ、アプリケーション又はシステムが選択したものである。例えば、ジョブチケット208は、用紙トレイ、N-up、仕上げオプション（ステープルの有無、パンチの有無など）又は他のジョブ設定を特定してもよい。ジョブチケット208は、次のような特定の設定の記述を含んでもよい。（１）書類サイズ：レター、（２）用紙供給源：トレイ２（３）スキャン解像度：200x200dpi等々。様々な実施例の中で、ジョブチケット208はXMLで表現されてもよいし、ウェブサービスチケットのフォーマットで表現されてもよいし、一群の名前とその値の対で表現されてもよいし、或いは他の記述的なテキスト又はデータで表現されてもよい。
【００４１】
デバイス非依存データ210は、周辺装置112に使用可能なデータを含むが、何らかの周辺装置に固有のコマンドをも含んでいない。スキャナ、ディジタルカメラ又はモニタのような静止画を処理する装置の場合、デバイス非依存データ210はJPEG、TIFF又はGIF画像データで構成されてもよい。プリンタの場合、デバイス非依存データ210はPDFファイル、EPS、ポストスクリプトファイル等を含み、ハードウエア制御コマンドを含まないようにしてもよい。或いは、ハードウエア制御コマンドを一切含まない又は最小限のセットしか含まない何らかのPDL及びPCLデータが、デバイス非依存データ210として使用可能である。
【００４２】
一実施例では、デバイス機能検出アプリケーション110及び機能自覚周辺装置112は、何らかの形式の基本的なアプリケーションレイヤ通信プロトコルを使ってデータを通信し、そのプロトコルは、デバイス機能検出アプリケーション110及び機能自覚周辺装置112がサポートできるものである。図２は説明の簡明化のため１つの機能自覚周辺装置112を示しているが、デバイス機能検出アプリケーション110と、それと共に動作する如何なる機能自覚周辺装置112との間で図２の通信がなされてもよい。
【００４３】
一実施例では、プロトコルはウェブサービスを含み、デバイス機能検出アプリケーション110及び機能自覚周辺装置112の各々がウェブサービス機能を実現する。例えば、デバイス機能検出アプリケーション110及び機能自覚周辺装置112の各々は、ウェブサービスロジックを有し、ウェブサービスロジックは、ワールドワイドウェブコンソーシアム(w3c)のウェブサービス規格に従ってアプリケーションレイヤメッセージを生成可能であり、且つそのようなメッセージを解釈及び処理できる。
【００４４】
図３は、コンピュータに結合される周辺装置の機能ベース制御のプロセス例を示す。
【００４５】
一実施例では、デバイス機能検出装置は、デバイス機能データ206を生成し、その生成されたデバイス機能データをデバイス機能検出アプリケーションに送る。例えば、図２のように、周辺装置112はそのデバイスの能力、特徴及び機能を記述するデバイス機能データ206を生成し、そのデバイス機能データをデバイス機能検出アプリケーション110に送る。デバイス機能データ206の生成は、例えば、デバイス機能検出アプリケーション110からのリクエストを周辺装置112が受信したことに応じてなされてもよい。（例えば、書類を印刷したり、書類をスキャンしたりするために）周辺装置112とやりとりを行うことに備えて、他のアプリケーションからのリクエストを受けたことに応じて、デバイス機能検出アプリケーション110がそのようなリクエストを発行してもよい。
【００４６】
ステップ302では、デバイス機能データ206を受信したことに応じて、デバイス機能検出アプリケーション110は、デバイス機能データ206をユーザインタフェースデータに変換し、ブロック304に図示されるように、ユーザインタフェースデータに基づいてユーザインターフェースが表示されることを引き起こす。例えば、デバイス機能検出アプリケーション110はデバイス機能データ206をツリー形式に変換し、ホストコンピュータ104のディスプレイ等の入出力部に、その表示がユーザインタフェースとして現れるようにする。
【００４７】
ステップ306では、１つ以上の選択肢を選択しているユーザからの入力が、先のユーザインタフェースを介して受け取られる。例えば、デバイス機能検出アプリケーション110は、ツリー形式のオプションに関するユーザ選択内容を表現するユーザからの入力を受け取る。
【００４８】
これに応答して、ステップ308では、ジョブチケットデータが、そのユーザの選択に基づいて生成される。例えば、デバイス機能検出アプリケーション110は、そのデバイス機能データ206に基づいて、受信したユーザが選択した指定を含むジョブチケットデータ208に変換する。一実施例における、その変換は、ユーザ入力を受信しているXMLスタイルシート変換(XSLT)に従って、デバイス機能データ206の１つ以上のXML要素を変換することによって、XML書類におけるジョブチケットデータ208を作成することを含んでもよい。
【００４９】
このアプローチの成果の1つは、周辺装置112に最近に追加された機能でさえ、デバイス機能データ206に反映又はリストされることである。更に、デバイス機能検出アプリケーション110は、そのような最近に追加された機能や新しい機能について知る必要はなく、或いは最近追加された機能や新しい機能を起動するためにどんなデバイス制御コマンドが必要であるかを知る必要はない。その代わり、周辺装置112は、デバイス機能検出アプリケーション110に対して、コマンド条件及び自身の特徴を説明するデータを提示する。デバイス機能検出アプリケーション110は所望のジョブ設定に関するユーザからの入力を取得し、その特徴及びコマンド条件に基づいてそのような設定をデバイス機能データ206に反映するジョブチケット208を生成する。
【００５０】
一実施例では、デバイス機能データ206及びジョブチケットデータ208は、マイクロソフト社のXMLペーパー仕様(XPS)の一部であるプリントスキーマ標準仕様及びジョブ定義フォーマット(JDF)のようないくつかものジョブチケットフォーマットのどれで表現されてもよい。他のジョブチケットフォーマットが使用されてもよく、本実施例はJDFやXPSを利用することに限定されない。
【００５１】
一般に、デバイス機能データ206は、デバイス特徴のリストを有する。一実施例では、各特徴は名前、ユーザインタフェースディスプレイ名、選択タイプ等を用いて決められる。選択タイプの具体例は、選択リスト又は一覧表、番号及び文字列等を含んでよい。デバイス機能定義は制約特性を含んでもよく、制約特性は、装置の或る機能を利用する際の制限や、その機能に可能な設定値であり、その装置の他の機能の利用可能性や設定値に依存する。
【００５２】
表１はプリントスキーマフォーマットで表現されたデバイス機能データ206の具体例を示す：
表１−デバイス機能データの例
【表１】
0005287041.tif 000002
【００５３】
図４は、ロングエッジオプション(LongEdge  option)が選択されている周辺装置のグラフィカルユーザインターフェースの例を示す。ロングエッジオプションとは、用紙の長辺側をステープルで綴じることを意味する。図４の例は、表１のデバイス機能データ例に対応する。
【００５４】
図４の例の場合、アプリケーションプログラムで生成された表示画面402はユーザインタフェースパネル404を含み、ユーザインタフェースパネルは、周辺装置の能力、特徴又は機能と共にユーザがやりとりできるように構成されている。例えば、デバイスがプリンタであり、１つの特徴は両面印刷が可能なことであったとする。両面(duplex)オプションは、オフ、ロングエッジ(長辺綴じ)又はショートエッジ(短辺綴じ)の値を有し、両面印刷が、どのようになされるかをユーザが指定できるようにする。図４ではロングエッジオプションが選択されている。ロングエッジオプションの選択は、図３のステップ306で、ユーザインターフェースを利用して受け取られるユーザから入力を利用することの一例である。
【００５５】
表２−ジョブチケットの例
【表２】
0005287041.tif 000003
【００５６】
一実施例では、表２のフォーマットを有するジョブチケット208は、ジョブチケットコンシューマロジック214を用いて機能自覚周辺装置112で実行されてもよい。このアプローチの場合、デバイス機能データ206及びジョブチケット208の組み合わせは、デバイス機能検出アプリケーション110に対して十分な或る情報を運び、その情報は、周辺装置の機能を表現し、ユーザが選択可能なユーザインターフェースをユーザに提供すること、及び特定のジョブ適切なタイプ又はオプションのユーザ選択内容を受信することに十分な情報である。しかしながら、デバイス機能検出アプリケーション110も或いは、そのアプリケーションと相互作用する如何なる他のソフトウエアも、周辺装置から得られるデバイス機能データ２０６の能力、特徴及び機能の実質的な意味の理解も要しないし、コード化されることを要しない。
【００５７】
かくて、周辺装置の製造業者は、周辺装置及びプラットフォームの組み合わせ各々について特化したユーザインターフェースと共にカスタムデバイスドライバを作成することを要しない。更に、新たなデバイスドライバをリリースせずに、及びエンドユーザが彼らのコンピュータを新しいデバイスドライバと共にアップグレードすることを要求せずに、製造業者は新たな製品（周辺装置）及び新たな機能を既存の製品（周辺装置）に導入できる。
【００５８】
図５は、デバイス機能プロデューサロジック及びデバイス機能コンシューマロジックの機能の例を示す。
【００５９】
一実施例では、デバイス機能プロデューサロジック212は、ある装置のホストコンピュータに受け入れられ、以下の機能を実行する。ステップ502は、デバイス機能検出アプリケーションからのリクエストを受信し、周辺装置の機能を取得することを含む。例えば、デバイス112のデバイス機能プロデューサロジック212は、デバイス機能検出アプリケーション110からリクエストを受信し、その周辺装置の機能を提示する。
【００６０】
それに応じてステップ504では、現時点での周辺装置の機能が確認される。ステップ504は、レジストリ、コンフィギュレーションファイル、管理情報ベース(MIB:  Management  Information  Base)その他のレポジトリ情報(装置のその時点での機能を記述している情報)を読み取ることを含む。
【００６１】
ステップ506では、周辺装置からデバイス機能検出アプリケーションへ機能の説明が、デバイス機能データ206となって送られる。ステップ506は、プリントスキーマのようなXMLスキーマに従ってデバイス機能データ206を形成すること、及び、周辺装置のリクエストを受け取った時点での能力、特徴及び機能をデバイス機能データ206の中にエンコードすることを含む。このデバイス機能データ206はアプリケーションに送られ、これはステップ506からステップ508に続く矢印で示されている。
【００６２】
ステップ508では、デバイス機能コンシューマロジック202が、機能説明（デバイス機能データ206）を周辺装置から受信する。これに応じてステップ510では、その機能説明に基づいてロジック202が1つ以上のGUIエレメントを作成し、ステップ512にてロジックはそのGUIエレメントが表示されるようにする。例えば、図４のGUIが作成され、ディスプレイに提示される又は表示に備えてオペレーティングシステム106に与えられる。
【００６３】
ステップ514は、１つ以上のGUIエレメントの選択肢を表現するユーザからの入力を受けること、及びそのユーザ入力をジョブチケットプロデューサロジックに与えることを含む。例えば、マウスのクリック、キーボーボードのキー押下又はユーザ入力を表現するデータの形式で、オペレーティングシステム106から又はそのデバイスドライバから、デバイス機能コンシューマロジック202はユーザの入力を受信する。ロジック202は、必要に応じて選択肢を変換し、アプリケーション110のジョブチケットプロデューサロジック204にユーザが選択した内容を与える。
【００６４】
図６は、ジョブチケットプロデューサロジック及びジョブチケットコンシューマロジックの機能の例を示す。
【００６５】
ステップ602では、ジョブチケットプロデューサロジック204(図５のステップ514によりユーザが選択した内容を受信している)が、ユーザに選択されたGUIレメントに基づいて、その周辺装置のジョブを記述するジョブチケットを作成する。デバイス機能データ206がジョブチケットデータを決めるのに使用される。例えば、ステップ514のユーザが選択した内容に基づいて又はそれに従って、ジョブチケットデータ208は生成される。さらにジョブチケット208は、デバイス機能データ206に基づいて作成され、そのデバイス機能データの少なくとも一部を変換させた情報を持っていてもよい。ステップ604では、ジョブチケットプロデューサロジックは、そのジョブチケットデータを周辺装置に送信する。
【００６６】
ステップ606ではそれに応じて、ジョブチケットコンシューマロジック214が、ジョブチケットデータを周辺装置用の１つ以上のデバイス固有の処理コマンド（つまり、周辺装置のための処理コマンドに変換する）に変換する。プリントスキーマ表現によるジョブチケットデータ208を、１つ以上のファンクションコール、コマンドライン命令、方法の起動又は装置に対する他の命令に返還することをステップ606は含む。一実施例では、マイクロソフト社によるXMLパーサ(parser)を利用して、プリントスキーマ表現が変換される。ステップ608では、ジョブチケットコンシューマロジックは周辺装置がその処理コマンドを実行することを引き起こす。
【００６７】
図７は、デバイス機能検出アプリケーションの機能の例を示す。ステップ702では、デバイス機能検出アプリケーション110が、利用可能な周辺装置のリストを作成及び表示する。例えば、デバイス機能検出アプリケーション110は、まず、ワードプロセッサのような他のアプリケーションプログラムから書類を印刷するためのリクエストを受信する。これに応じて、デバイス機能検出アプリケーション110は、どの周辺装置が既知であるか又は利用可能であるかを確認し、そのような周辺装置のリストの表示を引き起こす。周辺装置は通常のディスカバリプロトコルを用いて発見できる。リストは、コンボボックス(combo  box)のようなウィジェット(widget)を用いてグラフィカルユーザインターフェースに表示可能である。
【００６８】
ステップ704では、デバイス機能検出アプリケーションは、利用可能な周辺装置の選択を表すユーザ入力を受ける。例えば、コンボボックス中の或るオプションの選択を表すユーザからの入力が受信される。
【００６９】
ステップ706は、選択された利用可能な周辺装置へリクエストを送り、その周辺装置の機能を得ることを含む。例えば、デバイス機能検出アプリケーション110は、周辺装置のその時点（リクエストを受信した時点）での機能を得るためのリクエストを周辺装置112へ送り、デバイス機能データ206にしたがって、その周辺装置の機能をユーザに表示すること、と書類を印刷するためのジョブ設定用のユーザからの入力を受信することに備える。ステップ706を実行することは、図５のステップ502を行うトリガ(契機)を与える。
【００７０】
図５及び図６の成果の１つは、あるアプリケーションが、周辺装置の現在の機能を要求でき、その機能を表すユーザインターフェースを生成でき、特定のジョブ設定に関するユーザからの入力を受信でき、周辺装置がそのジョブ設定の実行を引き起こす方法で、そのジョブ設定を、その周辺装置に提供できることである。このアプリケーションは、そのアプリケーションを理解することを必要とせず、或いはそのユーザインターフェースを生成できる特別なコードを持つことを要しない。アプリケーションは一般的な(ユニバーサルな)デバイスドライバでよい。
【００７１】
更に、リクエストの時点でデバイス機能データ206が、周辺装置にて動的に生成され、そのリクエスト時点でのデバイス機能に基づいて周辺装置とやりとりを行う。本アプローチ及びデバイス機能検出アプリケーションは、次のような如何なる周辺装置とでも共に機能でき、その周辺装置は、デバイス機能検出アプリケーションからのリクエストに応じて、デバイス機能データ206を利用して周辺装置自身の機能を説明でき、且つ、ホストコンピュータ側で生成されたジョブチケットで表現されたコマンドを分析及び実行できるものである。アプリケーションプログラム又はアプリケーションプログラムとユーザがやりとりする方法について、如何なる変更も必須でない。オペレーティングシステムを変更することも必須でない。
【００７２】
一実施例では、ユニバーサルデバイスドライバとして機能するデバイス機能検出アプリケーション110の形式で、ユーザアプリケーションがデバイスドライバを同時に使用し続ける場合、ユーザの行う処理は変わらない。しかしながら、ユーザがやりとりを行うユーザインターフェースは、周辺装置が更新されるにつれて刻々と変わってもよいが、ホストコンピュータにおけるデバイス機能検出アプリケーション110の更新は必須でない。
【００７３】
２．２機能ベースのコンピュータ周辺装置ドライバを自動的に生成する
一実施例では、ジョブチケットベースの印刷ストリームは、ページ記述言語(PDL)に基づく印刷システムに統合される。PDLの具体例は、ポストスクリプト、PCL及びPIIである。PDLベースの印刷システムの具体例は、マイクロソフト社のウインドウズビスタである。一実施例では、周辺装置の一例であるプリンタ及びプリンタドライバは、デバイス機能データ、ジョブチケットデータ及びデバイス非依存性印刷データをやりとりする。本発明の概念を、この一実施例に用いたことによる効果の1つは、新たなドライバを自動的に生成及びインストールすることで、ドライバがホストコンピュータにインストールされた後に導入された新たなデバイス及び機能を、プリンタドライバがサポートできることである。
【００７４】
一実施例では、指定されたオペレーティングシステムとコンパチブルなプリンタドライバを自動的に生成できるロジック又は処理を通じて、上記の統合を達成できる。例えば、本技法は、かなりのユーザの努力を要せずに、マイクロソフト社のウインドウズビスタ用のプリンタドライバを自動的に生成できるようにする。例えば、ディスクから又は他の媒体から、周辺装置を利用するにあたり、ドライバファイルを手作業で突き止めることや、用意する要求を、ユーザは受ける必要がない。更に、プリンタにより説明されるプリンタのその時点での機能に基づいて、プリンタドライバは自動的に生成される。新たなプリンタがコンピュータ環境に導入される場合、又は既存のプリンタがアップグレードされる場合、本技法は、相当なユーザの努力を必要とせずに又はドライバファイルの管理を必要とせずに、ドライバを自動的に生成及びインストールできる。
【００７５】
図９は、ジョブチケットベースの印刷をPDLベース印刷に統合するシステム例を示す。オペレーティングシステム902、ユニバーサルドライバ印刷サブシステム904、ポストスクリプト用ドライバレス拡張部906及びページ制御言語(PCL)用ドライバレス拡張部908をホストコンピュータ104は備える。オペレーティングシステム902の具体例は、マイクロソフトウインドウズビスタである。ユニバーサルドライバ印刷サブシステム904は、ジョブチケットを生成でき且つページ記述言語(PDL)で命令を生成してPDLコンパチブルな装置112を駆動できるデバイスドライバを自動的にロードするように構築される。ドライバレス拡張部906,908は、ユニバーサルドライバ印刷サブシステム904がポストスクリプト装置及びPCL装置と共に統合できるようにする。要素904,906,908の機能は、以下のセクションで更に説明される。
【００７６】
機能自覚周辺装置112は、プリンタ機能ファイル916、PDLテーブルに対するジョブチケット918、ジョブチケットPDL変換ロジック920及びPDLレンダリングエンジン922を有する。概して、機能自覚周辺装置112は、サブシステムからのリクエストに応答して、プリンタ機能データ910の形式でプリンタ機能ファイル916（前述のデバイス機能データ206に相当する）をユニバーサルドライバ印刷サブシステム904に送信するように構築される。
【００７７】
これに応答して、ユニバーサルドライバ印刷サブシステム904又は拡張部906,908は、ジョブ設定のユーザ選択を表す印刷チケット912を用意し、周辺装置112に送信する。また、同時に又は別の時点で、周辺装置112はアプリケーションからジョブデータ914を受信する。この印刷チケットとジョブデータを併せて、前述のジョブチケットデータに相当する。これは、周辺装置がプリンタの場合には、ジョブデータが印刷を希望するコンテンツに相当するために必要だからである。そして、機能自覚周辺装置112は、印刷チケット912及びジョブデータ914で表現されているジョブ設定を、PDLテーブルに対するジョブチケット918及びジョブチケットPDL変換ロジック920を用いて、PDLコマンド及びページデータに変換する。その結果のPDLデータは、PDLレンダリングエンジン922に与えられ、印刷可能なページ画像を生成することになる。印刷可能なページ画像を利用して、周辺装置112は１つ以上の印刷書類930を印刷できる。
【００７８】
図９の例は、印刷に関連して説明されてきた。しかしながら周辺装置112は、PDLコンパチブルな如何なる装置でもよく、本実施例はプリンタに限定されない。例えば、周辺装置112はPDLコンパチブルなグラフィックスワークステーションを構成してもよい。
【００７９】
図１０は、デバイス機能データに基づいてプリンタドライバを自動的に生成する様子を示す。ドライバ生成ロジック1002は、ホストコンピュータ104により受け入れられ、ユニバーサルドライバ印刷サブシステム904の一部に対応する又はそれを形成する。一般に、中核的なプリンタドライバ条件だけでなく、駆動される周辺装置装置のその時点での機能に基づいて、一般的なプリンタドライバファイル及びパッケージ1050を必要に応じて(オンデマンドで)自動的に生成するように、ドライバ生成ロジック1002は構築される。ユーザ、アプリケーション又はシステムが、ホストコンピュータに結合された周辺装置の存在又はネットワーク内で利用可能なことを発見した場合、そのような周辺装置を初めて利用する場合、又はアプリケーション、ユーザ若しくはシステムの明示的なリクエストに応じる場合に、ドライバが生成されてもよいことを、「オンデマンド」は意味する。
【００８０】
機能自覚周辺装置112から、ドライバ生成ロジック1002はメタデータ1010を受信する。このメタデータは、デバイス名、ネットワークアドレス、ネットワークポート番号、製造業者名、モデル番号又は他の説明情報のような周辺装置112の属性を一般的に記述するデータを有する。メタデータ1010は、周辺装置112を一般的に説明する如何なる種類の情報を含んでもよく、本実施例は列挙されているメタデータ例に限定されない。
【００８１】
ドライバ生成ロジック1002は、ホストコンピュータ104からコンフィギュレーションファイル1004を更に受信する。コンフィギュレーションファイル1004は、オペレーティングシステム902の一部を構成し、一般的なプリンタドライバファイル及びパッケージ1050をどのように構成及び組織するかを一般的に示す。例えば、コンフィギュレーションファイル1004は、ホストコンピュータ104のファイルシステム内の或るロケーションを特定し、そのロケーションに一般的なプリンタドライバファイル及びパッケージ1050を格納する。
【００８２】
生成ロジック1002は、基本的な一般的なプリンタドライバ1006を更に受ける。一実施例では、基本的な一般的なプリンタドライバ1006は、オペレーティングシステム902に関連するファイルから取得され、オペレーティングシステムとコンパチブルな総てのデバイスドライバに共通するコードを有する。例えば、基本的な一般的なプリンタドライバ1006は、プリンタスプーラ(printer  spooler)、グラフィカルユーザインターフェースウインドウマネジャ等のようなオペレーティングシステムサービスと共に相互運用可能である。
【００８３】
生成ロジック1002は、機能検出デバイス112から、プリンタコンフィギュレーションデータ1012、プリンタ機能データ1014及びベンダ固有拡張データ1016を更に受信する。一実施例では、プリンタコンフィギュレーションデータ1012は、その周辺装置112に関するモデル固有のコンフィギュレーションデータを有する。例えば、プリンタコンフィギュレーションデータ1012は、周辺装置112がポストスクリプトプリンタであることを指示してもよい。一実施例では、プリンタ機能データ1014は、周辺装置112の１つ以上の能力、特徴及びオプションの構造化テキストリストを含んでいてもよい。一実施例では、ベンダ固有（製造者固有）の拡張データ1016は、デバイスドライバが特定の周辺装置112と同時使用できるようにするベンダ固有のコードを有する。例えば、ベンダ固有の拡張データ1016は、周辺装置の機能が発揮できるように、例えば、印刷がきれいに仕上がるように、周辺装置112内のレンダリングエンジンにどのようにアクセスするか、制御するかを特定するデータを含んでいてもよいし、或いは、デバイスのベンダがデバイスのファームウエア又はソフトウエアに実装している他のサービスにどのようにアクセスするか、制御するかを特定するデータを含んでいてももよい。これにより、製造社の固有の特徴を提供することが可能となる。
【００８４】
ドライバ生成ロジック1002は、ホストコンピュータ104からマッピングファイル1008を更に受信する。一実施例では、マッピングファイル1008は、オペレーティングシステム902に関連付けられ、オペレーティングシステムのコールバック機能をデバイス112の関連するサービスに対応付け、或いはデバイス特徴名を、オペレーティングシステムで普遍的に認識されている別言語の名称に対応付ける。
【００８５】
以上の情報を受信したことに基づいて、ドライバ生成ロジックは、必要に応じて、一般的なプリンタドライバファイル及びパッケージ1050を自動的に生成するように動作する。
【００８６】
図１１は、デバイス機能に基づいてデバイスドライバを自動的に生成するのに使用されるデータ構造を示す。そのようなデータ構造例は、原出願の付録にも用意されている。一実施例では、ドライバ生成ロジック1002は、フォーマット変換ロジック1012及びウェブサービスデバイス(WSD)APIモジュール1104を有する。図１１の上側部分の他の要素は、ホストコンピュータ104内で実現されてもよく、ウェブサービスプロトコル1118を用いてデバイス112内のウェブサービスプリンタ(WS-Printe-2)サービスと共に通信を行う。ウェブサービスプロトコルに関する情報は、www.w3c.orgで指定されるW3Cコンソーシアムオンラインから入手可能である。
【００８７】
フォーマット変換ロジック1102は、一般的なプリンタ記述(GPD)ファイル1124を生成する。ドライバ生成ロジック1002は、GPD1124がベンダ固有のUIプラグイン1120と共に統合されるようにしている。GPD1124は印刷サブシステムにより使用され、プリントスキーマ印刷機能フォーマットで印刷機能データを生成し、印刷機能定義1128を作成し、それをプリントスキーマフォーマット(PSF)に格納する。PSFを規定する情報は、マイクロソフト社から入手可能である。ドライバ生成ロジック1002は、製造者に固有のUIプラグイン1120及びコアドライバ1126を使用し、印刷機能定義1128を生成する。
【００８８】
一般に、周辺装置112のベンダ（製造者）は、ベンダ固有のUIプラグイン1120及びコアのドライバ1126をオペレーティングシステム902のベンダに提供し、プラグイン1120及びコアドライバ1126が、オペレーティングシステムを利用して、プラグインやコアドライバをエンドユーザに送り出すことを引き起こし或いはそこに統合されることを引き起こす。従ってプラグイン1120及びコアドライバ1126は、ドライバ生成ロジック1002がドライバを生成する必要のあるときはいつでも、オペレーティングシステム902で利用可能である。
【００８９】
結果の印刷機能定義1128は、周辺装置と共に総合作用するのに使用可能であり、一実施例ではその定義はアプリケーションプログラム1130により受信され、アプリケーションプログラムは、受信した定義に基づいて、及びベンダ固有のUIプラグイン1120及びコアドライバ1126からの入力にも基づいて、印刷スキームプリントチケット1132を生成する。アプリケーションプログラム1130の一例は、ワードプロセッサ又はスプレッドシートである。
【００９０】
プリントスキーマプリントチケットは、プリントチケットバイナリ1134に変換され、その後にセマンティックプリントチケット(semantics  print  ticket)1136に変換される。意味論的印刷チケット又はセマンティックプリントチケット1136は、そのセマンティックプリントチケットを含むウェブサービスデバイス(WSD)プリントジョブ1138を生成するのに使用される。ジョブ1138（前述のジョブチケットデータに相当）は、ウェブサービスプロトコル1118を用いて周辺装置112に送信され、データが印刷されることを引き起こす。
【００９１】
図１２は、自動ドライバ生成及びインストレーションを示すラダー図である。
【００９２】
図１２のステップは、オペレーティングシステム902、ドライバ生成ロジック1002、及び機能検出デバイス112の各要素により実行される。一実施例では、図１２のドライバ生成機能1206は、ドライバ生成ロジック1002の要素になる。一実施例では、デバイス112は図１２に示されるようなウェブサービスで動作可能にされるプリンタ1214(ウェブサービスイネールブプリンタ)で構成される。
【００９３】
一実施例では、オペレーティングシステム902は、ドライバセットアップAPI1202、ドライバストア1204、ネットワークフォルダサービス1208、機能ディスカバリAPI1210及びネットワークディスカバリプロバイダ1212を有する。APIに現れているオペレーティングシステムの指定された機能を呼び出すことで、ドライバセットアップAPI1202は、ホストコンピュータ104の中でアプリケーションが新たなデバイスドライバを設定できるようにする。ドライバストア1204は、インストールされ且つオペレーティングシステムで管理されているデバイスドライバに関するデータのデータベース又はリポジトリを有する。ネットワークフォルダサービス1208は、デバイス又は他のリソースに関する情報のフォルダを表示するロジックを有し、そのデバイス又は他のリソースは、ホストコンピュータ104内にあってもよいし、１つ以上のネットワークを利用してホストコンピュータに直接的又は間接的に結合されていてもよい。機能ディスカバリAPI1210は、オペレーティングシステム内で又はネットワーク内でアプリケーションが機能を発見できるようにするロジックである。ネットワークディスカバリプロバイダ1212は、ホストコンピュータ104が結合されているネットワーク内で装置又はリソースをアプリケーションが発見できるようにするロジックである。
【００９４】
一実施例では、デバイスドライバを自動的に生成することは、ユーザがネットワークフォルダを開いたことに応じてなされてもよく(ステップ1220)、例えば、最近更新された又は動かされたデバイス又は新たなデバイスをユーザが使用又は発見使用としたときに行われてもよい。これに応じてネットワークフォルダサービス1208は、メッセージをネットワークディスカバリプロバイダ1212に送信し、マルチキャストメッセージをネットワークに送信し、そのネットワークにはホストコンピュータ104が結合されている。WSDプリンタ1214は、マルチキャストメッセージを受信し、メッセージ中のその名称を認識し、応答を返送する1224。応答1224は機能ディスカバリAPI1210で受信され、そのAPIは、ステップ1226に示されるようにデバイスを表現する機能インスタンスを生成する。機能ディスカバリAPI1210は、デバイスを表現する既知の機能インスタンス総てのリストを生成し、それをネットワークフォルダサービス1208に送信し、そのサービスは既知の又は発見したデバイスのリストをステップ1230で表示する。オペレーティングシステムが管理しているグラフィカルユーザインターフェースのパネルに、そのリストが表示されてもよい。
【００９５】
ステップ1232では、表示されたリストの中から利用可能な装置の１つを選択するユーザ入力が受信される。これに応じて、選択された周辺装置のデバイスドライバは、ステップ1234にてドライバ生成ロジック1206により自動的に生成される。選択された周辺装置の、その時点で備えている機能の総てを使って必要に応じてその時点でデバイスドライバを自動的に生成するために、ここで説明した以外のプロセスが使用されてもよい。
【００９６】
デバイスドライバの生成が完了すると、ステップ1236において、ドライバストアは新たなドライバを反映するように更新される。その結果、オペレーティングシステム902は、新たなドライバに気付くようになり、その周辺装置と共に同時使用するための以後のリクエストに応じて、その新たなドライバを参照及び使用できる。ドライバストア1204は、ステップ1238で「デバイス追加」プロセスを開始してもよく、そのプロセスはインストレーションウィザードの形式をとってもよい。セットアップAPI1202は、「デバイス追加」プロセスを実行し、ステップ1240にて新たなデバイスのインストレーションを完了する。
【００９７】
図１３は、自動的に生成されたプリンタドライバを使用する印刷動作を表すラダー図である。ステップ1312にてアプリケーション1302はプリンタドライバを選択する。例えば、ユーザは、書類を特定のプリンタで印刷することをアプリケーション1302に指示する。これに応じてアプリケーション1302はプリントスプーラ1304を起動する。スプーラ1304は、特定のプリンタを求めるリクエストをドライバに対して発行し、利用可能なプリンタ設定を示すユーザインターフェースを表示するようにする。これに応じて、ユーザインターフェースサービス1306は、ステップ1314に示されているように、プリンタの機能がサポートしている利用可能なプリンタ設定のリストを示すユーザインターフェースをロード及び表示する。
【００９８】
図１３の例は、今のところユーザが入力を用意し或いは各プリンタ設定に関する選択を行うことを仮定している。これに応じて、ユーザインターフェースサービス1306は、選択されたプリンタ設定を使って印刷ジョブに対する印刷スキーマフォーマットでプリントチケットを生成及び格納する。「印刷」コマンド（又は等価な別形式のもの）を発行することでプリンタ設定値になされた変化をユーザが確認した後、プリントスプーラ1304は、クローズリクエストをドライバに送信し、ドライバのユーザインターフェースはステップ1318でクローズし（閉じられ）、ユーザインターフェースサービス1306は、ユーザインターフェースサービスが終了したことをスプーラ1304に通知する。これに応じて、スプーラ1304はステップ1320で制御(コントロール)をアプリケーションに返し、プリンタ特性選択処理が完了し、システムは印刷を実行する準備を整えたことを示す。
【００９９】
ステップ1322では、アプリケーション1302が印刷処理を開始し、印刷するデータをスプーラ1304に与える。データは受信されたことをスプーラ1304はアプリケーション1302に通知し、ステップ1324にてスプーラは制御をアプリケーションに返す。それと同時に、２つの代替法の内の１つを使って、スプーラ1304はジョブチケットをプリンタに送る。
【０１００】
代替例の一方の場合、ステップ1326において、イニシャライズ後であるがレンダリングの実行直前に、スプーラ1304は、プリントスキーマジョブチケットをセマンティックスキーマジョブチケットに変換し、変換されたジョブチケットをPDLを使って印刷ジョブと共にプリンタに送る。代替例の他方の場合、ステップ1328において、イニシャライズの後に、印刷プロセッサ1304は、プリントスキーマジョブチケットをセマンティックスキーマジョブチケットに変換し、変換されたジョブチケットをPDLを使って印刷ジョブと共にプリンタに送る。
【０１０１】
３．０  ハードウエア概要
図８は本発明の実施例で使用されるコンピュータシステム８００のブロック図を示す。コンピュータシステム８００は、情報を通信するためのバス８０２又は他の通信手段と、バス８０２に結合された情報を処理するプロセッサ８０４とを有する。コンピュータシステム８００は、ランダムアクセスメモリ(RAM)又は他のダイナミックストレージデバイスのようなバス８０２に結合されたメインメモリ８０６を有し、メインメモリはプロセッサ８０４で実行される命令や情報を格納する。メインメモリ８０６は、プロセッサ８０４で実行される命令の実行中に、一時的な変数又は他の中間的な情報を格納するのに使用されてもよい。コンピュータシステム８００は、プロセッサ８０４のための命令や静的な情報を格納する、バス８０２に結合されたリードオンリメモリ(ROM)又は他のスタティックストレージデバイスを更に含む。磁気ディスク又は他の光ディスクのようなストレージデバイス８１０は、情報及び命令を格納するために用意されてバス８０２に結合される。
【０１０２】
コンピュータシステム８００は、ユーザに情報を表示するために、陰極線管(CRT)のようなディスプレイ８１２にバス８０２を介して結合されてもよい。英数字その他のキーを含む入力装置８１４は、情報及び命令選択内容をプロセッサ８０４に通知するためにバス８０２に結合される。他の種類のユーザ入力装置は、カーソル制御装置８１６（例えば、マウス、トラックボール、スタイラス又はカーソル方向キー）であり、指示情報及び命令選択をプロセッサ８０４に通知し且つディスプレイ８１２でのカーソルの動きを制御する。この入力装置は典型的には第１軸（例えば、ｘ）及び第２軸（例えば、ｙ）の２軸による２つの自由度を有し、装置が平面上の位置を指定できるようにする。
【０１０３】
本発明は無線通信アーキテクチャのコンピュータシステム８００を利用することに関連する。本発明の一実施例によれば、メインメモリ８０６に含まれる１以上の命令の１以上のシーケンスを実行するプロセッサ８０４に応じて、無線通信がコンピュータシステム８００によって提供される。そのような命令は、ストレージデバイス８１０のような他のコンピュータ読取可能な媒体からメインメモリ８０６に読み込まれてもよい。メインメモリ８０６に含まれている命令シーケンスの実行は、本願で説明されるプロセスステップをプロセッサ８０４が実行することを引き起こす。マルチプロセッシング構成の１以上のプロセッサが、メインメモリ８０６に含まれている命令シーケンスを実行するのに使用されてもよい。代替実施例では、本発明を実施するために、ハードワイヤード回路が、代替的に使用されてもよいし或いはソフトウエア命令との組み合わせで使用されてもよい。すなわち本発明の実施例はハードウエア回路及びソフトウエアの特定の如何なる組み合わせにも限定されない。
【０１０４】
ここで使用されているように「マシン読取可能な媒体」なる用語は、命令をプロセッサ８０４の実行に備えて提供することに関与する如何なる媒体にも関連する。コンピュータシステム８００を利用して実現される例の場合、様々なマシン読取可能な媒体が含まれ、例えば、実行に備えて命令をプロセッサ８０４に提供する際に使用される。そのような媒体は多くの形態をとってよく、限定ではないが、記憶媒体及び伝送媒体を含む。ストレージ媒体は、不揮発性媒体及び揮発性媒体の双方を含む。不揮発性媒体は、例えば、ストレージデバイス８１０のような光又は磁気ディスクを含む。揮発性媒体は、メインメモリ８０６のようなダイナミックメモリを含む。伝送媒体は、同軸ケーブル、銅線及び光ファイバを含み、バス８０２を構成するワイヤを含む。伝送媒体は、無線電波及び赤外線データ通信の際に生成されるもののような、音波又は光波の形式をとってもよい。そのような媒体は、その媒体で運ばれる命令が、マシンの中に命令を読み込む物理的手段により検出されることを可能にするように実現可能でなければならない。
【０１０５】
マシン読取可能な媒体の一般的な形態は、フロッピディスク、フレキシブルディスク、ハードディスク、磁気テープその他の如何なる磁気媒体、CD-ROMその他の如何なる光媒体、パンチカード、紙テープ又は穴のパターンを有する他の如何なる物理的媒体、RAM、PROM、EPROM、フラッシュEPROMその他のメモリチップ、カートリッジ、上記のような搬送波又はコンピュータが読み取ることの可能な他の如何なる媒体でも含む。
【０１０６】
マシン読取可能な様々な形態は、１以上の命令の１以上のシーケンスをプロセッサ８０４に実行に備えて搬送する際にも適用可能である。例えば命令は初期には遠く離れたリモートコンピュータの磁気ディスクで搬送されてもよい。リモートコンピュータは自身のダイナミックメモリからその命令をロードし、モデムを用いて電話回線を介して命令を送信してもよい。コンピュータシステム８００付近のモデムは電話回線でそのデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換する。バス８０２に結合された赤外線検出器は、赤外線信号で搬送されたデータを受信し、そのデータをバス８０２に置く。バス８０２はデータをメインメモリ８０６に運び、プロセッサ８０４はメインメモリから命令を抽出して実行する。メインメモリ８０６で受信された命令は、プロセッサ８０４で実行される前又はその後にストレージデバイス８１０に選択的に格納されてもよい。
【０１０７】
コンピュータシステム８００はバス８０２に結合された通信インターフェース８１８も含む。通信インターフェース８１８は、ローカルネットワーク８２２に接続されるネットワークリンク８２０に結合する双方向データ通信をもたらす。例えば、通信インターフェース８１８は、データ通信接続を対応するタイプの電話回線に与える統合サービスディジタルネットワーク(ISDN)カード又はモデムでもよい。別の例では、通信インターフェース８１８は、データ通信接続をコンパチブルなLANに与えるLANカードでもよい。無線リンクが使用されてもよい。どの実現手段でも、通信インターフェース８１８は、電気的な、電磁的な又は光学的な信号を送信及び受信し、様々なタイプの情報を表現するディジタルデータストリームを運ぶ。
【０１０８】
ネットワークリンク８２０は典型的には１以上のネットワークを介して他のデータ装置とのデータ通信をもたらす。例えば、ネットワークリンク８２０はローカルネットワーク８２２を介してホストコンピュータとのコネクションを提供する、或いはインターネットサービスプロバイダ(ISP)８２６により運営されるデータ機器とのコネクションを提供する。そしてISP８２６はデータ通信サービスをワールドワイドパケットデータ通信ネットワーク(今日、インターネット８２８として一般に言及されている)を介して提供する。ローカルネットワーク８２２及びインターネット８２８の双方は、ディジタルデータストリームを搬送する、電気的な、電磁的な又は光学的な信号を使用する。様々なネットワークを介する信号や、ネットワークリンク８２０における通信インターフェース８１８を介する信号は、コンピュータシステムに及びそこからディジタルデータを搬送し、例えば情報を伝送する搬送波の形式をとってもよい。
【０１０９】
コンピュータシステム８００は、ネットワーク、ネットワークリンク８２０及び通信インターフェースを介して、メッセージを送信し及びプログラムコードを含むデータを受信する。インターネットの例では、サーバ８３０はインターネット８２８、ISP８２６、ローカルネットワーク８２２及び通信インターフェース８１８を介して、アプリケーションプログラムに関する要求されたコードを送信するかもしれない。本発明によれば、そのような或るダウンロードされるアプリケーションは、監視システムが、選択されたネットワーク要素を上述のように監視するように構築する。プロセッサ８０４は受信したコードを受信したときに実行してもよいし、後の実行に備えてストレージデバイス８１０又は他の不揮発性ストレージに格納していたかのように実行してもよい。このようにコンピュータシステム８００は搬送波の形式でアプリケーションコードを取得してもよい。
【０１１０】
４．０  拡張性及び代替例
以上の説明により、本発明の実施例が多くの具体的詳細を参照しながら説明され、その具体的詳細は実現手段毎に異なってよい。本発明に関する独占排他権のインジケータであって、出願人が本発明であると主張するものは、特定の態様で本願により許可される特許請求の範囲であり、その特定の形態の特許請求の範囲は以後の如何なる補正をも含む。特許請求の範囲に登場している用語についての明示的に言及されたどの定義も、特許請求の範囲で使用されるそのような用語の意味を規定する。それ故に、どのような方法によっても、特許請求の範囲で明示的には引用されていない要素、特性、特徴、利点又は属性の何れも特許請求の範囲を限定するよう解釈されるべきでない。従って明細書及び図面は限定的な意味ではなく例示的に解釈されるべきである。
【０１１１】
＜コピーライト＞
本特許出願の説明の一部は著作権で保護される事項を含むかもしれない。特許商標庁での特許ファイルや記録等に関して見受けられるような、本願書類のファクシミリによる再生を誰かが行うことに著作権者は異議を唱えるものではないが、他の場合については総ての著作権を保持している。
【図面の簡単な説明】
【０１１２】
【図１】デバイス機能検出アプリケーション及び機能自覚周辺装置が使用されるコンピュータシステム例を示す図である。
【図２】図１のデバイス機能検出アプリケーション及び機能自覚周辺装置間で通信されるデータを示す図である。
【図３】コンピュータ周辺装置の機能ベースの制御プロセス例を示す図である。
【図４】ロングエッジオプションが選択された周辺装置のグラフィカルユーザインターフェース例を示す図である。
【図５】デバイス機能プロデューサロジック及びデバイス機能コンシューマロジックの機能例を示す図である。
【図６】ジョブチケットプロデューサロジック及びジョブチケットコンシューマロジックの機能例を示す図である。
【図７】デバイス機能検出アプリケーションの機能例を示す図である。
【図８】本発明の実施例が使用されるコンピュータシステムを示すブロック図である。
【図９】ジョブチケットベースの印刷をPDLベース印刷に統合するシステム例を示す図である。
【図１０】デバイス機能に基づいてプリンタドライバを自動的に生成する様子を示す図である。
【図１１】デバイス機能に基づいてデバイスドライバを自動的に生成するのに使用されるデータ構造を示す図である。
【図１２】自動ドライバ生成及びインストレーションを示すラダー図である。
【図１３】自動的に生成されたプリンタドライバを使用する印刷動作を表すラダー図である。
【符号の説明】
【０１１３】
１０２  ユーザ
１０４  ホストコンピュータ
１０６  オペレーティングシステム
１０８  インターフェース
１１０  デバイス機能検出アプリケーション
１１２，１１４  機能自覚周辺装置
１１６  ネットワーク
２０２  デバイス機能コンシューマロジック
２０４  ジョブチケットプロデューサロジック
２０６  デバイス機能データ
２０８  ジョブチケットデータ
２１０  デバイス非依存性データ
２１２  デバイス機能プロデューサロジック
２１４  ジョブチケットコンシューマロジック
４０２  表示画面
４０４  ユーザインタフェースパネル
８００  コンピュータシステム
８０２  バス
８０４  プロセッサ
８０６  メインメモリ
８０８  リードオンリメモリ
８１０  ストレージデバイス
８１２  ディスプレイ
８１４  入力装置
８１６  カーソル制御部
８１８  通信インターフェース
８２０  ネットワークリンク
８２２  ローカルネットワーク
８２４  ホスト
８２６  インターネットサービスプロバイダ
８２８  インターネット
８３０  サーバ
９０２  オペレーティングシステム
９０４  ユニバーサルドライバ印刷サブシステム
９０６  ポストスクリプト用ドライバレス拡張部
９０８  ページ制御言語(PCL)用ドライバレス拡張部
９１０  プリンタ機能データ
９１２  プリントチケット
９１４  ジョブデータ
９１６  プリンタ機能ファイル
９１８  PDLテーブルに対するジョブチケット
９２０  ジョブチケットPDL変換ロジック
９２２  PDLレンダリングエンジン
１００２  ドライバ生成ロジック
１００４  コンフィギュレーションファイル
１００６  基本的な一般的プリンタドライバ
１００８  マッピングファイル
１０１０  メタデータ
１０１２  プリンタコンフィギュレーションデータ
１０１４  プリンタ機能データ
１０１６  ベンダ固有拡張データ
１０５０  一般的なプリンタドライバファイル及びパッケージ
１１０２  フォーマット変換ロジック
１１０４  ウェブサービスデバイスAPI
１１１８  ウェブサービスプロトコル
１１２０  ベンダ固有のUIプラグイン
１１２２  UEプラグインPSPC
１１２４  PPD又はGPD
１１２６  コアドライバ
１１２８  PSFによる印刷機能
１１３０  アプリケーション
１１３２  印刷スキーマプリントチケット
１１３４  プリントチケットバイナリ
１１３６  セマンティックプリントチケット
１１３８  SPTを伴うWSDプリントジョブ
【図１】
0005287041.tif 000004
【図２】
0005287041.tif 000005
【図３】
0005287041.tif 000006
【図４】
0005287041.tif 000007
【図５】
0005287041.tif 000008
【図６】
0005287041.tif 000009
【図７】
0005287041.tif 000010
【図８】
0005287041.tif 000011
【図９】
0005287041.tif 000012
【図１０】
0005287041.tif 000013
【図１１】
0005287041.tif 000014
【図１２】
0005287041.tif 000015
【図１３】
0005287041.tif 000016