(57)【要約】【課題】デバイスから独立性を高めたデバイス管理システムを提供する。【解決手段】プリンタ情報取得サービスＭ４００は、プリンタドライバやプリンタ管理アプリケーションなどのクライアントからプリタ情報取得リクエストを受信すると、制御モジュールＭ４０８による制御の下、そのリクエストで要求される情報の種類に対応するテンプレートを変換情報記憶部Ｍ４１３から読んでＸＭＬパーサＭ４１０で解析する。そして、テンプレートの記述にしたがってＳＮＭＰ要求パケットを生成してデバイスに発行する。それに対応するＳＮＭＰ応答パケットを受信したなら、そのパケットに含まれるＭＩＢから得られた情報を、テンプレートの記述にしたがって演算などの変換を施し、クライアントが要求する意味のデータに変換してからクライアントに返す。【選択図】図４
2005258691.tif 000002
【特許請求の範囲】
【請求項１】
接続されたデバイスを管理するデバイス管理装置であって、
前記デバイスに対してデバイス情報の要求および設定またはそのいずれかを行うデバイス管理手段と、
前記デバイス管理手段が要求する情報と前記デバイスが処理可能な情報との間で変換を行うための変換情報を格納する格納手段と、
前記格納手段に格納された変換情報を参照して、前記デバイス管理手段によるデバイス情報の要求および設定またはそのいずれかについて前記デバイスが要求する情報に変換し、前記デバイスから受信した情報について前記デバイス管理手段が処理可能な情報に変換する変換手段と
を備えることを特徴とするデバイス管理装置。
【請求項２】
前記変換情報は、前記デバイス管理手段によるデバイス情報の要求および設定またはそのいずれかを、前記デバイスの有する情報に応じて、該情報を取得するための命令およびパラメータに変換するための変換情報を含むことを特徴とする請求項１に記載のデバイス管理装置。
【請求項３】
前記変換情報は、前記デバイスから受信した情報を、前記デバイスの有する情報に応じて、前記デバイス管理手段が処理可能な情報に変換するための変換情報を含むことを特徴とする請求項１または２に記載のデバイス管理装置。
【請求項４】
前記前記デバイスから受信した情報を、前記デバイスの有する情報に応じて、前記デバイス管理手段が処理可能な情報に変換するための変換情報には、前記デバイスから受信した情報について、四則演算、値の置換、値の探索、値の抽出、文字列の置換、文字列の探索、部分文字列の抽出、ブール値の論理演算の少なくともいずれかを用いて変換することを表す変換情報を含むことを特徴とする請求項３に記載のデバイス管理装置。
【請求項５】
デバイスから情報を取得するデバイス管理装置であって、
取得しようとする情報をデバイスから取得する為のプロトコル情報に変換し、また、デバイスから取得したデータを前記取得しようとする情報に変換するためのＸＭＬで記述された変換情報を格納する格納手段と、
前記デバイスから情報を取得する際に、前記変換情報を参照して前記デバイスへ送信する要求パケットを生成する手段と、
前記要求パケットを前記デバイスへ送信し、前記デバイスからの応答パケットを受信する手段と、
前記応答パケットから取得した情報を前記変換情報を参照して前記取得しようとする情報に変換する手段と
を備えることを特徴とするデバイス管理装置。
【請求項６】
接続されたデバイスを管理するデバイス管理方法であって、
前記デバイスに対してデバイス情報の要求および設定またはそのいずれかを行うための第１形式の要求を発行する要求発行工程と、
格納手段に格納された、前記第１形式と、前記デバイスが処理可能な情報の第２形式との間で変換を行うための変換情報を参照して、前記デバイス情報の要求および設定またはそのいずれかを行うための第１形式の要求を、前記第２形式の情報に変換し、前記デバイスから受信した情報について前記デバイス管理手段が処理可能な情報の形式に変換する変換工程と
を備えることを特徴とするデバイス管理方法。
【請求項７】
デバイスから情報を取得するデバイス管理方法であって、
前記デバイスから情報を取得する際に、取得しようとする情報をデバイスから取得する為のプロトコル情報に変換し、また、デバイスから取得したデータを前記取得しようとする情報に変換するためのＸＭＬで記述された変換情報を参照して、前記デバイスへ送信する要求パケットを生成する工程と、
前記要求パケットを前記デバイスへ送信し、前記デバイスからの応答パケットを受信する工程と、
前記応答パケットから取得した情報を前記変換情報を参照して前記取得しようとする情報に変換する工程と
を備えることを特徴とするデバイス管理方法。
【請求項８】
コンピュータにより、接続されたデバイスを管理するためのプログラムであって、
前記デバイスに対してデバイス情報の要求および設定またはそのいずれかを行うための第１形式の要求を発行する要求発行工程と、
格納手段に格納された、前記第１形式と、前記デバイスが処理可能な情報の第２形式との間で変換を行うための変換情報を参照して、前記デバイス情報の要求および設定またはそのいずれかを行うための第１形式の要求を、前記第２形式の情報に変換し、前記デバイスから受信した情報について前記デバイス管理手段が処理可能な情報の形式に変換する変換工程と
をコンピュータにより実行させることを特徴とするプログラム。
【請求項９】
コンピュータにより、接続されたデバイスを管理するためのプログラムであって、
前記デバイスから情報を取得する際に、取得しようとする情報をデバイスから取得する為のプロトコル情報に変換し、また、デバイスから取得したデータを前記取得しようとする情報に変換するためのＸＭＬで記述された変換情報を参照して、前記デバイスへ送信する要求パケットを生成する工程と、
前記要求パケットを前記デバイスへ送信し、前記デバイスからの応答パケットを受信する工程と、
前記応答パケットから取得した情報を前記変換情報を参照して前記取得しようとする情報に変換する工程と
をコンピュータにより実行させることを特徴とするプログラム。
【請求項１０】
ＸＭＬで記述された情報取得リクエストをクライアントより受信する手段と、
前記受信手段により受信されたＸＭＬで記述された情報取得リクエストを解釈し、リクエストに対するＳＮＭＰ用パケットを生成し、デバイスに送信する手段と、
前記送信手段によりデバイスに送信されたＳＮＭＰ用パケットに基づくＭＩＢのデータを取得する取得手段と、
前記取得手段により取得されたＭＩＢのデータをＸＭＬで記述されたデータに基づき変換する変換手段と、
前記変換手段により変換されたデータをクライアントに送信する送信手段とを有することを特徴とするデバイス管理装置。
【請求項１１】
ＸＭＬで記述された情報取得リクエストをクライアントより受信するステップと、
前記受信ステップにより受信されたＸＭＬで記述された情報取得リクエストを解釈し、リクエストに対するＳＮＭＰ用パケットを生成し、デバイスに送信する送信ステップと、
前記送信ステップによりデバイスに送信されたＳＮＭＰ用パケットに基づくＭＩＢのデータを取得する取得ステップと、
前記取得ステップにより取得されたＭＩＢのデータをＸＭＬで記述されたデータに基づき変換する変換ステップと、
前記変換ステップにより変換されたデータをクライアントに送信する送信ステップとを有することを特徴とするデバイス管理方法。
【請求項１２】
ＸＭＬで記述された情報取得リクエストをクライアントより受信するステップと、
前記受信ステップにより受信されたＸＭＬで記述された情報取得リクエストを解釈し、リクエストに対するＳＮＭＰ用パケットを生成し、デバイスに送信するステップと、
前記送信ステップによりデバイスに送信されたＳＮＭＰ用パケットに基づくＭＩＢのデータを取得する取得ステップと、
前記取得ステップにより取得されたＭＩＢのデータをＸＭＬで記述されたデータに基づき変換する変換ステップと、
前記変換ステップにより変換されたデータをクライアントに送信する送信ステップとを有することを特徴とするコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばコンピュータ等により、それに接続されたプリンタ等のデバイスから情報を取得してそのデバイスを管理するデバイス管理装置に関する。
【背景技術】
【０００２】
現在、ＰＣ（パーソナルコンピュータ）等のコンピュータから利用可能な周辺装置として、プリンタ、ファクシミリ、スキャナ、ＭＦＰ（マルチファンクションペリフェラル装置）等が普及している。
【０００３】
ＰＣには、これら周辺装置（以下デバイスと呼ぶ。）を利用する為のデバイスドライバ（以下ドライバと呼ぶ。）やポートモニタ、デバイスを管理する為のデバイス管理ユーティリティソフトなどのソフトウェアがインストールされる。ドライバとは、デバイスの種類や機種に応じた差異を吸収するためにデバイスに特有の処理を実行するためのソフトウエアである。プリンタはプリンタポートとして指定されたＩ／Ｏポートのインターフェイスを通してＰＣと通信する。ポートモニタは、プリンタに対するＩ／Ｏポート（すなわちプリンタポート）を制御するためのソフトウエアで、マイクロソフト社のウィンドウズ（登録商標）ＯＳにおける名称である。デバイス管理ユーティリティソフトウエアは、デバイスの状態を取得し、それを表示したりあるいはデバイスの設定を変更するなどの操作等を管理者に行わせるためのソフトウエアである。
【０００４】
これらのソフトウェアは、デバイスと通信を行ってデバイスの構成情報やオプション情報、ジョブ情報、ユーザ情報、状態情報などを取得する機能を備えていることが多い。一般にデバイスはデバイスの種類や機種毎に仕様が異なり、また、ひとつの機種であってもオプション等による相違がある場合もあり、デバイスから取得可能な情報や、取得する方法が異なることが多い。このため、一般的には、デバイスから情報を取得する装置やソフトウェアはデバイスのベンダが提供している。ＰＣがデバイスからその状態等のデバイスに固有な情報を取得する為のプロトコルとしてはＳＮＭＰが一般的である。また、デバイスのベンダが独自に定義したプロトコルを用いる場合もある（特許文献１等参照）。
【０００５】
一方、文書を単なる文字列として扱うだけでなく、文書の論理構造を表現することができる構造化文書が提案されている。構造化文書の形式のひとつとして、Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）が制定するＸＭＬがある。ＸＭＬでは、文書の論理構造をスキーマ言語である文書型定義（ＤＴＤ，Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）やＸＭＬスキーマにより指定し、表題、著者名、序文および本文のような文書構成要素としての役割を、文書タグと呼ばれる構造要素識別子を用いて表現することができる。ＸＭＬでは、文書構成要素のみならず、データの意味的構造化を行うようなタグをユーザが必要に応じて自ら定義できる。ＸＭＬ対応のシステムはスキーマに基づいてデータを処理する。
【特許文献１】特開２００３−２９９４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のデバイスドライバやデバイス管理ユーティリティソフトウェアは、デバイスから取得する情報や、デバイスから情報を取得する処理、デバイスから取得した情報の変換処理を、プログラムコードにハードコーディングしていることが多い。ハードコーディングとは、デバイスに固有の情報等をパラメータ化せず、プログラムコードの中に埋め込んでしまうようなプログラム手法をいう。ハードコーディングを行うと、デバイスに固有の情報等に変更があったり、他機種用に解像する様な場合、コード自体を見直さなければならない。このため、デバイスの仕様変更や、従来機種と仕様の異なる新機種に対応する為に、プログラムコードを変更し、再構築したソフトウェアをユーザに再配布する必要があり、ソフトウェアの管理工数が大きいという問題点があった。
【０００７】
また、ドライバやデバイス管理ユーティリティソフトウェアを提供するベンダと、管理されるデバイスのベンダが異なる場合、ドライバやデバイス管理ユーティリティソフトウェアが扱う情報・データ形式と、実際に、デバイスから取得可能な情報・データ形式が一致しない場合がある。この場合、デバイスから取得したデータをネットワークデバイス管理システムが扱えるデータ形式に変換する必要がある。デバイスからの情報の取得処理、取得した情報の変換処理は、デバイスの仕様が分からないと行えない為、この変換処理を行うプログラムを作成するためには、デバイスのベンダにデバイスの仕様を公開してもらうか、デバイスからの情報の取得処理および取得した情報の変換処理を行うプログラム・モジュール自体をデバイスのベンダに提供してもらうことが考えられる。デバイスの仕様を公開してもらう為には、ベンダ間で特別な契約を締結する必要があり実際上は困難な場合が多い。また、デバイスのベンダにプログラム・モジュールを提供してもらう為には、デバイスのベンダにプログラムの仕様を詳しく理解してもらう必要性がある。またベンダにおいても、変換プログラムをデバイスの種類や機種毎に提供しなければならず負担が大きい。さらに、デバイスのベンダに提供してもらったプログラム・モジュールのバグが原因でシステム全体が障害を起こす危険性がありシステムの安全性や安定性の点でも問題がある。
【０００８】
本発明は上記従来例に鑑みてなされたもので、デバイスに対する要求およびデバイスからの応答を、デバイスに依存しない形式とデバイスに依存する形式との間で変換する変換情報を用意することで、たとえば管理するデバイスの機種の増加や、扱う情報のデータ形式の変更等がされる場合に、また、管理するデバイスの仕様が分からない場合などにも、その変換情報を変更するだけで対応可能なデバイス管理装置を実現することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明は以下のような構成を備える。
【００１０】
接続されたデバイスを管理するデバイス管理装置であって、
前記デバイスに対してデバイス情報の要求および設定またはそのいずれかを行うデバイス管理手段と、
前記デバイス管理手段が処理可能な情報の形式と前記デバイスが処理可能な情報の形式との間で変換を行うための変換情報を格納する格納手段と、
前記格納手段に格納された変換情報を参照して、前記デバイス管理手段によるデバイス情報の要求および設定またはそのいずれかについて前記デバイスが処理可能な形式の情報に変換し、前記デバイスから受信した情報について前記デバイス管理手段が処理可能な情報の形式に変換する変換手段とを備える。
【００１１】
あるいは、デバイスから情報を取得するデバイス管理装置であって、
取得しようとする情報をデバイスから取得する為のプロトコル情報に変換し、また、デバイスから取得したデータを前記取得しようとする情報に変換するためのＸＭＬで記述された変換情報を格納する格納手段と、
前記デバイスから情報を取得する際に、前記変換情報を参照して前記デバイスへ送信する要求パケットを生成する手段と、
前記要求パケットを前記デバイスへ送信し、前記デバイスからの応答パケットを受信する手段と、
前記応答パケットから取得した情報を前記変換情報を参照して前記取得しようとする情報に変換する手段と
を備える。
【００１２】
あるいは、ＸＭＬで記述された情報取得リクエストをクライアントより受信する手段と、
前記受信手段により受信されたＸＭＬで記述された情報取得リクエストを解釈し、リクエストに対するＳＮＭＰ用パケットを生成し、デバイスに送信する手段と、
前記送信手段によりデバイスに送信されたＳＮＭＰ用パケットに基づくＭＩＢのデータを取得する取得手段と、
前記取得手段により取得されたＭＩＢのデータをＸＭＬで記述されたデータに基づき変換する変換手段と、
前記変換手段により変換されたデータをクライアントに送信する送信手段とを有する。
【発明の効果】
【００１３】
本発明によれば、デバイスに対する要求およびデバイスからの応答を、デバイスに依存しない形式とデバイスに依存する形式との間で変換する変換情報を用意することで、たとえば管理するデバイスの機種の増加や、扱う情報のデータ形式の変更等がされる場合に、また、管理するデバイスの仕様が分からない場合などにも、その変換情報を変更するだけで対応可能なデバイス管理装置を実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下に、本実施形態のデバイス管理システムについて説明する。図１は、本実施形態におけるネットワークの構成図である。図１において、クライアントＰＣ（Ｃ１０１， Ｃ１０３，Ｃ１０３）およびプリンタ（Ｐ１０４）は、ネットワーク（Ｎ１０５）を介して相互に通信可能とする。ネットワーク（Ｎ１０５）には、本実施形態ではＬＡＮ（Local Area Network）を用いる。
【００１５】
図２は、クライアントＰＣ（Ｃ１０１）の概略構成を表すブロック図である。なお、クライアントＰＣ（Ｃ１０２、Ｃ１０３）の構成も同様である。クライアントＰＣは、ＣＰＵ（Ｃ２０１）、ＲＯＭ（Ｃ２０２）、外部メモリ（Ｃ２０３）、キーボード（Ｃ２０４）、通信部（Ｃ２０５）、ＲＡＭ（Ｃ２０６）、ＨＤ（ハードディスク）（Ｃ２０７）、ディスプレイ（Ｃ２０８）、システムバス（Ｂ２０９）を備えている。
【００１６】
ＣＰＵ（Ｃ２０１）はシステムバス（Ｂ２０９）に接続された各デバイスを統括的に制御する中央処理装置である。ＣＰＵ（Ｃ２０１）は、ＨＤ（Ｃ２０７）に格納されているアプリケーションプログラム、プリンタ管理ユーティリティソフト、プリンタドライバ、ポートモニタ、ＯＳ、ネットワークプリンタ制御プログラム、通信プログラムなどを実行し、ＲＡＭ（Ｃ２０６）にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ＲＯＭ（Ｃ２０２）には、基本Ｉ／Ｏプログラム等のプログラムを記憶する。外部メモリ（Ｃ２０３）には、ＦＤ（フレキシブルディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ、ＨＤ、フラッシュメモリ、不揮発性のメモリカード、磁気テープなどがあり、各種記憶媒体からプログラムやデータを本コンピュータシステムにロードすることができる。キーボード（Ｃ２０４）は、ユーザからクライアントＰＣに対する入力を指示し、ディスプレイ（Ｃ２０８）は、キーボード（Ｃ２０４）からの入力やアプリケーションプログラムのＧＵＩ（グラフィックユーザインターフェース）の表示などを行う。ユーザはプリンタを使用して印刷する際、印刷設定に関するウインドウを開き、プリンタの設定や印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができるようになっている。通信部は、ＮＩＣなどを備え、ネットワークを介して他のクライアントＰＣやプリンタ（Ｐ１０４）と通信を行う。
【００１７】
プリンタ（Ｐ１０４）は、ネットワーク管理プロトコルＳＮＭＰ（Simple Network Management Protocol）とデータベースＭＩＢ（Management Information Base）を実装しており、クライアントＰＣは、ＳＮＭＰでプリンタと通信することによりプリンタのＭＩＢへアクセスして情報を取得できる。
【００１８】
クライアントＰＣには、プリンタから情報を取得するためのプリンタ情報取得サービス、プリンタドライバ、プリンタ管理アプリケーションがインストールされている。プリンタドライバ、プリンタ管理アプリケーションは、プリンタ情報取得サービスを用いてプリンタから情報を取得する。プリンタ情報取得サービスはクライアントＰＣのＲＡＭに常駐する常駐プログラムである。プリンタから取得する情報としては、給紙オプション情報（給紙カセット段数、用紙サイズ、用紙残量）、インク／トナー残量、排紙オプション情報（フィニッシャの種類、ステイプルユニット有り無し、製本ユニット有り無し）、両面印刷ユニット有り無し、総ＲＡＭ容量などが挙げられる。プリンタドライバやプリンタ管理アプリケーションが取得したプリンタ構成情報は、図３のようなＧＵＩでクライアントＰＣのディスプレイモニタで表示される。また、プリンタドライバは取得したプリンタのオプション情報をみて、ステイプル可能か、両面印刷ができるか、プリンタに投入できる印刷ジョブの最大サイズはいくらか、などを判定してユーザに提供可能な印刷機能を設定する。
【００１９】
プリンタ情報取得サービスは、ＸＭＬの構文で記述されたファイルを読んで解釈し、記述にしたがって処理を行う機能を有しており、ＸＭＬファイルには以下に示す（１）〜（３）の情報がＸＭＬの構文に沿って記述されている。
（１）プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式。
（２）プリンタから情報を取得するために必要なＳＮＭＰプロトコル情報（リクエストオペレーション（ＧｅｔＲｅｑｕｅｓｔ、ＧｅｔＮｅｘｔＲｅｑｕｅｓｔ、ＳｅｔＲｅｑｕｅｓｔ）、コミュニティ名、オブジェクト識別子（OBJECT IDENTIFIER），データタイプ）、プリンタから取得したＭＩＢの識別情報。
（３）プリンタから取得した情報を（１）の情報に変換するための変換方法。
これらの情報を含むＸＭＬデータを本実施形態ではテンプレートと呼ぶことにする。なおテンプレートは、デバイス（ここではプリンタ）から取得すべき情報の種類ごとにファイルとして設けても良いし、取得すべき全ての情報についてのテンプレートをまとめてひとつのテンプレートファイルとしても良い。
【００２０】
以下に、プリンタドライバ、プリンタ管理アプリケーション、プリンタ情報取得サービスのプログラムモジュール構成の簡略図（図４）を参照して、プログラム構成について説明する。
【００２１】
プリンタドライバ（Ｍ４０２）、プリンタ管理アプリケーション（Ｍ４０５）はそれぞれＵＩ（ユーザインターフェース）モジュール（Ｍ４０１、Ｍ４０４）と、プロキシモジュール（Ｍ４０３、Ｍ４０６）を備えている。プロキシ（Ｍ４０３、Ｍ４０６）は、プリンタ情報取得サービスのスタブモジュール（Ｍ４０７）とプロセス間通信を行う。プロキシ／スタブは異なるＰＣ間の通信も可能であり、プリンタドライバ及びプリンタ管理アプリケーションと、プリンタ情報取得サービスとは異なるクライアントＰＣにインストールされていても良い。このような場合にも、プロキシとスタブとのインターフェースにより、プリンタ管理アプリケーションおよびプリンタドライバと、プリンタ情報取得サービスとの間では、ひとつのＰＣにある場合と同様に通信が行える。プロキシ／スタブモジュールには、マイクロソフト社のＣＯＭ（Componet Object Model）や．Ｎｅｔ（ドットネット）など技術が使われることが想定される。
【００２２】
プリンタ情報取得リクエストは、プリンタドライバ（Ｍ４０２）またはプリンタ管理アプリケーション（Ｍ４０５）から発行され、プロキシ／スタブを介してプリンタ情報取得サービスの制御モジュール（Ｍ４０８）に伝えられる。プリンタ情報リクエストには、プリンタから取得しようとする情報の種類（給紙カセット段数、用紙サイズ、用紙残量、インク／トナー残量、フィニッシャの種類、ステイプルユニット有り無し、製本ユニット有り無し、両面印刷ユニット有り無し、総ＲＡＭ容量など）を示す情報（ＩＤや文字列など。本実施形態では種類識別情報と呼ぶ。）が含まれている。
【００２３】
制御モジュール（Ｍ４０８）は、主にクライアント（プリンタドライバやプリンタ管理アプリケーションなど、プリンタ情報取得サービスのクライアント）と情報取得要求リクエストの管理を行う。データ構成モジュール（Ｍ４０９）は、制御モジュール（Ｍ４０８）からリクエストを受けてＳＮＭＰ用のデータを構築し、また、ＳＮＭＰモジュール（Ｍ４１１）がプリンタから取得したＭＩＢデータを上位モジュールで扱うデータ構造に変換する。ＳＮＭＰ用のデータ構築、プリンタから取得したＭＩＢデータの変換に関する情報はＸＭＬファイル（テンプレートファイル）より取得する。テンプレートファイルは、ＲＡＭやＨＤ等により実現される変換情報記憶部Ｍ４１３に格納される。ＸＭＬファイルの解析は、プリンタ情報取得リクエストが発行される度に、ＸＭＬパーサＭ４１０によって行われる。この場合には、当該プリンタ情報取得リクエストに対応して変換情報記憶部Ｍ４１３から読み出されたテンプレート（ＸＭＬファイル）だけを解析の対象とすればよい。あるいは、プリンタ情報取得サービスの起動時に一度だけ行うこともできる。後者の場合、ＸＭＬ全体について解析される。そして解析したデータ（たとえばテンプレート毎の構文の正誤等の結果など）をメモリ上に持ち、プリンタ情報取得リクエストが発行される度にメモリを参照する。ＳＮＭＰモジュール（Ｍ４０８）は、ＳＮＭＰパケットヘッダの生成と解析を行うモジュールである。トランスポートモジュール（Ｍ４１２）はＴＣＰ（ＵＤＰ）／ＩＰのパケットの生成と解析を行う。トランスポートモジュールＭ４１２から、更に下位のプロトコルスタックやインターフェース回路等のハードウエアを介して、プリンタなどのデバイスに接続されている。
【００２４】
＜プリンタ情報取得サービスによる処理＞
次に、プリンタ情報取得サービスが、プリンタドライバ、プリンタ管理アプリケーションから情報を取得した場合の処理を図５のフローチャートを用いて説明を行う。この処理はＣＰＵ（Ｃ２０１）により実行される。
【００２５】
プリンタ情報取得サービスは、ステップＳ５０１において、スタブモジュール（Ｍ４０７）でプリンタドライバもしくはプリンタ管理アプリケーションからのプリンタ情報取得リクエストを受信することによって、プリンタから情報を取得する処理を開始する。
【００２６】
次に、ステップＳ５０２において、受信したリクエストを解析して、情報を取得するプリンタの機種、プリンタのアドレス、プリンタから取得する情報を特定する。次にステップＳ５０３でテンプレートを読み込み、ＸＭＬパーサ（Ｍ４１０）によって構文を解析する。解析結果はＲＡＭなどのメモリに保存する。解析結果としては、たとえば構文上の誤りがあればその旨が記憶されるし、構文上正しければ、解析後の形式（ＸＭＬ解析データと呼ぶ。）でメモリに保存される。たとえば、ＸＭＬファイルではタグにより表されているデータを、ＸＭＬの構文解析なしに直ちに利用できる所定の表形式やリスト形式などでメモリに保存する。
【００２７】
プリンタドライバやプリンタ管理アプリケーションが取得しようとする情報の種類は、プリンタ情報取得リクエストの例えばパラメータにより特定されるので、ステップＳ５０２ではそのパラメータを参照し、ステップＳ５０３ではそのパラメータの値に応じたテンプレートを読み込んで解析すればよい。このパラメータ値とテンプレートとの対応は、たとえばＲＡＭやＨＤなどにテーブルとしてテンプレートであるＸＭＬファイルとともに格納しておけばよい。
【００２８】
ステップＳ５０４において、解析の結果読み込んだテンプレートの構文が正しいか否かを判定し、正しい場合は、解析したデータをメモリ（ＲＡＭなど）に記録する。なお、ステップＳ５０３、ステップＳ５０４処理におけるＸＭＬファイル解析に関する処理を、サービス起動時などに既に行っている場合は、ステップＳ５０３、ステップＳ５０４は省略して、メモリから解析結果、解析データを参照することも可能である。
【００２９】
ステップＳ５０５では、メモリに保持したＸＭＬ解析データより、プリンタ情報取得リクエストに対応したＳＮＭＰ用データ（リクエストオペレーション（ＧｅｔＲｅｑｕｅｓｔ、ＧｅｔＮｅｘｔＲｅｑｕｅｓｔ、ＳｅｔＲｅｑｕｅｓｔ）、コミュニティ名、オブジェクト識別子（OBJECT IDENTIFIER），データタイプなど）を取得する。
【００３０】
次にステップＳ５０６において、上記ＳＮＭＰ用のデータを用いてＳＮＭＰパケットを生成する。パケットの生成は、取得したＳＮＭＰ用データをＳＮＭＰのＰＤＵの形式にしたがって配置して生成する。配置のしかたは、たとえばＸＭＬ解析データにおける配置に基づいて決定される。ステップＳ５０７では、生成したＳＮＭＰリクエストパケットの送信処理を行う。プリンタへの送信が成功した場合に、ステップＳ５０８において、プリンタからのリクエストに対するリプライパケットの受信処理を行う。ステップＳ５０６〜Ｓ５０８はＳＮＭＰモジュールＭ４１１により行われる。
【００３１】
リプライパケットの受信に成功した場合、ステップＳ５０９において受信したリプライパケットを解析して、ＭＩＢのデータを取得する。次に、ステップＳ５１０において、メモリに保持したＸＭＬ解析データよりデータ変換方法に関する情報を取得し、ステップＳ５１１において、取得したＭＩＢデータに対してデータの変換処理を行う。ステップＳ５１２では、ステップＳ５１１における変換後のデータを上位モジュール（プリンタドライバ、プリンタ管理アプリケーションなど）の解析可能なデータ構造体に格納する。前記ステップのいずれかの処理でエラーが発生している場合は、エラーを示す情報（エラーコードなど）をデータ構造体に格納する。最後に、ステップＳ５１３においてクライアント（プリンタドライバ、プリンタ管理アプリションなど）にデータ（リクエストに対する処理結果）を送信して処理を終了する。
【００３２】
以上の手順により、プリンタドライバやプリンタ管理アプリケーションにおけるプリンタ情報取得リクエストの送信やそれに対するレスポンス処理は、デバイスの有するＭＩＢの構成から独立させることができる。そして、デバイスの構成の変更等によりＭＩＢの構成が変更された場合には、プリンタ情報取得サービスが用意するＸＭＬで記述したテンプレートを、ＭＩＢに応じて変更することで対応できる。このため、デバイスの機種や機能、オプションの変更などは、デバイスのベンダにより提供されるテンプレートを用いることで、プリンタ管理アプリケーションやプリンタドライバに影響を及ぼすことはない。
【００３３】
［テンプレートの例１］
本実施形態で使用するＸＭＬファイルとデータ変換の例を挙げて説明する。図６は、プリンタに設置されたＲＡＭの容量をメガバイト（Ｍｂｙｔｅ）単位で取得するためのＸＭＬファイル（テンプレート）の記述の例である。すなわち、プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「ＲＡＭ容量」を示す種類情報が指定されている場合に、図６のテンプレートが用いられる。ここでは、「プリンタ構成情報のデータ形式」「ＳＮＭＰプロトコル情報」「変換方法」の３つの部分に分けて説明する。
【００３４】
（１．プリンタ構成情報のデータ形式）
＜ＲａｍＳｉｚｅ＞タグで囲まれた部分は、ＲＡＭ容量を取得するための処理を表す。＜ＲａｍＳｉｚｅ ＴＹＰＥ＝“ＩＮＴＥＧＥＲ” ＞の属性部分であるｔｙｐｅは、クライアントに返すべきデータの型（ＩＮＴＥＧＥＲ（整数型）、ＳＴＲＩＮＧ（文字列）、ＢＯＯＬ、 ＩＮＴＡＲＲＡＹ（整数型の配列）、ＳＴＲＡＲＲＡＹ（文字列型の配列）など）を指定する。この＜ＲａｍＳｉｚｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００３５】
（２．ＳＮＭＰプロトコル情報）
＜ＭＩＢ＞タグは、プリンタからＳＮＭＰで取得するＭＩＢの情報を示す。属性のｎａｍｅは、プリンタから取得したＭＩＢデータを識別する為の任意の名前を指定する。ｏｐｅｒａｔｉｏｎには、ＳＮＭＰのリクエストコマンド（ＧｅｔＲｅｑｕｅｓｔ、ＳｅｔＲｅｑｕｅｓｔ、ＧｅｔＮｅｘｔＲｅｑｕｅｓｔ）を指定する。指定されたコマンドが、生成されるＳＮＭＰパケットのコマンドとなる。ｃｏｍｍｕｎｉｔｙには、ＳＮＭＰのコミュニティ名を指定する。ｏｉｄには、オブジェクト識別子を指定する。指定されたオブジェクトＩＤが、ＳＮＭＰパケットにおいて指定されるオブジェクトＩＤとなる。ＭＩＢは木構造のデータ構造を有しており、全てのノードが一意に番号付けされている。このＭＩＢの構造は、管理情報構造（Structure of Management Information、ＳＭＩ）と呼ばれ、RFC1155 Structure and Identification of Management Information for TCP/IP-based Internetsで規定されている。ＭＩＢは、ＳＮＭＰで管理される機器が標準的に備えている標準ＭＩＢと呼ばれるオブジェクト群から構成される部分木（このノードの下のオブジェクトの詳細な構造については、RFC1213 Management Information Base for Network Management of TCP/IP-based Internets:MIB-IIに規定されている。）と、プライベートＭＩＢと呼ばれる、企業や団体などが独自のＭＩＢ定義を行うための部分木とを含む。図６のオブジェクトＩＤ（ｏｉｄ）である“１．３．６．１．４．１．１６０２．１．２．３．１”においては、ノード番号１６０２は企業拡張ＭＩＢと呼ばれるもののひとつで、プライベートＭＩＢの中で企業が独自の拡張を行うための頂点となるノードである。この下に企業独自のＭＩＢを定義することができる。たとえば本例では企業ＭＩＢの頂点ノードのオブジェクト識別子は、１．３．６．１．４．１．１６０２であり、その下に企業により定義されたＭＩＢが定義されている。企業拡張ＭＩＢは、たとえば装置の種類、その装置の種類における機種、その機種における固有の情報等の階層で定義できよう。ｔｙｐｅには、取得するＭＩＢデータの型を指定する。これもＳＮＭＰパケットにセットされる。このほか、ＳＮＭＰパケットに固定的に与えることができる項目については、テンプレートで定義するまでもなく、パケットの生成時に設定することができる。
【００３６】
この＜ＭＩＢ＞タグが、プリンタから情報を取得するために必要なＳＮＭＰプロトコル情報に相当する。
【００３７】
（３．変換方法）
＜ＲｅｔｕｒｎＶａｌｕｅ＞タグには、最終的にＲＡＭ容量として設定する値を指定する。“ＲａｍＳｉｚｅＶａｌｕｅ／１０２４”は、ＳＮＭＰによりプリンタから取得した値を１０２４で割った値をＲＡＭ容量とすることを示す。これは、ＭＩＢから取得したＲａｍＳｉｚｅがｋＢｙｔｅ単位である為に、Ｍｂｙｔｅ単位に変換している。図６の例では、＜ＲｅｔｕｒｎＶａｌｕｅ＞タグがｍプリンタから取得した情報を（１）の情報に変換するための変換方法に相当する。
【００３８】
以上のテンプレートを解析した後、データ構成モジュールは、テンプレートに定義されたＳＮＭＰプロトコル情報にしたがってＳＮＭＰ要求パケットを生成し、それをＳＮＭＰモジュールにわたしてプリンタに送信する。そしてそれに対するＳＮＭＰ応答パケットを受信すると、その値を取り出し、テンプレートに定義された変換方法にしたがって、同じくテンプレートに定義された型の値に変換する。そして変換された値をクライアントに返す。
【００３９】
同様の処理をプログラミング言語Ｃ＋＋のように表現した場合、図７のようになる。図７は、図６のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。関数ＧｅｔＭＩＢＤａｔａ（）は、プリンタからＳＮＭＰでＭＩＢデータを取得するための関数である。得た整数型の値ＲａｍＳｉｚｅＤａｔａを１０２４で除算した値を戻り値としている。
【００４０】
本実施の形態によれば、ネットワークデバイス管理システムの提供者（ベンダ）と管理されるデバイスの製造元（ベンダ）が異なる場合でも、デバイスの製造元は、XMLファイルを提供するだけで、ネットワークデバイス管理システムがデバイスを管理することが可能となる。
【００４１】
また、管理するデバイスの機種の増加や、扱う情報のデータ形式が変更される際にも、システム本体を変更することなく、XMLの記述を変更するだけで対応可能にすることができる。
【００４２】
［テンプレートの例２］
次に、プリンタに複数のＲＡＭが設置されており、プリンタに図８のようなＲＡＭ管理テーブルがＭＩＢデータとして実装されている場合に、プリンタから総ＲＡＭ容量を取得する場合のＸＭＬ記述の例について説明する。テーブルの各要素には、ＳＮＭＰのＧｅｔＮｅｘｔで順次アクセス可能なものとする。ＸＭＬファイルの記述例を図９に示す。
【００４３】
本実施形態で使用するＸＭＬファイルとデータ変換の例を挙げて説明する。図９は、このプリンタに設置されたＲＡＭの容量をメガバイト（Ｍｂｙｔｅ）単位で取得するためのＸＭＬファイル（テンプレート）の記述の例である。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「ＲＡＭ容量」を示す種類情報が指定されている場合に、図９のテンプレートが用いられる。すなわち、クライアントからのプリンタ情報取得リクエストは、図６の例と同様である。しかし、プリンタの構成の相違により、図６ではなく図９のテンプレートが用いられる。
【００４４】
（１．プリンタ構成情報のデータ形式）
＜ＴｏｔａｌＲａｍＳｉｚｅ＞タグで囲まれた部分は、ＲＡＭ容量を取得するための処理を表す。＜ＴｏｔａｌＲａｍＳｉｚｅ ＴＹＰＥ＝“ＩＮＴＥＧＥＲ” ＞の属性部分であるｔｙｐｅは、クライアントに返すべきデータの型（この例ではＩＮＴＥＧＥＲ（整数型））を指定する。この＜ＴｏｔａｌＲａｍＳｉｚｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００４５】
（２．ＳＮＭＰプロトコル情報）
＜ＭＩＢＴａｂｌｅ＞タグは、ＳＮＭＰのＧｅｔＮｅｘｔＲｅｑｕｓｔで順次取得した値をテーブル（配列）の形式で扱うことを示す。その他の属性は図６と同様である。ＭＩＢＴａｂｌｅタグをテンプレートから読み込んだ（ただし読むのは解析後であり正確にはタグとは言えないが、便宜的にタグと読んでいる。以下同様である。）データ構成モジュールＭ４０９は、ＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を読み取った順序で保存する。そしてそのレスポンスにおいて読むべきデータがない旨の応答がされるまで、繰り返してＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを発行する。すなわち、図５のステップＳ５０６〜Ｓ５０９を、読むべきデータがなくなるまで繰返し実行する。
【００４６】
（３．変換方法）
＜Ｖａｒｉａｂｌｅ ＞タグでは、総ＲＡＭ容量を計算するために使用する変数を定義している。属性のｎａｍｅには、変数を識別するための名前を、ｔｙｐｅは変数として扱うデータの型を指定する。＜ＳＵＭ＞タグは、タグで囲まれた値の合計を算出することを表す。図９の場合、プリンタからＳＮＭＰ（ＧｅｔＮｅｘｔＲｅｑｕｓｔ）で取得したＲＡＭ容量のテーブルのエントリの値のそれぞれをＧｅｔＮｅｘｔＲｅｑｕｓｔにより読み、Ｓｕｍタグにより合計を算出してＴｏｔａｌＲａｍＳｉｚｅＶａｌｕｅの値とする。最終的に、図６の例と同様にＴｏｔａｌＲａｍＳｉｚｅＶａｌｕｅの値１０２４で除算してＴｏｔａｌＲａｍＳｉｚｅの値を得る。これがクライアントに戻すべき値となる。
【００４７】
以上の処理を、プログラミング言語Ｃ＋＋のように表現した場合、図１０のようになる。関数Ｓｕｍ（）は指定された、配列の要素を合計する関数である。図１０は、図９のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。関数ＧｅｔＭＩＢＤａｔａ（）は、プリンタからＳＮＭＰでＭＩＢデータを取得するための関数である。この関数により、整数型データの配列ｐＲａｍＳｉｚｅＤａｔａの要素として獲得し、その値を合計して整数型の値ＴｏｔａｌＲａｍＳｉｚｅＤａｔａを得る。それを１０２４で除算した値を戻り値としている。
【００４８】
以上のテンプレートを解析した後、データ構成モジュールは、テンプレートに定義されたＳＮＭＰプロトコル情報にしたがってＳＮＭＰ要求パケット（ＧｅｔＮｅｘｔＲｅｑｕｅｓｔ）を生成し、それをＳＮＭＰモジュールにわたしてプリンタに送信する。そしてそれに対するＳＮＭＰ応答パケットを受信すると、その値を取り出しておく。そして、すべてのデータを読み出し終えるまで受信すると、そして取り出された値を、変換方法に従い、テンプレートに定義された型の値に変換してクライアントに返す。
【００４９】
［テンプレートの例３］
次に、プリンタに複数のＲＡＭとＲＯＭが設置されており、プリンタに図１１のようなメモリ管理テーブルがＭＩＢデータとして実装されている場合に、メモリ管理テーブルの中から、ＲＡＭの項目だけを抜き出し、ＲＡＭの容量を合計して総ＲＡＭ容量をメガバイト単位で計算する場合のＸＭＬ記述例を図１２に示す。テーブルの各要素には、ＳＮＭＰのＧｅｔＮｅｘｔで順次アクセス可能なものとする。図１１のテーブルにおけるＭｅｍｏｒｙＮａｍｅとＭｅｍｏｒｙＳｉｚｅとにはそれぞれ相異なるオブジェクトＩＤが与えられている。図１２のテンプレートを読んだデータ構成モジュールは、ＳＮＭＰのＧｅｔＮｅｘｔを使用してテーブルのＭｅｍｏｒｙＮａｍｅとＭｅｍｏｒｙＳｉｚｅとをそれぞれ取得する。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「ＲＡＭ容量」を示す種類情報が指定されている場合に、図１２のテンプレートが用いられる。すなわち、クライアントからのプリンタ情報取得リクエストは、図６および図９の例と同様である。しかし、プリンタの構成の相違により図１２のテンプレートが用いられる。
【００５０】
（１．プリンタ構成情報のデータ形式）
＜ＴｏｔａｌＲａｍＳｉｚｅ＞タグで囲まれた部分は、ＲＡＭ容量を取得するための処理を表す。＜ＴｏｔａｌＲａｍＳｉｚｅ ＴＹＰＥ＝“ＩＮＴＥＧＥＲ” ＞の属性部分であるｔｙｐｅは、クライアントに返すべきデータの型（この例ではＩＮＴＥＧＥＲ（整数型））を指定する。この＜ＴｏｔａｌＲａｍＳｉｚｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００５１】
（２．ＳＮＭＰプロトコル情報）
＜ＭＩＢＴａｂｌｅ＞タグは、ＳＮＭＰのＧｅｔＮｅｘｔＲｅｑｕｓｔで順次取得した値をテーブル（配列）の形式で扱うことを示す。その属性は図９と同様である。ＭＩＢＴａｂｌｅタグをテンプレートから読み込んだデータ構成モジュールＭ４０９は、ＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を、読み取った順序でｎａｍｅ属性で与えられる変数名に、読まれた順序に応じたインデックスを付して保存する。そしてそのレスポンスにおいて読むべきデータがない旨の応答がされるまで、繰り返してＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを発行する。すなわち、図５のステップＳ５０６〜Ｓ５０９を、読むべきデータがなくなるまで繰返し実行する。
【００５２】
図１２のテンプレートでは、＜ＭＩＢＴａｂｌｅ＞タグが、オブジェクトＩＤ＝１．３．６．１．４．１．１６０２．１．２．２と、オブジェクトＩＤ＝１．３．６．１．４．１．１６０２．１．２．３とについて定義されている。前者は図１１のテーブルのＭｅｍｏｒｙＮａｍｅであり、後者はＭｅｍｏｒｙＳｉｚｅである。データ構成モジュールＭ４０９は、ＭｅｍｏｒｙＮａｍｅについてのＧｅｔＮｅｘｔＲｅｑｕｓｔパケット発行を繰返し行い、その後ＭｅｍｏｒｙＳｉｚｅについてのＧｅｔＮｅｘｔＲｅｑｕｓｔパケット発行を繰返し行う。
【００５３】
（３．変換方法）
＜Ａｒｒａｙ＞タグ１２０１は配列型の変数を定義することを示す。＜ＧｅｔＩｎｄｅｘＦｒｏｍＶａｌｕｅ＞タグは、ｆｒｏｍ属性に指定したテーブル（配列）の各要素とｖａｌｕｅ属性に指定した値を、ｃｏｎｄｉｔｉｏｎ属性に指定した条件で比較し、一致した場合に、テーブルのｉｎｄｅｘを返す処理を示す。図１２の場合、ＭｅｍｏｒｙＮａｍｅテーブルから名前がＲＡＭのｉｎｄｅｘを取得し、配列形式のデータＲａｍＩｎｄｅｘとする。このタグを読んだデータ構成モジュールは、上記定義の動作を実行する。
【００５４】
次の＜Ａｒｒａｙ＞タグ１２０２で、要素が整数型のＲａｍＳｉｚｅを名称とする配列が定義されている。＜ＧｅｔＶａｌｕｅＦｒｏｍＩｎｄｅｘ＞タグは、ｆｒｏｍ属性で指定したテーブル（配列）より、ｉｎｄｅｘ属性で指定した配列のｉｎｄｅｘの位置に相当する値を取得する。図１２の場合、ＭｅｍｏｒｙＳｉｚｅテーブルからＲａｍＩｎｄｅｘの値を全て取得し配列形式のデータＲａｍＳｉｚｅとする。このタグを読んだデータ構成モジュールは、上記定義の動作すなわちＭｅｍｏｒｙＮａｍｅの値がＲＡＭのメモリサイズについて、配列ＲａｍＳｉｚｅに格納する。
【００５５】
配列ＲａｍＳｉｚｅは、図９の例と同様に＜ＳＵＭ＞タグで合計されて値ＴｏｔａｌＲａｍＳｉｚｅＶａｌｕｅに保存される。最終的に、１０２４で除算してＴｏｔａｌＲａｍＳｉｚｅの値を得る。データ構成モジュールは、図１２のテンプレートを読むと、上記定義の通りに動作する。
【００５６】
以上の処理を、プログラミング言語Ｃ＋＋のように表現した場合、図１３のようになる。関数ＧｅｔＭＩＢＤａｔａ（）は、プリンタからＳＮＭＰでＭＩＢデータを取得するための関数である。この関数により、文字列型データの配列ＭｅｍｏｒｙＮａｍｅの要素としてＭｅｍｏｒｙＮａｍｅを獲得し、同様に整数型データの配列ｐＭｅｍｏｒｙＳｉｚｅの要素としてＭｅｍｏｒｙＳｉｚｅの値を獲得する。そして関数ＧｅｔＩｎｄｅｘＦｒｏｍＶａｌｕｅ（）により、整数型の配列ｐＲａｍＩｎｄｅｘの要素として、配列ＭｅｍｏｒｙＮａｍｅのうち値がＲＡＭの要素のインデックスを保存する。そして、関数ＧｅｔＶａｌｕｅＦｒｏｍＩｎｄｅｘ（）により、配列ＭｅｍｏｒｙＳｉｚｅから、配列ｐＲａｍＩｎｄｅｘの各要素の値をインデックスとする値を配列ｐＲａｍＳｉｚｅに取り出す。そして関数ＳＵＭにより、整数ＴｏｔａｌＲａｍＳｉｚｅＤａｔａにその要素の合計値を得る。それを１０２４で除算した値を戻り値としている。なお図１３は、図１２のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。
【００５７】
［テンプレートの例４］
次に、プリンタに複数のオプションユニットが設置されており、プリンタに図１４のようなオプションユニットテーブルがＭＩＢデータとして実装されている場合に、オプションユニット管理テーブルの中から、フィニッシャに相当する名前を抜き出して、フィニッシャ名を取得する場合のＸＭＬの記述の例を図１５に示す。テーブルの各要素には、ＳＮＭＰのＧｅｔＮｅｘｔで順次アクセス可能なものとする。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「フィニッシャの名前（種類）」を示す種類情報が指定されている場合に、図１５のテンプレートが用いられる。
【００５８】
（１．プリンタ構成情報のデータ形式）
＜ＦｉｎｉｓｈｅｒＮａｍｅ＞タグ１５００で囲まれた部分は、フィニッシャの名前を取得するための処理を表す。＜ＦｉｎｉｓｈｅｒＮａｍｅ ＴＹＰＥ＝“ＳＴＲＩＮＧ” ＞の属性部分であるｔｙｐｅは、クライアントに返すべきデータの型（この例ではＳＴＲＩＮＧ（文字列型））を指定する。この＜ＦｉｎｉｓｈｅｒＮａｍｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００５９】
（２．ＳＮＭＰプロトコル情報）
＜ＭＩＢＴａｂｌｅ＞タグ１５０１は、ＳＮＭＰのＧｅｔＮｅｘｔＲｅｑｕｓｔで順次取得した値をテーブル（配列）の形式で保存して扱うことを示す。その他の属性は図９と同様である。ＭＩＢＴａｂｌｅタグをテンプレートから読み込んだデータ構成モジュールＭ４０９は、ＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を読み取った順序でＯｐｔｉｉｏｎＵｎｉｔＮａｍｅｓとして保存する。そしてそのレスポンスにおいて読むべきデータがない旨の応答がされるまで、繰り返してＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを発行する。すなわち、図５のステップＳ５０６〜Ｓ５０９を、読むべきデータがなくなるまで繰返し実行する。
【００６０】
（３．変換方法）
この例では、プリンタに設置可能なフィニッシャには、“ＦｉｎｉｓｈｅｒＡ１”，“ＦｉｎｉｓｈｅｒＡ２”，“ＦｉｎｉｓｈｅｒＡ３”がある。図１５ではこれらを、配列型のデータＦｉｎｓｈｅｒＮａｍｅｓとして＜Ａｒｒａｙ＞タグ１５０２により定義している。＜ＦｉｎｄＶａｌｕｅ＞タグ１５０３は、ｆｒｏｍ属性に指定したテーブル（配列）からｖａｌｕｅ属性に指定した配列の要素をｃｏｎｄｉｔｉｏｎ属性に指定した条件（Ｅｑｕａｌ：一致、ｍｏｒｅ：数値が大きい、ｆｒｏｍ属性の文字列がｖａｌｕｅ属性の文字列に包含される、ｌｅｓｓ：数値が小さい、ｖａｌｕｅ属性の文字列がｆｒｏｍ属性の文字列に包含される）で比較して一致したテーブルの値を返すことを示す。そのＴｙｐｅ属性は、ｖａｌｕｅ属性に指定するデータの型を示している。図１５の場合、ＳＮＭＰリクエストパケットにより獲得したＯｐｔｉｏｎＵｎｉｔＮａｍｅｓテーブルの各要素を、ＦｉｎｉｓｈｅｒＮａｍｅｓテーブルの各要素“ＦｉｎｉｓｈｅｒＡ１”，“ＦｉｎｉｓｈｅｒＡ２”，“ＦｉｎｉｓｈｅｒＡ３”と順次比較し、最初に一致したＯｐｔｉｏｎＵｎｉｔＮａｍｅｓテーブルの要素の値をＦｉｎｉｓｈｅｒＮａｍｅとする。そしてその値ＦｉｎｉｓｈｅｒＮａｍｅを、データ構成モジュールはクライアントに返す。
【００６１】
データ構成モジュールは、図１５のテンプレートを読むと、上記の通りに動作する。以上の処理を、プログラミング言語Ｃ＋＋のように表現した場合、図１６のようになる。図１６のコードでは、ＧｅｔＭＩＢＤａｔａ関数によりフィニッシャの持つ機能の名前をプリンタＭＩＢから獲得してＯｐｔｉｏｎＵｎｉｔＮａｍｅｓに読む。そしてその中からＦｉｎｄＶａｌｕｅ関数により“ＦｉｎｉｓｈｅｒＡ１”，“ＦｉｎｉｓｈｅｒＡ２”，“ＦｉｎｉｓｈｅｒＡ３”と一致する要素をＦｉｎｉｓｈｅｒＮａｍｅに取り出してそれを戻り値とする。なお図１６は、図１５のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。
【００６２】
［テンプレートの例５］
次に、図１４のオプションユニットテーブルをプリンタから取得して、テーブルの要素の中から、部分文字列“Ｆｉｎｉｓｈｅｒ”を含むものを取得する場合のＸＭＬの記述の例を図１７に示す。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「フィニッシャ」を示す種類情報が指定されている場合に、図１７のテンプレートが用いられる。
【００６３】
（１．プリンタ構成情報のデータ形式）
＜ＦｉｎｉｓｈｅｒＮａｍｅ＞タグ１７００で囲まれた部分は、フィニッシャの名前を取得するための処理を表す。＜ＦｉｎｉｓｈｅｒＮａｍｅ ＴＹＰＥ＝“ＳＴＲＩＮＧ” ＞の属性部分であるＴＹＰＥおよびＮＵＭは、クライアントに返すべきデータの型および数字の桁数（この例ではＳＴＲＩＮＧ（文字列型）と１桁の数字）を指定する。また、この＜ＦｉｎｉｓｈｅｒＮａｍｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００６４】
（２．ＳＮＭＰプロトコル情報）
図１７の＜ＭＩＢＴａｂｌｅ＞タグ１７０１は、ＳＮＭＰのＧｅｔＮｅｘｔＲｅｑｕｓｔで順次取得した値をテーブル（配列）の形式で保存して扱うことを示す。その他の属性は図９と同様である。ＭＩＢＴａｂｌｅタグをテンプレートから読み込んだデータ構成モジュールＭ４０９は、ＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を読み取った順序でＯｐｔｉｉｏｎＵｎｉｔＮａｍｅｓとして保存する。そしてそのレスポンスにおいて読むべきデータがない旨の応答がされるまで、繰り返してＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを発行する。すなわち、図５のステップＳ５０６〜Ｓ５０９を、読むべきデータがなくなるまで繰返し実行する。
【００６５】
（３．変換方法）
図１７の＜ＦｉｎｄＶａｌｕｅ＞タグ１７０２は、プリンタから取得したＯｐｔｉｏｎＵｎｉｔＮａｍｅｓテーブルから部分文字列“Ｆｉｎｉｓｈｅｒ”を含む要素を抽出して文字型の変数ＦｉｎｉｓｈｅｒＮａｍｅに設定することを示す。変数ＦｉｎｉｓｈｅｒＮａｍｅがクライアントに返される。図１７のテンプレートを読んだデータ構成モジュールは以上に定義されたように動作する。
【００６６】
以上の処理を、プログラミング言語Ｃ＋＋のように表現した場合、図１８のようになる。すなわち、関数ＧｅｔＭＩＢＤａｔａによりオプション機器の名前を配列ＯｐｔｉｏｎＵｎｉｔＮａｍｅに読み込み、そのうちから“Ｆｉｎｉｓｈｅｒ”を有する要素をＦｉｎｉｓｈｅｒＮａｍｅとしてクライアントに返す。なお図１８は、図１７のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。
【００６７】
［テンプレートの例６］
次に、プリンタの製本機能の有り無しをＢＯＯＬ値で取得する場合のＸＭＬの記述の例を図１９に示す。製本機能は、紙折りユニットと、ステイプルユニットの両方がプリンタに設置されていると実現可能なものとする。本例では、プリンタ情報取得サービスは、プリンタから図１４のようなオプションユニットテーブルを取得し、オプションユニットテーブルから紙折りユニットとステイプルユニットの存在を確認し、両方の存在が確認できた場合に製本機能有りと判断する。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「製本機能」を示す種類情報が指定されている場合に、図１９のテンプレートが用いられる。
【００６８】
（１．プリンタ構成情報のデータ形式）
＜ＢｏｏｋＢｉｎｄｉｎｇＩｎｓｔａｌｌｅｄ＞タグ１９００で囲まれた部分は、製本機能の有無を表すＢＯＯＬ変数を定義している。その属性部分であるＴＹＰＥは、クライアントに返すべきデータの型（この例ではＢＯＯＬ（論理型））を指定する。また、この＜ＢｏｏｋＢｉｎｄｉｎｇＩｎｓｔａｌｌ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００６９】
（２．ＳＮＭＰプロトコル情報）
図１９の＜ＭＩＢＴａｂｌｅ＞タグ１９０１は、ＳＮＭＰのＧｅｔＮｅｘｔＲｅｑｕｓｔで順次取得した値をテーブル（配列）の形式で保存して扱うことを示す。その他の属性は図１７と同様である。ＭＩＢＴａｂｌｅタグをテンプレートから読み込んだデータ構成モジュールＭ４０９は、ＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を読み取った順序でＯｐｔｉｉｏｎＵｎｉｔＮａｍｅｓとして保存する。そしてそのレスポンスにおいて読むべきデータがない旨の応答がされるまで、繰り返してＧｅｔＮｅｘｔＲｅｑｕｓｔパケットを発行する。すなわち、図５のステップＳ５０６〜Ｓ５０９を、読むべきデータがなくなるまで繰返し実行する。
【００７０】
（３．変換方法）
図１９において、＜Ｆｉｎｄ＞タグ１９０２、１９０３は、ｆｒｏｍ属性に指定されたテーブルからｖａｌｕｅ属性にしていされた値をｃｏｎｄｉｔｉｏｎ属性に指定された条件で検索し、検索に成功するとＢＯＯＬ値ＴＲＵＥを設定する。
【００７１】
図１９の場合、＜Ｆｉｎｄ＞タグ１９０２を読んだデータ構成モジュールは、ＯｐｔｉｏｎＵｎｉｔＮａｍｅテーブルから文字列“ＰａｐｅｒＦｏｌｄｉｎｇＵｎｉｔ”を検索し、検索の結果をＢＯＯＬ値ＰａｐｅｒＦｏｌｄｉｎｇＵｎｉｔＩｎｓｔａｌｌｅｄに設定する。同様に、＜Ｆｉｎｄ＞タグ１９０３を読んだデータ構成モジュールは、ＯｐｔｉｏｎＵｎｉｔＮａｍｅテーブルから文字列“ＳｔａｐｌｅＵｎｉｔ”を検索し、検索の結果をＢＯＯＬ値ＳｔａｐｌｅＵｎｉｔＩｎｓｔａｌｌｅｄに設定する。
【００７２】
最終的に、ＢＯＯＬ値ＰａｐｅｒＦｏｌｄｉｎｇＵｎｉｔＩｎｓｔａｌｌｅｄとＢＯＯＬ値ＳｔａｐｌｅＵｎｉｔＩｎｓｔａｌｌｅｄのＡＮＤをとり、ＢＯＯＬ値ＢｏｏｋＢｉｎｄｉｎｇＩｎｓｔａｌｌｅｄに設定する（１９０４）。この値がクライアントに返される。図１９のテンプレートを読んだデータ構成モジュールは以上に定義されたように動作する。
【００７３】
以上の処理を、プログラミング言語Ｃ＋＋のように表現した場合、図２０のようになる。処理の内容は図１９と同様である。なお図２０は、図１９のＸＭＬをデータ構成モジュールにより解釈実行した場合の動作を、Ｃ原語で記述した例として説明するための図であって、本実施形態の発明と直接的に関係するためのものではない。
【００７４】
本実施の形態により、ネットワークデバイス管理システムが所望する一つの情報を得るために、デバイスから複数の情報を取得しなければならない場合に対応できる。例えば、複数の装置がデバイスに設置されていなければ実現しない機能などがあり、この場合、該当する装置が全てデバイスに設定されているかどうかを問い合わせる必要がある場合に対応できる。
【００７５】
［テンプレートの例７］
次に、プリンタに紙の種別を識別する為のＩＤ（整数値）がＭＩＢデータとして実装されている場合に、プリンタから紙を識別する為のＩＤを取得し、整数値であるＩＤを文字列である用紙名称に変換する場合のＸＭＬの記述の例を図２１に示す。なお図２１の例は、プリンタのカセット１にセットされた用紙の種類を取得する例を示している。この場合プリンタのＭＩＢには、オブジェクトＩＤ＝１．３．６．１．４．１．１６０２．１．４．１として、用紙種類を示すコードが格納されている。プリンタ管理アプリケーション等のクライアントからのプリンタ情報取得リクエストにより、取得すべき情報として「用紙種類」を示す種類情報が指定されている場合に、図２１のテンプレートが用いられる。
【００７６】
（１．プリンタ構成情報のデータ形式）
＜Ｃａｓｓｅｔ１ＰａｐｅｒＳｉｚｅＮａｍｅ＞タグ２１００で囲まれた部分は、製本機能の有無を表す変数を定義している。その属性部分であるＴＹＰＥは、クライアントに返すべきデータの型（この例ではＳＴＲＩＮＧ（文字型））を指定する。また、この＜Ｃａｓｓｅｔ１ＰａｐｅｒＳｉｚｅＮａｍｅ＞タグが、プリンタドライバ、プリンタ管理アプリケーションが必要とするプリンタ構成情報のデータ形式に相当する。
【００７７】
（２．ＳＮＭＰプロトコル情報）
図２１の＜ＭＩＢ＞タグ２１０１は、ＳＮＭＰのＧｅｔＲｅｑｕｓｔで取得した値を変数ＰａｐｅｒＳｉｚｅとして保存することを示す。その他の属性は図６と同様である。ＭＩＢタグ２１０１をテンプレートから読み込んだデータ構成モジュールＭ４０９は、ＧｅｔＲｅｑｕｓｔパケットを生成して発行する。そして、それに対応するＧｅｔＲｅｓｐｏｎｓｅパケットを受け取った後、レスポンスに含まれる値を読み取って変数ＰａｐｅｒＳｉｚｅとして保存する。
【００７８】
（３．変換方法）
＜Ｓｕｂｓｔｉｔｕｔｉｏｎ＞タグ２１０２は、属性ｆｒｏｍに指定された値を、ｔｙｐｅ属性に指定したデータ形式に置換してｎａｍｅ属性に指定した識別子に設定することを示す。図２１の場合、ＭＩＢから取得した整数値ＰａｐｅｒＳｉｚｅを文字列ＰａｐｅｒＮａｍｅに置換する。＜ｃａｓｅ＞タグは、＜Ｓｕｂｓｔｉｔｕｔｉｏｎ＞タグのｆｒｏｍ属性に指定した値がｓｒｃ属性に指定した値と一致する場合に、ｄｓｔ属性に指定した値に変換することを示す。すなわち、ＰａｐｅｒＳｉｚｅが１，２，３，４のいずれかであれば、変数ＰａｐｅｒＳｉｚｅＮａｍｅにそれぞれ“Ｂ５”，“Ａ４”，“Ｂ４”，“Ａ３”と保存する。変数ＰａｐｅｒＳｉｚｅＮａｍｅがクライアントに返される。図２１のテンプレートを読んだデータ構成モジュールは以上に定義されたように動作する。
【００７９】
以上説明したように、本実施形態のプリンタ情報取得サービスによれば、クライアントが要求するデバイス情報の種類に応じて、デバイスが処理可能な形式で、要求されたデバイス情報を獲得するためのデータや命令を含むパケットを作成してデバイスに送信する。作成に際しては、ＸＭＬで記述されたテンプレートによる定義にしたがってパケットを作成する。また、デバイスからの要求に応じた応答についてもＭＩＢから読み出された応答の内容を、テンプレートにしたがって、クライアントの要求に応じた形式や意味を持つ情報に変換する。これにより、デバイスの変更、たとえばＭＩＢの構成の変更が生じても、テンプレートをＭＩＢに対応させて変更することで、柔軟にデバイスの変更に対応できるデバイス管理システムが実現できる。すなわち、デバイス管理システムを、デバイスに依存しないシステムとして提供することが可能となった。
【００８０】
また、テンプレートはＸＭＬというテキストベースの形式で記述されるので、パーソナルコンピュータなど普及した道具を用い手テンプレートを作成できる。
【００８１】
さらに、本実施形態のデバイス管理システムにより、デバイスから情報を取得する処理に必要な情報、取得したデータの変換処理に必要な情報をＸＭＬファイルで扱うことにより、管理するデバイスの機種の増加や、扱う情報のデータ形式が変更される際にも、システム本体を変更することなく、ＸＭＬの記述を変更するだけで対応可能にすることができる。また管理するデバイスの仕様が分からない場合でも、デバイスのベンダにＸＭＬファイルを提供してもらうだけで、デバイスを管理することができる。このためデバイス管理システムの柔軟性が高く、管理工数が少なく、かつ、安全性を高めることができる。
【００８２】
［その他の実施形態］
第１の実施形態では、デバイスとしてプリンタを想定しているが、他のデバイスとしてＦＡＸ、複写機、複合機などのほかに、ルータなどのネットワーク機器にも同様に本発明を適用できる。これはあらゆる機器において同様であり、これに限るものではない。
【００８３】
第１の実施形態のデバイス管理システムは、１つのサービス（常駐プロセス）と複数のクライアント（プリンタドライバ、プリンタ管理アプリケーション）を想定しているが、デバイス管理システムは、複数のプロセスで実現されていても、単一のプロセスで実現されていても良い。同様にデバイス管理システムは、複数の端末（ＰＣ）からなる構成であっても、単一の端末からなる構成であっても良い。第１の実施形態では、プリンタから情報を取得するためのプロトコルとしてＳＮＭＰを想定しているが、あらゆる接続形態、通信プロトコルにおいて同様であり、これに限るものではない。
【００８４】
また、クライアントが供給する意味を持つ情報を生成するために、データ変換モジュールは、第１実施形態で説明した以外の変換を行うことができる。たとえば、四則演算、値の置換、値の探索、値の抽出、文字列の置換、文字列の探索、部分文字列の抽出、ブール値の論理演算などがある。
【００８５】
また上記実施形態ではＳＮＭＰの要求パケットとそれに対する応答パケットについて、テンプレートを用いた変換の対象としているが、トラップパケットについても、トラップによりもたらされる情報を、テンプレートを用いて変換することもできる。
【００８６】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００８８】
【図１】第１の実施形態におけるネットワーク構成の概略図である。
【図２】第１の実施形態におけるクライアントＰＣの構成を表すブロック図である。
【図３】第１の実施形態におけるプリンタドライバ、プリンタ管理アプリのプリンタの構成情報を表示するＵＩを示す図である。
【図４】第１の実施形態におけるプリンタ情報取得サービスのモジュール構成を表す図である。
【図５】第１の実施形態におけるプリンタ情報取得サービスの動作を表すフローチャートである。
【図６】ＲＡＭ容量を取得する為のＸＭＬファイルの記述例を示す図である。
【図７】図６のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図８】プリンタから取得できるＲＡＭ容量テーブルを示す図である。
【図９】総ＲＡＭ容量を取得する為のＸＭＬファイルの記述例を示す図である。
【図１０】図９のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図１１】プリンタから取得できるメモリ管理テーブルを示す図である。
【図１２】総ＲＡＭ容量を取得する為のＸＭＬファイルの記述例を示す図である。
【図１３】図１２のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図１４】プリンタから取得できるオプションユニットテーブルを示す図である。
【図１５】プリンタからフィニッシャ名称を取得する為のＸＭＬファイルの記述例を示す図である。
【図１６】図１５のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図１７】プリンタからフィニッシャ名称を取得する為のＸＭＬファイルの記述例を示す図である。
【図１８】図１７のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図１９】プリンタの製本機能の有り無しを調べる為のＸＭＬファイルの記述例を示す図である。
【図２０】図１９のＸＭＬファイルにおける変換処理をプログラミング言語で表現した例を示す図である。
【図２１】プリンタから用紙サイズ名称を得る為のＸＭＬファイルの記述例を示す図である。
【図１】
2005258691.tif 000003
【図２】
2005258691.tif 000004
【図３】
2005258691.tif 000005
【図４】
2005258691.tif 000006
【図５】
2005258691.tif 000007
【図６】
2005258691.tif 000008
【図７】
2005258691.tif 000009
【図８】
2005258691.tif 000010
【図９】
2005258691.tif 000011
【図１０】
2005258691.tif 000012
【図１１】
2005258691.tif 000013
【図１２】
2005258691.tif 000014
【図１３】
2005258691.tif 000015
【図１４】
2005258691.tif 000016
【図１５】
2005258691.tif 000017
【図１６】
2005258691.tif 000018
【図１７】
2005258691.tif 000019
【図１８】
2005258691.tif 000020
【図１９】
2005258691.tif 000021
【図２０】
2005258691.tif 000022
【図２１】
2005258691.tif 000023