(57)【特許請求の範囲】
【請求項１】
印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置において、当該情報処理装置が備えるコンピュータを、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部として機能させるための情報分配処理プログラムであって、
前記コンピュータを前記情報分配部として機能させるための処理として、前記コンピュータに、主処理と、常駐処理とを並列に実行させるプログラムとされており、
前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、を実行させ、
前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、を実行させ、
さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、を実行させる
ことを特徴とする情報分配処理プログラム。
【請求項２】
印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置であって、
前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部を備えており、
前記情報分配部では、主処理と、常駐処理とが並列に実行されており、
前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、
前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、
さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されている
ことを特徴とする情報処理装置。
【請求項３】
印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置と、前記印刷装置とデータ通信可能な情報処理装置とを備えるシステムであり、
前記情報処理装置は、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部とを備えており、
前記情報分配部では、主処理と、常駐処理とが並列に実行されており、
前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、
前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、
さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されている
ことを特徴とする情報分配処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置から取得したデバイス情報を複数の情報処理部へ分配するために利用される情報分配処理プログラム、情報処理装置、および情報分配処理システムに関する。
【背景技術】
【０００２】
従来、印刷装置に関するデバイス情報をインターフェースを通じて印刷装置から取得するとともに、そのデバイス情報を利用した情報処理を実施するためのプログラムが知られている（例えば、下記特許文献１参照）。
【０００３】
下記特許文献１の場合、プリンタ状態管理プログラム３ｃは、ポート通信プログラム３ｅを通してプリンタ２ｃの情報を取得する処理、記憶領域３ｄにその情報を記憶させる処理、ＳＮＭＰ処理プログラム３ｂに対して情報を提供する処理などを実施するためのプログラムとなっている（特許文献１：段落［００７２］および［図５］参照）。
【特許文献１】特開２０００−２９３３２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数の処理を時分割で並列に実行可能な情報処理装置においては、上記のようなプログラムに従った情報処理を情報処理部が並列に複数機能する可能性があり、その場合、複数の情報処理部それぞれが印刷装置から情報を取得しようとするため、印刷装置が一度しか情報を提供しない場合、本来であればある情報処理部Ａが取得すべき情報であっても、他の情報処理部Ｂが横取りしてしまうことがあり、上記情報処理部Ａに必要な情報が渡らない、という問題が発生するおそれがあった。
【０００５】
より具体的な例を挙げれば、印刷装置が自身にとって都合のよいタイミングでデバイス情報を一度だけ用意し、このデバイス情報を、情報処理部が自身にとって都合のよいタイミングで取得するように構成されたシステムの場合、印刷装置がデバイス情報を用意した後、最初にデバイス情報の取得を試みた情報処理部Ｂがデバイス情報を取得してしまうと、後からデバイス情報の取得を試みた情報処理部Ａは、所期のデバイス情報を取得することができないことになる。
【０００６】
本発明は、上記問題を解決するためになされたものであり、その目的は、印刷装置が一度しか提供しないデバイス情報を複数の情報処理部が取得しようとした場合に、一つの情報処理部だけがデバイス情報を取得してしまい、他の情報処理部がデバイス情報を取得できなくなるのを防止可能な情報分配処理プログラム、情報処理装置、および情報分配処理システムを提供することにある。
【課題を解決するための手段】
【０００７】
以下、上記目的を達成するため、本発明において採用した特徴的構成について説明する。
請求項１に記載の情報分配処理プログラムは、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置において、当該情報処理装置が備えるコンピュータを、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部として機能させるための情報分配処理プログラムであって、前記コンピュータを前記情報分配部として機能させるための処理として、前記コンピュータに、主処理と、常駐処理とを並列に実行させるプログラムとされており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、を実行させ、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、を実行させ、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、を実行させることを特徴とする。
【０００８】
このように構成された情報分配処理プログラムに従った処理を情報処理装置が備えるコンピュータに実行させることにより、コンピュータを上記各手段として機能させれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
【０００９】
また、本発明において、上記常駐処理では、印刷装置からデバイス情報が返信されたら、返信された前記デバイス情報が、複数の情報処理部のいずれかから取得要求のあったデバイス情報かどうかを判断する。そして、複数の情報処理部のいずれかから取得要求のあったデバイス情報であった場合に、デバイス情報用バッファに記憶する。
【００１０】
したがって、印刷装置に対して要求したデバイス情報以外の情報が、何らかの原因で印刷装置から取得できてしまった場合でも、そのような情報をデバイス情報用バッファに記憶せず、そのような情報が各情報処理部へ提供されることはないので、コンピュータには無駄な情報を各情報処理部へ提供するための負荷がかからなくなり、各情報処理部でも無駄な情報を処理するための負荷がかからなくなる。
【００１１】
なお、上述の如く構成する以外には、例えば、印刷装置に対して要求したデバイス情報以外の情報が、何らかの原因で印刷装置から取得できてしまった場合に、そのような情報をも各情報処理部へ提供するように構成することができる。ただし、この場合は、印刷装置に対して要求したデバイス情報とは無関係な情報まで各情報処理部へ提供されることになるので、各情報処理部は、印刷装置に対して要求したデバイス情報なのか印刷装置に対して要求したデバイス情報とは無関係な情報なのかを判断して、各情報処理部において必要な情報を選別し、不要な情報は破棄するなど、情報処理部側での適切な対処が必要である。
【００１２】
また、本発明において、上記主処理では、デバイス情報を、リード要求の送信元となった情報処理部に対し送信する。
【００１３】
したがって、リード要求の送信元ではない情報処理部へデバイス情報を提供するための負荷がかからなくなり、各情報処理部でも要求していないデバイス情報を処理するための負荷がかからなくなる。
【００１４】
なお、上述の如く構成する以外には、例えば、リード要求の送信元となった情報処理部であるか否かを判断することなく、すべての情報処理部へデバイス情報を提供するように構成することができる。ただし、この場合は、リード要求を発していない情報処理部にもデバイス情報が提供されることになるので、各情報処理部は、自身が発したリード要求に対する応答として返されたデバイス情報なのか否かを判断して、必要なデバイス情報であれば利用し、不要なデバイス情報であれば破棄するなど、情報処理部側での適切な対処が必要である。
【００１５】
また、本発明において、上記常駐処理では、印刷装置に対してデバイス情報のリード要求を送信し、返信されたデバイス情報が所期のデバイス情報であった場合には、そのデバイス情報をデバイス情報用バッファに記憶する。そして、上記主処理では、常駐処理において、デバイス情報を取得するタイミングとは非同期で、デバイス情報用バッファに記憶されたデバイス情報を、リード要求の送信元となった情報処理部へと送信する。
【００１６】
したがって、印刷装置からデバイス情報を取得するタイミングと情報処理部へデバイス情報を提供するタイミングを非同期とすることができ、情報処理部側でデバイス情報が必要となったときに、情報処理部に対してデバイス情報を提供することができる。
【００１７】
また、複数の情報処理部から同じデバイス情報についてのリード要求があった場合には、最初にデバイス情報のリード要求を発した情報処理部に対して送信したデバイス情報が既にデバイス情報用バッファ中に記憶されているので、後からデバイス情報のリード要求を発した他の情報処理部に対しては、迅速にデバイス情報を送信することもできる。
【００１８】
情報処理部側でデバイス情報が必要となったことは、情報処理部側からの通知で判断し、その通知を受けたときに通知に対する応答として情報処理部側へデバイス情報を送信してもよいし、デバイス情報を格納する記憶領域を、情報処理部側からもアクセス可能な共有メモリ等によって構成し、情報処理部側でデバイス情報が必要となったときに、情報処理部側からデバイス情報を自由に読み出せるように構成してもよい。
【００１９】
なお、上述の如く構成する以外には、例えば、印刷装置からデバイス情報を取得したら、その取得に同期して直ちにデバイス情報を情報処理部へと送信するように構成することができる。ただし、この場合は、情報処理部がデバイス情報を必要としているか否かを問わず、デバイス情報が情報処理部側へ送信されることになるので、送信されたデバイス情報を情報処理部が直ちに処理するか、送信されたデバイス情報を後から処理できるように、情報処理部側で用意した記憶領域にデバイス情報を保存するなど、情報処理部側での適切な対処が必要である。
【００２０】
【００２１】
【００２２】
本発明において、デバイス情報をデバイス情報用バッファに記憶させるに当たっては、デバイス情報を、そのデバイス情報用のデバイス情報用バッファに記憶させる構成とする。
【００２３】
この場合、デバイス情報が、そのデバイス情報用に用意されたデバイス情報用バッファに記憶されるので、同じデバイス情報を複数の情報処理部へ提供する場合に、情報処理部毎にデバイス情報を記憶するものとは異なり、同じデバイス情報を重複してデバイス情報用バッファに記憶しなくても済むので、デバイス情報用バッファの使用量を削減することができる。
【００２４】
次に、請求項２に記載の情報処理装置は、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置を対象にして、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、を備える情報処理装置であって、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部を備えており、前記情報分配部では、主処理と、常駐処理とが並列に実行されており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されていることを特徴とする。
【００２５】
このように構成された情報処理装置によれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
【００２６】
【００２７】
次に、請求項３に記載の情報分配処理システムは、印刷装置に関する情報であるデバイス情報の取得開始を要求されると、当該要求以降は状態変化のたびに前記デバイス情報を提供可能な状態となる一方、前記デバイス情報の取得停止を要求されると、当該要求以降は前記デバイス情報を提供しない状態となる前記印刷装置と、前記印刷装置とデータ通信可能な情報処理装置とを備えるシステムであり、前記情報処理装置は、前記デバイス情報に基づく情報処理を実行する複数の情報処理部と、前記情報処理部それぞれが前記印刷装置からデバイス情報を取得するために利用されるインターフェースと、前記印刷装置から取得した前記デバイス情報を前記複数の情報処理部へと分配する情報分配部とを備えており、前記情報分配部では、主処理と、常駐処理とが並列に実行されており、前記主処理としては、前記複数の情報処理部のいずれかから前記デバイス情報の取得開始の要求を受信したら、どのデバイス情報の取得開始要求を受けたのかに応じて、初めて取得開始要求を受けたデバイス情報であれば、前記印刷装置に対し前記デバイス情報の取得開始の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを新たに確保する一方、すでに他の情報処理部から取得開始の要求を受けたことがあるデバイス情報であれば、前記印刷装置に対する前記デバイス情報の取得開始要求の送信、及び前記デバイス情報用バッファの新たな確保を行わず、しかも、前記複数の情報処理部のいずれかから前記デバイス情報の取得停止の要求を受信したら、どのデバイス情報の取得停止要求を受けたのかに応じて、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部すべてが、当該デバイス情報の取得開始を要求している状態になければ、前記印刷装置に対し前記デバイス情報の取得停止の要求を送信するとともに、当該デバイス情報に対応するデバイス情報用バッファを削除する一方、当該デバイス情報の取得停止を要求した情報処理部以外の情報処理部のいずれかが、当該デバイス情報の取得開始を要求している状態にあれば、前記印刷装置に対する前記デバイス情報の取得停止要求の送信、及び前記デバイス情報用バッファの削除を行わないことにより、どの情報処理部からどのデバイス情報の取得要求を受けたのかを、前記常駐処理から参照可能な記憶領域に記憶する処理、が実行され、前記常駐処理としては、前記印刷装置に対し前記デバイス情報のリード要求を送信し、前記印刷装置から前記デバイス情報が返信されたら、前記主処理で前記記憶領域に記憶させた情報を参照して、返信された前記デバイス情報が、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報かどうかを判断し、前記複数の情報処理部のいずれかから前記取得開始要求のあった前記デバイス情報であった場合には、当該デバイス情報に対応する前記デバイス情報用バッファに記憶する処理、が実行され、さらに、前記主処理としては、前記複数の情報処理部のいずれかからリード要求を受信したら、前記記憶領域に記憶させた情報に基づき、そのリード要求対象に該当する前記デバイス情報を特定し、特定した前記デバイス情報用バッファに記憶されている前記デバイス情報を、前記リード要求の送信元となった前記情報処理部に対し送信する処理、が実行されていることを特徴とする。
【００２８】
このように構成された情報分配処理システムによれば、印刷装置から一度しか受信できないデバイス情報であっても、そのデバイス情報を複数の情報処理部へ提供することができ、各情報処理部に適切な情報処理を実施させることができる。
【００２９】
【００３０】
【００３１】
【００３２】
【発明を実施するための最良の形態】
【００３３】
次に、本発明の実施形態について、いくつかの具体的な例を挙げて説明する。
［第１実施形態］
まず、第１実施形態について説明する。
【００３４】
図１は、パーソナルコンピュータ１（以下、ＰＣ１という）とデバイス２とを備えてなるシステム全体の構成を示した概略構成図である。本実施形態において例示するデバイス２は、プリンタ機能、イメージスキャナ機能、コピー機能、ファクシミリ機能、および電話機能を兼ね備えた複合機である。
【００３５】
［ＰＣの構成］
ＰＣ１は、図１に示すように、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ハードディスク装置１４（以下、ＨＤＤ１４という）、操作部１５、表示部１６、およびＵＳＢ（Universal Serial Bus）インターフェース１７（以下、ＵＳＢ  Ｉ／Ｆ１７という）などを備えている。
【００３６】
ＣＰＵ１１は、ＲＯＭ１２やＲＡＭ１３に記憶されたプログラムに従って、ＰＣ１各部に対する制御および各種演算を実行する装置である。
ＲＯＭ１２は、ＰＣ１の電源スイッチを切っても記憶内容を保持可能な記憶装置で、ＢＩＯＳ（Basic Input Output System）や通常であれば更新されない読み出し用のデータ等を記憶している。
【００３７】
ＲＡＭ１３は、ＣＰＵ１１から直接アクセスされるメインメモリ等として利用される記憶装置で、このＲＡＭ１３には、ＯＳ（Operating System）や各種アプリケーションなどのソフトウェアがＨＤＤ１４から読み込まれるようになっている。
【００３８】
ＨＤＤ１４は、ＯＳ、各種アプリケーションプログラム、および各種データファイルを保存しておくための装置である。
操作部１５は、利用者からの各種指示を入力するための入力装置であり、例えば、キーボードや各種ポインティングデバイス（例えば、マウス）等によって構成される。
【００３９】
表示部１６は、各種情報を利用者に提示するための出力装置であり、例えば、カラー画像を表示可能な液晶ディスプレイ等によって構成される。
ＵＳＢ  Ｉ／Ｆ１７は、ＵＳＢ規格準拠のシリアルインターフェースで、このＵＳＢ  Ｉ／Ｆ１７には、様々なデバイス（例えば、プリンタ、キーボード、マウス、スキャナ、スピーカー、各種ストレージデバイスなど）を接続することができるが、本実施形態において、ＵＳＢ  Ｉ／Ｆ１７にはデバイス２が接続されている。
【００４０】
また、本実施形態において、ＰＣ１にはマルチタスク機能を備えたＯＳが搭載されている。このような機能を有するＯＳの具体例としては、例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、ＭａｃＯＳ（登録商標）などを挙げることができる。
【００４１】
ＰＣ１が備えるＣＰＵ１１は、ＯＳのマルチタスク機能により、複数のソフトウェアに基づく処理を時分割で並列に実行することができ、これにより、後から詳述する複数の情報処理部や情報分配部がＰＣ１上で機能するようになっている。また、ＰＣ１上では、ＯＳが備える標準機能として、上述のＵＳＢ  Ｉ／Ｆ１７を介してデバイスとの通信を行う機能を実現するＵＳＢコントローラや、デバイス２へ出力する印刷データを印刷ジョブとして管理する印刷スプーラなどが機能するようになっている。
【００４２】
なお、ＯＳによって提供されるこれらの各種機能そのものは公知なので、ここでの詳細な説明は省略するが、以下の説明においては、ＰＣ１が、Ｗｉｎｄｏｗｓ（登録商標）によって提供される各種機能を有するとの前提で説明を続ける。
【００４３】
［デバイスの構成］
デバイス２は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ハードディスク装置２４（以下、ＨＤＤ２４という）、操作キー２５、表示パネル２６、ＵＳＢ  Ｉ／Ｆ２７、不揮発性ＲＡＭ２８、印字部２９、読み取り部３０、およびモデム３１などを備えている。
【００４４】
ＣＰＵ２１は、ＲＯＭ２２に記憶されている制御プログラムに従ってデバイス２各部の制御および各種演算を実行する装置である。
ＲＯＭ２２は、デバイス２の電源スイッチを切っても記憶内容を保持可能な記憶装置で、上記制御プログラムの他、通常であれば更新されない読み出し用の各種データを記憶している。
【００４５】
ＲＡＭ２３は、ＣＰＵ２１から直接アクセスされるメインメモリ等として利用される記憶装置で、ＣＰＵ２１が処理中に算出する各種データなどが一時的にＲＡＭ２３に記憶されるようになっている。
【００４６】
ＨＤＤ２４は、ファクシミリ機能により送受信する画像、イメージスキャナ機能により読み取った画像、プリンタ機能により印刷する画像など、比較的サイズが大きい画像データを記憶する装置である。
【００４７】
操作キー２５は、利用者がマニュアル操作でデバイス２に対して指令を与える場合に操作する入力装置である。
表示パネル２６は、小型液晶ディスプレイによって構成された装置で、デバイス２の設定や状態などの情報を表示できるようになっている。
【００４８】
ＵＳＢ  Ｉ／Ｆ２７は、ＵＳＢ規格準拠のシリアルインターフェースで、このＵＳＢ  Ｉ／Ｆ２７を利用することにより、ＰＣ１との間でデータ通信を実行できるようになっている。
【００４９】
不揮発性ＲＡＭ２８は、このデバイス２に関する設定等、電力供給が断たれたときにも消失させたくないデータを記憶する記憶装置である。
印字部２９は、シート状の媒体（例えば記録用紙）に対する印刷を実行可能な装置で、プリンタ機能による印刷データの印刷、ファクシミリ機能による受信画像の印刷、コピー機能によるコピー画像の印刷等を行う際に作動する。
【００５０】
読み取り部３０は、自動原稿送り装置（図示略）にセットされた原稿またはフラットベッドのコンタクトガラス上に置かれた原稿から画像を読み取り可能な装置で、イメージスキャナ機能による画像の読み取り、ファクシミリ機能による送信画像の読み取り等を行う際に作動する。
【００５１】
モデム３１は、デバイス２側で作成されたデジタルデータを音声信号に変換して公衆回線側に送信したり、公衆回線側から受信した音声信号をデジタルデータに変換してデバイス２側で処理できるようにするための装置で、ファクシミリ機能による画像の送受信、電話機能による通話を行う際に作動する。
【００５２】
［ＰＣによるデバイス情報取得方法の概要］
次に、ＰＣ１によるデバイス情報取得方法の概要について説明する。
ＰＣ１が備えるＣＰＵ１１は、上述した通り、複数のソフトウェアに基づく処理を時分割で並列に実行することができ、これにより、図２に示す情報分配部４１や複数の情報処理部４３ａ〜４３ｃなどが、ＰＣ１上で機能するようになっている。
【００５３】
これらのうち、情報分配部４１はサーバーとして機能、複数の情報処理部４３ａ〜４３ｃはクライアントとして機能し、各情報処理部４３ａ〜４３ｃからの要求に応じて、情報分配部４１がデバイス２からデバイス情報を取得するとともに、取得したデバイス情報を、各情報処理部４３ａ〜４３ｃからの要求に応じて、情報分配部４１が各情報処理部４３ａ〜４３ｃへ提供する。そして、情報処理部４３ａ〜４３ｃそれぞれが、デバイス情報を利用して各種情報処理を行っている。情報処理部４３ａ〜４３ｃが行う情報処理の具体例としては、例えば、取得したデバイス情報に基づいてデバイス２の状態をほぼリアルタイムで表示部１６に表示するステータスモニターとしての処理、あるいは、取得したデバイス情報に基づいてデバイス２のシリアル番号やファームウェアヴァージョン等の情報を表示する処理などを挙げることができる。なお、本実施形態では、３つの情報処理部４３ａ〜４３ｃが例示してあるが、情報処理部は並列にいくつ機能してもよい。また、各情報処理部が処理を開始するタイミングや処理を終了するタイミング等は任意であり、各情報処理部毎に独立したタイミングで構わない。
【００５４】
一方、デバイス２は、ＰＣ１側からの要求に応じて、デバイス２に関する情報であるデバイス情報をＰＣ１に対して提供する機能を備えている。本実施形態の場合、デバイス２は複合機なので、デバイス情報としては、例えば、オンライン、オフラインといった「デバイスの状態に関する情報」、用紙サイズ毎の印刷枚数あるいは総印刷枚数といった「使用頻度に関する情報」、ドラム交換時期などの「交換部品の使用度合に関する情報」、トナーないしインク残量や記録用紙残量といった「消耗品の消耗度合に関する情報」、紙詰まり回数といった「異常の発生回数に関する情報」などが提供される。これらのデバイス情報のうち、どれを提供するかは、ＰＣ１側から送信されてくるコマンドにより指定される。
【００５５】
本実施形態において、ＰＣ１がデバイス２に対してデバイス情報を要求する際には、ＰＣ１からデバイス２に対してＰＪＬコマンドを送信する。ＰＪＬ（Printer Job Language；プリンタジョブ言語）は、プリンタが備える各種機能を制御するために用意されたコマンド言語で、Hewlett-Packard社において開発され、その後他社でも採用された周知のものである。
【００５６】
ＰＣ１からデバイス２へＰＪＬコマンドを送信する際には、ＰＣ１からデバイス２へ印刷データを出力する場合と同等の処理がＰＣ１において実行される。具体的には、ＰＣ１上で機能する情報処理部４３ａ〜４３ｃが、情報分配部４１に対してコマンド送信要求を送信すると、このコマンド送信要求に応じて情報分配部４１がＰＪＬコマンドを出力する。情報分配部４１が出力したＰＪＬコマンドは、プリンタドライバ経由で印刷スプーラに引き渡され、印刷スプーラは、受け取ったＰＪＬコマンドを印刷ジョブとして処理する。その結果、ＰＪＬコマンドは、ＵＳＢ  Ｉ／Ｆ１７を通じてデバイス２へと出力されることになる。
【００５７】
デバイス２では、通常の印刷データと同様にＰＪＬコマンドを受信するが、受信したデータのヘッダ情報からＰＪＬコマンドであることを認識し、その内容を解析する。その解析の結果、デバイス２が応答可能なＰＪＬコマンドであった場合は、不揮発性ＲＡＭ２８に蓄積されているデバイス情報を読み出して、そのデバイス情報をＰＣ１へと送信する。
【００５８】
ＰＣ１では、情報分配部４１がデバイス２から返されるデバイス情報をリードバックする。具体的には、デバイス２の場合、ＵＳＢ  Ｉ／Ｆ１７を介して接続されているので、情報分配部４１が情報の受信を行い、受信した情報量が０（ゼロ）であった場合には再び情報の受信を繰り返し、その繰り返し処理によって情報を取得する。何らかのデータを受信した場合は、そのデータが所期のデバイス情報であるかどうかをチェックし、所期のデバイス情報でない場合は、さらに受信処理をやり直し、最終的に所期のデバイス情報を取得することになる。
【００５９】
デバイス情報を取得した情報分配部４１は、情報処理部４３ａ〜４３ｃそれぞれに対応付けて用意されたバッファ４５ａ〜４５ｃにデバイス情報を格納する。すなわち、バッファ４５ａ〜４５ｃには、同じ内容のデバイス情報が格納される。
【００６０】
そして、情報分配部４１が情報処理部４３ａ〜４３ｃのいずれか（例えば、情報処理部４３ａ）からのリード要求を受けた場合、情報分配部４１は、要求元の情報処理部（例えば、情報処理部４３ａ）に対応するバッファ（例えば、バッファ４５ａ）に格納されたデバイス情報を、要求元の情報処理部（例えば、情報処理部４３ａ）に対して送信する。
【００６１】
その結果、要求元の情報処理部（例えば、情報処理部４３ａ）は、デバイス情報を取得することができるので、取得したデバイス情報に基づく情報処理（例えば、デバイス２の状態を表示部１６に表示する処理等）を実行することができる。
【００６２】
さて、以上のような仕組みにより、ＰＣ１とデバイスとの間では、ＰＪＬコマンドの送受信およびデバイス情報の送受信が行われるが、デバイス２は、ＰＣ１側からの要求に応じてデバイス情報を提供するものの、情報処理部４３ａ〜４３ｃのいずれが要求元であるのかを認識する仕組みにはなっていない。そのため、ＰＣ１側からのリードバックを受ければ、その時点でデバイス２が要求されていたすべてのデバイス情報をＰＣ１側へ提供する。このような仕組みを採用しているため、各情報処理部４３ａ〜４３ｃそれぞれがデバイス情報の取得要求を発して、それらに対する応答として返すべきデバイス情報をデバイス２が用意しても、例えば、情報処理部４３ａが独自にデバイス２からのリードバックを行ってしまうと、他の情報処理部４３ｂ，４３ｃに送信されるべきデバイス情報まで情報処理部４３ａに送信されてしまい、送信済みのデバイス情報は、デバイス２の送信バッファ内から消されてしまう。このような状況になった場合、その後、他の情報処理部４３ｂ，４３ｃがデバイス２からのリードバックを行ったとしても、他の情報処理部４３ｂ，４３ｃでは、必要なデバイス情報を受け取れないという事態を招く。
【００６３】
上記情報分配部４１は、こうした事態が発生するのを防止するために設けられたものである。具体例を交えて説明すると、例えば、各情報処理部４３ａ〜４３ｃそれぞれがデバイス情報の取得要求を発した場合、それらに対する応答として返すべきデバイス情報をデバイス２が用意するが、情報分配部４１は、代表してデバイス２からのリードバックを行い、取得したデバイス情報を複数のバッファ４５ａ〜４５ｃに複製する。そして、各情報処理部４３ａ〜４３ｃは、独自にデバイス２からのリードバックを行わず、必ず情報分配部４１からデバイス情報の提供を受ける。ここで、例えば、情報処理部４３ａが情報分配部４１からデバイス情報の提供を受けた場合、送信済みのデバイス情報はバッファ４５ａ内から消されてしまう。しかし、その後も、バッファ４５ｂ，４５ｃ内には、複製されたデバイス情報が残っているので、他の情報処理部４３ｂ，４３ｃは、情報分配部４１からデバイス情報の提供を受けることができるのである。
【００６４】
［情報分配部における主処理］
次に、上記のような情報分配部４１の機能を実現するため、情報分配部４１において実行される主処理について、図３のフローチャートに基づいて説明する。この処理は、情報分配部４１を機能させたい時点で開始されていればよい処理であり、例えば、ＰＣ１の起動に伴って開始される処理となっていればよい。
【００６５】
この処理を開始すると、情報分配部４１（正確には、情報分配部４１として機能しているＣＰＵ１１；以下、単に情報分配部４１という）は、まずクライアントとなる情報処理部４３ａ〜４３ｃからの要求待ちになる（Ｓ１０５）。ここで、情報処理部４３ａ〜４３ｃのいずれかから何らかの要求があるとＳ１０５の処理を抜け、続いて、情報分配部４１は、新規クライアント追加要求か否かを判断する（Ｓ１１０）。
【００６６】
Ｓ１１０の処理において、新規クライアント追加要求であった場合（Ｓ１１０：ＹＥＳ）、情報分配部４１は、要求元となったクライアントのＩＤをＲＡＭ１３に記憶させる（Ｓ１１５）。このＩＤは、新規クライアント追加要求ごとに情報分配部４１によりユニークな値が生成されるものである。このＩＤは、このクライアントからの追加要求終了時に、後述するＳ１２２の処理により、戻り値としてクライアントに渡される。以後クライアントは、後述する別の要求（クライアント削除要求、新規コマンド送信要求、デバイス情報呼び出し情報など）を発行する際に、このＩＤを指定することにより、その処理対象が自分であることを情報分配部４１に知らせる。図２に示すように、クライアントである情報処理部４３ａ〜４３ｃには、それぞれユニークなＩＤ（図２に示した例では、ＡＰ１〜ＡＰ３）が付与されて、例えば、情報処理部４３ａが新規クライアント追加要求を行った場合を例に挙げれば、その追加要求中にはＩＤ：ＡＰ１が含まれているので、Ｓ１１５の処理では、ＩＤ：ＡＰ１を記憶する。以後は、クライアントからの要求中にＩＤ：ＡＰ１が含まれていれば、その要求が情報処理部４３ａからの要求であることを、情報分配部４１側で認識できるようになる。そして、Ｓ１１５の処理を終えたら、要求元となったクライアントに対応するバッファを確保する（Ｓ１２０）。Ｓ１２０の処理で確保されるバッファは、図２に示したバッファ４５ａ〜４５ｃに相当するものであり、例えば、情報処理部４３ａが新規クライアント追加要求を行った場合を例に挙げれば、Ｓ１２０の処理によりバッファ４５ａが確保されることになる。そして、Ｓ１２０の処理を終えたら、上述したＩＤを戻り値としてクライアントに返してから（Ｓ１２２）、Ｓ１０５の処理へと戻り、再びＳ１０５以降の処理を繰り返す。なお、このバッファは、先のＳ１１５の処理により、生成・記憶されたＩＤと関連づけられて管理される。すなわちＩＤが与えられれば、対応するバッファが特定できるように管理される。
【００６７】
さて一方、上記Ｓ１１０の処理において、新規クライアント追加要求ではなかった場合（Ｓ１１０：ＮＯ）、続いて、情報分配部４１は、クライアント削除要求か否かを判断する（Ｓ１２５）。
【００６８】
Ｓ１２５の処理において、クライアント削除要求であった場合（Ｓ１２５：ＹＥＳ）、情報分配部４１は、要求元となったクライアントに対応するバッファを削除する（Ｓ１３０）。この際、クライアントはＳ１１５の処理で自分に与えられたＩＤを指定して、この削除要求を発行する。情報分配部４１は、その指定されたＩＤに対応するバッファを削除するのである。例えば、情報処理部４３ａが新規クライアント追加要求を行った場合を例に挙げれば、Ｓ１３０の処理によりバッファ４５ａが削除されることになる。そして、Ｓ１３０の処理を終えたら、Ｓ１０５の処理へと戻り、再びＳ１０５以降の処理を繰り返す。
【００６９】
一方、上記Ｓ１２５の処理において、クライアント削除要求ではなかった場合（Ｓ１２５：ＮＯ）、情報分配部４１は、新規コマンド送信要求であるか否かを判断する（Ｓ１３５）。本実施形態においては、各情報処理部４３ａ〜４３ｃからＰＪＬコマンドを含むコマンド送信要求がクライアントを示すＩＤとともに送信されてくる。ただし、これは、各情報処理部４３ａ〜４３ｃからＰＪＬコマンドを示すＰＪＬ識別子を含むコマンド送信要求を送信するとともに、送信されて期したＰＪＬ識別子に基づいて、情報分配部４１側でＰＪＬ識別子に対応するＰＪＬコマンドを用意するようにしてもよい。
【００７０】
Ｓ１３５の処理において、新規コマンド送信要求であった場合（Ｓ１３５：ＹＥＳ）、情報分配部４１は、送信要求されたＰＪＬコマンドをスプーラ経由でＵＳＢ  Ｉ／Ｆ１７を通じてデバイス２へ送信するとともに、その送信要求されたＰＪＬコマンドを前記ＩＤと関連付けてＲＡＭ１３に記憶させる（Ｓ１４０）。なお、Ｓ１４０の処理でＲＡＭ１３に記憶させたＰＪＬコマンドは、後述するＳ２１５の判断処理において参照されることになる。そして、Ｓ１４０の処理を終えたら、Ｓ１０５の処理へと戻り、再びＳ１０５以降の処理を繰り返す。
【００７１】
一方、Ｓ１３５の処理において、新規コマンド送信要求ではなかった場合（Ｓ１３５：ＮＯ）、本実施形態では、クライアントからデバイス情報のリード要求を受けたものと判断する。すなわち、新規クライアント追加要求、クライアント削除要求、および新規コマンド送信要求のいずれでもない要求としては、デバイス情報リード要求しか存在しないとの前提で処理を進めるように構成されている。この場合、情報分配部４１は、クライアントが付与したＩＤに基づいて要求元となったクライアントに対応するバッファをサーチし、そのバッファ内に記憶されたデバイス情報（後述する常駐スレッド処理により記憶されたもの）を読み出して（Ｓ１４５）、読み出したデバイス情報を要求元となったクライアントに送信する（Ｓ１５０）。例えば、情報処理部４３ａからデバイス情報のリード要求を受けた場合を例に挙げれば、Ｓ１４５の処理によりバッファ４５ａからデバイス情報が読み出され、そのデバイス情報が、Ｓ１４５の処理によってクライアントである情報処理部４３ａに送信されることになる。なお、Ｓ１４５の処理により、バッファから読み出されるデバイス情報は、本処理と並列に実行される常駐スレッド処理によりデバイス２から読み出されてバッファに格納されたものであるが、この常駐スレッド処理の詳細については後述する。
【００７２】
そして、Ｓ１５０の処理を終えたら、送信分のデバイス情報をバッファから削除して（Ｓ１５５）、Ｓ１０５の処理へと戻り、再びＳ１０５以降の処理を繰り返す。
［情報分配部における常駐スレッド処理］
次に、情報分配部４１において主処理と並列に実行される常駐スレッド処理について、図４のフローチャートに基づいて説明する。
【００７３】
この処理を開始すると、情報分配部４１は、デバイス２よりデバイス情報の読み取りを行う（Ｓ２０５）。ここで、まだデバイス２に対してＰＪＬコマンドが送信されていない場合など、デバイス２側がデバイス情報を送信できる状態にない場合は、Ｓ２０５の処理で読み取り待ちになり、何らかの情報を読み取ったらＳ２０５の処理を抜ける。
【００７４】
続いて、情報分配部４１は、ループ処理にてすべてのクライアントを順に処理するため、未処理のクライアントに対応するＩＤの中から、処理対象とするクライアントに対応する１つのＩＤを選ぶ（Ｓ２１０）。このＳ２１０の処理において、未処理のクライアントに対応するＩＤとは、上記Ｓ１１５の処理で記憶されたすべてのＩＤのうち、Ｓ２１０の処理でまだ選ばれたことがないＩＤである。
【００７５】
Ｓ２１０の処理を終えたら、情報分配部４１は、Ｓ２０５の処理で読み取った情報が、処理対象とするクライアント（＝Ｓ２１０の処理で選んだＩＤに対応するクライアント）から送信要求されたコマンドの返答か否かを判断する（Ｓ２１５）。クライアントから送信要求されたコマンドは、上述したＳ１４０の処理によりＲＡＭ１３に記憶されている。したがって、Ｓ２１５の処理では、Ｓ１４０の処理でＲＡＭ１３に記憶されたコマンドと、Ｓ２０５の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
【００７６】
Ｓ２１５の処理において、処理対象とするクライアントから送信要求されたコマンドの返答ではなかった場合（Ｓ２１５：ＮＯ）、Ｓ２１０の処理へと戻り、Ｓ２１０以降の処理を繰り返す。
【００７７】
一方、Ｓ２１５の処理において、処理対象とするクライアントから送信要求されたコマンドの返答であった場合は（Ｓ２１５：ＹＥＳ）、Ｓ２１０の処理で選んだＩＤに対応するバッファに十分な空き領域があるか否かを判断する（Ｓ２２０）。そして、バッファに十分な空き領域がない場合は（Ｓ２２０：ＹＥＳ）、古いデバイス情報を捨ててバッファ内の領域を空ける（Ｓ２２５）。一方、バッファに十分な空き領域がある場合は（Ｓ２２０：ＮＯ）、Ｓ２２５の処理をスキップする。
【００７８】
こうしてＳ２２０の処理またはＳ２２５の処理を終えたら、続いて、情報分配部４１は、Ｓ２０５の処理で読み取ったデバイス情報を、Ｓ２１０の処理で選んだＩＤに対応するバッファに追記書き込みする（Ｓ２３０）。このＳ２３０の処理により、バッファ４５ａ〜バッファ４５ｃにはデバイス情報が格納され、このデバイス情報が上述したＳ１４５の処理によってバッファ４５ａ〜バッファ４５ｃから読み出されることになる。その後、情報分配部４１は、Ｓ１４０の処理で記憶された対応情報を消去する（Ｓ２３２）。このＳ２３２の処理により、要求コマンドの処理が完了したと判断し、その要求情報を削除するのである。なお、この際要求コマンドがＵＳＴＡＴＵＳである場合は、この処理はスキップされる。これはＵＳＴＡＴＵＳの場合、要求コマンドと返信データが１対１に対応しないため、処理完了とはならないからである。
【００７９】
そして、Ｓ２３０の処理を終えたら、上記Ｓ１１５の処理で記憶されたすべてのＩＤについての処理が終了したか否かを判断し（Ｓ２３５）、終了していなければ（Ｓ２３５：ＮＯ）、Ｓ２１０の処理へと戻り、再びＳ２１０〜Ｓ２３５の処理を繰り返す。
【００８０】
一方、上記Ｓ１１５の処理で記憶されたすべてのＩＤについての処理が終了した場合（Ｓ２３５：ＹＥＳ）、この常駐スレッド処理を終了するか否かを判断し（Ｓ２４０）、終了すべきであれば（Ｓ２４０：ＹＥＳ）、常駐スレッド処理を終了する。また、常駐スレッド処理を終了しない場合は（Ｓ２４０：ＮＯ）、１秒待機して（Ｓ２４５）、Ｓ２０５の処理へと戻り、再びＳ２０５以降の処理を繰り返す。
【００８１】
以上のような常駐スレッド処理が情報分配部４１において実行されることにより、Ｓ２０５の処理でデバイス２からデバイス情報を読み取る毎に、Ｓ２１０〜Ｓ２３５のループ処理が実行され、このループ処理により、すべてのクライアント（情報処理部４３ａ〜４３ｃ）に対応するバッファ４５ａ〜４５ｃにデバイス情報が分配される。そして、このデバイス情報の分配が完了したら、１秒の待機（Ｓ２４５）を経て、再びデバイス２からデバイス情報を読み取る処理（Ｓ２０５）以降の処理が繰り返されることになる。
【００８２】
［情報処理部における処理の一例］
次に、情報処理部における処理の一例として、情報処理部４３ａで実行されるステータスモニター処理について、図５のフローチャートに基づいて説明する。
【００８３】
各情報処理部４３ａ〜４３ｃから情報分配部４１に対する要求を行う機能は、複数の情報処理部４３ａ〜４３ｃにおいて同じ機能が共通に利用されるものなので、クライアントＤＬＬ（Dynamic Link Library）として提供され、各情報処理部４３ａ〜４３ｃがクライアントＤＬＬを動的にリンクすることで、情報分配部４１に対する要求機能を利用できるようになっている。このクライアントＤＬＬと、情報分配部４１との通信は、Ｗｉｎｄｏｗｓのリモートプロシージャーコール（ＲＰＣ）などの既存のプロセス間通信の機能を使用する。
【００８４】
この処理を開始すると、情報処理部４３ａ（正確には、情報処理部４３ａとして機能しているＣＰＵ１１；以下、単に情報処理部４３ａという）は、クライアントオープン処理を実行する（Ｓ３０５）。このクライアントオープン処理は、ステータスモニターとしての処理を開始する上で必要なバッファの確保や各種データの初期化等を行う処理であるが、その中で、情報分配部４１に対して新規クライアント追加要求が送信される。この新規クライアント追加要求が、情報分配部４１において上記Ｓ１０５の処理で受信されると、情報分配部４１においてＳ１１０〜Ｓ１２０の処理が実行されることになる。
【００８５】
この新規クライアント追加処理の戻り値として、ＩＤが返される。このＩＤは、後述する各要求時に、引数として付加される。
さて、Ｓ３０５の処理を終えたら、情報処理部４３ａは、コマンド送信処理を実行する（Ｓ３１０）。このコマンド送信処理は、ＰＪＬコマンドの送信等を行う処理であるが、ＰＪＬコマンドの送信は上記クライアントＤＬＬを利用して実行され、これにより、ＰＪＬコマンドを含むコマンド送信要求が情報分配部４１へと送信されることになる。この新規コマンド送信要求が、情報分配部４１において上記Ｓ１０５の処理で受信されると、情報分配部４１においてＳ１３５〜Ｓ１４０の処理が実行されることになる。
【００８６】
こうしてコマンドを送信したら、情報処理部４３ａは、リード処理を実行する（Ｓ３１５）。このリード処理は、デバイス情報を取得する処理であり、さらに取得した最新のデバイス情報に基づく表示を表示部１６に表示する処理なども含まれる。デバイス情報のリード要求は上記クライアントＤＬＬを利用して実行される。このリード要求が、情報分配部４１において上記Ｓ１０５の処理で受信されると、情報分配部４１においてＳ１４５〜Ｓ１５５の処理が実行され、その結果、情報分配部４１からはバッファ４５ａに格納されたデバイス情報が提供されることになる。
【００８７】
Ｓ３１５の処理を終えたら、情報処理部４３ａは、処理を終了するか否かを判断し（Ｓ３２０）、終了しない場合は（Ｓ３２０：ＮＯ）、一秒待機して（Ｓ３２５）、Ｓ３１５の処理へと戻り、Ｓ３１５以降の処理を繰り返す。これにより、情報処理部４３ａは、繰り返しリード要求を発行して最新のデバイス情報を取得し、その最新のデバイス情報に基づく表示を表示部１６に表示する処理を繰り返すことになる。
【００８８】
一方、Ｓ３２０の処理において、処理を終了すると判断した場合は（Ｓ３２０：ＹＥＳ）、クライアントクローズ処理を実行する（Ｓ３３０）。このクライアントクローズ処理は、ステータスモニターとしての処理を終了する上で必要なバッファの削除（開放）等を行う処理であるが、その中で、情報分配部４１に対してクライアント削除要求が送信される。このクライアント削除要求が、情報分配部４１において上記Ｓ１０５の処理で受信されると、情報分配部４１においてＳ１２５〜Ｓ１３０の処理が実行されることになる。そして、Ｓ３３０の処理を終えたら、本処理を終了する。
【００８９】
［第１実施形態の効果］
以上説明したように、上記第１実施形態においては、デバイス２から一度しか受信できないデバイス情報であっても、そのデバイス情報を情報分配部４１が取得して、情報分配部４１が複数の情報処理部４３ａ〜４３ｃに対応するバッファ４５ａ〜４５ｃに複製するので、すべての情報処理部４３ａ〜４３ｃに対してデバイス情報を提供することができ、各情報処理部４３ａ〜４３ｃに適切な情報処理を実施させることができる。
【００９０】
また、上記第１実施形態においては、デバイス２に送信したＰＪＬコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス２から取得できてしまった場合でも、上記Ｓ２１５の処理により、そのような情報を各情報処理部４３ａ〜４３ｃへ提供しないので、ＰＣ１には無駄な情報を各情報処理部４３ａ〜４３ｃへ提供するための負荷（すなわち、Ｓ２２０〜Ｓ２３０の処理を実行するための負荷）がかからなくなり、各情報処理部４３ａ〜４３ｃでも無駄な情報を処理するための負荷がかからなくなる。なお、何らかの原因でデバイス２から取得できてしまう情報としては、例えば、情報分配部４１を経由することなく直接デバイス２へＰＪＬコマンドを送信するアプリケーションが混在した場合に、そのようなアプリケーションへの応答として返すべきデバイス情報が、デバイス２から取得できてしまう可能性がある。望ましくは、そのようなアプリケーションが混在しないようにすることが重要であるが、上記第１実施形態では、次善の策として、そのようなアプリケーションが混在した場合でも、無駄な情報を各情報処理部４３ａ〜４３ｃへ提供してしまわないように対処することができる。
【００９１】
さらに、上記第１実施形態においては、デバイス２から取得したデバイス情報をバッファ４５ａ〜４５ｃに一旦格納するので、デバイス２からデバイス情報を取得するタイミングとデバイス情報を情報処理部４３ａ〜４３ｃへ提供するタイミングを非同期とすることができ、各情報処理部４３ａ〜４３ｃ側それぞれでデバイス情報が必要となったときに、各情報処理部４３ａ〜４３ｃに対してデバイス情報を提供することができる。
【００９２】
また、上記第１実施形態においては、デバイス情報を情報処理部４３ａ〜４３ｃ毎に確保されたバッファ４５ａ〜４５ｃに格納するので、複数の情報処理部４３ａ〜４３ｃがそれぞれバッファ４５ａ〜４５ｃに格納されたデバイス情報を利用する際に、一つのバッファ（例えば、バッファ４５ａ）記憶領域で問題が生じても、他のバッファ（例えば、バッファ４５ｂ，４５ｃ）には悪影響を及ぼすことがない。
【００９３】
［第２実施形態］
次に、第２実施形態について説明する。
ただし、第２実施形態は、一部の構成が第１実施形態と同様になるので、第２実施形態においては、第１実施形態との相違点を中心に詳述する。具体的には、ＰＣおよびデバイスの構成と、情報処理部における処理は、第１実施形態と同様なので、その詳細な説明については省略する。ただし、第１実施形態とほぼ同様の構成については、第１実施形態と同じ符号を付すことで、第１実施形態とほぼ同様の構成であることを示す。
【００９４】
［ＰＣによるデバイス情報取得方法の概要］
以下、ＰＣ１によるデバイス情報取得方法の概要について説明する。
ＰＣ１上で情報分配部４１や複数の情報処理部４３ａ〜４３ｃが機能する点は、第１実施形態と同様である。ただし、第２実施形態においては、情報分配部４１の確保するバッファの構造が、第１実施形態とは相違する。
【００９５】
具体的には、第１実施形態においては、各情報処理部４３ａ〜４３ｃ毎に１つずつバッファを確保することにより、複数のバッファ４５ａ〜４５ｃが確保されていたが、第２実施形態においては、ＰＪＬコマンドに対する応答として返されるデバイス情報と、ＰＪＬコマンドの送信を要求したクライアント（情報処理部）のＩＤとを１組とする、複数組分の記憶領域を備えたバッファ４７が確保されるようになっている。
【００９６】
次に、上記バッファ４７の利用方法を、具体例を交えて説明する。
情報処理部４３ａが、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対応する１組分の記憶領域を、バッファ４７内に用意する。そして、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対する応答として返されるデバイス情報をデバイス２から取得した際には、そのデバイス情報と、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”の送信を要求したクライアント（情報処理部４３ａ）のＩＤ（ＡＰ１）が、バッファ４７内にある“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対応する１組分の記憶領域に格納される。
【００９７】
その後、情報処理部４３ｂが、同じく“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、既に“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対応する１組分の記憶領域が用意されているので、この場合は、新たな記憶領域を用意することはない。そして、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対する応答として返されるデバイス情報をデバイス２から取得した際には、そのデバイス情報と、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”の送信を要求したクライアント（情報処理部４３ａ，４３ｂ）のＩＤ（ＡＰ１，ＡＰ２）が、バッファ４７内にある“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”に対応する１組分の記憶領域に格納する。
【００９８】
つまり、複数のクライアントからコマンドの送信が要求された場合でも、そのコマンドが同じコマンドである場合には、バッファ４７内に新たな記憶領域が確保されることはなく、クライアントのＩＤのみが確保済みの記憶領域に追加登録される。
【００９９】
一方、情報処理部４３ａが、“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”に対応する新たな１組分の記憶領域を、バッファ４７内に用意する。そして、“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”に対する応答として返されるデバイス情報をデバイス２から取得した際には、そのデバイス情報と、“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”の送信を要求したクライアント（情報処理部４３ａ）のＩＤ（ＡＰ１）が、バッファ４７内にある“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”に対応する１組分の記憶領域に格納される。
【０１００】
つまり、同じクライアントからコマンドの送信が要求された場合でも、そのコマンドが異なるコマンドである場合には、バッファ４７内に新たな記憶領域が確保される。
このようにして、デバイス情報がコマンド毎にバッファ４７に格納されるとともに、ＩＤがバッファ４７に格納される結果、バッファ４７には、図６に示すように、デバイス情報とＩＤとを１組とする複数組の情報が格納されることになる。
【０１０１】
その後、クライアントからのリード要求を受けると、情報分配部４１は、リード要求の要求元に対応するＩＤを検索キーにして、バッファ４７内をサーチする。例えば、情報処理部４３ａからのリード要求を受けた場合、ＩＤ：ＡＰ１を検索キーにしてバッファ４７内がサーチされ、この場合、“＠ＰＪＬ１  ＩＮＦＯ  ＳＴＡＴＵＳ”と“＠ＰＪＬ２  ＩＮＦＯ  ＰＡＧＥ”に対応する記憶領域が検出されることになる。そして、検出された２組の記憶領域からデバイス情報が読み出され、それら２組分のデバイス情報が情報処理部４３ａに対して提供されることになる。
【０１０２】
［情報分配部における主処理］
次に、上記のような情報分配部４１の機能を実現するため、情報分配部４１において実行される主処理について、図７のフローチャートに基づいて説明する。この処理は、情報分配部４１を機能させたい時点で開始されていればよい処理であり、例えば、ＰＣ１の起動に伴って開始される処理となっていればよい。
【０１０３】
この処理を開始すると、情報分配部４１は、まずクライアントとなる情報処理部４３ａ〜４３ｃからの要求待ちになる（Ｓ４０５）。ここで、情報処理部４３ａ〜４３ｃのいずれかから何らかの要求があるとＳ４０５の処理を抜け、続いて、情報分配部４１は、新規クライアント追加要求か否かを判断する（Ｓ４１０）。
【０１０４】
Ｓ４１０の処理において、新規クライアント追加要求であった場合（Ｓ４１０：ＹＥＳ）、情報分配部４１は、要求元となったクライアントのＩＤをＲＡＭ１３に記憶させる（Ｓ４１５）。図６に示すように、クライアントである情報処理部４３ａ〜４３ｃには、それぞれユニークなＩＤ（図６に示した例では、ＡＰ１〜ＡＰ３）が付与されており、このＩＤが第１実施形態の場合と同様に記憶される。そして、Ｓ４１５の処理を終えたら、Ｓ４０５の処理へと戻り、再びＳ４０５以降の処理を繰り返す。
【０１０５】
一方、上記Ｓ４１０の処理において、新規クライアント追加要求ではなかった場合（Ｓ４１０：ＮＯ）、続いて、情報分配部４１は、クライアント削除要求か否かを判断する（Ｓ４２０）。
【０１０６】
Ｓ４２０の処理において、クライアント削除要求であった場合（Ｓ４２０：ＹＥＳ）、情報分配部４１は、要求元となったクライアントに対応するＩＤを削除する（Ｓ４２５）。また、受信したデバイス情報（バッファ４７内に格納されたデバイス情報）の中から、削除対象となったクライアントからのみ要求されていたデバイス情報を削除する（Ｓ４２５）。そして、Ｓ４２５の処理を終えたら、Ｓ４０５の処理へと戻り、再びＳ４０５以降の処理を繰り返す。
【０１０７】
一方、上記Ｓ４２０の処理において、クライアント削除要求ではなかった場合（Ｓ４２０：ＮＯ）、情報分配部４１は、新規コマンド送信要求であるか否かを判断する（Ｓ４３５）。本実施形態においても、第１実施形態と同様、各情報処理部４３ａ〜４３ｃからＰＪＬコマンドを含むコマンド送信要求が送信されてくる。
【０１０８】
Ｓ４３５の処理において、新規コマンド送信要求であった場合（Ｓ４３５：ＹＥＳ）、情報分配部４１は、送信要求されたＰＪＬコマンドをスプーラ経由でＵＳＢ  Ｉ／Ｆ１７を通じてデバイス２へ送信するとともに、その送信要求されたＰＪＬコマンドをＲＡＭ１３に記憶させる（Ｓ４４０）。なお、Ｓ４４０の処理でＲＡＭ１３に記憶させたＰＪＬコマンドは、後述するＳ５１０の判断処理において参照されることになる。そして、Ｓ４４０の処理を終えたら、Ｓ４０５の処理へと戻り、再びＳ４０５以降の処理を繰り返す。
【０１０９】
一方、Ｓ４３５の処理において、新規コマンド送信要求ではなかった場合（Ｓ４３５：ＮＯ）、第１実施形態と同様、クライアントからデバイス情報のリード要求を受けたものと判断する。そして、情報分配部４１は、要求元となったクライアントに対応するＩＤを取得して（Ｓ４４５）、そのＩＤを検索キーにしてバッファ４７の検索を行う（Ｓ４５０）。そして、検索キーにしたＩＤが登録された記憶領域が１組もバッファ４７内から検出されないた場合には、要求したコマンドに対応するデバイス情報が存在しないことになるので、その場合は（Ｓ４５５：ＮＯ）、Ｓ４０５の処理へと戻り、再びＳ４０５以降の処理を繰り返す。
【０１１０】
一方、Ｓ４５５の処理において、要求したコマンドに対応するデバイス情報が１組分以上存在する場合には（Ｓ４５５：ＹＥＳ）、検出した１組分以上のデバイス情報を要求元となったクライアントに送信するとともに、そのデバイス情報に関連付けられたＩＤ（Ｓ４４０の処理において記憶されたもの）を削除する（Ｓ４６０）。なお、Ｓ４６０の処理により、クライアントに送信されるデバイス情報は、本処理と並列に実行される常駐スレッド処理によりデバイス２から読み出されてバッファ４７に格納されたものであるが、この常駐スレッド処理の詳細については後述する。
【０１１１】
そして、Ｓ４６０の処理を終えたら、その要求コマンドに対する最後のクライアントであるか否かを判断し（Ｓ４６５）、最後のクライアントであれば（Ｓ４６５：ＹＥＳ）、デバイス情報をバッファ４７から削除して（Ｓ４７０）、Ｓ４０５の処理へと戻る一方、最後のクライアントでなければ（Ｓ４６５：ＮＯ）、Ｓ４７０の処理を実行することなく、Ｓ４０５の処理へと戻る。なお、これらＳ４６５〜Ｓ４７０の処理は、複数のクライアントから同じコマンドの送信要求が出ている場合に、あるクライアントだけがデバイス情報を取得しても、他のクライアントがデバイス情報を取得していなければ、デバイス情報をバッファ４７から削除せず、一方、全てのクライアントがデバイス情報を取得した際には、デバイス情報をバッファ４７から削除するために設けられている。
【０１１２】
［情報分配部における常駐スレッド処理］
次に、情報分配部４１において主処理と並列に実行される常駐スレッド処理について、図８のフローチャートに基づいて説明する。
【０１１３】
この処理を開始すると、情報分配部４１は、デバイス２よりデバイス情報の読み取りを行う（Ｓ５０５）。ここで、まだデバイス２に対してＰＪＬコマンドが送信されていない場合など、デバイス２側がデバイス情報を送信できる状態にない場合は、Ｓ５０５の処理で読み取り待ちになり、何らかの情報を読み取ったらＳ５０５の処理を抜ける。
【０１１４】
続いて、情報分配部４１は、Ｓ５０５の処理で読み取った情報が、クライアントから送信要求されたコマンドの返答か否かを判断する（Ｓ５１０）。クライアントから送信要求されたコマンドは、上述したＳ４４０の処理によりＲＡＭ１３に記憶されている。したがって、Ｓ５１０の処理では、Ｓ４４０の処理でＲＡＭ１３に記憶されたコマンドと、Ｓ５０５の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
【０１１５】
Ｓ５１０の処理において、クライアントから送信要求されたコマンドの返答であった場合は（Ｓ５１０：ＹＥＳ）、そのコマンドを要求したクライアントのＩＤをサーチして（Ｓ５１５）、Ｓ５０５の処理で読み取ったデバイス情報とＳ５１５の処理で検出したＩＤとを組にして、バッファ４７に記憶させる。なお、Ｓ５１０の処理において、クライアントから送信要求されたコマンドの返答ではなかった場合は（Ｓ５１０：ＮＯ）、上記Ｓ５１５，Ｓ５２０の処理をスキップする。
【０１１６】
こうして、Ｓ５１０〜Ｓ５２０の処理を終えたら、１秒待機して（Ｓ５２５）、Ｓ５０５の処理へと戻り、Ｓ５０５以降の処理を繰り返す。
以上のような常駐スレッド処理が情報分配部４１において実行されることにより、Ｓ５０５の処理でデバイス２からデバイス情報を読み取る毎に、Ｓ５１０以降の処理が実行され、この処理により、バッファ４７には、異なるコマンド毎に各コマンドに対応するデバイス情報が格納されることになる。
【０１１７】
［第２実施形態の効果］
以上説明したように、上記第２実施形態においても、デバイス２から一度しか受信できないデバイス情報を情報分配部４１が取得して、情報分配部４１が異なるコマンド毎にデバイス情報をバッファに保存し、そのデバイス情報を複数の情報処理部４３ａ〜４３ｃに提供するので、各情報処理部４３ａ〜４３ｃに適切な情報処理を実施させることができる。
【０１１８】
また、上記第２実施形態においても、デバイス２に送信したＰＪＬコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス２から取得できてしまった場合、上記Ｓ５１０の処理により、そのような情報を各情報処理部４３ａ〜４３ｃへ提供しないようにしているので、ＰＣ１には無駄な情報を各情報処理部４３ａ〜４３ｃへ提供するための負荷（すなわち、Ｓ５１５〜Ｓ５２０の処理を実行するための負荷）がかからなくなり、各情報処理部４３ａ〜４３ｃでも無駄な情報を処理するための負荷がかからなくなる。
【０１１９】
さらに、上記第２実施形態においても、デバイス２から取得したデバイス情報をバッファ４７に一旦格納するので、デバイス２からデバイス情報を取得するタイミングとデバイス情報を情報処理部４３ａ〜４３ｃへ提供するタイミングを非同期とすることができ、各情報処理部４３ａ〜４３ｃ側それぞれでデバイス情報が必要となったときに、各情報処理部４３ａ〜４３ｃに対してデバイス情報を提供することができる。
【０１２０】
また、上記第２実施形態においては、デバイス情報をバッファ４７へ格納する際に異なるコマンド毎に格納するので、複数の情報処理部４３ａ〜４３ｃが同じコマンドを送信している場合に、同じデバイス情報を複数のバッファに格納しなくてもよく、その分だけＲＡＭ１３の使用量を削減することができる。
【０１２１】
［第３実施形態］
次に、第３実施形態について説明する。
ただし、第３実施形態は、一部の構成が第１，第２実施形態と同様になるので、第３実施形態においては、第１，第２実施形態との相違点を中心に詳述する。具体的には、ＰＣおよびデバイスの構成と、情報処理部における処理は、第１，第２実施形態と同様なので、その詳細な説明については省略する。ただし、第１，第２実施形態とほぼ同様の構成については、第１，第２実施形態と同じ符号を付すことで、第１，第２実施形態とほぼ同様の構成であることを示す。
【０１２２】
［ＰＣによるデバイス情報取得方法の概要］
以下、ＰＣ１によるデバイス情報取得方法の概要について、図９に基づいて説明する。
ＰＣ１上で情報分配部４１や複数の情報処理部４３ａ〜４３ｃが機能する点は、第１，第２実施形態と同様である。ただし、第３実施形態においては、ＰＪＬコマンドの一つであるＵＳＴＡＴＵＳに特化した処理を行っている点で、第１実施形態とは相違する。
【０１２３】
ＰＪＬコマンドの多くは、デバイスへ送信された場合に、送信されたコマンドに対する応答として１度だけデバイス情報が返されるが、ＵＳＴＡＴＵＳの場合は、ＯＮを指示するコマンドを送信すると、以後、新たに同じコマンドを送信しなくても、デバイス２が自身の状態変化を検出するたびに、何度でもデバイス情報を返すようになる。
【０１２４】
そこで、第３実施形態においては、クライアント（情報処理部）からコマンド送信要求を受けた場合に、そのコマンドに対応するバッファを用意し、以後、コマンドに対する応答であるデバイス情報がデバイス２から返される毎に、そのコマンドに対応するバッファにデバイス情報を格納するようにしている。
【０１２５】
図９に例示したもので言えば、情報処理部４３ａが、“＠ＰＪＬ  ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ  ＝  ＯＮ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、“ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ”に対応するバッファ４９ａを確保する。一方、情報処理部４３ｂ，４３ｃも、“＠ＰＪＬ  ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ  ＝  ＯＮ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求することがあるが、この場合、“ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ”に対応するバッファ４９ａは既に確保されているので、新たなバッファが確保されることはなく、既存のバッファ４９ａが、情報処理部４３ｂ，４３ｃからも利用される状態になる。また、情報処理部４３ｂが、“＠ＰＪＬ  ＵＳＴＡＴＵＳ  ＰＡＧＥ  ＝  ＯＮ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、“ＵＳＴＡＴＵＳ  ＰＡＧＥ”に対応するバッファ４９ｂを確保し、情報処理部４３ｃが、“＠ＰＪＬ  ＵＳＴＡＴＵＳ  ＪＯＢ  ＝  ＯＮ”というＰＪＬコマンドの送信を、情報分配部４１に対して要求した場合、情報分配部４１は、“ＵＳＴＡＴＵＳ  ＪＯＢ”に対応するバッファ４９ｃを確保する。以後は、上述の通り、デバイス２が自身の状態変化を検出するたびにデバイス情報を返すようになるので、デバイス２からデバイス情報をデバイス２から取得した際には、そのデバイス情報に対応するＰＪＬコマンドを判断し、そのＰＪＬコマンドに対応するバッファ（バッファ４９ａ〜４９ｃのいずれか）にデバイス情報が格納されることになる。
【０１２６】
［情報分配部における主処理］
次に、上記のような情報分配部４１の機能を実現するため、情報分配部４１において実行される主処理について、図１０のフローチャートに基づいて説明する。この処理は、情報分配部４１を機能させたい時点で開始されていればよい処理であり、例えば、ＰＣ１の起動に伴って開始される処理となっていればよい。
【０１２７】
この処理を開始すると、情報分配部４１は、まずクライアントとなる情報処理部４３ａ〜４３ｃからの要求待ちになる（Ｓ６０５）。ここで、情報処理部４３ａ〜４３ｃのいずれかから何らかの要求があるとＳ６０５の処理を抜け、続いて、情報分配部４１は、新規クライアント追加要求か否かを判断する（Ｓ６１０）。
【０１２８】
Ｓ６１０の処理において、新規クライアント追加要求であった場合（Ｓ６１０：ＹＥＳ）、情報分配部４１は、要求元となったクライアントのＩＤをＲＡＭ１３に記憶させる（Ｓ６１５）。図６に示すように、クライアントである情報処理部４３ａ〜４３ｃには、それぞれユニークなＩＤ（図９に示した例では、ＡＰ１〜ＡＰ３）が付与されており、このＩＤが第１実施形態の場合と同様に記憶される。そして、Ｓ６１５の処理を終えたら、Ｓ６０５の処理へと戻り、再びＳ６０５以降の処理を繰り返す。
【０１２９】
一方、上記Ｓ６１０の処理において、新規クライアント追加要求ではなかった場合（Ｓ６１０：ＮＯ）、続いて、情報分配部４１は、クライアント削除要求か否かを判断する（Ｓ６２０）。
【０１３０】
Ｓ６２０の処理において、クライアント削除要求であった場合（Ｓ６２０：ＹＥＳ）、情報分配部４１は、要求元となったクライアントに対応するＩＤを削除する（Ｓ６２５）。また、受信したデバイス情報（バッファ４７内に格納されたデバイス情報）の中から、削除対象となったクライアントからのみ要求されていたデバイス情報を削除する（Ｓ６２５）。そして、Ｓ６２５の処理を終えたら、Ｓ６０５の処理へと戻り、再びＳ６０５以降の処理を繰り返す。
【０１３１】
一方、上記Ｓ６２０の処理において、クライアント削除要求ではなかった場合（Ｓ６２０：ＮＯ）、情報分配部４１は、新規ＵＳＴＡＴＵＳ取得コマンド送信要求であるか否かを判断する（Ｓ６３５）。本実施形態においても、第１実施形態と同様、各情報処理部４３ａ〜４３ｃからＰＪＬコマンドを含むコマンド送信要求が送信されてくるが、その中に含まれるＰＪＬコマンドはＵＳＴＡＴＵＳ取得コマンドとなっている。
【０１３２】
Ｓ６３５の処理において、新規ＵＳＴＡＴＵＳ取得コマンド送信要求であった場合（Ｓ６３５：ＹＥＳ）、情報分配部４１は、送信要求されたＵＳＴＡＴＵＳ  ＯＮコマンドをスプーラ経由でＵＳＢ  Ｉ／Ｆ１７を通じてデバイス２へ送信するとともに、もしそのＰＪＬ  ＵＳＴＡＴＵＳコマンドがはじめて送られたものであるならば、その送信要求されたＰＪＬコマンドに対応する新規バッファを作成する（Ｓ６４０）。このとき他のクライアントにより既にバッファが作成されていたならば、このＳ６４０の処理はスキップされる。なお、Ｓ６４０の処理で作成されたバッファには、後述する常駐スレッド処理により、不定期に何度もデバイス情報が格納されるようになる。そして、Ｓ６４０の処理を終えたら、Ｓ６０５の処理へと戻り、再びＳ６０５以降の処理を繰り返す。
【０１３３】
一方、Ｓ６３５の処理において、新規ＵＳＴＡＴＵＳ取得コマンド送信要求ではなかった場合（Ｓ６３５：ＮＯ）、ＵＳＴＡＴＵＳ削除要求であるか否かを判断する（Ｓ６４５）。先に説明した通り、ＵＳＴＡＴＵＳは、一度ＯＮコマンドを送信すると、その後は何度でもデバイス情報が返されるため、このデバイス情報をデバイス２が返さないようにするには、ＯＦＦコマンドを送信する必要がある。Ｓ６４５の処理は、このＯＦＦコマンドの送信に対応する処理であり、ＵＳＴＡＴＵＳ削除要求であった場合（Ｓ６４５：ＹＥＳ）、情報分配部４１は、それを要求してきたクライアントが最後のクライアントか否かを判断し、もし最後ならば、送信要求されたＵＳＴＡＴＵＳ  ＯＦＦコマンドをスプーラ経由でＵＳＢ  Ｉ／Ｆ１７を通じてデバイス２へ送信するとともに、その送信要求されたＰＪＬコマンドに対応するバッファを削除する（Ｓ６５０）。もし他にもそのUSTATUSコマンドを要求しているクライアントがある場合は、これらコマンド送信、バッファ削除の処理（Ｓ６５０の処理）はスキップされる。そして、Ｓ６５０の処理を終えたら、Ｓ６０５の処理へと戻り、再びＳ６０５以降の処理を繰り返す。
【０１３４】
一方、Ｓ６４５の処理において、ＵＳＴＡＴＵＳ削除要求ではなかった場合（Ｓ６４５：ＮＯ）、クライアントからデバイス情報のリード要求を受けたものと判断する。ＵＳＴＡＴＵＳ削除要求ではなかったことをもって、リード要求を受けたものと判断できるのは、第１，第２実施例と同様の理由である。この場合、情報分配部４１は、要求元となったクライアントから要求されているＵＳＴＡＴＵＳのリストを取り出して（Ｓ６５５）、そのリストにあるすべてのＵＳＴＡＴＵＳのバッファの内容をクライアントに送る（Ｓ６６０）。例えば、要求元となったクライアントが図９に示した情報処理部４３ｂである場合、Ｓ６５５の処理では、クライアントから要求されているＵＳＴＡＴＵＳのリストとして、“ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ”，“ＵＳＴＡＴＵＳ  ＰＡＧＥ”が取り出され、Ｓ６６０の処理では、“ＵＳＴＡＴＵＳ  ＤＥＶＩＣＥ”，“ＵＳＴＡＴＵＳ  ＰＡＧＥ”に対応するバッファ４９ａ，４９ｖの内容が情報処理部４３ｂに送られることになる。そして、Ｓ６６０の処理を終えたら、Ｓ６０５の処理へと戻り、再びＳ６０５以降の処理を繰り返す。
【０１３５】
［情報分配部における常駐スレッド処理］
次に、情報分配部４１において主処理と並列に実行される常駐スレッド処理について、図１１のフローチャートに基づいて説明する。
【０１３６】
この処理を開始すると、情報分配部４１は、デバイス２よりデバイス情報の読み取りを行う（Ｓ７０５）。ここで、まだデバイス２に対してＰＪＬコマンドが送信されていない場合など、デバイス２側がデバイス情報を送信できる状態にない場合は、Ｓ７０５の処理で読み取り待ちになり、何らかの情報を読み取ったらＳ７０５の処理を抜ける。
【０１３７】
続いて、情報分配部４１は、Ｓ７０５の処理で読み取った情報が、クライアントから送信要求されたコマンドの返答か否かを判断する（Ｓ７１０）。クライアントから送信要求されたコマンドである場合、そのコマンドに対応するバッファが上述したＳ６４０の処理により確保されている。したがって、Ｓ７１０の処理では、Ｓ６４０の処理で確保されたバッファに対応するコマンドと、Ｓ７０５の処理で読み取った情報とを対比することにより、所期のデバイス情報であるかどうかを判断することができる。
【０１３８】
Ｓ７１０の処理において、クライアントから送信要求されたコマンドの返答であった場合は（Ｓ７１０：ＹＥＳ）、そのデバイス情報を、対応するコマンドのバッファに記憶させる（Ｓ７１５）。なお、Ｓ７１０の処理において、クライアントから送信要求されたコマンドの返答ではなかった場合は（Ｓ７１０：ＮＯ）、上記Ｓ７１５の処理をスキップする。
【０１３９】
こうして、Ｓ７１０〜Ｓ７１５の処理を終えたら、Ｓ７０５の処理へと戻り、Ｓ７０５以降の処理を繰り返す。
以上のような常駐スレッド処理が情報分配部４１において実行されることにより、Ｓ７０５の処理でデバイス２からデバイス情報を読み取る毎に、Ｓ７１０以降の処理が実行され、この処理により、バッファ４７には、異なるＵＳＴＡＴＵＳ毎に各ＵＳＴＡＴＵＳに対応するデバイス情報が格納されることになる。
【０１４０】
［第３実施形態の効果］
以上説明したように、上記第３実施形態においても、デバイス２から一度しか受信できないデバイス情報を情報分配部４１が取得して、情報分配部４１が異なるＵＳＴＡＴＵＳ毎にデバイス情報をバッファに保存し、そのデバイス情報を複数の情報処理部４３ａ〜４３ｃに提供するので、各情報処理部４３ａ〜４３ｃに適切な情報処理を実施させることができる。
【０１４１】
また、上記第３実施形態においても、デバイス２に送信したＰＪＬコマンドに対応するデバイス情報以外の情報が、何らかの原因でデバイス２から取得できてしまった場合、上記Ｓ７１０の処理により、そのような情報を各情報処理部４３ａ〜４３ｃへ提供しないようにしているので、ＰＣ１には無駄な情報を各情報処理部４３ａ〜４３ｃへ提供するための負荷（すなわち、Ｓ７１５の処理を実行するための負荷）がかからなくなり、各情報処理部４３ａ〜４３ｃでも無駄な情報を処理するための負荷がかからなくなる。
【０１４２】
さらに、上記第３実施形態においても、デバイス２から取得したデバイス情報をバッファ４９ａ〜４９ｃに一旦格納するので、デバイス２からデバイス情報を取得するタイミングとデバイス情報を情報処理部４３ａ〜４３ｃへ提供するタイミングを非同期とすることができ、各情報処理部４３ａ〜４３ｃ側それぞれでデバイス情報が必要となったときに、各情報処理部４３ａ〜４３ｃに対してデバイス情報を提供することができる。
【０１４３】
また、上記第３実施形態においては、デバイス情報をバッファ４７へ格納する際に異なるＵＳＴＡＴＵＳ毎に格納するので、複数の情報処理部４３ａ〜４３ｃが同じＵＳＴＡＴＵＳ取得要求を送信している場合に、同じＵＳＴＡＴＵＳを複数のバッファに格納しなくてもよく、その分だけＲＡＭ１３の使用量を削減することができる。
【０１４４】
［第４実施形態］
上述の第１実施形態〜第３実施形態では、ＰＣ１の利用形態について特に言及しておらず、代表的な利用形態としては、例えば、ＰＣ１を単独で利用するような利用形態などを想定できたが、上記ＰＣ１は、ターミナルサーバーとして利用した場合に優れた効果を発揮するので、以下、ＰＣ１をターミナルサーバーとして利用した実施形態について説明する。
【０１４５】
図１２（ａ）は、上述の第１実施形態〜第３実施形態のいずれかで説明したＰＣ１をターミナルサーバーとして利用した場合の概略構成図である。
ＰＣ１には、上述の第１実施形態〜第３実施形態と同様、ＵＳＢインターフェースを介してデバイス２が接続されている。また、上述の第１実施形態〜第３実施形態では言及しなかったが、ＰＣ１は、複数のターミナル３ａ〜３ｃとネットワーク４を介してデータ通信可能に構成されている。
【０１４６】
このようなターミナルサーバーシステムの場合、ターミナル３ａ〜３ｃは、単に利用者に入出力インターフェースを提供する装置として機能するので、例えば、ハードディスク装置を持たない安価なＰＣを、ターミナル３ａ〜３ｃとして採用することもできる。一方、ＰＣ１には、マルチユーザ機能を備えたＯＳが搭載され、クライアントである複数のターミナル３ａ〜３ｃからの要求に応じて、各種アプリケーションがＰＣ１上において並列に機能する。各ターミナル３ａ〜３ｃでの入力操作が行われた場合、その入力データ（例えば、キー入力されたデータ）はネットワーク４を通じてＰＣ１へと伝送され、その入力データに基づく各種処理がＰＣ１上で実行される。そして、その処理結果である出力データ（例えば、画面表示用データ）は、ネットワーク４を通じて各ターミナル３ａ〜３ｃへと伝送され、各ターミナル３ａ〜３ｃにおいて出力（例えば、画面表示）されることになる。
【０１４７】
以上のように構成されたターミナルサーバーシステムにおいて、各ターミナル３ａ〜３ｃの利用者は、それぞれがデバイス２の状態を知りたいことがあり、その場合、各ターミナル３ａ〜３ｃそれぞれにおいて、ステータスモニターが利用される可能性がある。ターミナルサーバーシステムの場合、各ターミナル３ａ〜３ｃそれぞれにおいてステータスモニターが利用されても、ステータスモニターが稼働するのはＰＣ１上となる。そのため、デバイス２は、複数のステータスモニターからデバイス情報の提供を要求される可能性がある。
【０１４８】
しかし、デバイス情報は、単にＰＣ１側からの要求に応じて、その時点で最新のデバイス情報をＰＣ１側へ返すだけであり、複数のステータスモニターそれぞれに対して個別にデバイス情報を提供するような仕組みにはなっていない。
【０１４９】
そのため、本発明の構成を備えていないターミナルサーバー上で、複数のステータスモニターが稼働した場合、最初にデバイス情報の取得を試みたステータスモニターがデバイス情報を取得してしまうと、後からデバイス情報の取得を試みた他のステータスモニターは、所期のデバイス情報を取得することができない、という問題を招く。
【０１５０】
これに対し、上記各実施形態の如く構成されたＰＣ１をターミナルサーバーとして利用すれば、図１２（ｂ）に示すように、ＳＹＳＴＥＭコンテキスト５１において上述の情報分配部４１が機能するとともに、ターミナル３ａ〜３ｃに対応する各ユーザーコンテキスト５２ａ〜５２ｃにおいて上述の情報処理部４３ａ〜４３ｃに相当するステータスモニターが機能する構成とすることができる。このような構成にすれば、上記各実施形態において説明した通りの作用、効果により、各ステータスモニター（情報処理部４３ａ〜４３ｃ）から送信要求されたコマンドに対する応答として返されるデバイス情報が、情報分配部４１によって各ステータスモニター（情報処理部４３ａ〜４３ｃ）へと送信されるので、最初にデバイス情報の取得を試みたステータスモニターはもちろんのこと、後からデバイス情報の取得を試みた他のステータスモニターも、所期のデバイス情報を取得できるようになる。
【０１５１】
また、複数のステータスモニター（情報処理部４３ａ〜４３ｃ）から同じコマンドの送信要求があった場合には、最初にデバイス情報の取得を試みたステータスモニターに対して提供したデバイス情報が既にバッファの中に格納されているので、後からデバイス情報の取得を試みた他のステータスモニターに対しては、迅速にデバイス情報を提供することができる。
【０１５２】
さらに、上記第２，第３実施形態と同様の構成を備えている場合には、複数のステータスモニター（情報処理部４３ａ〜４３ｃ）から同じコマンドの送信要求があった場合でも、情報分配部４１ではコマンド毎にバッファが確保されるので、ＰＣ１が備えるＲＡＭ１３の使用量を減らすことができる。
【０１５３】
【０１５４】
【０１５５】
【０１５６】
【０１５７】
【０１５８】
【０１５９】
【０１６０】
【０１６１】
【０１６２】
［変形例等］
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【０１６３】
例えば、上記各実施形態においては、上記Ｓ２１５，Ｓ５１０，Ｓ７１０の処理を実行することにより、取得したデバイス情報が、送信したコマンドに対応するものか否かを判断していたが、この判断をすることなく、取得したデバイス情報すべてをそのまま各情報処理部へ送信するように構成してもよい。ただし、この場合は、情報処理部側にとって不要な情報が情報処理部側へ渡る可能性もあるので、情報処理部側でデバイス情報の取捨選択を適切に行うようにする。
【０１６４】
また、上記各実施形態においては、情報分配部−情報処理部間のデータ送信方法について特に具体的な言及をしなかったが、任意の方法でプロセス間通信を行えばよく、例えば、共有メモリなどを利用してデータのやり取りを行えばよい。
【０１６５】
また、上記第１実施形態においては、Ｓ２５５の処理により、古い情報を捨てるように構成してあったが、古い情報をそのまま残して、取得した最新の情報を捨てるように構成することも可能である。どちらの構成を採用するかは、古い情報と新しい情報のどちらがより重要かを勘案して決めればよい。
【０１６６】
さらに、上記各実施形態では、デバイスと接続されるＰＣ、情報分配部としての機能を有するＰＣ、複数の情報処理部としての機能を有するＰＣが、単一のＰＣ１となっている構成例について説明したが、これらが複数のＰＣに分散配置され、その複数のＰＣが協働して上記ＰＣ１と同等に機能するように構成されていてもよい。この場合、複数のＰＣは、ネットワークを介して通信可能に構成され、あるＰＣに配された手段の出力データが別のＰＣに配された手段の入力データとなるのであれば、あるＰＣで得られた出力データをネットワークを介して別のＰＣへと伝送して、複数のＰＣを備えたネットワークシステム全体が、上記ＰＣ１と同等に機能するように構成する。
【０１６７】
より具体的な例を挙げれば、上記ＰＣ１にデバイス２を接続するとともに、ＰＣ１が複数の情報処理部を備える構成とし、上記ＰＣ１が備えていた情報分配部４１については、ＰＣ１上には設けず、その代わりにＰＣ１とは別のサーバー（以下、情報分配サーバーという）を設け、各情報処理部とデバイスとの間でやり取りされる各種データを、一旦ＰＣ１から情報分配サーバーへと転送して、その情報分配サーバーで上記情報分配部４１において実行されていた各種処理を実行し、その処理結果を情報分配サーバーからＰＣ１へ戻すように構成してもよい。
【図面の簡単な説明】
【０１６８】
【図１】第１実施形態において例示したコンピュータとデバイスの概略構成図。
【図２】第１実施形態におけるデバイス情報の分配方法を説明するための説明図。
【図３】第１実施形態の情報分配部において実行される主処理のフローチャート
【図４】第１実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。
【図５】第１実施形態の情報処理部で実行されるステータスモニター処理のフローチャート。
【図６】第２実施形態におけるデバイス情報の分配方法を説明するための説明図。
【図７】第２実施形態の情報分配部において実行される主処理のフローチャート
【図８】第２実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。
【図９】第３実施形態におけるデバイス情報の分配方法を説明するための説明図。
【図１０】第３実施形態の情報分配部において実行される主処理のフローチャート
【図１１】第３実施形態の情報分配部において実行される常駐スレッド処理のフローチャート。
【図１２】第４実施形態において例示したターミナルサーバーとターミナルの概略構成図。
【符号の説明】
【０１６９】
１・・・パーソナルコンピュータ（ＰＣ）、２・・・デバイス、３ａ〜３ｃ・・・ターミナル、４・・・ネットワーク、１１，２１・・・ＣＰＵ、１２，２２・・・ＲＯＭ、１３，２３・・・ＲＡＭ、１４，２４・・・ハードディスク装置（ＨＤＤ）、１５・・・操作部、１６・・・表示部、１７，２７・・・ＵＳＢインターフェース（ＵＳＢ  Ｉ／Ｆ）、２５・・・操作キー、２６・・・表示パネル、２８・・・不揮発性ＲＡＭ、２９・・・印字部、３０・・・読み取り部、３１・・・モデム、４１・・・情報分配部、４３ａ〜４３ｃ・・・情報処理部、４５ａ，４５ｂ，４５ｃ，４７，４９ａ，４９ｂ，４９ｃ・・・バッファ、５１・・・ＳＹＳＴＥＭコンテキスト、５２ａ〜５２ｃ・・・ユーザーコンテキスト。
【図１】
0004742784.tif 000002
【図２】
0004742784.tif 000003
【図３】
0004742784.tif 000004
【図４】
0004742784.tif 000005
【図５】
0004742784.tif 000006
【図６】
0004742784.tif 000007
【図７】
0004742784.tif 000008
【図８】
0004742784.tif 000009
【図９】
0004742784.tif 000010
【図１０】
0004742784.tif 000011
【図１１】
0004742784.tif 000012
【図１２】
0004742784.tif 000013