(57)【要約】【課題】ネットワーク型プラグアンドプレイに対応したネットワークにおいて、サーバイスデバイスが正常に稼働していない場合の通信効率の低下を低減できる技術を提供する。【解決手段】デバイスユニットは、Ｎ個（Ｎは１以上の整数）のサービスデバイスを有する。ネットワーク型プラグアンドプレイに対応したネットワーク中継装置は、デバイスユニットに含まれるサービスデバイスを記述するデバイスディスクリプションを作成し、ネットワーク上のクライアントからの要求に応じて前記デバイスディスクリプションを供給するディスクリプション作成部を備える。このディスクリプション作成部は、デバイスユニットが有するＮ個のサービスデバイスのうちの１つ以上のサービスデバイスが稼働不能なときに、稼働不能なサービスデバイスの記述を含まないデバイスディスクリプションを作成してクライアントに供給する。【選択図】図１２
2007156691.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のクライアントからの要求に応じてサービスを提供するＮ個（Ｎは１以上の整数）のサービスデバイスを有するデバイスユニットと、前記ネットワークとの間を中継するためのネットワーク型プラグアンドプレイに対応したネットワーク中継装置であって、
前記ネットワーク中継装置に接続されている前記デバイスユニットに含まれるサービスデバイスを記述するデバイスディスクリプションを作成し、ネットワーク上のクライアントからの要求に応じて前記デバイスディスクリプションを供給するディスクリプション作成部を備え、
前記ディスクリプション作成部は、前記デバイスユニットが有する前記Ｎ個のサービスデバイスのうちの１つ以上のサービスデバイスが稼働不能なときに、稼働不能なサービスデバイスの記述を含まないデバイスディスクリプションを作成して前記クライアントに供給する、ネットワーク中継装置。
【請求項２】
請求項１記載のネットワーク中継装置であって、
前記ディスクリプション作成部は、前記Ｎ個のサービスデバイスのすべてが稼働不能なときには、クライアントに提供するサービスを持たないベーシックデバイスのみを有するように前記デバイスディスクリプションを作成する、ネットワーク中継装置。
【請求項３】
請求項２記載のネットワーク中継装置であって、
前記稼働不能なサービスデバイスは、
（ｉ）前記デバイスユニットの電源オフと、
（ｉｉ）前記デバイスユニットと前記ネットワーク中継装置との間の接続の喪失と、
（ｉｉｉ）個々のサービスデバイスにおける不具合の発生によるサービスデバイスの動作不能と、
のいずれかによって発生する、ネットワーク中継装置。
【請求項４】
請求項１ないし３のいずれかに記載のネットワーク中継装置であって、
前記ディスクリプション作成部を含み、前記デバイスユニットとの間で情報を交換することによって前記デバイスユニットを動作させるデバイス制御部と、
前記ネットワークと前記デバイス制御部との間に接続され、メッセージヘッダとメッセージボディとを有するメッセージを前記ネットワーク上のクライアントから受信するとともに、前記メッセージボディの情報を前記デバイス制御部に転送するネットワークプロトコル制御部と、
を備え、
前記ネットワークプロトコル制御部は、前記クライアントから受信した前記メッセージボディの内容を解釈すること無く前記ネットワーク型プラグアンドプレイのプロトコルに従って前記メッセージヘッダを解釈するとともに、前記ネットワーク型プラグアンドプレイのプロトコルとは異なる通信プロトコルに従って前記メッセージボディを前記デバイス制御部に送信し、
前記デバイス制御部は、前記ネットワークプロトコル制御部から受信した前記メッセージボディの内容を解釈するとともに、前記解釈の結果に応じて前記サービスデバイスにサービスを実行させる、ネットワーク中継装置。
【請求項５】
ネットワーク型プラグアンドプレイプロトコルに従って、ネットワーク上のクライアントからの要求に応じてサービスを提供するＮ個（Ｎは１以上の整数）のサービスデバイスを有するデバイスユニットと、前記ネットワークとの間を中継する方法であって、
（ａ）前記ネットワークと前記デバイスユニットとの間に接続されたネットワーク中継装置が、前記ネットワーク中継装置に接続されている前記デバイスユニットに含まれるサービスデバイスを記述するデバイスディスクリプションを作成する工程と、
（ｂ）前記ネットワーク中継装置が、ネットワーク上のクライアントからの要求に応じて前記デバイスディスクリプションを供給する工程と、
を備え、
前記工程（ａ）は、前記デバイスユニットが有する前記Ｎ個のサービスデバイスのうちの１つ以上のサービスデバイスが稼働不能なときに、稼働不能なサービスデバイスの記述を含まないデバイスディスクリプションを作成することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク型プラグアンドプレイに対応したネットワーク中継装置の制御技術に関する。
【背景技術】
【０００２】
プラグアンドプレイは、よく知られているように、コンピュータの起動後に、周辺装置を任意のタイミングでコンピュータに接続したり、コンピュータから切断したりすることができる技術である。近年では、プラグアンドプレイ技術をネットワークに適用したものとして、ユニバーサルプラグアンドプレイ（以下、「ＵＰｎＰ」と呼ぶ。ＵＰｎＰは UPnP Implementers Corporationの商標）が開発されてきている。ＵＰｎＰを用いると、ネットワーク装置を任意のタイミングでネットワークに接続したり、ネットワークから切断したりすることができる。本明細書では、ＵＰｎＰのように、ネットワークにおいてプラグアンドプレイを実現するアーキテクチャを、「ネットワーク型プラグアンドプレイ」と呼ぶ。
【０００３】
【特許文献１】特開２００１−２９０７２４
【０００４】
ＵＰｎＰ対応のネットワーク装置は、種々のサービスデバイスとして機能することが可能である。ここで、「サービスデバイス」とは、外部からの要求に応じてサービスを提供するデバイスを意味している。サービスデバイスは、プリンタや、スキャナ、ファクシミリ、コピー機、記憶装置、カメラ、時計などの種々の装置（「デバイスユニット」と呼ぶ）として実現可能である。また、１つのデバイスユニットで複数のサービスデバイスの機能を実現することも可能である。
【０００５】
ところで、ＵＰｎＰ非対応のデバイスユニットも、ＵＰｎＰプロトコルに対応したネットワーク中継装置を用いることによって、ＵＰｎＰプロトコル対応のデバイスとして利用したいという要望がある。しかし、従来は、このような中継装置をどのように実現すべきかについては検討が十分になされていないのが実情であった。例えば、サービスデバイスが正常に稼働していない場合に、他のクライアントにどのようにその状況を通知するかに関しては、十分に工夫されていなかった。この結果、サービスデバイスが正常に稼働していないときにも、クライアントがそのサービスデバイスを利用しようとするために無駄な通信が発生してしまい、ネットワークの通信効率を低下させるという問題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、ネットワーク型プラグアンドプレイに対応したネットワークにおいて、サーバイスデバイスが正常に稼働していない場合の通信効率の低下を低減できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の装置は、ネットワーク上のクライアントからの要求に応じてサービスを提供するＮ個（Ｎは１以上の整数）のサービスデバイスを有するデバイスユニットと、前記ネットワークとの間を中継するためのネットワーク型プラグアンドプレイに対応したネットワーク中継装置であって、
前記ネットワーク中継装置に接続されている前記デバイスユニットに含まれるサービスデバイスを記述するデバイスディスクリプションを作成し、ネットワーク上のクライアントからの要求に応じて前記デバイスディスクリプションを供給するディスクリプション作成部を備え、
前記ディスクリプション作成部は、前記デバイスユニットが有する前記Ｎ個のサービスデバイスのうちの１つ以上のサービスデバイスが稼働不能なときに、稼働不能なサービスデバイスの記述を含まないデバイスディスクリプションを作成して前記クライアントに供給する。
【０００８】
この装置によれば、稼働不能なサービスデバイスの記述を含まないデバイスディスクリプションを作成してクライアントに供給するので、クライアントはこのデバイスディスクリプションから稼働不能なサービスデバイスを認識することができる。従って、サーバイスデバイスが正常に稼働していない場合に、クライアントがそのサービスデバイスにアクセスすることを防止できるので、通信効率の低下を低減できる。
【０００９】
前記ディスクリプション作成部は、前記Ｎ個のサービスデバイスのすべてが稼働不能なときには、クライアントに提供するサービスを持たないベーシックデバイスのみを有するように前記デバイスディスクリプションを作成するものとしてもよい。
【００１０】
この構成によれば、１つのデバイスユニット内のすべてのサービスデバイスが稼働不能であることをクライアントがデバイスディスクリプションから認識できるので、不要なアクセスを防止でき、通信効率の低下を低減できる。
【００１１】
前記稼働不能なサービスデバイスは、
（ｉ）前記デバイスユニットの電源オフと、
（ｉｉ）前記デバイスユニットと前記ネットワーク中継装置との間の接続の喪失と、
（ｉｉｉ）個々のサービスデバイスにおける不具合の発生によるサービスデバイスの動作不能と、
のいずれかによって発生するものとしてもよい。
【００１２】
前記ネットワーク中継装置は、
前記ディスクリプション作成部を含み、前記デバイスユニットとの間で情報を交換することによって前記デバイスユニットを動作させるデバイス制御部と、
前記ネットワークと前記デバイス制御部との間に接続され、メッセージヘッダとメッセージボディとを有するメッセージを前記ネットワーク上のクライアントから受信するとともに、前記メッセージボディの情報を前記デバイス制御部に転送するネットワークプロトコル制御部と、
を備え、
前記ネットワークプロトコル制御部は、前記クライアントから受信した前記メッセージボディの内容を解釈すること無く前記ネットワーク型プラグアンドプレイのプロトコルに従って前記メッセージヘッダを解釈するとともに、前記ネットワーク型プラグアンドプレイのプロトコルとは異なる通信プロトコルに従って前記メッセージボディを前記デバイス制御部に送信し、
前記デバイス制御部は、前記ネットワークプロトコル制御部から受信した前記メッセージボディの内容を解釈するとともに、前記解釈の結果に応じて前記サービスデバイスにサービスを実行させるものとしてもよい。
【００１３】
この構成によれば、ネットワークプロトコル制御部がメッセージボディの内容を解釈すること無くヘッダを解釈してメッセージボディをデバイス制御部に送信するので、ネットワークプロトコル制御部における制御が、デバイスユニットに実装されているサービスデバイスの種類や数に依存しない。この結果、ネットワークプロトコル制御部における制御を単純化することができる。
【００１４】
なお、本発明は、種々の形態で実現することが可能であり、例えば、ネットワーク装置、ネットワークプロトコル制御装置、それらの装置の制御方法及び制御装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００１５】
次に、本発明の実施の形態を以下の順序で説明する。
A．用語の説明：
B．システムの概要：
C．複合機のデバイス構成及びデバイスディスクリプション：
D．第１実施例：
E．第２実施例：
F．第３実施例：
G．変形例：
【００１６】
A．用語の説明：
以下の説明で使用する用語の意味は以下の通りである。
・ＤＨＣＰ（Dynamic Host Configuration Protocol）：ダイナミックホストコンフィギュレーションプロトコル。動的にＩＰアドレスを割り当てるプロトコル。
・ＧＥＮＡ（General Event Notification Architecture）：一般イベント通知アーキテクチャ。ＵＰｎＰアーキテクチャにおいてイベントを発行する際に使用される。
・ＨＴＴＰ（HyperText Transfer Protocol）：ハイパーテキスト転送プロトコル。
・ＨＴＴＰＭＵ（HTTP Multicast over UDP）：ＵＤＰ（User Datagram Protocol）を用いたＨＴＴＰマルチキャスト。
・ＨＴＴＰＵ（HTTP(unicast) over UDP）：ＵＤＰを用いたＨＴＴＰユニキャスト。
・ＭＦＰ（Multi Function Peripheral）：複数のデバイスの機能を有する複合周辺装置。
・ＳＯＡＰ（Simple Object Access Protocol）：シンプルオブジェクトアクセスプロトコル。ＵＰｎＰアーキテクチャにおいて、ＲＰＣ（リモートプロシージャコール）によるアクションの要求とレスポンスとに使用される。
・ＳＳＤＰ（Simple Service Discovery Protocol）：シンプルサービス検出プロトコル。ＵＰｎＰアーキテクチャにおいて、サービスのディスカバリ（検出）に使用される。
・ＵＰｎＰ（Universal Plug and Play）：ユニバーサルプラグアンドプレイ（ＵＰｎＰは UPnP Implementers Corporationの商標）。
・ＵＲＩ（Uniform Resource Identifier）：ユニフォームリソース識別子。ＵＲＬ（Uniform Resouce Locator）の上位概念であり、リソースの固有の位置を示す識別子。
・ＸＨＴＭＬ（eXtensible HyperText Markup Language）：拡張ハイパーテキストマークアップ言語。ＨＴＭＬと互換性を有する文書記述言語の一種であり、ＸＭＬの実装の一形態である。後述するＸＨＴＭＬ−ｐｒｉｎｔは、ＸＨＴＭＬ文書を印刷するための仕様である。
・ＸＭＬ（eXtensible Markup Language）：拡張マークアップ言語。
【００１７】
なお、ＵＰｎＰでは上述した多数のプロトコルが使用されるが、以下ではこれらを総称して「ＵＰｎＰプロトコル」と呼ぶ。
【００１８】
B．システムの概要：
図１は、本発明の実施例を適用するネットワークシステムの構成を示す概念図である。このネットワークシステムは、パーソナルコンピュータ１００と、デジタルカメラ１１０と、デジタルＴＶセット１２０と、画像サーバ１３０と、中継ユニット６００とがＬＡＮを介して相互に接続された構成を有している。中継ユニット６００は、複合機８００に接続されている。複合機８００自体はＵＰｎＰプロトコルに非対応であるが、中継ユニット６００がＵＰｎＰプロトコルに従った処理を実行する。従って、中継ユニット６００と複合機８００とで構成される装置９００は、ＵＰｎＰ対応のネットワーク装置として機能することができる。ＬＡＮは、ＩＥＥＥ８０２．３のような有線ネットワークでも、ＩＥＥＥ８０２．１１ｂ／ｇ／ａなどの無線ネットワークでもよい。デジタルカメラ１１０と、デジタルＴＶセット１２０とは、ＵＰｎＰ対応のネットワーク装置である。デジタルカメラ１１０とＴＶセット１２０は、ＵＰｎＰアーキテクチャにおけるコントロールポイント１１０Ｃ，１２０Ｃを備えている。ＵＰｎＰアーキテクチャ及びコントロールポイントについては後述する。パーソナルコンピュータ１００と画像サーバ１３０もこのネットワークシステムの構成要素の１つであるが、ＵＰｎＰには対応していない。
【００１９】
パーソナルコンピュータ１００は、プリンタドライバ１００Ｄを用いて画像の印刷データを作成し、ＬＡＮを介してこの印刷データを中継ユニット６００を介して複合機８００に転送して印刷を実行させる機能を有している。この印刷処理の際には、複合機８００は通常のネットワークプリンタとして機能する。一方、コントロールポイント（例えば１１０Ｃ）からの要求に従って印刷を行う場合には、複合機８００と中継ユニット６００とで構成されるネットワーク装置９００がＵＰｎＰ対応のプリンタデバイスとして機能する。
【００２０】
中継ユニットは、ＭＦＰサーバ３００と、ＭＦＰデバイス制御ユニット７００とを有している。ＭＦＰサーバ３００は、ＬＡＮ上の他の装置とＭＦＰデバイス制御ユニット７００との間で交換されるメッセージを仲介するネットワークプロトコル制御部３０２としての機能を有している。後述するように、ＭＦＰサーバ３００は、典型的な場合において、メッセージの転送の際にメッセージヘッダに関してＵＰｎＰのプロトコルを解釈するが、メッセージボディの解釈や処理は行わない。
【００２１】
ＭＦＰデバイス制御ユニット７００は、ディスクリプション作成モジュール７１０と、Ｗｅｂアプリケーションモジュール７２０とを有している。ディスクリプション作成モジュール７１０は、ＵＰｎＰプロトコルで使用されるデバイスディスクリプションやサービスディスクリプションを作成し、クライアント（コントロールポイント）からの要求に応じてこれらのディスクリプションを提供する機能を有する。Ｗｅｂアプリケーションモジュール７２０は、ネットワーク装置９００の設定や利用の際に使用するための各種のＷｅｂページを作成するとともに、クライアントからの要求に応じてＷｅｂページを提供する機能を有する。これらのモジュール７１０，７２０は、コンピュータプログラムとして実装されているが、ハードウェア回路として実装することも可能である。
【００２２】
ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間は、ＵＳＢ（Universal Serial Bus）で接続されており、また、ＭＦＰデバイス制御ユニット７００と複合機８００との間もＵＳＢで接続されている。但し、ＵＳＢ以外の他の各種の物理的インタフェースを利用することも可能である。また、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間は、ＵＰｎＰプロトコルとは異なる通信プロトコルで接続することが可能である。
【００２３】
複合機８００は、クライアントにサービスを提供するためのサービスデバイス８１０，８２０，８３０と、制御部８４０とを備えている。ここでは、サービスデバイスとして、印刷エンジン８１０とスキャナエンジン８２０とＰＣカードインタフェース８３０が実装されている。なお、複合機８００は、少なくとも１つのサービスデバイスを有していれば良く、一般には、Ｎ個（Ｎは１以上の整数）のサービスデバイスを有するものとして構成される。なお、複合機８００を「デバイスユニット」とも呼ぶ。
【００２４】
印刷エンジン８１０は、与えられた印刷データに応じて印刷を実行する印刷機構である。本実施例では、コントロールポイント１１０Ｃ，１２０ＣがＵＰｎＰプロトコルに従ってＸＨＴＭＬデータを複合機８００に送信して印刷を行う場合には、ＭＦＰデバイス制御ユニット７００がＸＨＴＭＬデータを解釈し、色変換やハーフトーン処理を実行して印刷データを作成し、この印刷データを印刷エンジン８１０に供給する。但し、ＭＦＰデバイス制御ユニット７００の代わりに、制御部８４０又は印刷エンジン８１０が色変換やハーフトーン処理の機能を有するように構成することも可能である。一方、パーソナルコンピュータ１００から印刷を行う場合は、プリンタドライバ１００Ｄが生成するページ記述言語をＭＦＰデバイス制御ユニット７００が解析して印刷データを作成し、印刷エンジン８１０に供給する。なお、本明細書において、「印刷データ」とは印刷媒体上におけるドットの形成状態を示すドットデータによって印刷物を表すデータを意味している。印刷データは、プリンタ固有の制御コマンドで構成されている。ＸＨＴＭＬは、印刷データには該当せず、文書を記述する文書記述言語である。スキャナエンジン８２０は、画像をスキャンして画像データを生成する機構である。
【００２５】
ＵＰｎＰは、ネットワーク装置を任意のタイミングでネットワークに接続したり、ネットワークから切断したりすることを実現するアーキテクチャである。ＵＰｎＰネットワークは、コントロールポイント１１０Ｃ，１２０Ｃと、サービスデバイス８１０，８２０，８３０とで構成される。ここで、「サービスデバイス」とは、サービスを提供する装置を意味している。本明細書においては、特に断らない限り、「デバイス」と「サービスデバイス」は同義語として使用されている。「コントロールポイント」は、ネットワーク上の他のデバイスを検出したり制御したりするコントローラを意味しており、サービスデバイスに対するクライアントとして機能する。ＵＰｎＰ対応のネットワーク装置が有する各種の機能については後述する。
【００２６】
図２は、中継ユニット６００内のＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の内部構成を示すブロック図である。ＭＦＰサーバ３００は、中央制御部（ＣＰＵ）３１０と、ＲＡＭ３２０と、ＲＯＭ３３０と、ネットワーク制御部３４０と、ＵＳＢホスト制御部３５０とを有している。ネットワーク制御部３４０は、コネクタ３４２を介して有線ネットワークに接続される。ＵＳＢホスト制御部３５０は、ルートハブ３５２を有しており、ルートハブ３５２には２つのＵＳＢコネクタ３５４，３５６が設けられている。第１のＵＳＢコネクタ３５４は、ＵＳＢケーブルを介してＭＦＰデバイス制御ユニット７００のＵＳＢコネクタ４６２に接続されている。第２のＵＳＢコネクタ３５６には、追加のデバイス（例えば無線ＬＡＮネットワークへ通信するための無線通信回路）を接続可能である。
【００２７】
ＭＦＰデバイス制御ユニット７００は、中央制御部（ＣＰＵ）４１０と、ＲＡＭ４２０と、ＲＯＭ４３０と、ＵＳＢデバイス制御部４６０と、ＵＳＢホスト制御部５１０とを有している。第１のＵＳＢデバイス制御部４６０は、ＵＳＢコネクタ４６２を介してＭＦＰサーバ３００のＵＳＢホスト制御部３５０に接続されている。ＵＳＢホスト制御部５１０は、ルートハブ５１２を有しており、ルートハブ５１２にはＵＳＢコネクタ５１４が設けられている。このコネクタ５１４には、複合機８００（デバイスユニット）が接続されている。
【００２８】
ＭＦＰサーバ３００の中央制御部３１０とネットワーク制御部３４０とＵＳＢホスト制御部３５０は、図１におけるネットワークプロトコル制御部３０２としての機能を実現する。より具体的には、ネットワーク制御部３４０は、各種のネットワークプロトコルに従ってメッセージの送受信を行う。また、中央制御部３１０は、ＵＰｎＰのプロトコルを解釈して転送先を決定する。ＵＳＢホスト制御部３５０は、ＭＦＰデバイス制御ユニット７００との間でメッセージを転送する。これらの制御部３１０，３４０，３５０は、メッセージボディの解釈や処理は行わずにメッセージを転送している。
【００２９】
ＭＦＰデバイス制御ユニット７００のＵＳＢデバイス制御部４６０は、ＵＳＢの転送プロトコルに従ってメッセージの送受信を行う。また、中央制御部４１０は、ＭＦＰサーバ３００を介して転送されたメッセージの内容を解釈し、メッセージの内容に応じた処理を実行して制御データを作成し、その制御データを複合機８００に転送する。複合機８００内のサービスデバイス８１０，８２０，８３０の動作は、この制御データに従って制御される。なお、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００を分離せずに、１つのユニットによってＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の両方の機能を実現するようにしてもよい。
【００３０】
なお、複合機８００には、ユーザが種々の設定を行う際に使用する操作パネルと表示部（モニタ）が設けられているが、これらは図示が省略されている。
【００３１】
図３は、ＭＦＰサーバ３００の各種のプロトコルの階層構造を示すブロック図である。ＭＦＰサーバ３００は、各種のネットワークプロトコルを解釈するためのサービスプロトコル解釈部１０００を備えている。このサービスプロトコル解釈部１０００には、ネットワークアーキテクチャの下位層と、ＵＳＢアーキテクチャの下位層とが存在する。ネットワークアーキテクチャの下位層としては、ＵＰｎＰデバイスアーキテクチャ１１００と、３つの非ＵＰｎＰデバイス機能部１２１０，１２２０，１２３０が設けられている。これらのさらに下位には、ＵＤＰ層又はＴＣＰ層と、インターネットプロトコル（ＩＰ）層と、ドライバ層と、ネットワークインタフェース層と、が存在する。
【００３２】
サービスプロトコル解釈部１０００のＵＳＢアーキテクチャの下位層としては、Ｄ４パケット処理部１３００及びＵＳＢプリンタクラスドライバ１３１０と、ＵＳＢスキャナクラスドライバ１３２０と、ＵＳＢストレージクラスドライバ１３３０とが設けられている。これらの３つのデバイスドライバ１３１０，１３２０，１３３０の下位には、ＵＳＢシステムソフトウェアとＵＳＢホストインタフェース（ハードウェア）とが存在する。なお、この図からも理解できるように、ＵＳＢのプリンタクラスドライバ１３１０は、いわゆる「Ｄ４パケット」（ＩＥＥＥ１２８４．４に即したパケット構造）を利用してデータ転送を行うのに対して、スキャナクラスドライバ１３２０やストレージクラスドライバ１３３０ではＤ４パケットは利用されていない。この理由は、標準的なＵＳＢのデバイスクラスのうちで、プリンタクラスではＤ４パケットが上位プロトコルとして採用されているが、スキャナクラス及びストレージクラスでは、Ｄ４パケットを用いない制御スタック（アプリケーション層から物理層に至るまでのアーキテクチャ）がＯＳの標準となっているからである。
【００３３】
ＵＰｎＰデバイスアーキテクチャは、ＨＴＴＰＭＵや、ＨＴＴＰＵ，ＳＯＡＰ／ＨＴＴＰ，ＨＴＴＰなどの各種のプロトコルに従って構成されている。ＵＰｎＰは、これらのプロトコルを用いて、以下のような各種の処理を実現している。
【００３４】
（１）アドレッシング：
ＵＰｎＰデバイス（以下、単に「デバイス」と呼ぶ）がネットワークに接続すると、アドレッシングによってネットワークアドレス（ＩＰアドレス）を取得する。アドレッシングには、ＤＨＣＰサーバまたはAuto-IPが利用される。ネットワークにＤＨＣＰサーバが設けられている場合には、デバイスはＤＨＣＰサーバによって割り当てられるＩＰアドレスを使用する。ＤＨＣＰサーバが無い場合には、Auto-IPと呼ばれる自動ＩＰアドレッシング機能を用いて、デバイスが自分のアドレスを決定する。なお、本実施例では、中継ユニット６００と複合機８００とで構成されるネットワーク装置９００に対して１つのＩＰアドレスのみが割り当てられ、この装置９００全体が単一のネットワーク装置として認識される。
【００３５】
（２）ディスカバリ（検出）：
ディスカバリは、コントロールポイントが、デバイスがどこにいるかを見つけ出す処理である。ディスカバリは、コントロールポイントがディスカバリメッセージをマルチキャストすることによって実現することができ、あるいは、デバイスがネットワークに参加したときに、その旨をコントロールポイントにアドバタイズすることによっても実現できる。ディスカバリは、ＨＴＴＰＭＵ／ＳＳＤＰやＨＴＴＰＵ／ＳＳＤＰを用いて行われる。ディスカバリの結果、コントロールポイントとデバイスがピアツーピアで処理を進められるようになる。
【００３６】
（３）ディスクリプション：
デバイスの構成の詳細は、デバイスディスクリプションとしてＸＭＬで記述されている。また、デバイスのサービスの詳細は、サービスディスクリプションとしてＸＭＬで記述されている。これらのディスクリプションは、デバイスによって所有されており、コントロールポイントに提供される。コントロールポイントは、これらのディスクリプションを参照することによって、デバイスやサービスの詳細を知ることができる。デバイスディスクリプションの例については後述する。
【００３７】
（４）コントロール：
コントロールは、コントロールポイントが、アクション要求を含む制御メッセージをデバイスに転送して、デバイスの制御を行う処理である。コントロールは、ＨＴＴＰ／ＳＯＡＰを用いて行われる。
【００３８】
（５）イベント：
所定のイベントが発生すると、デバイス内のサービスが、コントロールポイントにイベントの発生を通知する。イベント発生の通知を受けるコントロールポイントは、そのサービスに「サブスクライブ（購読）」する。イベントは、サブスクライブしているコントロールポイントに転送される。イベントの通知は、ＨＴＴＰ／ＧＥＮＡを用いて行われる。
【００３９】
（６）プレゼンテーション：
プレゼンテーションは、デバイスディスクリプションに登録されているプレゼンテーション用のＵＲＬからコントロールポイントがＨＴＭＬで記述されたプレゼンテーション用ページを取得する処理である。このプレゼンテーションによって、例えばコントロールポイントがデバイスの各種の状態を表示することができる。
【００４０】
なお、本発明はＵＰｎＰの将来のバージョンにも適用可能である。また、ネットワーク型プラグアンドプレイとして、アドレッシング（自動的なＩＰアドレス決定）と、デバイスのディスカバリにより、任意のコントロールポイントとデバイスとがピアツーピアで通信が可能で、コントロールポイントとデバイスがメッセージの交換を行うアーキテクチャであれば、ＵＰｎＰ以外のネットワーク型プラグアンドプレイ仕様にも本発明を適用することが可能である。
【００４１】
図４は、ＭＦＰデバイス制御ユニット７００の各種プロトコルの階層構造を示すブロック図である。ＭＦＰデバイス制御ユニット７００は、ＵＰｎＰデバイス機能部２４００と、３つの非ＵＰｎＰデバイス機能部２２１０，２２２０，２２３０とを有している。ＵＰｎＰデバイス機能部２４００は、３つのＵＰｎＰデバイスモジュール（図１の３つのデバイス８１０，８２０，８３０に相当する）を含んでいる。各デバイスモジュール内には、サービスを実行するサービスモジュールが含まれているが、ここでは図示が省略されている。ＵＰｎＰデバイス機能部２４００と非ＵＰｎＰプリンタ機能部２２１０の下位には、Ｄ４パケット処理部２３００及びＵＳＢプリンタクラスドライバ２３１０が存在する。非ＵＰｎＰスキャナ機能部２２２０及び非ＵＰｎＰストレージ機能部２２３０の下位には、ＵＳＢスキャナクラスドライバ２３２０とＵＳＢストレージクラスドライバ２３３０が存在する。３つのデバイスドライバ２３１０，２３２０，２３３０の下位には、ＵＳＢ論理デバイスとＵＳＢデバイスインタフェース（ハードウェア）とが存在する。この階層構造からも理解できるように、ＵＰｎＰスキャナデバイスやＵＰｎＰストレージデバイスがコントロールポイントに対してサービスを行う場合には、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００間では、ＵＳＢプリンタクラスドライバ２３１０を利用してデータ転送が行われる。従って、ＵＰｎＰスキャナデバイスやＵＰｎＰストレージデバイス用のデータ転送の際にも、Ｄ４パケットを利用することができる。
【００４２】
図４に示すように、ＭＦＰサーバ３００のＵＳＢプリンタクラスドライバ１３１０とＭＦＰデバイス制御ユニット７００のＵＳＢプリンタクラスドライバ２３１０の間には、７種類のＵＰｎＰ用双方向通信チャンネルが設けられている。これらは、Ｄ４パケットを用いた論理チャンネルであり、複合機８００がＵＰｎＰデバイスとして機能する場合に使用される。サービスプロトコル解釈部１０００とＵＰｎＰデバイス機能部２４００の間にも、プリンタクラスドライバ１３１０，２３１０の間の７種類の論理チャンネルに対応する７種類のＵＰｎＰ用論理チャンネルが存在するが、図４では図示が省略されている。以下ではまず、Ｄ４パケットを用いた論理チャンネルについて説明する。
【００４３】
図５は、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００間のＵＳＢ接続におけるインタフェース／エンドポイント構成と論理チャンネルの構成とを示す説明図である。一般に、ＵＳＢデバイスは、インタフェースとエンドポイントとを有している。ＵＳＢの転送は、ＵＳＢのホストとエンドポイントとの間で行われる。すなわち、「エンドポイント」とは、ホストと通信を行う論理的なリソースである。図５（Ａ）の例では、７つのエンドポイントＥＰ＃０〜ＥＰ＃６が示されている。コントロールエンドポイントＥＰ＃０は、標準デバイスリクエストの送受信を行うためのエンドポイントである。「標準デバイスリクエスト」とは、すべてのＵＳＢでサポートする必要がある基本的なリクエストである。従って、コントロールエンドポイントＥＰ＃０は、１つのＵＳＢデバイスに必ず１つ設けられている。
【００４４】
プリンタ用のバルクアウトエンドポイントＥＰ＃１とバルクインエンドポイントＥＰ＃２は、印刷エンジン８１０用のメッセージの受信と送信を行うためのエンドポイントである。同様に、スキャナ用のバルクアウトエンドポイントＥＰ＃３とバルクインエンドポイントＥＰ＃４は、スキャナエンジン８２０用のメッセージの受信と送信を行うためのエンドポイントである。また、ストレージ用のエンドポイントＥＰ＃５，ＥＰ＃６は、メモリーカード（ＰＣカードインタフェース８３０）用のメッセージの受信と送信を行うためのエンドポイントである。一般に、ＵＳＢデバイスでは、コントロールエンドポイントＥＰ＃０以外のエンドポイントは、論理的なインタフェースによって区分されている。図５（Ａ）の例では、論理的なインタフェースとして、プリンタインタフェースＩＦ＃０とスキャナインタフェースＩＦ＃１とストレージインタフェースＩＦ＃２とが設けられている。
【００４５】
本実施例では、図５（Ｂ）に示すように、プリンタインタフェースＩＦ＃０に９つの論理的なチャンネルが設けられている。これらの各チャンネルの機能は以下の通りである。
【００４６】
（１）PRINT-DATAチャンネルＣＨ＃１１：
ネットワーク上のパーソナルコンピュータ１００から、印刷ポート（ＬＰＲポートに従ったポート番号又はボート番号９１００）を用いてプリンタドライバ１００Ｄ（図１）から転送される印刷データの送受信を行うためのチャンネル。図４には図示されていない。
【００４７】
（２）PRINT-STATUSチャンネルＣＨ＃１２：
ＭＦＰサーバ３００が、印刷エンジン８１０の状態を示す情報を送受信するためのチャンネルであり、ＳＮＭＰ等のプロトコルにより、ＭＦＰサーバ３００からネットワーク上のパーソナルコンピュータ１００に対して提供される。図４には図示されていない。
【００４８】
（３）UPNP-LOCALCONTROLチャンネルＣＨ＃２１：
ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の間において、ＭＦＰサーバ３００を要求者とし、ＭＦＰデバイス制御ユニット７００を応答者とする通信を行うためのＵＰｎＰ用チャンネル。ＭＦＰサーバ３００は、このチャンネルを用いて、ＭＦＰデバイス制御ユニット７００から各種の情報を取得することができる。
【００４９】
（４）UPNP-LOCALEVENTチャンネルＣＨ＃２２：
ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の間において、ＭＦＰデバイス制御ユニット７００を要求者とし、ＭＦＰサーバ３００を応答者とする通信を行うためのＵＰｎＰ用チャンネル。ＭＦＰデバイス制御ユニット７００は、このチャンネルを用いて、例えばユーザが複合機８００で行った設定変更の内容をＭＦＰサーバ３００に通知することができ、また、複合機８００が電源ＯＦＦするときに、ＵＰｎＰプロトコルの終了要求をＭＦＰサーバ３００に通知することができる。
【００５０】
（５）UPNP-PRESENTATIONチャンネルＣＨ＃２３：
ＵＰｎＰのプレゼンテーションデータ（Ｗｅｂページデータ）を送受信するためのチャンネル。なお、コントロールポイントの要求に応じてプレゼンテーションデータをＭＦＰデバイス制御ユニット７００からコントロールポイントに送信するためのチャンネル（ダウンチャンネル）と、新たなプレゼンテーションデータをコントロールポイントからＭＦＰデバイス制御ユニット７００にアップロードするためのチャンネル（アップチャンネル）とを別々に設けるようにしたもよい。
【００５１】
（６）UPNP-CONTROLチャンネルＣＨ＃２４：
ＵＰｎＰにおいて、コントロールポイントから発信されたアクションに関連するデータを送受信するためのチャンネル。なお、上述のUPNP-LOCALCONTROLチャンネルに”LOCAL”という接頭語が付されている理由は、UPNP-LOCALTONTROLチャンネルが、コントロールポイントからのアクションの内容の転送には使用されないからである。換言すれば、UPNP-CONTROLチャンネルＣＨ＃２４は、コントロールポイントから発信されたアクションに関連するデータの送受信のためにのみ使用される。
【００５２】
（７）UPNP-EVENTチャンネルＣＨ＃２５：
ＵＰｎＰにおいて、イベントをサブスクライブしているコントロールポイントに送信するためのチャンネル。上述のUPNP-LOCALEVENTチャンネルに”LOCAL”という接頭語が付されている理由は、このUPNP-LOCALEVENTチャンネルが、コントロールポイントへのイベントの送信には使用されないからである。換言すれば、UPNP-EVENTチャンネルＣＨ＃２５は、複合機８００で発生したイベントをコントロールポイントに送信するためにのみ使用される。
【００５３】
（８）UPNP-DOWNCONTENTxチャンネルＣＨ＃２６ｘ：
ＵＰｎＰにおいて、コンテンツデータをコントロールポイントからＭＦＰデバイス制御ユニット７００にダウンロードする際に使用される送受信チャンネル。ここで、接尾辞”ｘ”は、Ｎdown個（Ｎdownは２以上の整数）のUPNP-DOWNCONTENTチャンネルのうちのｘ番目のチャンネルを意味している。利用可能なUPNP-DOWNCONTENTxチャンネルの個数Ｎdownは、１以上の任意に設定可能であるが、２以上の値に設定することが好ましい。Ｎdownを２以上の値に設定すれば、複数のコントロールのコンテンツデータを並行して受信することが可能である。
【００５４】
（９）UPNP-UPCONTENTxチャンネルＣＨ＃２７ｘ：
ＵＰｎＰにおいて、コンテンツデータをＭＦＰデバイス制御ユニット７００からコントロールポイントにアップロードする際に使用される送受信チャンネル。接尾辞”ｘ”は、Ｎup個（Ｎupは２以上の整数）のUPNP-UPCONTENTチャンネルのうちのｘ番目のチャンネルを意味している。UPNP-DOWNCONTENTxチャンネルの個数ＮdownとUPNP-UPCONTENTxチャンネルの個数Ｎupは、同じでも良く、また、異なっていてもよい。なお、実際の図５（Ｂ）のＵＰｎＰ用の論理チャンネルの数は、（５＋Ｎdown＋Ｎup）個となることが理解できる。
【００５５】
なお、各論理チャンネルは、いずれもバルクアウトエンドポイントＥＰ＃１とバルクインエンドポイントＥＰ＃２の両方を利用して双方向通信を行うことができる。論理チャンネルの識別情報は、ＵＳＢパケットのヘッダに登録される。
【００５６】
前述したように、図５に示した９種類の論理チャンネルは、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の間のＵＳＢ接続で利用されるものである。一方、ＭＦＰデバイス制御ユニット７００と複合機８００との間のＵＳＢ接続では、PRINT-DATAチャンネルＣＨ＃１１と、PRINT-STATUSチャンネルＣＨ＃１２の２つの論理チャンネルのみが利用されるように構成されていることが好ましい。この理由は、ＭＦＰデバイス制御ユニット７００が、ＵＰｎＰプロトコルに従って受信した各種のメッセージを解釈して複合機８００用の制御データに変換し、その制御データを（主として）PRINT-DATAチャンネルＣＨ＃１１を介して複合機８００に転送する機能を有しているからである。但し、ＭＦＰデバイス制御ユニット７００と複合機８００との間のＵＳＢ接続においても、図５に示したものと同じ９種類の論理チャンネルを利用するようにしても良い。また、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００の間のＵＳＢ接続においても、図５よりも少ない数の論理チャンネルを利用するようにしてもよい。
【００５７】
図６は、プリンタインタフェースＩＦ＃０を介したＵＳＢ転送に用いられるＤ４パケットの構成を示す説明図である。これは、ＩＥＥＥ１２８４．４に即したパケット構造である。このＤ４パケットは、１２バイトのヘッダ部と、０バイト以上のメッセージ部から構成されている。ヘッダ部は、６バイトのＤ４標準ヘッダと、４バイトのＩＤフィールドと、２バイトのエラーコードフィールドとを有している。Ｄ４標準ヘッダには、図５（Ｂ）に示した９種類の（７＋Ｎdown＋Ｎup）個の論理チャンネルを識別するためのソケットＩＤ（論理チャンネルＩＤ）が登録される。ＩＤフィールドには、リクエストＩＤが登録される。このリクエストＩＤは、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間のデータ転送（特にUPNP-DOWNCONTENTxチャンネルやUPNP-UPCONTENTxチャンネル）において、同じメッセージを構成するパケットを識別するために使用される。なお、リクエストＩＤは、ＭＦＰサーバ３００が割り当てる場合と、ＭＦＰデバイス制御ユニット７００が割り当てる場合とが存在する。従って、リクエストＩＤには、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００のいずれが割当てたかを一意に識別できるビット（例えば最上位ビット）を設けておくことが好ましい。なお、リクエストＩＤを「ジョブＩＤ」とも呼ぶ。
【００５８】
Ｄ４パケットでは、ヘッダ部を利用して多様な論理チャンネルを構成できるので、多様な論理チャンネルを用いて多様なデータ転送を実現することが可能である。また、Ｄ４標準ヘッダ以外のヘッダ情報をある程度任意に設定することができるので、各種の制御を実行するための工夫の自由度が高いという利点がある。
【００５９】
本実施例のＤ４パケットを用いてリクエストを転送する場合には、エラーフィールドの後のメッセージの先頭（「メッセージヘッダ」とも呼ぶ）には、メッセージの送り元から送り先（受け手）へ通知するＵＲＩ（通常は相対ＵＲＩ）が付加される。メッセージの受け手は、このＵＲＩから、リクエストの内容や宛先を容易に判定することが可能である。
【００６０】
図５（Ｂ）に示したように、本実施例では、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間のＵＳＢ転送用の論理チャンネルとして、印刷ポート用の論理チャンネルＣＨ＃１１〜ＣＨ＃１２と、ＵＰｎＰ用の論理チャンネルＣＨ＃２１〜ＣＨ＃２７ｘとを別個に設けている。従って、ネットワーク印刷ポートを介してＭＦＰデバイス制御ユニット７００に転送されてくる印刷データと、ＵＰｎＰ用のポートを介してＭＦＰデバイス制御ユニット７００に転送されてくるコンテンツデータ（例えば印刷用のＸＨＴＭＬデータ）とを容易に識別することができる。また、本実施例では、ＵＰｎＰプロトコルによるメッセージのＵＳＢ転送のために、用途の異なる複数の論理チャンネルＣＨ＃２１〜ＣＨ＃２７ｘを設けているので、メッセージの受信側において、メッセージの内容の処理をより高速に処理することが可能である。特に、本実施例ではコントロールポイントとの間の通信の際に利用される論理チャンネルＣＨ＃２３〜ＣＨ＃２７ｘの他に、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間のローカルな情報の転送に使用される論理チャンネルＣＨ＃２１，ＣＨ＃２２が別個に設けられている。従って、例えばクライアント（コントロール）から送られたメッセージと、ＭＦＰサーバ３００とＭＦＰデバイス制御ユニット７００との間で通知される特定の情報とを容易に区別して、それぞれに適した処理を素早く実行することが可能である。
【００６１】
図７は、ＵＰｎＰアーキテクチャを利用した処理の典型例を示すシーケンス図である。ここでは、コントロールポイント１１０Ｃと、ＭＦＰサーバ３００と、ＭＦＰデバイス制御ユニット７００の間でメッセージが転送される場合を示している。実際には、ＭＦＰデバイス制御ユニット７００と複合機８００との間において、制御データやステータス情報が交換されているが、図７では便宜上、図示が省略されている。ステップ[1]では、コントロールポイント１１０ＣがＨＴＴＰのリクエストメッセージＦ１をＭＦＰサーバ３００に転送する。メッセージＦ１のヘッダには、リクエスト命令のメソッド（ＰＯＳＴやＧＥＴなど）と、ＭＦＰデバイスユニット４００内の宛先を示すＵＲＩと、中継ユニット６００と複合機８００で構成されるネットワーク装置９００（図１）のホスト名（この例ではＩＰアドレス”169.254.100.100”）とが記述されている。なお、ＩＰアドレスは、ネットワーク装置９００に１つだけば割り当てられるので、このＩＰアドレスは、ＭＦＰサーバ３００のＩＰアドレス、又は、ＭＦＰデバイス制御ユニット７００のＩＰアドレス、又は、複合機８００のＩＰアドレスと考えることも可能である。
【００６２】
ステップ[2]では、ＭＦＰサーバ３００が、リクエストメッセージＦ１を解析する。ここで解析（解釈）されるのは、メッセージＦ１のヘッダ部分だけであり、送信データ（すなわちメッセージボディ）の内容の解釈は行わない。より具体的には、ステップ[2]において、メッセージＦ１のＵＲＩが解析され、ＭＦＰデバイス制御ユニット７００に対してどの論理チャンネルを用いてメッセージを転送すべきかが判定される。なお、メッセージＦ１には、実質的なメッセージボディが無いものも存在する。
【００６３】
ステップ[3]では、ＭＦＰサーバ３００が、ＵＲＩとメッセージボディ（存在する場合）とを含むメッセージＦ２を、ＵＳＢでＭＦＰデバイス制御ユニット７００に転送する。この転送の際には、ＵＲＩに応じて選択された論理チャンネルが利用される。
【００６４】
ステップ[4]では、ＭＦＰデバイス制御ユニット７００が、受信したメッセージＦ２内のＵＲＩ及びメッセージボディ（存在する場合）に応じて処理を実行する。具体的には、例えば、ＭＦＰデバイス制御ユニット７００が、メッセージボディの内容を解釈して複合機８００の制御データを作成し、この制御データを複合機８００に転送して動作させる。ステップ[5]では、ＭＦＰデバイス制御ユニット７００が、レスポンスデータを含むメッセージＲ１をＵＳＢでＭＦＰサーバ３００に転送する。ステップ[6]では、ＭＦＰサーバ３００が送信データにＨＴＴＰヘッダを付加する。このＨＴＴＰヘッダは、ＨＴＴＰリクエストの処理結果を示すステータスコードを含んでいる。例えば、処理結果がＯＫであればステータスコードが”２００”に設定され、エラーであれば”５００”に設定される。ステップ[7]では、こうして作成されたＨＴＴＰのレスポンスメッセージＲ２がＭＦＰサーバ３００からコントロールポイント１１０Ｃに転送される。
【００６５】
このように、本実施例では、ＭＦＰサーバ３００は、コントロールポイントから受信したリクエストメッセージのうちで、ヘッダの解析（解釈）は行うが、メッセージボディの内容の解釈は行わず、メッセージボディはＭＦＰデバイス制御ユニット７００によって処理される。この構成には以下のような利点がある。第１の利点は、ＭＦＰサーバ３００が、デバイスユニット（複合機８００）のデバイス構成とサービスの内容を把握する必要が無く、任意の構成を有するデバイスユニット宛に送られたメッセージを転送するためのネットワークプロトコル制御部として機能することができる点である。第２の利点は、デバイスユニットのデバイス構成やサービスの内容が変更されても、ＭＦＰサーバ３００の構成や機能を変更する必要が無い点である。第３の利点は、ＭＦＰサーバ３００にメッセージボディの内容の解釈を行う解釈部（パーサ）を実装する必要が無いので、ＭＦＰサーバ３００の構成が単純で済む点である。
【００６６】
C．複合機のデバイス構成及びデバイスディスクリプション：
図８は、複合機８００のＵＰｎＰプロトコル上のデバイス構成を示す説明図である。本実施例の複合機８００（より正確にはネットワーク装置９００）のＵＰｎＰデバイスとしての構成では、ルートデバイスとしてのベーシックデバイス（Basicデバイス）の中に、プリンタデバイス（Printerデバイス）と、スキャナデバイス（Scnannerデバイス）と、ストレージデバイス（Storageデバイス）とが包含されている。換言すれば、プリンタデバイスとスキャナデバイスとストレージデバイスは、ベーシックデバイス内の埋込デバイスである。ベーシックデバイスは、ＵＰｎＰで規格化されている標準的なデバイスであり、自分自身が実行する固有のサービスを有さないデバイスである。
【００６７】
プリンタデバイスは２つのプリントサービス”PrintBasic”，”PrintEnhanced”を有している。これらの２つのサービスは、ＵＰｎＰで規格化されている標準的なプリントサービスである。スキャナデバイスはスキャンサービス”Scan”を有しており、ストレージデバイスはストレージサービス”Storage”を有している。各サービスは、状態テーブルと、コントロールサーバと、イベントサーバとで構成されている。状態テーブルには、サービスの状態を示す状態変数が登録されている。コントロールサーバは、コントロールポイントからのアクション要求を受け付けて処理を実行する。イベントサーバは、状態変数の値が変更されると、その変更をイベントとしてコントロールポイントに通知する。通知対象となるのは、そのサービスに予めサブスクライブ（購読）しているコントロールポイントである。
【００６８】
本明細書では、サービスを含むデバイスを「サービスデバイス」と呼んでいる。図８からも理解できるように、各サービスデバイスは、１つ以上の任意の数のサービスを含むことが可能である。また、あるサービスデバイスが、他のサービスデバイスを含むようにデバイス構成を構築することが可能である。
【００６９】
なお、ベーシックデバイスを使用せずに、例えばプリンタデバイスをルートデバイスとして設定し、他のデバイス（スキャナとストレージ）をプリンタデバイスの埋込デバイスとして構成することも可能である。
【００７０】
図８にも示したように、本実施例では、ネットワーク装置９００全体に対してＩＰアドレスが１つだけ割り当てられるので、コントロールポイントは、この１つのＩＰアドレスを用いて複合機８００の種々のサービスデバイスにアクセスできるという利点がある。
【００７１】
ＵＰｎＰ対応デバイスは、自身の構成や機能をデバイスディスクリプションという形式で予め保持しており、コントロールポイントからの要求に応じてデバイスディスクリプションを提供する機能を有している。また、サービスの内容は、サービスディスクリプションとして形でデバイス内に保持され、コントロールポイントに提供される。図８の例では、３つのデバイスのデバイスディスクリプションと、４つのサービスのサービスディスクリプションとが、ＭＦＰデバイス制御ユニット７００内のディスクリプション作成モジュール７１０によって作成されて保持されている。
【００７２】
図９は、複合機８００全体のデバイスディスクリプションの例を示している。デバイスディスクリプションは、ＸＭＬで記述されている。アンダーラインを付した部分は、本実施例に特有の設定を示している。要素<URLBase>の内容”http://169.254.100.100:80”は、ネットワーク装置９００のホスト名（ここではＩＰアドレス）と、ＨＴＴＰを用いる場合のポート番号を含んでいる。ディスクリプション内の各種のＵＲＩは、このＩＰアドレスに対する相対アドレスとして記述されている。なお、本明細書において、「ＵＲＩ」（又はＵＲＬ）という用語は、絶対アドレスで記述されている場合と、相対アドレスで記述されている場合の両方を含んでいる。以下では、ＩＰアドレスに対する相対アドレスを「パス名」と呼ぶ。
【００７３】
要素<root>の下には一つの要素<device>が存在し、この要素の中にさらに３つの要素<device>が包含されている。１つ目の要素<device>はベーシックデバイス（ルートデバイス）であり、その下位にある３つのデバイスはプリンタデバイスとスキャナデバイスとストレージデバイスである。
【００７４】
プリンタデバイス用のディスクリプションには、以下の内容が記述されている。
・<presentation URL>：コントロールポイントがプリンタデバイスのプレゼンテーション用のページを取得する際のＵＲＬ。このＵＲＬは、パス名”/PRESENTATION/PRINTER”で構成されている。
・<serviceList> :プリンタデバイスが提供するサービスのリスト。
・<serviceType>：プリンタが提供するサービスのタイプ。”PrintBasic”，”PrintEnhanced”は、いずれもＵＰｎＰアーキテクチャの標準的なプリントサービスである。
・<SCPDURL>：プリンタのデバイスディスクリプションのパス名。
・<controlURL>：プリンタデバイス内のコントロールサーバのパス名。コントロールサーバは、コントロールポイントに対してコントロール（コントロールポイントがアクション要求を含む制御メッセージをデバイスに転送して、デバイスの制御を行う処理）の機能を提供するサーバであり、一般にＵＰｎＰデバイスのサービス内に設けられている。
・<eventSubURL>：プリンタデバイス内のイベントサーバのパス名。イベントサーバは、サブスクライブ（購読）しているコントロールポイントにイベントを発行するサーバであり、一般にデバイスのサービス内に設けられている。
【００７５】
スキャナ用及びストレージ用のディスクリプションにも、プリンタ用のものと同様な項目が記述されている。なお、デバイスディスクリプションには、この他にデバイスのフレンドリ名や、製造者名、モデル名、アイコンなどの種々のプロパティが記述されているが、ここでは図示が省略されている。
【００７６】
なお、デバイスディスクリプションは、デバイスユニット全体のＵＲＩ（URLBase）と、デバイスのタイプ（BasicやPrinter)とを示す情報を少なくとも含むように構成されていることが好ましく、通常はＸＭＬで記述されている。また、デバイスがサービスを含む場合には、デバイスディスクリプションは、サービスのタイプ（PrintBasicやPrintEnhanced）と、サービスのコントロールサーバの宛先と、イベントサーバの宛先とを示す情報を含むことが好ましい。
【００７７】
D．第１実施例：
図１０は、第１実施例における処理シーケンスを示すシーケンス図である。第１実施例においては、複合機８００の電源がオフされた場合、または、複合機８００と中継ユニット６００との間のＵＳＢ接続が切断された場合の処理を説明する。
【００７８】
ステップ[1]では、複合機８００の電源がオフされたこと、または、複合機８００と中継ユニット６００との間のＵＳＢ接続が切断されたことが複合機８００からＭＦＰデバイス制御ユニット７００に通知される。なお、複合機８００が通知を行う代わりに、ＭＦＰデバイス制御ユニット７００が複合機８００のステータスを定期的にポーリングして複合機８００の電源オフ又はＵＳＢ接続の切断を検出するようにしても良い。なお、ＵＳＢ接続の切断を、「ＵＳＢ接続の喪失」とも呼ぶ。ここで、「ＵＳＢ接続の喪失」とは、ケーブルやコネクタの物理的な切断のみでなく、所定期間以上に渡って交信が不可能になった場合も含む広い意味を有している。
【００７９】
ＭＦＰデバイス制御ユニット７００は、複合機８００の電源オフを知ると、ステップ[2]において、ＭＦＰサーバ３００にリセット要求を送信する。ＭＦＰサーバ３００は、ステップ[3]において、リセット要求のレスポンスとしてシャットダウン通知をＭＦＰデバイス制御ユニット７００に送信する。ステップ[4]では、ＭＦＰサーバ３００がByeBye通知をコントロールポイントにマルチキャストする。シャットダウン通知は、ＭＦＰサーバ３００が再起動を行う旨を通知するための通知である。また、ByeBye通知は、ＵＰｎＰプロトコルにおいて、ＭＦＰデバイスがネットワークから離脱することをすべてのコントロールポイントに通知するための通知である。ＭＦＰサーバ３００がByeBye通知をマルチキャストして再起動を行う理由は、ＵＰｎＰ規格において、デバイスディスクリプションを再作成する際にこれらの動作を行うものと定められているからである。この後、ＭＦＰサーバ３００が再起動する。なお、ＭＦＰサーバ３００とともにＭＦＰデバイス制御ユニット７００も再起動するものとしてもい。なお、ステップ[2]〜[4]及びＭＦＰサーバ３００の再起動は省略することも可能である。
【００８０】
図１０のステップ[5]では、ＭＦＰサーバ３００がＭＦＰデバイス制御ユニット７００にデバイス情報を要求する。このデバイス情報の要求は、ＭＦＰサーバ３００の起動時に行われる処理であり、ＵＰｎＰ対応のネットワーク装置９００が有するデバイスの個数と、サービスの個数と、各デバイスのデバイスタイプと、各サービスのサービスタイプとを含む各種のデバイス情報を、ＭＦＰサーバ３００が取得するために行われる。ステップ[6]では、ＭＦＰデバイス制御ユニット７００が、このデバイス情報要求に応じてステータス要求を複合機８００に転送することによって、複合機８００が提供可能なサービスデバイスやサービスの情報を要求する。但し、複合機８００は電源オフされているので、ステータス要求に対するレスポンスは返さない。ステータス要求から所定時間が経過すると、ＭＦＰデバイス制御ユニット７００はタイムアウトによるエラーが発生したものと判断する（ステップ[7]）。また、ＭＦＰデバイス制御ユニット７００は、デバイス情報要求に対するレスポンスとして、デバイス数が１であることを通知する（ステップ[8]）。ここで、デバイス数が１であるとする理由は、本実施例におけるディスクリプション生成部７１０が、複合機８００の電源オフ時のデバイスディスクリプションとして、ベーシックデバイスのみを含むものを作成するように構成されるからである（ステップ[13]）。
【００８１】
図１１は、複合機８００の電源オフ時のデバイスディスクリプションの一例を示す説明図である。図９の正常稼働時のデバイスディスクリプションと比較すれば理解できるように、電源オフ時には、サービスを提供するデバイス（プリンタ、スキャナ、ストレージ）に関する記述が削除されており、デバイスとしてはサービスを含まないベーシックデバイスのみが残されている。なお、電源オフ時においても、クライアントに複合機８００に関する画面を表示するために、ベーシックデバイスのプレゼンテーションＵＲＬ（クライアントに提供するＷｅｂページのＵＲＬ）を記述しておくことが好ましい。図１１の例では、ベーシックデバイスのプレゼンテーションＵＲＬとして、その相対アドレス”/PRESENTATION/BAIC”が記述されている。
【００８２】
図１２は、正常稼働時と複合機８００の電源オフ時とにおけるネットワーク装置９００のデバイス構成を比較して示す説明図である。この図からも理解できるように、複合機８００の電源オフ時には、ネットワーク装置９００は、クライアントに提供するサービスを有さないベーシックデバイスのみで構成されているものとしてデバイスディスクリプションが生成される。
【００８３】
なお、図１０のステップ[8]では、デバイス数が１であることの他に、デバイスタイプが”Basic”であること、及び、サービス数が０であることも通知される。なお、ＭＦＰサーバ３００が複数種類の情報を取得するために、ステップ[5]〜[8]において要求と返信とが複数回繰り返されるようにしてもよい。このステップ[8]までが、複合機８００の電源オフ時に行われる処理である。
【００８４】
図１０の例では、その後のステップ[9]において、コントロールポイント１２０ＣからM-Search要求がマルチキャストされている。M-Search要求は、ＵＰｎＰプロトコルにおいてコントロールポイントがデバイスを検索するために発行するものである。この要求に対しては、ネットワークに接続されている全てのＵＰｎＰ対応ネットワーク装置が、要求発行元のコントロールポイント１２０Ｃにレスポンスを返す（ステップ[10]）。
【００８５】
その後、コントロールポイント１２０Ｃは、個々のネットワーク装置に対してデバイスディスクリプションの転送を要求する（ステップ[11]）。ＭＦＰサーバ３００は、この要求をＭＦＰデバイス制御ユニット７００に転送すると（ステップ[12]）、ＭＦＰデバイス制御ユニット７００が図１１で説明したデバイスディスクリプションを再作成する（ステップ[13]）。なお、ＭＦＰデバイス制御ユニット７００は、これ以前の時点でデバイスディスクリプションを再作成していてもよい。
【００８６】
こうして作成されたデバイスディスクリプションは、ステップ[14]でＭＦＰデバイス制御ユニット７００からＭＦＰサーバ３００に転送され、さらに、ステップ[15]でコントロールポイント１２０Ｃに転送される。図１３（Ａ）は、このデバイスディスクリプションに応じてコントロールポイント１２０Ｃ（図１のデジタルＴＶセット１２０）に表示される画面の一例を示している。この画面は、複合機８００のサービス（プリンタ、スキャナ、ストレージ（ＰＣカードメモリ））を使用するための各種のボタン９１０〜９５０を含んでいる。但し、図１１に示したデバイスディスクリプションでは、サービスを提供するデバイスが全く含まれていないため、図１３（Ａ）の画面ではこれらのサービスを選択するためのボタン９２０，９３０，９４０が選択できない形態で表示されている。デジタルＴＶセット１２０は、デバイスディスクリプションに応じて、このように表示画面の表示形態を調整する機能を有している。但し、デジタルＴＶセット１２０内にこの機能を実装する代わりに、このような画面を表すデータ（例えばＷｅｂページ）をＭＦＰデバイス制御ユニット７００（又はＭＦＰサーバ３００）で作成してコントロールポイント１２０Ｃに転送するようにしても良い。
【００８７】
図１３（Ａ）の画面において、「トップページ」を要求するボタン９１０をユーザがクリックすると、プレゼンテーション画面の要求がコントロールポイント１２０ＣからＭＦＰサーバ３００に転送される（図１０のステップ[16]）。このプレゼンテーション要求は、図１１に示したデバイスディスクリプションに記述されているプレゼンテーションＵＲＬに記載された相対アドレス”/PRESENTATION/BASIC”で特定されるページの転送要求である。このプレゼンテーション要求は、ＭＦＰサーバ３００からＭＦＰデバイス制御ユニット７００に転送され、これに応じてプレゼンテーション画面を記述したＷｅｂページがレスポンスとして返信される（ステップ[18]，[19]）。
【００８８】
図１３（Ｂ）は、図１０のステップ[19]でコントロールポイント１２０Ｃに転送されるプレゼンテーション画面の例を示している。この例では、複合機８００が電源オフのために使用できないことが説明されている。
【００８９】
なお、図１０のステップ[2]，[3]における通信はUPNP-LOCALEVENTチャンネル（図５）を利用して行われ、また、ステップ[5]，[8] ，[12]，[14]，[17]，[18]における通信はUPNP-LOCALCONTROLチャンネルを利用して行われる。但し、これら以外の論理チャンネルを用いてこれらの通信を実行してもい。
【００９０】
以上のように、第１実施例では、複合機８００の電源オフ時、又は、中継ユニット６００と複合機８００の間の接続の喪失時に、クライアントに提供するサービスを有さないベーシックデバイスのみを含むようにデバイスディスクリプション（図１１）が作成される。従って、クライアント（コントロールポイント）がこのデバイスディスクリプションを受信すると、複合機８００がサービスを提供できない状況であることを把握することが可能である。また、クライアントは、ネットワーク装置９００に対して各種のサービスを要求するための無駄なアクセスを行わないので、ネットワーク内における通信効率を高めることが可能である。
【００９１】
E．第２実施例：
図１４は、第２実施例における処理シーケンスを示すシーケンス図である。第２実施例においては、中継ユニット６００の起動時に複合機８００に不具合が存在する場合の処理を説明する。
【００９２】
中継ユニット（ＭＦＰサーバ３００及びＭＦＰデバイス制御ユニット７００）が起動すると、ステップ[1]において、ＭＦＰサーバ３００がＭＦＰデバイス制御ユニット７００にデバイス情報を要求する。このデバイス情報要求は、図１０のステップ[5]の要求と同じものである。ＭＦＰデバイス制御ユニット７００は、このデバイス情報要求に応じてステータス要求を複合機８００に転送し（ステップ[2]）、複合機８００はそのレスポンスを返信する（ステップ[3]）。ここでは、稼働しているデバイス数Ｎ（Ｎは１以上の整数）を含む種々のデバイス情報が返信される。例えば、正常稼働時に使用できる３つのデバイス８１０，８２０，８３０（図１）のうち、印刷エンジン８１０に不具合が発生している場合を想定する。この場合には、稼働デバイス数としてＮ＝２が返信され、また、稼働デバイスタイプとして、スキャナとＰＣカードインターフェース（ストレージ）が返信される。このようなレスポンスは、ＭＦＰデバイス制御ユニット７００からＭＦＰサーバ３００にも転送される（ステップ[4]）。
【００９３】
図１４のステップ[5]〜[15]の処理は、図１０のステップ[9]〜[19]の処理と基本的に同一なので、詳細な説明は省略する。図１５は、印刷エンジン８１０に不具合が発生している場合のデバイス構成を、正常稼働時のデバイス構成と比較して示す説明図である。この例では、印刷エンジン８１０が不具合が発生して使用できない状態にあるため、プリンタデバイスとそのサービスとが含まれておらず、ベーシックデバイスの中にはスキャナデバイスとストレージデバイスのみが含まれている。なお、図１４のステップ[9]で作成されるデバイスディスクリプションは、図９に示したものからプリンタデバイスの部分を削除したものとなる。
【００９４】
図１６（Ａ）は、図１４のステップ[11]のレスポンスに応じてデジタルＴＶセット１２０に表示される画面の一例を示している。この画面では、複合機８００のサービスを選択するための３つのボタン９２０，９３０，９４０のうち、不具合が発生しているデバイスに対応するボタン９２０が選択できない形態で表示される。
【００９５】
図１６（Ｂ）は、図１４のステップ[15]のレスポンスに応じてデジタルＴＶセット１２０に転送されるプレゼンテーション画面の例を示している。この例では、プリンタにメンテナンスの必要が生じているために使用できないことが説明されている。
【００９６】
なお、印刷エンジン８１０が使用不可となる不具合としては、インク廃液のオーバーフローや、印刷ヘッドのキャリッジの固着（動作不可）などが考えられる。また、スキャナエンジン８２０が使用不可となる不具合としては、スキャナランプの故障（ランプ切れ）などが考えられる。これらの予め想定されている不具合が発生していると、複合機８００はステータス要求のレスポンス（図１４のステップ[3]，[22]）において、ＭＦＰデバイス制御ユニット７００に不具合の発生を通知する。
【００９７】
このように、第２実施例では、中継ユニット６００の起動時において複合機８００が有する複数のデバイス８１０，８２０，８３０のうちの一部のデバイスに不具合が発生していて稼働できないときに、そのデバイスを削除したデバイスディスクリプションが作成される。従って、クライアントがこのデバイスディスクリプションを受信すると、一部のデバイスがサービスを提供できない状況であることを把握することが可能である。
【００９８】
F．第３実施例：
図１７は、第３実施例における処理シーケンスを示すシーケンス図である。第３実施例においては、中継ユニット６００と複合機８００とが両方とも動作している最中に複合機８００内のデバイスに不具合が発生する場合の処理を説明する。
【００９９】
ステップ[1]では、複合機８００が、複合機８００内のデバイスに不具合が発生したことをＭＦＰデバイス制御ユニット７００に通知する。このとき、ＭＦＰデバイス制御ユニット７００は、複合機８００で実行中の処理をキャンセルして、複合機８００をアイドル状態に遷移させるようにすることが好ましい。
【０１００】
図１７のステップ[2]以降の処理は、図１０のステップ[2]以降と基本的に同じである。すなわち、ＭＦＰサーバ３００が再起動して複合機８００の稼働状態を反映したデバイスディスクリプションが再作成され、このデバイスディスクリプションに応じてＵＰｎＰのサービスが提供される。なお、第３実施例において複合機８００内のいくつかのデバイスが稼働可能であれば、図１７のステップ[7]においてステータス情報が複合機８００からＭＦＰデバイス制御ユニット７００に返信されるので、この点は図１０の処理と異なっている。他の点は第１実施例（図１０）及び第２実施例（図１４）とほぼ同じなので詳細な説明を省略する。
【０１０１】
このように、第３実施例では、動作中に複合機８００が有する複数のデバイス８１０，８２０，８３０のうちの少なくとも一部のデバイスに不具合が発生して稼働できなくなったときに、そのデバイスを削除したデバイスディスクリプションが作成される。従って、クライアントがこのデバイスディスクリプションを受信すると、稼働不能なデバイスがサービスを提供できない状況であることを把握することが可能である。
【０１０２】
G．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１０３】
G１．変形例１：
上記実施例では、ＵＰｎＰ対応のネットワーク装置９００として複数のデバイスを含む複合機８００を有する装置を用いていたが、この代わりに、１つのデバイス（例えばプリンタ）のみを含む単機能のネットワーク装置を採用することも可能である。換言すれば、ネットワーク装置は、少なくとも１つのデバイスを有していれば良い。
【０１０４】
G２．変形例２：
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【図面の簡単な説明】
【０１０５】
【図１】本発明の実施例を適用するネットワークシステムの構成を示す概念図である。
【図２】中継ユニット内のＭＦＰサーバとＭＦＰデバイス制御ユニットの内部構成を示すブロック図である。
【図３】ＭＦＰサーバの各種プロトコルの階層構造を示すブロック図である。
【図４】ＭＦＰデバイス制御ユニットの各種プロトコルの階層構造を示すブロック図である。
【図５】ＭＦＰサーバとＭＦＰデバイス制御ユニットの間のＵＳＢ接続におけるインタフェース／エンドポイント構成と論理チャンネルの構成とを示す説明図である。
【図６】プリンタインタフェースを介したＵＳＢ転送に用いられるパケットの構成を示す説明図である。
【図７】ＵＰｎＰアーキテクチャを利用した処理の典型例を示すシーケンス図である。
【図８】実施例のＵＰｎＰデバイス構成を示す説明図である。
【図９】複合機のデバイスディスクリプションの例を示す説明図である。
【図１０】第１実施例における処理シーケンスを示すシーケンス図である。
【図１１】第１実施例で作成されるデバイスディスクリプションの一例を示す説明図である。
【図１２】正常稼働時と複合機の電源オフ時とにおけるネットワーク装置のデバイス構成を比較して示す説明図である。
【図１３】第１実施例においてデジタルＴＶセットに表示される画面の例を示す説明図である。
【図１４】第２実施例における処理シーケンスを示すシーケンス図である。
【図１５】正常稼働時と複合機の不具合発生時とにおけるネットワーク装置のデバイス構成を比較して示す説明図である。
【図１６】第２実施例においてデジタルＴＶセットに表示される画面の例を示す説明図である。
【図１７】第３実施例における処理シーケンスを示すシーケンス図である。
【符号の説明】
【０１０６】
１００…パーソナルコンピュータ
１００Ｄ…プリンタドライバ
１１０…デジタルカメラ
１１０Ｃ…コントロールポイント
１２０…デジタルＴＶセット
１２０Ｃ…コントロールポイント
１３０…画像サーバ
３００…ＭＦＰサーバ
３０２…ネットワークプロトコル制御部
３１０…中央制御部
３２０…ＲＡＭ
３３０…ＲＯＭ
３４０…ネットワーク制御部
３４２…コネクタ
３５０…ＵＳＢホスト制御部
３５２…ルートハブ
３５４，３５６…ＵＳＢコネクタ
４１０…中央制御部
４２０…ＲＡＭ
４３０…ＲＯＭ
４６０…ＵＳＢデバイス制御部
４６２…ＵＳＢコネクタ
５１０…ＵＳＢホスト制御部
５１２…ルートハブ
５１４…ＵＳＢコネクタ
６００…中継ユニット
７００…ＭＦＰデバイス制御ユニット
７１０…ディスクリプション作成モジュール
７２０…Ｗｅｂアプリケーションモジュール
８００…複合機
８１０…印刷エンジン
８２０…スキャナエンジン
８３０…ＰＣカードインタフェース
８４０…制御部
９００…ネットワーク装置
９１０〜９５０…ボタン
１０００…サービスプロトコル解釈部
１１００…ＵＰｎＰデバイスアーキテクチャ
１２１０，１２２０，１２３０…非ＵＰｎＰデバイス機能部
１３１０…ＵＳＢプリンタクラスドライバ
１３２０…ＵＳＢスキャナクラスドライバ
１３３０…ＵＳＢストレージクラスドライバ
２２１０…非ＵＰｎＰプリンタ機能部
２２２０…非ＵＰｎＰスキャナ機能部
２２３０…非ＵＰｎＰストレージ機能部
２３１０…ＵＳＢプリンタクラスドライバ
２３２０…ＵＳＢスキャナクラスドライバ
２３３０…ＵＳＢストレージクラスドライバ
２４００…ＵＰｎＰデバイス機能部
【図１】
2007156691.tif 000003
【図２】
2007156691.tif 000004
【図３】
2007156691.tif 000005
【図４】
2007156691.tif 000006
【図５】
2007156691.tif 000007
【図６】
2007156691.tif 000008
【図７】
2007156691.tif 000009
【図８】
2007156691.tif 000010
【図９】
2007156691.tif 000011
【図１０】
2007156691.tif 000012
【図１１】
2007156691.tif 000013
【図１２】
2007156691.tif 000014
【図１３】
2007156691.tif 000015
【図１４】
2007156691.tif 000016
【図１５】
2007156691.tif 000017
【図１６】
2007156691.tif 000018
【図１７】
2007156691.tif 000019