(57)【要約】 【課題】  ＵＳＢ接続において多様な論理チャンネルを必要な数だけ使用することを可能にする技術を提供する。【解決手段】  装置のＵＳＢホストが、ＵＳＢデバイスに対して特定用途の論理チャンネルのチャンネル数の問い合わせを送信し、ＵＳＢデバイスが、問い合わせに応じて特定用途の論理チャンネルのチャンネル数をＵＳＢホストに返信する。そして、ＵＳＢホストが、応答されたチャンネル数だけ特定用途の論理チャンネルをオープンする。【選択図】  図７
2007072795.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢホストとＵＳＢデバイスとを備えた装置であって、
前記ＵＳＢホストが、前記ＵＳＢデバイスに対して特定用途の論理チャンネルのチャンネル数の問い合わせを送信し、
前記ＵＳＢデバイスが、前記問い合わせに応じて前記特定用途の論理チャンネルのチャンネル数を前記ＵＳＢホストに返信し、
前記ＵＳＢホストが、前記応答されたチャンネル数だけ前記特定用途の論理チャンネルをオープンすることを特徴とする装置。
【請求項２】
請求項１記載の装置であって、
前記装置は、ネットワーク型プラグアンドプレイに対応したネットワーク装置であって、ネットワーク上のクライアントからの要求に応じてサービスを実行する１つ以上のサービスデバイスを備えており、
前記ＵＳＢデバイスは、前記サービスデバイスの制御を行うデバイス制御部を含み、
前記ＵＳＢホストは、メッセージヘッダとメッセージボディとを有するメッセージを前記ネットワーク上のクライアントから受信するとともに、前記メッセージボディの情報を前記デバイス制御部に転送するネットワークプロトコル制御部を含む、装置。
【請求項３】
請求項２記載の装置であって、
前記特定用途の論理チャンネルは、コンテンツデータを送信又は受信するための論理チャンネルである、装置。
【請求項４】
請求項１ないし３のいずれかに記載の装置であって、
前記ＵＳＢホストから前記ＵＳＢデバイスに対する論理チャンネル数の問い合わせは、前記装置の起動時に実行される、装置。
【請求項５】
請求項１ないし４のいずれかに記載の装置であって、
前記特定用途の論理チャンネルは、Ｄ４パケットを利用したＵＳＢ論理チャンネルである、装置。
【請求項６】
ＵＳＢホストとＵＳＢデバイスとの間の特定用途の論理チャンネルをオープンする方法であって、
（ａ）前記ＵＳＢホストが、前記ＵＳＢデバイスに対して前記特定用途の論理チャンネルのチャンネル数の問い合わせを送信する工程と、
（ｂ）前記ＵＳＢデバイスが、前記問い合わせに応じて前記特定用途の論理チャンネルのチャンネル数を前記ＵＳＢホストに返信する工程と、
（ｃ）前記ＵＳＢホストが、前記応答されたチャンネル数だけ前記特定用途の論理チャンネルをオープンする工程と、
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＵＳＢの論理チャンネルをオープンを制御する技術に関する。
【背景技術】
【０００２】
近年のコンピュータでは、プラグアンドプレイに対応した各種の周辺装置が利用されている。プラグアンドプレイは、よく知られているように、コンピュータの起動後に、周辺装置を任意のタイミングでコンピュータに接続したり、コンピュータから切断したりすることができる技術である。
【０００３】
ＵＳＢ（Universal Serial Bus）は、プラグアンドプレイ対応の装置に頻繁に用いられている（特許文献１）。ＵＳＢ接続は、ＵＳＢホストとＵＳＢデバイスとの間で論理チャンネルをオープンし、この論理チャンネルを用いてデータ転送が行われる。通常は、論理チャンネルとして、コントロープパイプ、バルクパイプ、インタラクトパイプという３つの論理チャンネルが使用される。
【０００４】
【特許文献１】特開２００４−１１２０７８
【０００５】
しかし、装置によっては、これらとは異なる多様な論理チャンネルを利用したい場合がある。しかし、従来は、多様な論理チャンネルを使用するのは困難な場合があった。特に、ＵＳＢデバイスの実装に応じて論理チャンネルの数を変更するのは困難であるという問題があった。
【０００６】
ところで、近年では、プラグアンドプレイ技術をネットワークに適用したものとして、ユニバーサルプラグアンドプレイ（以下、「ＵＰｎＰ」と呼ぶ。ＵＰｎＰは UPnP Implementers Corporationの商標）が開発されてきている。ＵＰｎＰを用いると、ネットワーク装置を任意のタイミングでネットワークに接続したり、ネットワークから切断したりすることができる。本明細書では、ＵＰｎＰのように、ネットワークにおいてプラグアンドプレイを実現するアーキテクチャを、「ネットワーク型プラグアンドプレイ」と呼ぶ。
【０００７】
【特許文献２】特開２００１−２９０７２４
【０００８】
ＵＰｎＰ対応のネットワーク装置は、種々のサービスデバイスとして機能することが可能である。ここで、「サービスデバイス」とは、外部からの要求に応じてサービスを実行するデバイスを意味している。サービスデバイスは、プリンタや、スキャナ、ファクシミリ、コピー機、記憶装置、カメラ、時計などの種々の装置として実現可能である。また、１つの装置で複数のサービスデバイスの機能を実現することも可能である。
【０００９】
このように、ＵＰｎＰ対応のネットワーク装置は多様な形態を採り得る。しかし、その反面、ネットワーク装置の実装が複雑になり易いという問題があった。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、ＵＳＢ接続において多様な論理チャンネルを必要な数だけ使用することを可能にする技術を提供することを目的とする。また、ネットワーク型プラグアンドプレイ対応のネットワーク装置の実装を容易にする技術を提供することを他の目的とする。
【課題を解決するための手段】
【００１１】
本発明の装置は、ＵＳＢホストとＵＳＢデバイスとを備えた装置であって、
前記ＵＳＢホストが、前記ＵＳＢデバイスに対して特定用途の論理チャンネルのチャンネル数の問い合わせを送信し、
前記ＵＳＢデバイスが、前記問い合わせに応じて前記特定用途の論理チャンネルのチャンネル数を前記ＵＳＢホストに返信し、
前記ＵＳＢホストが、前記応答されたチャンネル数だけ前記特定用途の論理チャンネルをオープンすることを特徴とする。
【００１２】
この装置によれば、不要な論理チャンネルをオープンすることなく、多様な論理チャンネルを必要な数だけ使用することができる。
【００１３】
前記装置は、ネットワーク型プラグアンドプレイに対応したネットワーク装置であって、ネットワーク上のクライアントからの要求に応じてサービスを実行する１つ以上のサービスデバイスを備えており、
前記ＵＳＢデバイスは、前記サービスデバイスの制御を行うデバイス制御部を含み、
前記ＵＳＢホストは、メッセージヘッダとメッセージボディとを有するメッセージを前記ネットワーク上のクライアントから受信するとともに、前記メッセージボディの情報を前記デバイス制御部に転送するネットワークプロトコル制御部を含むようにしてもよい。
【００１４】
この構成によれば、デバイス制御部の実装に応じた必要な数の論理チャンネルをオープンできるので、ネットワーク装置全体の実装も容易になる。
【００１５】
また、前記特定用途の論理チャンネルは、コンテンツデータを送信又は受信するための論理チャンネルであるものとしてもよい。
【００１６】
この構成によれば、複数のコンテンツデータを並行して送信又は受信することができる。
【００１７】
前記ＵＳＢホストから前記ＵＳＢデバイスに対する論理チャンネル数の問い合わせは、前記装置の起動時に実行されるものとしてもよい。
【００１８】
この構成によれば、起動時に必要な数の論理チャンネルをオープンするので、その後はいつでもそれらの論理チャンネルを使用して多様なデータ転送を実行することができる。
【００１９】
前記特定用途の論理チャンネルは、Ｄ４パケットを利用した論理チャンネルとすることが好ましい。
【００２０】
この構成によれば、Ｄ４パケットのヘッダ部を利用して多様な論理チャンネルを構成できるので、多様な論理チャンネルを用いて多様なデータ転送を実現することが可能である。
【００２１】
なお、本発明は、種々の形態で実現することが可能であり、例えば、ネットワーク装置、ネットワークプロトコル制御装置、それらの装置の制御方法及び制御装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００２２】
次に、本発明の実施の形態を以下の順序で説明する。
A．用語の説明：
B．システムの概要：
C．コンテンツチャンネルのオープンシーケンス：
D．各種のデータ転送シーケンス：
E．変形例：
【００２３】
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）個となることが理解できる。
【００５９】
なお、各論理チャンネルは、いずれもバルクアウトエンドポイントＥＰ＃１とバルクインエンドポイントＥＰ＃２の両方を利用して双方向通信を行うことができる。論理チャンネルの識別情報は、ＵＳＢパケットのヘッダに登録される。
【００６０】
図６は、プリンタインタフェースＩＦ＃０を介したＵＳＢ転送に用いられるＤ４パケットの構成を示す説明図である。これは、ＩＥＥＥ１２８４．４に即したパケット構造である。このＤ４パケットは、１２バイトのヘッダ部と、０バイト以上のメッセージ部から構成されている。ヘッダ部は、６バイトのＤ４標準ヘッダと、４バイトのＩＤフィールドと、２バイトのエラーコードフィールドとを有している。Ｄ４標準ヘッダには、図５（Ｂ）に示した９種類の（７＋２Ｎ）個の論理チャンネルを識別するためのソケットＩＤ（論理チャンネルＩＤ）が登録される。ＩＤフィールドには、リクエストＩＤが登録される。このリクエストＩＤは、ＭＦＰサーバ３００とＭＦＰデバイスユニット４００との間のデータ転送（特にUPNP-DOWNCONTENTxチャンネルやUPNP-UPCONTENTxチャンネル）において、同じメッセージを構成するパケットを識別するために使用される。なお、リクエストＩＤは、ＭＦＰサーバ３００が割り当てる場合と、ＭＦＰデバイスユニット４００が割り当てる場合とが存在する。従って、リクエストＩＤには、ＭＦＰサーバ３００とＭＦＰデバイスユニット４００のいずれが割当てたかを一意に識別できるビット（例えば最上位ビット）を設けておくことが好ましい。なお、リクエストＩＤを「ジョブＩＤ」とも呼ぶ。
【００６１】
Ｄ４パケットでは、ヘッダ部を利用して多様な論理チャンネルを構成できるので、多様な論理チャンネルを用いて多様なデータ転送を実現することが可能である。また、Ｄ４標準ヘッダ以外のヘッダ情報をある程度任意に設定することができるので、各種の制御を実行するための工夫の自由度が高いという利点がある。
【００６２】
本実施例のＤ４パケットを用いてリクエストを転送する場合には、エラーフィールドの後のメッセージの先頭（「メッセージヘッダ」とも呼ぶ）には、メッセージの送り元から送り先（受け手）へ通知するＵＲＩ（通常は相対ＵＲＩ）が付加される。メッセージの受け手は、このＵＲＩから、リクエストの内容や宛先を容易に判定することが可能である。なお、Ｄ４パケットのメッセージの具体的な内容については後述する。
【００６３】
図５（Ｂ）に示したように、本実施例では、ＵＳＢ転送用の論理チャンネルとして、印刷ポート用の論理チャンネルＣＨ＃１１〜ＣＨ＃１２と、ＵＰｎＰ用の論理チャンネルＣＨ＃２１〜ＣＨ＃２７ｘとを別個に設けている。従って、ネットワーク印刷ポートを介してＭＦＰデバイスユニット４００に転送されてくる印刷データと、ＵＰｎＰ用のポートを介してＭＦＰデバイスユニット４００に転送されてくるコンテンツデータ（例えば印刷用のＸＨＴＭＬデータ）とを容易に識別することができる。また、本実施例では、ＵＰｎＰプロトコルによるメッセージのＵＳＢ転送のために、用途の異なる複数の論理チャンネルＣＨ＃２１〜ＣＨ＃２７ｘを設けているので、メッセージの受信側において、メッセージの内容の処理をより高速に処理することが可能である。特に、本実施例ではコントロールポイントとの間の通信の際に利用される論理チャンネルＣＨ＃２３〜ＣＨ＃２７ｘの他に、ＭＦＰサーバ３００とＭＦＰデバイスユニット４００との間のローカルな情報の転送に使用される論理チャンネルＣＨ＃２１，ＣＨ＃２２が別個に設けられている。従って、例えばクライアント（コントロール）から送られたメッセージと、ＭＦＰサーバ３００とＭＦＰデバイスユニット４００との間で通知される特定の情報とを容易に区別して、それぞれに適した処理を素早く実行することが可能である。
【００６４】
図７は、ＵＰｎＰアーキテクチャを利用した処理の典型例を示すシーケンス図である。ここでは、コントロールポイント１１０Ｃと、ＭＦＰサーバ３００と、ＭＦＰデバイスユニット４００の間でメッセージが転送される場合を示している。ステップ[1]では、コントロールポイント１１０ＣがＨＴＴＰのリクエストメッセージＦ１をＭＦＰサーバ３００に転送する。メッセージＦ１のヘッダには、リクエスト命令のメソッド（ＰＯＳＴやＧＥＴなど）と、ＭＦＰデバイスユニット４００内の宛先を示すＵＲＩと、複合機２００のホスト名（この例ではＩＰアドレス”169.254.100.100”）とが記述されている。なお、ＩＰアドレスは、複合機２００に１つだけば割り当てられるので、このＩＰアドレスは、ＭＦＰサーバ３００のＩＰアドレス又はＭＦＰデバイスユニット４００のＩＰアドレスと考えることも可能である。
【００６５】
ステップ[2]では、ＭＦＰサーバ３００が、リクエストメッセージＦ１を解析する。ここで解析（解釈）されるのは、メッセージＦ１のヘッダ部分だけであり、送信データ（すなわちメッセージボディ）の内容の解釈は行わない。より具体的には、ステップ[2]において、メッセージＦ１のＵＲＩが解析され、ＭＦＰデバイスユニット４００に対してどの論理チャンネルを用いてメッセージを転送すべきかが判定される。なお、メッセージＦ１には、実質的なメッセージボディが無いものも存在する。
【００６６】
ステップ[3]では、ＭＦＰサーバ３００が、ＵＲＩとメッセージボディ（存在する場合）とを含むメッセージＦ２を、ＵＳＢでＭＦＰデバイスユニット４００に転送する。この転送の際には、ＵＲＩに応じて選択された論理チャンネルが利用される。
【００６７】
ステップ[4]では、ＭＦＰデバイスユニット４００が、受信したメッセージＦ２内のＵＲＩ及びメッセージボディ（存在する場合）に応じて処理を実行する。この例については後述する。ステップ[5]では、ＭＦＰデバイスユニット４００が、レスポンスデータを含むメッセージＲ１をＵＳＢでＭＦＰサーバ３００に転送する。ステップ[6]では、ＭＦＰサーバ３００が送信データにＨＴＴＰヘッダを付加する。このＨＴＴＰヘッダは、ＨＴＴＰリクエストの処理結果を示すステータスコードを含んでいる。例えば、処理結果がＯＫであればステータスコードが”２００”に設定され、エラーであれば”５００”に設定される。ステップ[7]では、こうして作成されたＨＴＴＰのレスポンスメッセージＲ２がＭＦＰサーバ３００からコントロールポイント１１０Ｃに転送される。
【００６８】
このように、本実施例では、ＭＦＰサーバ３００は、コントロールポイントから受信したリクエストメッセージのうちで、ヘッダの解析（解釈）は行うが、メッセージボディの内容の解釈は行わず、メッセージボディはＭＦＰデバイスユニット４００によって処理される。この構成には以下のような利点がある。第１の利点は、ＭＦＰサーバ３００が、ＭＦＰデバイスユニット４００のデバイス構成とサービスの内容を把握する必要が無く、任意の構成を有するデバイスユニット宛に送られたメッセージを転送するためのネットワークプロトコル制御部として機能することができる点である。第２の利点は、ＭＦＰデバイスユニット４００のデバイス構成やサービスの内容が変更されても、ＭＦＰサーバ３００の構成や機能を変更する必要が無い点である。第３の利点は、ＭＦＰサーバ３００にメッセージボディの内容の解釈を行う解釈部（パーサ）を実装する必要が無いので、ＭＦＰサーバ３００の構成が単純で済む点である。
【００６９】
C．コンテンツチャンネルのオープンシーケンス：
図８は、コンテンツチャンネルのオープン手順を示すシーケンス図である。複合機２００が起動すると、ステップ[1]では、ＭＦＰサーバ３００が、ＭＦＰデバイスユニット４００に対してコンテンツチャンネル（UPNP-DOWNCONTENTx, UPNP-UPCONTENTx）以外の論理チャンネルのオープンを指示する。この指示は、コントロールパイプ（すなわち図５（Ａ）のコントロールエンドポイントＥＰ＃０）を用いて行われる。なお、コンテンツチャンネル以外の論理チャンネルの用途と数は予め決まっているので、起動時にＭＦＰサーバ３００からこれらの論理チャンネルをすべてオープンすることができる。ステップ[2]では、ＭＦＰデバイスユニット４００が指示された論理チャンネルをすべてオープンする。
【００７０】
なお、ＭＦＰサーバ３００からの指示に応じてＭＦＰデバイスユニット４００をオープンする理由は、ＵＳＢ接続に関してはＭＦＰサーバ３００がＵＳＢホストとして構成され、ＭＦＰデバイスユニットがＵＳＢデバイスとして構成されているからである（図２）。
【００７１】
ステップ[3]では、ＭＦＰサーバ３００が、ＭＦＰデバイスユニット４００に対してコンテンツチャンネルのチャンネル数の問い合わせを送信する。具体的には、”GetChannelInfo”というローカル要求を発信する。なお、この問い合わせは、例えばUPNP-LOCALCONTROLチャンネルを用いて行われる。ステップ[4]では、ＭＦＰデバイスユニット４００が、ＭＦＰデバイスユニット４００の実装に応じて、必要なチャンネル数を取得する。例えば、３つのサービスデバイスで必要なチャンネル数を以下の通りと仮定する。
（１）プリンタ：DOWNCONTENTxチャンネル＝２，UPNCONTENTxチャンネル＝１。
（２）スキャナ：DOWNCONTENTxチャンネル＝１，UPNCONTENTxチャンネル＝１。
（３）ストレージ：DOWNCONTENTxチャンネル＝１，UPNCONTENTxチャンネル＝１。
このとき、必要なチャンネル数は、UPNP-DOWNCONTENTxチャンネルが４、UPNP-UPCONTENTxチャンネルが３となる。従って、ＭＦＰデバイスユニット４００は、Ｎdown＝４、Ｎup＝３を取得する。なお、これらのチャンネル数Ｎdown，Ｎupは、ＭＦＰデバイスユニット４００内のＲＯＭ４３０（図２）内に格納されており、ステップ[4]ではそれらの値が読み出される。
【００７２】
ステップ[5]では、ＭＦＰデバイスユニット４００が、チャンネル数Ｎdown、ＮupをＭＦＰサーバ３００に応答する。ＭＦＰサーバ３００は、ステップ[6]でチャンネル数Ｎdown、Ｎupを登録し、ステップ[7]，[8] でこれらの数Ｎdown、ＮupだけUPNP-DOWNCONTENTxチャンネルと UPNP-UPCONTENTxチャンネルをそれぞれオープンする。
【００７３】
このように、本実施例では、ＭＦＰサーバ３００がＭＦＰデバイスユニット４００の実装に関する各種の情報を要求できるようにUPNP-LOCALCONTROLチャンネルを構成しているので、ＭＦＰサーバ３００がコンテンツチャンネルの必要数をＭＦＰデバイスユニット４００に要求することが可能である。また、ＭＦＰサーバ３００は、応答された数Ｎdown、ＮupだけUPNP-DOWNCONTENTxチャンネルと UPNP-UPCONTENTxチャンネルをそれぞれオープンするので、ＭＦＰデバイスユニット４００の実装に適した必要な数のコンテンツチャンネルをオープンすることが可能である。また、不要に多数のコンテンツチャンネルをオープンすることを防止できる。
【００７４】
なお、コンテンツチャンネルのオープンは、複合機２００の起動時に実行し、その後は、オープン状態を維持することが好ましい。こうすれば、いつでも複数のコンテンツチャンネルを利用して直ちにコンテンツデータの転送を行うことが可能である。但し、複合機の起動時にすべてのコンテンツチャンネルをオープンする代わりに、必要な場合にＭＦＰサーバ３００又はＭＦＰデバイスユニット４００からの要求に応じてコンテンツチャンネルをオープンするようにしてもよい。
【００７５】
なお、図８では、コンテンツチャンネルを必要な数だけオープンする例を説明したが、この手順は他の用途の論理チャンネルのオープンにも利用可能であり、一般に、特定用途のために使用される論理チャンネルを必要な数だけオープンする際に利用可能である。なお、「特定用途の論理チャンネル」とは、転送対象のデータの種類が予め決まっている論理チャンネルを意味する。
【００７６】
D：各種のデータ転送シーケンス：
図９は、コントロールポイントから複合機２００にサービスコンテンツを送信する場合の手順を示すシーケンス図である。ステップ[1]では、コントロールポイント１１０ＣからＭＦＰサーバ３００に、リクエストメッセージＦ４１が転送される。このメッセージＦ４１には、リクエスト命令のメソッド（ＰＯＳＴメソッド）と、宛先のパス名”/DOWN/PRINTER/PRINTENHANCED1”と、複合機２００のＩＰアドレス”169.254.100.100”とが記述されている。ステップ[2]では、ＭＦＰサーバ３００が、このメッセージＦ４１のヘッダを解析し、ＰＯＳＴ処理のデータ転送に使用するリクエストＩＤをＭＦＰデバイスユニット４００から取得する必要があることを判断する。リクエストＩＤは、コンテンツデータをＭＦＰサーバ３００からＭＦＰデバイスユニット４００に転送する際に、すべてのＤ４パケットのヘッダ（図６）に付して、他のパケットと区別するために使用されるＩＤである。ステップ[3]では、ＭＦＰサーバ３００が、リクエストＩＤを要求するメッセージＦ４２をＭＦＰデバイスユニット４００に転送する。このメッセージＦ４２のボディには、リクエスト命令のメソッド（ＰＯＳＴメソッド）と、宛先のパス名”/DOWN/PRINTER/PRINTENHANCED1”とが記述されている。また、メッセージＦ４２の転送には、UPNP-LOCALCONTROLチャンネルが使用される。
【００７７】
ステップ[4]では、ＭＦＰデバイスユニット４００が、このメッセージＦ４２の要求に従ってリクエストＩＤを生成し、また、Ｎdown個のUPNP-DOWNCONTENTxチャンネルのうちの１つを指定するためのチャンネルＩＤも生成する。チャンネルＩＤの値としては、例えば、その時点で使用されていないUPNP-DOWNCONTENTxチャンネルのチャンネルＩＤの中で最も小さな値が割り当てられる。なお、リクエストＩＤとチャンネルＩＤの生成は、デバイス制御部４０２（図１）によって行われる。ステップ[5]では、ＭＦＰデバイスユニット４００からＭＦＰサーバ３００に、リクエストＩＤとチャンネルＩＤを含むメッセージＲ４１が返信される。この際にも、UPNP-LOCALCONTROLチャンネルが使用される。
【００７８】
こうしてリクエストＩＤとチャンネルＩＤがＭＦＰサーバ３００に通知され、また、ステップ[6]においてＭＦＰサーバ３００がコンテンツデータの受信を完了すると、ステップ[7]において、ＭＦＰサーバ３００がコンテンツデータ（例えばＸＨＴＭＬデータ）を含むメッセージＦ４３をＭＦＰデバイスユニット４００に転送する。このメッセージＦ４３の各パケットのヘッダには、ステップ[5]で通知されたリクエストＩＤが記入されている。また、論理チャンネルとしては、Ｎdown個のUPNP-DOWNCONTENTxチャンネルの中で、チャンネルＩＤで指定された１つのチャンネルが使用される。図９の例では、チャンネルＩＤの値が”１”なので、１番目のチャンネルUPNP-DOWNCONTENT1が使用されている。ＭＦＰデバイスユニット４００は、メッセージＦ４３のリクエストＩＤを参照することによって、これらのパケットがステップ[3]で要求された処理のためのパケットであることを容易に認識することができる。また、コンテンツデータの送信処理の際には、予め設けられたＮdown個の論理チャンネルUPNP-DOWNCONTENTxのうちの１つを１つのコンテンツに割り当てるので、多数のコンテンツ送信処理を並行して行うことが可能である。
【００７９】
コンテンツデータの転送処理が終了すると、ステップ[8]において、処理が完了したことを示すレスポンスメッセージＦ４２がＭＦＰデバイスユニット４００からＭＦＰサーバ３００に転送される。ステップ[9]では、ＭＦＰサーバ３００がメッセージＲ４２のエラーコードを参照し、これに応じてＨＴＴＰのヘッダを付加する。ステップ[10]では、こうして作成されたＨＴＴＰのレスポンスメッセージＲ４３がＭＦＰサーバ３００からコントロールポイント１１０Ｃに転送される。
【００８０】
このように、サービスコンテンツの送信（ダウンロード）の際には、まずUPNP-LOCALCONTROLチャンネルを使用して、Ｄ４パケットを識別するためのリクエストＩＤと、使用する論理チャンネルを指定するためのチャンネルＩＤが取得される。従って、同一のコンテンツデータの転送処理に用いられるパケットを容易に識別することができる。また、複数のUPNP-DOWNCONTENTxチャンネルの中から、使用可能なチャンネルを容易に選択することができる。
【００８１】
図１０は、コントロールポイントが複合機２００からサービスコンテンツを取得する場合の手順を示すシーケンス図である。ステップ[1]では、コントロールポイント１１０ＣからＭＦＰサーバ３００に、リクエストメッセージＦ５１が転送される。このメッセージＦ５１には、リクエスト命令のメソッド（ＧＥＴメソッド）と、宛先のパス名”/UP/PRINTER/PRINTENHANCED1”と、複合機２００のＩＰアドレス”169.254.100.100”とが記述されている。ステップ[2]では、ＭＦＰサーバ３００が、このメッセージＦ５１のヘッダを解析し、ＧＥＴ処理のデータ転送に使用するリクエストＩＤをＭＦＰデバイスユニット４００から取得する必要があることを判断する。ステップ[3]では、ＭＦＰサーバ３００が、リクエストＩＤを要求するメッセージＦ５２をＭＦＰデバイスユニット４００に転送する。このメッセージＦ５２のボディには、リクエスト命令のメソッド（ＧＥＴメソッド）と、宛先のパス名”/UP/PRINTER/PRINTENHANCED1”とが記述されている。このときの転送には、UPNP-LOCALCONTROLチャンネルが使用される。
【００８２】
ステップ[4]では、ＭＦＰデバイスユニット４００が、メッセージＦ５２の要求に従ってリクエストＩＤを生成し、また、Ｎup個のUPNP-UPCONTENTxチャンネルのうちの１つを指定するためのチャンネルＩＤも生成する。チャンネルＩＤの値としては、その時点で使用されていないUPNP-UPCONTENTxチャンネルのチャンネルＩＤの中で最も小さな値が割り当てられる。ステップ[5]では、ＭＦＰデバイスユニット４００からＭＦＰサーバ３００に、リクエストＩＤとチャンネルＩＤを含むメッセージＲ５１が返信される。この際にも、UPNP-LOCALCONTROLチャンネルが使用される。
【００８３】
こうしてリクエストＩＤとチャンネルＩＤがＭＦＰサーバ３００に通知された後、ステップ[6]においてコンテンツデータの生成が完了すると、ステップ[7]において、ＭＦＰデバイスユニット４００がコンテンツデータを含むメッセージＲ５２をＭＦＰサーバ３００に転送する。このメッセージＲ５２の各パケットのヘッダには、ステップ[5]でＭＦＰサーバ３００に通知されたリクエストＩＤが記入されている。また、論理チャンネルとしては、Ｎup個のUPNP-UPCONTENTxチャンネルの中で、チャンネルＩＤで指定された１つのチャンネルが使用される。図１０の例では、チャンネルＩＤの値が”１”なので、１番目のチャンネルUPNP-UPCONTENT1が使用されている。ＭＦＰデバイスユニット４００は、メッセージＲ５２のリクエストＩＤを参照することによって、これらのパケットがステップ[3]で要求された処理のためのパケットであることを容易に認識することができる。また、コンテンツデータのＵＳＢ転送の際には、予め設けられたＮup個の論理チャンネルUPNP-UPCONTENTxのうちの１つを使用するので、多数のコンテンツ転送処理を並行して行うことが可能である。
【００８４】
コンテンツデータのＵＳＢ転送が終了すると、ステップ[8]において、ＭＦＰサーバ３００が、コンテンツデータにＨＴＴＰのヘッダを付加してメッセージＲ５３を生成する。ステップ[9]では、こうして作成されたメッセージＲ５３がＭＦＰサーバ３００からコントロールポイント１１０Ｃに転送される。
【００８５】
このように、コントロールポイントからの要求に応じてサービスコンテンツをコントロールポイントに転送する際には、まずUPNP-LOCALCONTROLチャンネルを使用して、転送処理用のパケットを識別するためのリクエストＩＤと、使用する論理チャンネルを指定するためのチャンネルＩＤが取得される。従って、１つのコンテンツの転送処理に用いられる複数のパケットを容易に識別することができる。また、複数のUPNP-UPCONTENTxチャンネルの中から、使用可能なチャンネルを容易に選択することができる。
【００８６】
E．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００８７】
E１．変形例１：
上記実施例では、ＵＰｎＰ対応のネットワーク装置として複数のデバイスを含む複合機２００を用いていたが、この代わりに、１つのデバイス（例えばプリンタ）のみを含む単機能のネットワーク装置を採用することも可能である。換言すれば、ネットワーク装置は、少なくとも１つのデバイスを有していれば良い。
【００８８】
E２．変形例２：
上記実施例では、ＵＳＢホストとＵＳＢデバイスとを備えるネットワーク装置について説明したが、本発明は、ネットワーク装置に限らず、一般にＵＳＢホストとＵＳＢデバイスとを備える装置に適用可能である。
【００８９】
E３．変形例３：
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施例を適用するネットワークシステムの構成を示す概念図である。
【図２】複合機の内部構成を示すブロック図である。
【図３】ＭＦＰサーバの各種プロトコルの階層構造を示すブロック図である。
【図４】ＭＦＰデバイスユニットの各種プロトコルの階層構造を示すブロック図である。
【図５】ＵＳＢのインタフェース／エンドポイント構成と論理チャンネルの構成とを示す説明図である。
【図６】プリンタインタフェースを介したＵＳＢ転送に用いられるパケットの構成を示す説明図である。
【図７】ＵＰｎＰアーキテクチャを利用した処理の典型例を示すシーケンス図である。
【図８】コンテンツチャンネルのオープン手順を示すシーケンス図である。
【図９】コントロールポイントから複合機にサービスコンテンツを送信する場合の手順を示すシーケンス図である。
【図１０】コントロールポイントが複合機からサービスコンテンツを取得する場合の手順を示すシーケンス図である。
【符号の説明】
【００９１】
１００…パーソナルコンピュータ
１００Ｄ…プリンタドライバ
１１０…デジタルカメラ
１１０Ｃ，１２０Ｃ…コントロールポイント
１２０…ＴＶセット
１３０…画像サーバ
２００…複合機
３００…ＭＦＰサーバ
３０２…ネットワークプロトコル制御部
３１０…中央制御部
３２０…ＲＡＭ
３３０…ＲＯＭ
３４０…ネットワーク制御部
３４２…コネクタ
３５０…ＵＳＢホスト制御部
３５２…ルートハブ
３５４，３５６…ＵＳＢコネクタ
４００…ＭＦＰデバイスユニット
４０２…デバイス制御部
４０４…プリンタデバイス
４０６…スキャナデバイス
４０８…ストレージデバイス
４１０…中央制御部
４２０…ＲＡＭ
４３０…ＲＯＭ
４４０…印刷エンジン
４５０…スキャナエンジン
４６０…ＵＳＢデバイス制御部
４６２…ＵＳＢコネクタ
４７０…ＵＳＢデバイス制御部
４７２…ＵＳＢコネクタ
４８０…ＰＣカードインタフェース
４８２…スロット
４９０…操作パネル制御部
４９２…操作パネル
５００…ビューワ制御部
５０２…ビューワ
５１０…ＵＳＢホスト制御部
５１２…ルートハブ
５１４…ＵＳＢコネクタ
１０００…サービスプロトコル解釈部
１１００…ＵＰｎＰデバイスアーキテクチャ
１２１０…非ＵＰｎＰプリンタ機能部
１２２０…非ＵＰｎＰスキャナ機能部
１２３０…非ＵＰｎＰストレージ機能部
１３１０…ＵＳＢプリンタクラスドライバ
１３２０…ＵＳＢスキャナクラスドライバ
１３３０…ＵＳＢストレージクラスドライバ
２２１０…非ＵＰｎＰプリンタ機能部
２２２０…非ＵＰｎＰスキャナ機能部
２２３０…非ＵＰｎＰストレージ機能部
２３１０…ＵＳＢプリンタクラスドライバ
２３２０…ＵＳＢスキャナクラスドライバ
２３３０…ＵＳＢストレージクラスドライバ
２４００…ＵＰｎＰデバイス機能部
【図１】
2007072795.tif 000003
【図２】
2007072795.tif 000004
【図３】
2007072795.tif 000005
【図４】
2007072795.tif 000006
【図５】
2007072795.tif 000007
【図６】
2007072795.tif 000008
【図７】
2007072795.tif 000009
【図８】
2007072795.tif 000010
【図９】
2007072795.tif 000011
【図１０】
2007072795.tif 000012