(57)【特許請求の範囲】
【請求項１】
ネットワークを介して通信可能なデバイスを探索する第１の探索ステップと、
第１の探索ステップで探索されるデバイスから、該デバイスに関する動的に変化する第１のデバイス属性の値および該デバイスに関する静的な第２のデバイス属性の値を取得する第１の取得ステップと、
前記第１の取得ステップで取得した第１のデバイス属性の値および第２のデバイス属性の値を記憶手段に記憶する記憶ステップと、
ネットワークを介して通信可能なデバイスを探索する第２の探索ステップと、前記第一の取得ステップで情報取得され、かつ、前記第２の探索ステップで探索されるデバイスから、動的に変化する第１のデバイス属性の値を取得し、当該デバイスの静的な第２のデバイス属性の値を前記記憶手段から取得する第２の取得ステップとを有することを特徴とする情報取得方法。
【請求項２】
前記第２の探索ステップでは、デバイスを探索するために、前記第１のデバイス属性の値の要求を送信し、前記第２の取得ステップでは、前記要求に対応する応答に含まれる前記第１のデバイス属性の値を受信することを特徴とする請求項１に記載の情報取得方法。
【請求項３】
前記第１のデバイス属性の値は、時間と共に変化しうる情報であることを特徴とする請求項１或いは２に記載の情報取得方法。
【請求項４】
前記第一および第二の探索ステップによる探索で検出されたデバイスに関する複数のデバイス属性の値を表示手段に表示する表示ステップを含むことを特徴とする請求項１乃至３のいずれか１項に記載の情報取得方法。
【請求項５】
前記第１のデバイス属性、および、第２のデバイス属性は、シンプルネットワークマネジメントプロトコルのマネジメントインフォーメーションベースにてそれぞれ定義される所定の属性に対応するものであることを特徴とする請求項１乃至４のいずれか１項に記載の情報取得方法。
【請求項６】
前記動的に変化する第１のデバイス属性の値とは、デバイスとの通信ポート情報、又は、前記デバイスの設置場所を示す属性の値デバイスの状態を示す属性の値の少なくともひとつを含み、前記静的な第２のデバイス属性の値とは、前記デバイスの機器構成を示す属性の値であることを特徴とする請求項１乃至５のいずれか１項に記載の情報取得方法。
【請求項７】
ネットワークを介して通信可能なデバイスを探索する第１の探索手段と、
第１の探索手段が探索するデバイスから、該デバイスに関する動的に変化する値を有する第１のデバイス属性の値および該デバイスに関する静的な第２のデバイス属性の値を取得する第１の取得手段と、
前記第１の取得手段で取得した第１のデバイス属性の値および第２のデバイス属性の値を記憶手段に記憶する記憶手段と、ネットワークを介して通信可能なデバイスを探索する第２の探索手段と、
前記第一の取得手段で情報取得されたデバイスであって、かつ、前記第２の探索手段により探索されるデバイスから、動的に変化する第１のデバイス属性の値を前記第１の取得手段で情報取得したデバイスから取得し、当該デバイスの静的な第２のデバイス属性の値を前記記憶手段から取得する第２の取得手段とを有することを特徴とする情報取得装置。
【請求項８】
前記第２の探索手段では、デバイスを探索するために、前記第１のデバイス属性の値の要求を送信し、前記第２の取得手段は、前記要求に対応する応答に含まれる前記第１のデバイス属性の値を受信することを特徴とする請求項７に記載の情報取得装置。
【請求項９】
前記第１のデバイス属性の値は、時間と共に変化しうる情報であることを特徴とする請求項７或いは８に記載の情報取得装置。
【請求項１０】
前記第一および第二の探索手段による探索で検出されたデバイスに関する複数のデバイス属性の値を表示手段に表示する表示手段を含むことを特徴とする請求項７乃至９のいずれか１項に記載の情報取得装置。
【請求項１１】
前記第１のデバイス属性、および、第２のデバイス属性は、シンプルネットワークマネジメントプロトコルのマネジメントインフォーメーションベースにてそれぞれ定義される所定の属性に対応するものであることを特徴とする請求項７乃至１０のいずれか１項に記載の情報取得装置。
【請求項１２】
前記動的に変化する第１のデバイス属性の値とは、デバイスとの通信ポート情報、又は、前記デバイスの設置場所を示す属性の値デバイスの状態を示す属性の値の少なくともひとつを含み、前記静的な第２のデバイス属性の値とは、前記デバイスの機器構成を示す属性の値であることを特徴とする請求項７乃至１１のいずれか１項に記載の情報取得装置。
【請求項１３】
請求項１乃至６のいずれか１項に記載した情報取得方法をコンピュータに実行させることを特徴とする制御プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、広義にコンピュータネットワークに関し、より詳しくはネットワーク管理ソフトウェアを含むネットワークデバイス制御装置および方法、記録媒体に関する。
【０００２】
【従来の技術】
近年、コンピュータを相互に接続したローカルエリアネットワーク（LAN）が普及している。このようなローカルエリアネットワークは、ビルのフロアまたはビル全体、ビル群（構内）、地域、あるいはさらに大きいエリアにわたって構築される。更に、このようなネットワークが相互に接続され、世界的規模のネットワークに接続されることもある。また、相互接続されたそれぞれのLANでは、多様なハードウェア相互接続技術といくつものネットワークプロトコルが用いられている。
【０００３】
ここで、他と切り離された簡単なLANでは、個々のユーザが機器管理を行うことができる。すなわち、ユーザが機器を取り替えり、ソフトウェアをインストールしたり、問題点を診断したりすることができる。
【０００４】
しかし、規模の大きい複雑なLANや相互接続された大きなLANグループでは、「管理」を必要とする。なお、「管理」とは、人間のネットワーク管理者による管理とその管理者が使用するソフトウェアによる管理の両方を意味する。本願においては、「管理」とはシステム全体を管理するためのソフトウェアによる管理を意味し、「ユーザ」とはネットワーク管理ソフトウェアを使用する人を意味するものとする。この「ユーザ」は、通常、システム管理責任者である。「ユーザ」は、ネットワーク管理ソフトウェアを使うことによって、ネットワーク上で管理データを得て、このデータを変更することができる。
【０００５】
大規模ネットワークシステムは、通常、機器の増設と除去、ソフトウェアの更新、及び問題の検出などを絶えず行うことが必要な動的システムである。一般には、様々な人が所有する、様々な業者から供給される、様々なシステムが存在する。
【０００６】
このような大規模なネットワークシステムを構成するネットワーク上のネットワークデバイスを管理するための方法として、これまでにいくつかの試みが数多くの標準機間でなされている。国際標準化機構（ISO）は開放型システム間相互接続（Open  SystemInterconnection、OSI）モデルと呼ばれる汎用基準フレームワークを提供した。ネットワーク管理プロトコルのOSIモデルは、共通管理情報プロトコル（Common  Management  Information  Protocol、CMIP）と呼ばれる。CMIPはヨーロッパの共通ネットワーク管理プロトコルである。
【０００７】
また、近年では、より共通性の高いネットワーク管理プロトコルとして、簡易ネットワーク管理プロトコル（Simple  Network  Management  Protocol、SNMP）と呼ばれるCMIPに関連する一変種のプロトコルがある（「TCP／IP  ネットワーク管理入門  実用的な管理をめざして」M．T．ローズ＝著／西田竹志＝訳  （株）トッパン発行  １９９２年８月２０日初版を参照）。
【０００８】
このSNMPネットワーク管理技術によれば、ネットワーク管理システムには、少なくとも１つのネットワーク管理ステーション（NMS）、各々がエージェントを備えるいくつかの管理対象ノード、及び管理ステーションやエージェントが管理情報を交換するために使用するネットワーク管理プロトコルが含まれる。ユーザは、NMSのネットワーク管理ソフトウェアを用いて管理対象ノードのエージェントソフトウェアと通信することにより、ネットワーク上の管理データを得、またそのデータを変更することができる。
【０００９】
ここで、「エージェント」とは、各々の管理対象ノードでバックグラウンドプロセスとして走るソフトウェアである。ユーザがネットワーク上の管理対象ノードに対して管理データの要求をおこなうときには、ネットワーク管理ソフトウェアはオブジェクト識別子（後述）を管理パケットまたはフレームに入れて管理対象ノードのエージェントへ送信する。
【００１０】
エージェントは、そのオブジェクト識別子を解釈して、そのオブジェクト識別子に対応するデータを取り出す。そして、そのデータをパケットに入れてネットワーク管理ソフトウェアに返信する。ときには、エージェントはそのデータを取り出すために、対応するプロセスを呼び出す場合もある。
【００１１】
また、エージェントは、管理対象ノードに関するデータをデータベース形式で保持する。このデータベースは、MIB（Management  Information  Base）と呼ばれる。図４は、MIBの構造を示す概念図である。図４に示すように、MIBは木構造のデータ構造をしており、全てのノードに一意に識別子が付けられている。図４において、括弧内に書かれている番号をもとに、そのノードの識別子が定義される。例えば、図４のノード４０１の識別子は１である。ノード４０２の識別子は、ノード４０１の子なので、１・３である。同様に、ノード４０３の識別子は、１・３・６・１・２である。このノードの識別子がオブジェクト識別子（OBJECTIDENTIFIER）である。ここで、図４には、標準として規定されているMIBの一部を抜き出して記載している。
【００１２】
なお、このMIBの構造は、管理情報構造（Structure  of  ManagementInformation、SMI）と呼ばれ、RFC1155Structure  and  Identificationof  ManagementInformationfor  TCP／IP−based  Internetsで規定されている。
【００１３】
次に、SNMPプロトコルについて説明する。ネットワーク管理ソフトウェアが動作しているPC（以下、マネージャーと呼称する）と、SNMPエージェントが動作している管理対象ネットワークデバイス（以下、エージェントと呼称する）とは、SNMPプロトコルを用いて通信する。SNMPプロトコルには５種類のコマンドがあり、それぞれはGet-request、Get-next-request、Get-response、Set-request、Trapと呼ばれる。これらのコマンドがマネージャとエージェントとの間でやり取りされる様子を図8に示す。
【００１４】
Get-request及びGet-next-requestは、マネージャがエージェントに対して送出するコマンドである。このコマンドを受け取ったエージェントは、MIBオブジェクトの値をマネージャに通知するために、マネージャに対してGet-responseコマンドを送出する（８０１及び８０２）。
【００１５】
Set-requestは、マネージャがエージェントのMIBオブジェクトの値を設定するために、エージェントに対して送出するコマンドである。このコマンドを受け取ったエージェントは、設定結果をマネージャに通知するため、マネージャに対してGet-responseコマンドを送出する（８０３）。
【００１６】
Trapは、エージェントが自分自身の状態の変化をマネージャに対して通知するために、マネージャに対して送出するコマンドである（８０４）。
【００１７】
図7は、Trap以外のコマンド、すなわち、Get-request、Get-next-request、Get-response及びSet-request（総称してSNMPメッセージと呼ぶ）のフォーマットを示した図である。７００がSNMPメッセージである。SNMPメッセージは、バージョン７０１、コミュニティ名７０２、PDU７０３から構成される。PDU７０３の詳細を示したのが７１０である。
【００１８】
PDU７１０は、PDUタイプ７１１、リクエストID７１２、エラーステータス７１３、エラーインデックス７１４、及びMIB情報７１５から構成される。PDUタイプ７１１には、コマンドを識別するための値が格納される。この値が０であればGet-request、１であればGet-next-request、２であればGet-response、３であればSet-requestと識別される。また、エラーステータス７１３には、エラー情報を示す値が格納される。エラーがない場合にはこの値が０である。また、MIB情報７１５には、MIBオブジェクト識別子とそのMIBオブジェクトの値が組になって格納される。
【００１９】
次に、管理が必要な大規模なネットワークについて説明する。図1は、プリンタをネットワークに接続するためのネットワークボード（NB）１０１を、開放型アーキテクチャを持つプリンタ１０２へつなげた場合のネットワークを示す図である。NB１０１はローカルエリアネットワーク（LAN）１００へ、例えば、同軸コネクタをもつEthernetインターフェース10Base-2や、RJ-45をもつ10Base-T等のLANインターフェースを介してつながっている。
【００２０】
PC１０３やPC１０４等の複数のパーソナルコンピュータ（PC）もまた、LAN１００につながっている。これらのPCは、ネットワークオペレーティングシステムの制御の下、NB１０１と通信することができる。PCの一つ、例えばPC１０３を、ネットワーク管理部として使用するように指定することができる。また、それぞれのPCに、PC１０４に接続しているプリンタ１０５のようなプリンタを接続してもよい。
【００２１】
また、LAN１００にファイルサーバ１０６がつながっており、これは大容量（例えば１００億バイト）のネットワークディスク１０７に記憶されたファイルへのアクセスを管理する。プリントサーバ１０８は、接続されたプリンタ１０９ａ及び１０９ｂ、または遠隔地にあるプリンタ１０５などのプリンタに印刷を行わせる。また、他の図示していない周辺機器がＬＡＮ１００につながっていてもよい。
【００２２】
更に、図1に示すネットワークは、様々なネットワークメンバ間で効率よく通信を行うために、NovellやUNIXなどのネットワークソフトウェアを使用することができる。どのネットワークソフトウェアも使用することができるが、その一例として、Novell社のNetWare（Novell社の商標。以下省略）ソフトウェアを使用することができる（このソフトウェアパッケージに関する詳細な説明は、NetWareパッケージに同梱されているオンラインドキュメンテーションを参照。これは、Novell社からNetWareパッケージとともに購入可能）。
【００２３】
更に、図１の構成について簡潔に説明すると、ファイルサーバ１０６は、LANメンバ間でのデータファイルの送受信、或いはデータファイルの記憶、キューイング、キャッシングを行い、ファイル管理部としての役割を担う。例えば、PC１０３及びPC１０４のそれぞれで作られたデータファイルは、ファイルサーバ１０６へ送られる。ファイルサーバ１０６はこれらのデータファイルを順に並べ、プリントサーバ１０８からのコマンドに従って、それらのデータファイルをプリンタ１０９ａへ送信する。
【００２４】
またPC１０３やPC１０４では、データファイルの生成や、生成されたデータファイルのLAN１００への送出やLAN１００からのデータファイルの受け取り、更にはそれらのデータファイルの表示及び／又は処理が行われる。図１ではPCが示されているが、ネットワークソフトウェアを実行するのに適切なものであれば、その他のコンピュータ機器であってもよい。例えば、UNIXのソフトウェアが使用される場合にはUNIXワークステーションがネットワークにつながれていてもよい。これらのUNIXワークステーションは、適切な状況下で図示されているPCとともに使用される。
【００２５】
通常、LAN１００は、幾分ローカルなユーザグループに、例えば、一つの建物内の一つの階或いは連続した複数の階のユーザグループにサービスを提供する。また、ユーザが他の建物や他の県に居るなど、ユーザ間が離れるにしたがってワイドエリアネットワーク（WAN）を構築してもよい。WANは、基本的には、いくつかのLANが高速度サービス総合デジタルネットワーク（ISDN）電話線等の高速度デジタルラインで接続されて形成されたLANの集合体である。
【００２６】
したがって、図１に示すように、LAN１００とLAN１１０とLAN１２０とが、変調／復調（MODEM）／トランスポンダ１３０やバックボーン１４０を介して接続されて、WANが構築される。これらの接続は、複数のバスによる単純な電気的接続である。それぞれのLANには、専用のPCが接続されており、必ずしも必要ではないが、通常はファイルサーバやプリントサーバも接続されている。
【００２７】
したがって、図１に示すように、LAN１１０は、PC１１１と、PC１１２と、ファイルサーバ１１３と、ネットワークディスク１１４と、プリントサーバ１１５と、プリンタ１１６と、プリンタ１１７とから構成されている。対照的に、LAN１２０は、PC１２１とPC１２２のみから構成されている。LAN１００と、LAN１１０と、LAN１２０とに接続されている機器は、WAN接続を介して、他のLANの機器の機能にアクセスすることができる。
【００２８】
エージェントの実装方法として、プリンタをネットワーク接続させるためのネットワークボード上にエージェントを実装することが考えられる。これにより、プリンタをネットワーク管理ソフトウェアによる管理の対象とすることができる。ユーザは、ネットワーク管理ソフトウェアを用いて、管理対象のプリンタの情報を取得し、そのプリンタの状態を変更することができる。より具体的には、例えば、プリンタの液晶ディスプレイに表示されている文字列を取得したり、デフォルトの給紙カセットを変更したりすることができる。
【００２９】
次に、エージェントを実装したネットワークボード（NB）をプリンタに接続する実施形態について説明する。図２に示すように、好ましくは、NB１０１は、プリンタ１０２の内部拡張I/Oスロットに内蔵され、次に示す処理及びデータ記憶機能を持つ「埋め込まれた」ネットワークノードとなる。このNB１０１の構成により、大きなマルチエリアWANネットワークを統括及び管理するための、特徴的な補助機能が用意されるという利点がある。この補助機能は、例えば、ネットワーク上の遠隔地（ネットワーク統括者の事務所など）からのプリンタ制御及び状態観察や、各印刷ジョブ後の次のユーザのための保証初期環境を提供するためのプリンタ構成の自動管理、及びプリンタの負荷量の特徴づけるため或いはトナーカートリッジの交換スケジュールを組むためにネットワークを介してアクセスできるプリンタログ又は使用統計を含む。
【００３０】
このNB設計において重要な要因は、共有メモリ等の両方向インターフェイスを介して、NB１０１からプリンタ制御にアクセスする機能である。共有メモリ以外には、SCSIインターフェース等のインターフェースを使用する場合がある。これらにより、プリンタ状態情報がNB１０１又は外部のネットワークノードへ送出され、多数の補助機能が実装されうる。また、印刷画像情報及び制御情報は、NB１０１にあるマイクロプロセッサによって構成されて共有メモリに記述され、プリンタ１０２によって読み出される。同様に、プリンタ状態情報は、プリンタ１０２から共有メモリへ送られ、そこからNBプロセッサにより読み出される。
【００３１】
図２は、NB１０１をプリンタ１０２にインストールした状態を示す断面図である。図２に示すように、NB１０１はネットワーク接続のためのフェーズプレート１０１ｂとそれが設置されている印刷回路ボード１０１ａから構成される。また、ＮＢ１０１はコネクタ１７０を介してプリンタインターフェイスカード１５０につながっている。プリンタインターフェースカード１５０は、プリンタ１０２のプリンタエンジンを直接制御する。印刷データ及びプリンタ制御コマンドは、ＮＢ１０１からコネクタ１７０を介して、プリンタインターフェイスカード１５０へ入力される。一方、プリンタ状態情報はプリンタインターフェイスカード１５０からコネクタ１７０を介して出力される。ＮＢ１０１はこのプリンタ状態情報をフェースプレート１０１ｂにあるネットワークコネクタを介してLAN１００へ送出する。また、プリンタ１０２は、従来のシリアルポート１０２ａ及びパラレルポート１０２ｂから印刷データを受信することもできる。
【００３２】
図３は、ＮＢ１０１とプリンタ１０２とＬＡＮ１００との電気的接続を示すブロック図である。ＮＢ１０１は、ＬＡＮ１００へはＬＡＮインターフェイスを介して、プリンタ１０２へはプリンタインターフェイスカード１５０を介して直接つながっている。ＮＢ１０１には、ＮＢ１０１を制御するためのマイクロプロセッサ３０１と、マイクロプロセッサ３０１の動作プログラムを格納するＲＯＭ３０３と、マイクロプロセッサ３０１がプログラムを実行する際にワークエリアとして利用するＲＡＭ３０２と、ＮＢ１０１とプリンタインターフェイスカード１５０とが相互にデータを受け渡すための共有メモリ２００とがあり、それぞれが内部バスを通じて相互接続している。
【００３３】
ＮＢ１０１がＳＮＭＰエージェントとして動作するためのプログラムはＲＯＭ３０３に格納されている。マイクロプロセッサ３０１は、ＲＯＭ３０３に格納されたプログラムに従って動作し、ワークエリアとしてＲＡＭ３０２を用いる。また、プリンタインターフェイスカード１５０と相互に通信するためのバッファ領域として共有メモリ２００を用いる。
【００３４】
プリンタインターフェイスカード１５０のマイクロプロセッサ１５１はＮＢ１０１とのデータの受け渡しをＮＢ１０１にある共有メモリ２００を介して行う。プリンタインターフェイスカード１５０のマイクロプロセッサ１５１は、実際に印刷機構を動かすプリンタエンジン１６０とも通信する。
【００３５】
次に、ネットワーク管理ソフトウェアが実行されるＰＣについて説明する。図５は、ネットワーク管理ソフトウェアを実行可能なＰＣの構成を示すブロック図である。図５において、５００はネットワーク管理ソフトウェアを実行可能なＰＣであり、図１におけるＰＣ１０３と同等である。ＰＣ５００は、ＲＯＭ５０２若しくはハードディスク（ＨＤ）５１１に記憶された、或いはフロッピーディスクドライブ（ＦＤ）５１２により供給されるネットワーク管理ソフトウェアを実行するＣＰＵ５０１を備え、システムバス５０４につながっている各デバイスを総括的に制御する。
【００３６】
５０３はＲＡＭで、ＣＰＵ５０１の主メモリ、ワークエリア等として機能する。５０５はキーボードコントローラ（ＫＢＣ）で、キーボード（ＫＢ）５０９や不図示のポインティングデバイス等からの指示入力を制御する。５０６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）５１０の表示を制御する。５０７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、種々のアプリケーションプログラム、編集ファイル、ユーザファイル、そしてネットワーク管理ソフトウェア等を記憶するハードディスク（HD）５１１及びフロッピディスクドライブ（FD）５１２を制御する。５０８はネットワークインターフェイスカード（NIC）で、LAN１００を介して、エージェント或いはネットワーク機器と双方向にデータの受け渡しを行う。
【００３７】
次に、従来例におけるネットワーク管理ソフトウェアの構成について説明する。従来例におけるネットワーク管理装置は、図５に示したようなネットワーク管理装置を実現可能なPCと同様のPCで実現される。ハードディスク（HD）５１１には、後述の全ての説明の動作主体となる本願に係るネットワーク管理ソフトウェアが格納される。後述の全ての説明において、特に断りがない限り、ハードウェアにおける実行の主体はCPU５０１であり、ソフトウェアにおける制御の主体はネットワーク管理ソフトウェアである。本従来例においては、OSは、例えば、ウィンドウズ９５（マイクロソフト社製）を想定しているが、これに限るものではない。
【００３８】
なお、本願に係るネットワーク管理ソフトウェアは、フロッピーディスクやCD−ROMなどの記憶媒体に格納されて供給されてもよく、その場合には、図5に示すフロッピディスクドライブ５１２または不図示のCD−ROMドライブなどによって記憶媒体からプログラムが読み取られ、ハードディスク（HD）５１１にインストールされる。
【００３９】
図６は、本従来例に係るネットワーク管理ソフトウェアのモジュール構成図である。このネットワーク管理ソフトウェアは、図５におけるハードディスク５１１に格納されており、CPU５０１によって実行される。その際、CPU５０１はワークエリアとしてRAM５０３を使用する。図６において、６０１はデバイスリストモジュールと呼ばれ、ネットワークに接続されたネットワークデバイスを一覧して表示するモジュールである（一覧表示の様子については、後程図１５を用いて説明する）。６０２は全体制御モジュールと呼ばれ、デバイスリストからの指示をもとに他のモジュールを統括する。
【００４０】
６０３はコンフィグレータと呼ばれ、エージェントのネットワーク設定に関する特別な処理を行うモジュールである。６０４は探索モジュールと呼ばれ、ネットワークに接続されているネットワークデバイスを探索するモジュールである。探索モジュール６０４によって探索されたネットワークデバイスが、デバイスリスト６０１に一覧表示される。６０５は、プリントジョブの状況をNetWare  API６１６を用いてネットワークサーバから取得するNetWareジョブモジュールである（なお、NetWareAPIについては、例えば、Novell社から発行されている“NetWareProgramer'sGuidefor  C”等を参照。この書籍はNovell社から購入可能）。
【００４１】
６０６及び６０７は、後述するデバイス詳細ウィンドウを表示するためのUI（UserInterface）モジュールであり、詳細情報を表示する対象ネットワークデバイスの機種ごとにUIモジュールが存在する。６０８及び６０９は制御モジュールと呼ばれ、詳細情報を取得する対象ネットワークデバイスの機種ごとに特有の制御を行うモジュールである。UIモジュールと同様に、制御モジュールも詳細情報を取得する対象ネットワークデバイスの機種ごとに存在する。制御Aモジュール６０８及び制御Bモジュール６０９は、MIBモジュール６１０を用いて管理対象ネットワークデバイスからMIB情報を取得し、必要に応じてそのMIB情報のデータを変換して、UIAモジュール６０６やUI  Bモジュール６０７にそのデータを渡す。
【００４２】
MIBモジュール６１０は、オブジェクト識別子とオブジェクトキーとの変換を行うモジュールである。オブジェクトキーとは、オブジェクト識別子と一対一に対応する３２ビットの整数のことである。オブジェクト識別子は可変長の識別子であり、ネットワーク管理ソフトウェアを実装する上で扱いが面倒であるため、本願に係るネットワーク管理ソフトウェアにおいてはオブジェクト識別子と一対一に対応する固定長の識別子を内部的に用いる。MIBモジュール６１０より上位のモジュールは、このオブジェクトキーを用いてMIB情報を扱う。これにより、ネットワーク管理ソフトウェアの実装が容易になる。
【００４３】
６１１はSNMPモジュールと呼ばれ、SNMPパケットの送信と受信とを行う。６１２は共通トランスポートモジュールと呼ばれ、SNMPパケットを運搬するための下位のプロトコルとの橋渡しをするモジュールである。実際には、ネットワーク管理ソフトウェアの動作時にユーザが選択したプロトコルにより、IPXハンドラ６１３か、UDPハンドラ６１４のいずれかがパケットの転送を行う。なお、UDPハンドラ６１４を実装するために、WinSock  API６１７を用いている（WinSockについては、Windows  SocketAPI  ｖ１.１の仕様書を参照。このドキュメントは、複数箇所から入手可能であり、例えば、マイクロソフト社のコンパイラであるvisual  ｃ＋＋に同梱されている）。
【００４４】
また、コンフィグレータ６０３が用いている現在のプロトコル６１５とは、ネットワーク管理ソフトウェアの動作時にユーザが選択したIPXプロトコルかUDPプロトコルかのいずれかのことを示す。
【００４５】
本従来例で示す探索モジュール６０４とMIBモジュール６１０との間のインタフェースについて説明する。
【００４６】
MIBモジュール６１０は、図９に示すC言語のAPI（Application  ProgramInterface）を上位モジュールに提供する。まず、上位モジュールは、指定したアドレスに対するインターフェイス（これをポートと呼ぶ）をMIBモジュール６１０との間で開設するために、MIBOpen関数９０１を呼び出す。MIBモジュール６１０は、開設されたインターフェイスを識別するための識別子（これをポート識別子と呼ぶ）を上位モジュールに返す（値はMIBOpen関数９０１の第一引数portに返される）。以降、上位モジュールはポート識別子を用いてMIBモジュールとの間でやり取りを行う。なお、このポート識別子の値をポート値と呼ぶ。
【００４７】
ここで、指定するアドレスとは、動作しているプロトコルにおけるアドレスであり、IPプロトコルの場合はIPアドレス、NetWareプロトコルの場合はNetWareアドレスである。更にそれぞれのプロトコルにおけるブロードキャストアドレスを指定することもできる。ブロードキャストアドレスを指定してポートを開設した場合には、ブロードキャストアドレスに応答する複数のネットワークデバイスと通信を行うことができる。
【００４８】
上位モジュールは、ポートを使用しなくなったとき、MIBClose関数９０４を呼出してポートを閉じる。
【００４９】
上位モジュールがMIBオブジェクトの値を取得する場合には、MIBReadObjects関数９０２を呼び出す。MIBReadObjects関数９０２を呼び出す際には、ポート識別子、取得すべきMIBオブジェクトのオブジェクトキーを指定する。それと共に、MIBモジュール６１０が、取得したMIBオブジェクトの値を上位モジュールに通知するためのコールバック関数のアドレスを指定する。
【００５０】
MIBReadObjects関数９０２の呼出しにより、SNMPにおけるGet-requestコマンドがネットワークに送出される。すると、図８に示したように、このGet-requestコマンドに応答するエージェントがGet-responseコマンドを返信する。
【００５１】
上位モジュールがMIBオブジェクトへの値の書き込みを行う場合には、MIBWriteObjects関数９０３を呼び出す。MIBWriteObjects関数９０３を呼び出す際には、ポート識別子、値を書き込むべきMIBオブジェクトのオブジェクトキー、書き込む値を指定する。それと共に、書き込みの結果をMIBモジュール６１０が上位モジュールへ通知するためのコールバック関数のアドレスを指定する。
【００５２】
MIBWriteObjects関数９０３の呼出しにより、SNMPにおけるGet-requestコマンドがネットワークに送出される。すると、図８に示したように、このGet-requestコマンドに応答するエージェントがGet-responseコマンドを返信する。
【００５３】
コールバック関数は、MIBReadObjects関数９０２或いはMIBWriteObjects関数９０３の結果を上位モジュールに通知する。具体的には、ネットワークデバイスのアドレスと受信したGet-responseコマンドの内容を上位モジュールに通知する。
【００５４】
ブロードキャストアドレスを指定してポートを開設して、MIBReadObjects関数９０２を呼び出した場合、ネットワークに送出されたGet-requestコマンドを運ぶパケット（IPプロトコルの場合はIPパケット、NetWareプロトコルの場合はIPXパケット）の宛先アドレスがブロードキャストアドレスになる。したがって、このパケットは複数のネットワークデバイスに受信されるので、このGet-requestコマンドに応答するエージェントは複数ある。その結果、マネージャは複数のGet-responseコマンドを受信する。この場合、コールバック関数は、ポート識別子は同じでも、ネットワークデバイスのアドレスが異なる複数回の通知を行う。上位モジュールは、アドレスを調べることにより、それぞれのコールバックがどのネットワークデバイスに関する通知であるかを知ることができる。
【００５５】
更に具体的な流れを説明する。MIBモジュール６１０は、上位モジュールからの要求により、オブジェクトキーからオブジェクト識別子への変換等の処理を行い、SNMPモジュール６１１に対してGet-requestコマンドの送出を要求する。
【００５６】
SNMPモジュール６１１は、MIBモジュール６１０からのコマンドの送出の要求により、図７のPDU７１０をRAM５０３に生成し、共通トランスポートモジュール６１２へSNMPパケットを渡す。
【００５７】
共通トランスポートモジュール６１２は、ネットワーク管理ソフトウェアの動作時にユーザが選択したプロトコルに従い、ヘッダの付加等の処理を行う。そして、ユーザが選択したプロトコルがTCP／IPプロトコルであればWinSockAPIモジュール６１７、NetWareプロトコルであればNetWareAPIモジュール６１６へパケットを渡す。
【００５８】
以下は、ユーザが選択したプロトコルがTCP／IPプロトコルであるとして説明を行う。WinSock  APIモジュール６１７は渡されたパケットをIPパケット化し、OSに対してネットワークへのパケットの送出を要求する。すると、OSはRAM５０３上にあるパケットをシステムバス５０４を介してNIC５０８へ書き込む。NIC５０８は、書き込まれたパケットをフレーム化してLAN１００へ送出する。
【００５９】
逆に、ネットワークデバイスからのパケットはNIC５０８で受信される。NIC５０８はパケットを受信したことを、割り込みをかけてOSに通知する。OSはNIC５０８からそのパケットをシステムバス５０４を介して読み出し、RAM５０３に格納する。OSは、ユーザが選択したプロトコル或いは受信したパケットから、そのパケットに係るプロトコルを判断し、TCP／IPプロトコルであればWinSock  APIモジュール６１７へ、NetWareプロトコルであればNetWare  APIモジュール６１６へパケットを渡す。
【００６０】
以下、判断結果によるプロトコルがTCP／IPプロトコルである場合について説明する。WinSock  APIモジュール６１７では、そのパケットの宛先アドレスを調べて、自アドレス宛てであるかを判断する。自アドレス宛てでなければそのパケットを破棄し、自アドレス宛てであればUPDハンドラ６１４を起動して、共通トランスポートモジュール６１２にパケットを渡す。
【００６１】
共通トランスポートモジュール６１２は、トランスポートヘッダの除去等の処理を行い、SNMPモジュール６１１へSNMPパケットを渡す。SNMPモジュール６１１は、SNMPヘッダを除去して、MIBモジュール６１０へPDU７１０の中のMIB情報を渡す。MIBモジュール６１０は、MIB情報をMIBAPIで規定された形式に変換して、コールバック関数により上位モジュールへMIBオブジェクトの値を通知する。
【００６２】
ネットワーク管理ソフトウェアのインストールに必要なファイルは、通常、フロッピーディスク（FD）やCD-ROMなどの物理媒体に記録されて配布されるか、或いはネットワークを経由して伝送される。ユーザは、これらの手段により、ネットワーク管理ソフトウェアのインストールに必要なファイルを入手した後、所定のインストールの手順に従ってインストールを開始する。
【００６３】
ネットワーク管理ソフトウェアのインストール手順は、他の一般的なソフトウェアのインストール手順と同様である。すなわち、ユーザがネットワーク管理ソフトウェアのインストーラをパーソナルコンピュータ（PC）上で起動すると、インストーラが自動的にネットワーク管理ソフトウェアのインストールを実行する。また、インストーラは、ネットワーク管理ソフトウェアに必要なファイルをPCのハードディスクにコピーし、必要に応じて、ユーザに情報を入力してもらい、ネットワーク管理ソフトウェアに必要なファイルの修正または新規作成などを行う。
【００６４】
次に、本従来例におけるネットワーク管理ソフトウェアにおける探索シーケンスについて説明する。図１０は、従来のネットワーク管理ソフトウェアにおける探索シーケンスを示す図である。
【００６５】
図１０において、探索モジュール１０３０は、ネットワーク管理ソフトウェアの探索モジュールを示し、これは図６における６０４と同等である。この探索モジュール１０３０は、ネットワーク管理ソフトウェアの他のモジュールと同様に、図１におけるPC１０３上で図５のCPU５０１により実行される。
【００６６】
デバイス１０３１はネットワークに接続されており、かつSNMPエージェントが動作しているデバイスであり、例えば図１におけるNB１０１を示す。同様に、デバイス１０３２はNB１１８を示す。
【００６７】
上位モジュールから探索開始の指示が出されると、探索モジュール１０３０はブロードキャストアドレスを指定して、デバイスの状態とデバイスタイプを取得するためのSNMPパケットを送出する（１００１）。なお、このパケットは、ブロードキャストアドレスが指定されているので、ネットワークに接続されている全てのネットワークデバイスに届けられる。
【００６８】
一方、SNMPエージェントを実装しているネットワークデバイスは、このSNMPパケットに対して応答パケットを送出する（１００２及び１００３）。
【００６９】
ネットワークデバイスからの応答パケットを受信した探索モジュールは、更に詳細な情報を取得すべく、それぞれのネットワークデバイスに対してSNMPパケットを送信する。より具体的には、図１０において、１００２の応答パケットに対しては１００４のSNMPパケットの送信を行い、１００３の応答パケットに対しては１００６のSNMPパケットの送信を行う。このSNMPパケットの送信をデバイス別情報取得という。
【００７０】
なお、１００４や１００６のSNMPパケットの送信でMIBオブジェクトの値を問い合わせる代わりに、１００１のSNMPパケットの送信でその値を問い合わせない理由は次の通りである。すなわち、もし、多くのMIBオブジェクトを１つのパケットで一度に問い合わせると、ネットワークデバイスからの応答パケットがSNMPプロトコルで許されているパケットの最大長（４８４バイト）を超えてしまう可能性があるからである。このような場合、ネットワークデバイスからはSNMPプロトコルにおけるｔｏｏＢｉｇというエラーが返ってきてしまい、全く情報が取得できない。よって、複数のSNMPパケットに分けて、MIBオブジェクトの値を問い合わせる。
【００７１】
特に、本従来例の場合、１００４及び１００６のSNMPパケットでは、ネットワークデバイスに装着されているオプション機器を問い合わせている。ここでもし、多くのオプション機器がネットワークデバイスに装着されていると、ネットワークデバイスからの応答パケットのパケット長が大きくなる可能性が高い。更に、その他のMIBオブジェクトの値も同時に問い合わせると、応答パケットのパケット長が最大長（４８４バイト）を超えてしまう可能性がますます高くなる。このため、オプション機器を問い合わせるパケットは、独立したパケットにしておいた方が無難である。
【００７２】
SNMPパケットを受信したネットワークデバイスは、応答パケットを送信する。具体的には、１００４のパケットの受信に対しては１００５のパケットの送信を行い、１００６のパケットの受信に対しては１００７のパケットの送信を行う。
【００７３】
次に、デバイス応答タイマー１０２１が満了した時点で、探索モジュール６０４は、それまでに得たネットワークデバイスの情報を上位モジュールに通知する（１０２１）。これを、探索結果通知と言う。
【００７４】
また、探索間隔タイマー１０２２が満了した時点で、再度、ネットワークデバイスの探索を開始する。１００８から１０１４の処理は、１００１から１００７の処理と同様であるため、説明を省略する。
【００７５】
【発明が解決しようとする課題】
しかしながら、上記従来例では、１００４と１０１１、１００５と１０１２、１００６と１０１３及び１００７と１０１４が、それぞれ重複した通信であり、これによりネットワークトラフィックが輻輳するという問題点があった。
【００７６】
更に、ネットワークデバイスに関する複数の情報のうち、時間と共に変化しうる情報と変化することがほとんどない情報がある場合は、時間と共に変化しうる情報だけを再問い合わせることで、ネットワークトラフィックの輻輳を解消することが重要である。
【００７７】
つまり、本発明の目的は、探索シーケンスにおいて、真に必要なパケットのみを送受信することにより、ネットワークトラフィックの輻輳を解消することにある。
【００７８】
【課題を解決するための手段】
ネットワークを介して通信可能なデバイスを探索する第１の探索ステップと、第１の探索ステップで探索されるデバイスから、該デバイスに関する動的に変化する第１のデバイス属性の値および該デバイスに関する静的な第２のデバイス属性の値を取得する第１の取得ステップと、前記第１の取得ステップで取得した第１のデバイス属性の値および第２のデバイス属性の値を記憶手段に記憶する記憶ステップと、ネットワークを介して通信可能なデバイスを探索する第２の探索ステップと、前記第一の取得ステップで情報取得され、かつ、前記第２の探索ステップで探索されるデバイスから、動的に変化する第１のデバイス属性の値を取得し、当該デバイスの静的な第２のデバイス属性の値を前記記憶手段から取得する第２の取得ステップとを有することを特徴とする。
【００７９】
また、別の側面として、前記第２の探索ステップでは、デバイスを探索するために、前記第１のデバイス属性の値の要求を送信し、前記第２の取得ステップでは、前記要求に対応する応答に含まれる前記第１のデバイス属性の値を受信することを特徴とする。
【００８０】
また、別の側面として、前記第１のデバイス属性の値は、時間と共に変化しうる情報であることを特徴とする。
【００８１】
また、別の側面として、前記第一および第二の探索ステップによる探索で検出されたデバイスに関する複数のデバイス属性の値を表示手段に表示する表示ステップを含むことを特徴とする。
【００８２】
また、別の側面として、前記第１のデバイス属性、および、第２のデバイス属性は、シンプルネットワークマネジメントプロトコルのマネジメントインフォーメーションベースにてそれぞれ定義される所定の属性に対応するものであることを特徴とする。
また、別の側面として、前記動的に変化する値を有する第１のデバイス属性の値とは、デバイスとの通信ポート情報、又は、前記デバイスの設置場所を示す属性の値デバイスの状態を示す属性の値の少なくともひとつを含み、前記静的な値を有する第２のデバイス属性の値とは、前記デバイスの機器構成を示す属性の値であることを特徴とする。また、装置、媒体等の発明も開示される。
【００８３】
【発明の実施の形態】
以下、添付図面を用いて、本発明に係る実施の形態を詳細に説明する。
【００８４】
〔第１の実施の形態〕
図１１は、本発明におけるネットワーク管理ソフトウェアとネットワーク上のネットワークデバイスが通信する様子を示したシーケンス図である。特に、図１１では、探索モジュール１１３０がネットワーク上に存在するネットワークデバイスを探索する様子を示している。なお、図１１における１０２０、１０２１、１０２２、１０３１及び１０３２は、図１０における同一番号のものと同様である。
【００８５】
探索モジュール１１３０は、本発明におけるネットワーク管理ソフトウェアの探索モジュールを示し、これは図６における６０４と同等である。この探索モジュールは、本発明におけるネットワーク管理ソフトウェアの他のモジュールと同様に、図１におけるPC１０３上で図５のCPU'５０１により実行される。
【００８６】
１１０１から１１１０は、探索モジュール１１３０とネットワークデバイス１０３１、１０３２との間での通信を示している。これらの通信の内容については、後述のフローチャートの説明で一緒に詳述する。
【００８７】
図１２は、探索モジュール１１３０が、検出したネットワークデバイスの情報を記憶するために使用する検出デバイステーブル及び前回検出デバイステーブルと呼ばれるデータ構造を示す図である。このデータ構造は、図５のRAM５０３に保持される。
【００８８】
検出デバイステーブル１２２０には、検出したネットワークデバイスの情報が登録される。ネットワークデバイスが一つ検出される度に、検出デバイステーブルに行が一行追加される。
【００８９】
以下、検出デバイステーブルに登録される情報について説明する。ネットワークアドレスの列１２０１には、検出したネットワークデバイスのネットワークアドレスが登録される。ポートの列１２０２には、MIBモジュール６１０が提供するMIBOpen関数９０１によって返されるポート値が登録される。
【００９０】
デバイスタイプの列１２０３には、ネットワークデバイスの種別が登録される。デバイス状態の列１２０４には、ネットワークデバイスが現在どのような状態にあるかが登録される。装備情報の列１２０５には、ネットワークデバイスに装着されているオプション機器が登録される。
【００９１】
具体的に図１２では、検出デバイステーブル１２２０（図１２（ａ））には、二つのネットワークデバイスが登録されている。一つ目は、ネットワークアドレスが１９９．１．１６．１３０のネットワークデバイスである。このネットワークデバイスと通信するためのポート値は０ｘ１２ＦＥである。このネットワークデバイスはデバイスタイプがＬＢＰであり、オプション機器として２０００枚デッキが装着されている。また、デバイス状態は使用可能（Ｒｅａｄｙ）である。
【００９２】
二つ目は、ネットワークアドレスが１９２．１．１６．１５０のネットワークデバイスである。このネットワークデバイスと通信するためのポート値は０ｘ２５０１である。このネットワークデバイスは、デバイスタイプが複写機（Ｃｏｐｉｅｒ）であり、オプション機器としてソータ（Ｓｏｒｔｅｒ）が装着されている。なお、現在、紙詰まり（Ｊａｍ）が発生していることがデバイス状態から分かる。
【００９３】
上記情報のうち、時間の経過と共に動的に変化しうる情報は、ポート１２０２やデバイス状態１２０４である。ポート値は、探索モジュール６０４がMibOpen関数９０１を呼び出す度に一意な値が割り当てられる。また、デバイス状態は、ネットワークデバイスの現在の状態を示しており、ネットワークデバイスの状態の変化と共に変化するものである。なお、この２つの情報は、ネットワークデバイスを探索するための１１０１の通信で問い合わせられ、１１０２や１１０３の通信でその値がネットワークデバイスから返される。
【００９４】
前回検出デバイステーブル１２３０（図１２（ｂ））は、前回の探索で検出されたネットワークデバイスの情報を保持しておくためのものである。前回検出デバイステーブル１２３０は、検出デバイステーブル１２２０と同様なデータ構造をしているため、説明を省略する。
【００９５】
なお、これらのテーブルの使用方法については、後述のフローチャートの説明において詳述する。
【００９６】
図１３は、PC１０３上で実行されるネットワーク管理ソフトウェア全体の動作を示すフローチャートである。プログラムが起動されると、まず、ステップS１３０１において、ネットワークデバイスの探索を開始するための処理を行う。次に、ステップS１３０２において、発生したイベントがSNMPパケット（応答パケット）の受信であるか、デバイス応答タイマーの満了であるか、探索間隔タイマーの満了であるか、或いはそれ以外のイベントであるか（全くイベントが生じていないことも含む）を判定する。
【００９７】
発生したイベントに応じて、それぞれ適切なステップ（Ｓ１３０３からＳ１３０６）に移動する。それぞれのステップで処理が終了したら、ステップＳ１３０２に戻る。
【００９８】
図１４は、探索モジュール６０４が探索を開始する際の動作を示すフローチャートである。この処理は、図１３におけるステップＳ１３０１の処理に相当する。まず、ステップＳ１４０１において、前回検出デバイステーブルの内容をすべて消去し、テーブルを初期化する。次に、ステップＳ１４０２において、検出デバイステーブルの内容を全て消去して、テーブルを初期化する。
【００９９】
次に、ステップＳ１４０３に進み、図６のＭＩＢモジュール６１０が提供するMibOpen関数９０１を呼び出して、一次探索用のポートをブロードキャストアドレスでオープンし、そのポート値を図１のRAM５０３に記憶する。なお、この一次探索用のポートを一次探索ポートと言う。
【０１００】
次に、ステップS１４０４において、ステップS１４０３で取得したポート値を引数にしてMibReadObject関数９０２を呼び出す。この際、MIBオブジェクトとしてデバイスタイプとデバイス状態に関する二つのＭＩＢオブジェクトキーを指定する。これにより、図１１の１１０１の通信が行われる。
【０１０１】
１１０１の通信は宛先アドレスがブロードキャストアドレスであるため、図１のLAN１００に接続されている全てのネットワークデバイスに送信される。当然、１０１や１１８、即ち、図１１の１０３１や１０３２にも送信される。
【０１０２】
次に、ステップS１４０５において、デバイス応答タイマーT1を起動する。更に、ステップS１４０６において、探索間隔タイマーT2を起動する。
【０１０３】
図１５は、SNMPパケットを受信した場合の動作を示すフローチャートである。この処理は、図１３におけるステップS１３０３の処理に相当する。この動作は、図１１の１１０２、１１０３、１１０５、１１０７、１１０９及び１１１０の通信において、SNMPパケットが受信された際に行われる。
【０１０４】
SNMPパケットを受信した場合には、まず、ステップS１５０１において、一次探索ポートに対する応答パケットであるかどうかを判断する。この判断では、SNMPパケットが受信された際に呼び出される探索モジュールのコールバック関数における第二引数のポート値が、図１４のステップS１４０３で記憶したポート値と一致するかを判定する。もし一致する場合には、一次探索ポートに対する通信であるとして、ステップS１５０２に進む。一致しない場合には、ステップS１５０９に進む。なお、図１１において、１１０２、１１０３、１１０９及び１１１０が一次探索ポートへの通信である。
【０１０５】
次に、ステップS１５０２においては、正常な応答であるかどうかを判断する。正常な応答とは、図７において説明したように、SNMPパケットのエラーステータス７１３が０であることである。ステップS１５０２において、正常な応答であると判断した場合には、ステップS１５０３に進む。正常な応答でないと判断した場合には、ステップS１５０８に進む。なお、ステップS１５０９においても、ステップS１５０２と同様な判断を行う。
【０１０６】
ステップS１５０３においては、受信内容を検出デバイステーブル１２２０に登録する。図１４のステップS１４０３において、MIBオブジェクトとしてデバイスタイプとデバイス状態の二つを指定していたので、受信内容には、これら二つのMIBオブジェクトの値が含まれている。よって、これら二つの値と、コールバック関数の第一引数にあるネットワークアドレスを検出デバイステーブル１２２０に登録する。
【０１０７】
次に、ステップS１５０４において、コールバック関数の第一引数にあるネットワークアドレスが前回検出デバイステーブル１２３０のネットワークアドレスの列１２１１に登録されているかどうかを判断する。もし登録されていなければステップS１５０５に進み、登録されていればステップS１５０７に進む。
【０１０８】
ステップS１５０５においては、更に、ネットワークデバイスごとに個別に通信を行うべく、ポートをオープンする。本実施の形態では、このポートを二次探索ポートと呼ぶ。より具体的には、ステップS１５０３で検出したネットワークデバイスのネットワークアドレスを引数にしてMIBOpen関数を呼び出し、返されたポート値を検出デバイステーブル１２２０のポート値の列１２０２の対応する欄に登録する。
【０１０９】
次に、ステップS１５０６において、ネットワークデバイスに装着されているオプション機器の情報を取得すべく、MIBReadObjects関数９０２を呼び出す。ここで、取得するMIBオブジェクトの値は、ステップS１５０３で取得したデバイスタイプに応じて異なる。より具体的には、例えばデバイスタイプが複写機である場合には、入力カセットや出力カセット、ソーターなどに関するMIBオブジェクトの値を問い合わせる。デバイスタイプが小型LBPである場合には、出力カセットやソーターが装着されていないことが分かっているので、入力カセットに関するMIBオブジェクトの値を問い合わせる。この問い合わせにより、図１１の１１０４や１１０６の通信が行われることになる。
【０１１０】
ステップS１５０４において、前回検出デバイステーブル１２３０に登録されていると判断された場合には、ステップS１５０７に進む。ステップS１５０７では、まず、前回検出デバイステーブル１２３０のネットワークアドレスの列をコールバック関数の第一引数にあるネットワークアドレスで検索する。そして、一致する行の装備情報欄の内容を、検出デバイステーブル１２２０における同じネットワークアドレスを持つ行の装備情報欄に代入する。
【０１１１】
ネットワークデバイスにどのようなオプション機器が装着されているを示す装備情報はネットワークデバイスの電源が入っている間は変化しないため、前回の探索で得た情報をそのまま用いても問題ない。このように、前回の探索で得た情報を利用することにより、再度ネットワークデバイスに装着情報を問い合わせる必要がなく、ネットワークトラフィックを減らすことができる。
【０１１２】
ステップS１５０２において、正常な応答でないと判断した場合、ステップS１５０８に進む。ステップS１５０８においては、その応答パケットからは有効な情報を得ることができないため、その応答パケットをそのまま破棄する。
【０１１３】
また、ステップS１５０１において、受信したSNMPパケットが一次探索ポートへの応答パケットでないと判断した場合には、ステップS１５０９に進む。これは、図１１における１１０５や１１０７の通信の場合である。更に、ステップS１５０９において、受信した応答パケットが正常な応答であるかどうかを判断する。受信した応答パケットが正常な応答でないと判断された場合には、ステップS１５１１に進む。ステップS１５１１においては、その応答パケットからは有効な情報が得られないので、そのパケットをそのまま破棄する。
【０１１４】
一方、ステップS１５０９において、受信した応答パケットが正常な応答であると判断した場合には、S１５１０に進む。S１５１０においては、受信内容を検出デバイステーブル１２２０に登録する。より具体的には、ステップS１５０６において、ネットワークデバイスに装着されているオプション機器の情報を取得すべく、デバイスタイプに応じてMIBオブジェクトの値を問い合わせているので、その値に応じてオプション機器の情報を検出デバイステーブル１２２０の装備情報欄１２０５に登録する。
【０１１５】
図１６は、デバイス応答タイマーT1が満了した際の処理を示すフローチャートである。タイマーサービスはOS（オペレーションシステム）によって提供され、指定したタイマー時間が経過すると、OSが本手順を呼び出す。
【０１１６】
図１６に示した手順は、図１３におけるステップS１３０４の処理に相当する。デバイス応答タイマーT1満了処理においては、まず、ステップS１６０１において一次探索ポートをクローズする。より具体的には、ステップS１４０３において、MIBOpen関数を用いてオープンしたポートのポート値を図５のRAM５０３に記憶させている。よって、そのポート値を引数にしてMIBClose関数を呼び出す。同時にRAM５０３に記憶しておいたポート値をNULL値でクリアする。
【０１１７】
次に、ステップS１６０２において、全ての二次探索ポートをクローズする。より具体的には、検出デバイステーブル１２２０のポート値の列１２０２を上から下へ順に走査し、それぞれのポート値を引数にしてMIBClose関数を呼び出す。同時に、ポートがクローズされたことを示すために、検出デバイステーブル１２２０のポート値の列の各欄をNULL値でクリアする。
【０１１８】
最後に、ステップS１６０３において、検出デバイステーブル１２２０に格納されている情報を上位モジュールに通知する。より具体的には、検出デバイステーブル１２２０に登録されているネットワークデバイスの数、すなわち検出デバイステーブル１２２０の行数と、検出デバイステーブル１２２０のRAM５０３における先頭アドレスを上位モジュールに通知する。上位モジュールは、この通知された情報を基に、検出されたネットワークデバイスの一覧を図５のディスプレイ５１０に表示する。
【０１１９】
図１７は、探索間隔タイマーT2が満了した際の処理を示すフローチャートである。タイマーサービスはOS（オペレーションシステム）によって提供され、指定したタイマー時間が経過するとOSが本手順を呼び出す。
【０１２０】
図１７に示した手順は、図１３におけるステップS１３０５の処理に相当する。探索間隔タイマーT2満了処理においては、まず、ステップS１７０１において、直前に行われた探索の結果を次回の探索に生かすために、検出デバイステーブル１２２０の情報を前回検出デバイステーブル１２３０にコピーする。
【０１２１】
なお、ステップS１７０２からステップS１７０６までの動作は、図１４におけるステップS１４０２からステップS１４０６までの動作と同様であるため説明を省略する。
【０１２２】
〔第２の実施の形態〕
図１９は、本発明におけるネットワーク管理ソフトウェアとネットワーク上のネットワークデバイスが通信する様子を示したシーケンス図である。特に、図１９では、探索モジュール１９３０がネットワーク上に存在するネットワークデバイスを探索する様子を示している。なお、図１９における１０２０、１０２１、１０２２、１０３１及び１０３２は、図１０における同一番号のものと同様である。
【０１２３】
また、探索モジュール１９３０は、本発明におけるネットワーク管理ソフトウェアの探索モジュールを示し、これは図６における６０４と同等である。この探索モジュール１９３０は、本発明におけるネットワーク管理ソフトウェアの他のモジュールと同様に、図１におけるPC１０３上で図５のCPU'５０１により実行される。
【０１２４】
１９０１から１９１８は、探索モジュール１９３０とネットワークデバイス１０３１、１０３２との間での通信を示している。これらの通信の内容については、後述のフローチャートの説明で一緒に詳述する。
【０１２５】
図２０は、探索モジュール１９３０が、検出したネットワークデバイスの情報を記憶するために使用する検出デバイステーブル及び前回検出デバイステーブルと呼ばれるデータ構造を示す図である。このデータ構造は、図５のRAM５０３に保持される。
【０１２６】
検出デバイステーブル２０２０には、検出したネットワークデバイスの情報が登録される。ネットワークデバイスが一つ検出される度に、検出デバイステーブルに行が一行追加される。
【０１２７】
以下、検出デバイステーブルに登録される情報について説明する。ネットワークアドレスの列２００１には、検出したネットワークデバイスのネットワークアドレスが登録される。ポートの列２００２には、MIBモジュール６１０が提供するMIBOpen関数９０１によって返されるポート値が登録される。
【０１２８】
デバイスタイプの列２００３には、ネットワークデバイスの種別が登録される。デバイス状態の列２００４には、ネットワークデバイスが現在どのような状態にあるかが登録される。装備情報の列２００５には、ネットワークデバイスに装着されているオプション機器が登録される。設置場所の列２００６にはネットワークデバイスが設置されている設置場所の情報が登録される。
【０１２９】
具体的に図２０では、検出デバイステーブル２０２０（図２０（ａ））には、二つのネットワークデバイスが登録されている。一つ目は、ネットワークアドレスが１９９．１．１６．１３０のネットワークデバイスである。このネットワークデバイスと通信するためのポート値は０ｘ１２ＦＥである。このネットワークデバイスはデバイスタイプがＬＢＰであり、オプション機器として２０００枚デッキが装着されている。また、デバイス状態は使用可能（Ｒｅａｄｙ）である。そして、設置場所は第一出力室となっている。
【０１３０】
二つ目は、ネットワークアドレスが１９２．１．１６．１５０のネットワークデバイスである。このネットワークデバイスと通信するためのポート値は０ｘ２５０１である。このネットワークデバイスは、デバイスタイプが複写機（Ｃｏｐｉｅｒ）であり、オプション機器としてソータ（Ｓｏｒｔｅｒ）が装着されている。なお、現在、紙詰まり（Ｊａｍ）が発生していることがデバイス状態から分かる。また、設置場所は事務室となっている。
【０１３１】
上記情報のうち、時間の経過と共に動的に変化しうる情報は、ポート値やデバイス状態である。ポート値は、探索モジュール１９３０がMibOpen関数９０１を呼び出す度に一意な値が割り当てられる。また、デバイス状態は、ネットワークデバイスの現在の状態を示しており、ネットワークデバイスの状態の変化と共に変化するものである。
【０１３２】
前回検出デバイステーブル２０３０（図２０（ｂ））は、前回の探索で検出されたネットワークデバイスの情報を保持しておくためのものである。前回検出デバイステーブル２０３０は、検出デバイステーブル１２２０と同様なデータ構造をしているため、説明を省略する。
【０１３３】
なお、これらのテーブルの使用方法については、後述のフローチャートの説明において詳述する。
【０１３４】
図２１は、PC１０３上で実行されるネットワーク管理ソフトウェア全体の動作を示すフローチャートである。プログラムが起動されると、まず、ステップS２１０１において、ネットワークデバイスの探索を開始するための処理を行う。次に、ステップS２１０２において、発生したイベントがSNMPパケット（応答パケット）の受信であるか、デバイス応答タイマーの満了であるか、探索間隔タイマーの満了であるか、或いはそれ以外のイベントであるか（全くイベントが生じていないことも含む）を判定する。
【０１３５】
発生したイベントに応じて、それぞれ適切なステップ（Ｓ２１０３からＳ２１０６）に移動する。それぞれのステップで処理が終了したら、ステップＳ２１０２に戻る。
【０１３６】
図２２は、探索モジュール１９３０が探索を開始する際の動作を示すフローチャートである。この処理は、図２１におけるステップＳ２１０１の処理に相当する。まず、ステップＳ２２０１において、前回検出デバイステーブルの内容をすべて消去し、テーブルを初期化する。次に、ステップＳ２２０２において、検出デバイステーブルの内容を全て消去して、テーブルを初期化する。
【０１３７】
次に、ステップＳ２２０３に進み、図６のＭＩＢモジュール６１０が提供するMibOpen関数９０１を呼び出して、一次探索用のポートをブロードキャストアドレスでオープンし、そのポート値を図１のRAM５０３に記憶する。なお、この一次探索用のポートを一次探索ポートと言う。次に、ステップS２２０４において、ステップS２２０３で取得したポート値を引数にしてMIBReadObject関数９０２を呼び出す。この際、MIBオブジェクトとしてデバイスタイプとデバイス状態に関する二つのＭＩＢオブジェクトキーを指定する。これにより、図１９の１９０１の通信が行われる。１９０１の通信は宛先アドレスがブロードキャストアドレスであるため、図１のLAN１００に接続されている全てのネットワークデバイスに送信される。当然、１０１や１１８、即ち、図１１の１０３１や１０３２にも送信される。
【０１３８】
次に、ステップS２２０５において、デバイス応答タイマーT1を起動する。更に、ステップS２２０６において、探索間隔タイマーT2を起動する。
【０１３９】
図２３は、SNMPパケットを受信した場合の動作を示すフローチャートである。この処理は、図２１におけるステップS２１０３の処理に相当する。この動作は、図１９の１９０２、１９０３、１９０６、１９０７、１９１０、１９１１、１９１３、１９１４、１９１６及び１９１８の通信において、SNMPパケットが受信された際に行われる。
【０１４０】
SNMPパケットを受信した場合には、まず、ステップS２３０１において、一次探索ポートに対する応答パケットであるかどうかを判断する。この判断では、SNMPパケットが受信された際に呼び出される探索モジュールのコールバック関数における第二引数のポート値が、図２２のステップS２２０３で記憶したポート値と一致するかを判定する。もし一致する場合には、一次探索ポートに対する通信であるとして、ステップS２３０２に進む。一致しない場合には、ステップS２３０９に進む。なお、図１９において、１９０２、１９０３、１９１３及び１９１４が一次探索ポートへの通信である。
【０１４１】
次に、ステップS２３０２においては、正常な応答であるかどうかを判断する。正常な応答とは、図７において説明したように、SNMPパケットのエラーステータス７１３が０であることである。ステップS２３０２において、正常な応答であると判断した場合には、ステップS２３０３に進む。正常な応答でないと判断した場合には、ステップS２３０８に進む。なお、ステップS２３０９においても、ステップS２３０２と同様な判断を行う。
【０１４２】
ステップS２３０３においては、受信内容を検出デバイステーブル２０２０に登録する。図２２のステップS２２０３において、MIBオブジェクトとしてデバイスタイプとデバイス状態の二つを指定していたので、受信内容には、これら二つのMIBオブジェクトの値が含まれている。よって、これら二つの値と、コールバック関数の第一引数にあるネットワークアドレスを検出デバイステーブル２０２０に登録する。
【０１４３】
次に、ステップS２３０４において、コールバック関数の第一引数にあるネットワークアドレスが前回検出デバイステーブル２０３０のネットワークアドレスの列２０１１に登録されているかどうかを判断する。もし登録されていなければステップS２３０５に進み、登録されていればステップS２３０７に進む。
【０１４４】
ステップS２３０５においては、更に、ネットワークデバイスごとに個別に通信を行うべく、ポートをオープンする。本実施の形態では、このポートを二次探索ポートと呼ぶ。より具体的には、ステップS２３０３で検出したネットワークデバイスのネットワークアドレスを引数にしてMIBOpen関数を呼び出し、返されたポート値を検出デバイステーブル２０２０のポート値の列２００２の対応する欄に登録する。
【０１４５】
次に、ステップS２３０６において、ネットワークデバイスに装着されているオプション機器の情報を取得すべく、MIBReadObjects関数９０２を呼び出す。ここで、取得するMIBオブジェクトの値は、ステップS２３０３で取得したデバイスタイプに応じて異なる。より具体的には、例えばデバイスタイプが複写機である場合には、入力カセットや出力カセット、ソーターなどに関するMIBオブジェクトの値を問い合わせる。デバイスタイプが小型LBPである場合には、出力カセットやソーターが装着されていないことが分かっているので、入力カセットに関するMIBオブジェクトの値を問い合わせる。この問い合わせにより、図１９の１９０４や１９０８の通信が行われることになる。
【０１４６】
更に、ネットワークデバイスのより詳細な情報を取得するために、ネットワークデバイスが設置されている場所の情報を問い合わせる。この問い合わせにより、図１９の１９０５や１９０９の通信が行われることになる。従って、ステップS２３０６では、同一ネットワークデバイスに対して2回、SNMPパケットが送信されることになる。
【０１４７】
ステップS２３０４において、前回検出デバイステーブル２０３０に登録されていると判断された場合には、ステップS２３０７に進む。ステップS２３０７では、まず、前回検出デバイステーブル２０３０のネットワークアドレスの列をコールバック関数の第一引数にあるネットワークアドレスで検索する。そして、一致する行の装備情報欄の内容を、検出デバイステーブル２０２０における同じネットワークアドレスを持つ行の装備情報欄にそれぞれ代入する。
【０１４８】
ネットワークデバイスにどのようなオプション機器が装着されているを示す装備情報はネットワークデバイスの電源が入っている間は変化しないため、前回の探索で得た情報をそのまま用いても問題ない。つまり、変化する可能性のある情報だけを改めて取得すればよい。
【０１４９】
したがって、ステップS２３１２では、変化する可能性がある情報のみを問い合わせる。具体的には、例えば設置場所の情報を問い合わせる。この問い合わせにより、図１９の１９１５や１９１７の通信が行われることになる。このように、前回の探索で得た情報を利用することにより、再度ネットワークデバイスに装着情報を問い合わせる必要がなく、ネットワークトラフィックを減らすことができる。
【０１５０】
ステップS２３０２において、正常な応答でないと判断した場合、ステップS２３０８に進む。ステップS２３０８においては、その応答パケットからは有効な情報を得ることができないため、その応答パケットをそのまま破棄する。
【０１５１】
また、ステップS２３０１において、受信したSNMPパケットが一次探索ポートへの応答パケットでないと判断した場合には、ステップS２３０９に進む。これは、図１９における１９０６、１９０７、１９１０、１９１１、１９１６、１９１８の通信の場合である。更に、ステップS２３０９において、受信した応答パケットが正常な応答であるかどうかを判断する。受信した応答パケットが正常な応答でないと判断された場合には、ステップS２３１１に進む。ステップS２３１１においては、その応答パケットからは有効な情報が得られないので、そのパケットをそのまま破棄する。
【０１５２】
一方、ステップS２３０９において、受信した応答パケットが正常な応答であると判断した場合には、S２３１０に進む。S２３１０においては、受信内容を検出デバイステーブル２０２０に登録する。より具体的には、本実施の形態では、ステップS２３０６においては、ネットワークデバイスに装着されているオプション機器の情報と設置場所の情報を取得すべく、MIBオブジェクトの値を問い合わせているので、その値に応じてオプション機器の情報と設置場所の情報を検出デバイステーブル２０２０の装備情報欄と設置場所欄に登録する。
【０１５３】
また、本実施の形態では、ステップS２３１２においては、ネットワークデバイスが設置されている設置場所の情報を取得すべく、設置場所に関するMIBオブジェクトの値を問い合わせているので、その値を検出デバイステーブル２０２０の設置場所欄に登録する。
【０１５４】
図２４は、デバイス応答タイマーT1が満了した際の処理を示すフローチャートである。タイマーサービスはOS（オペレーションシステム）によって提供され、指定したタイマー時間が経過すると、OSが本手順を呼び出す。
【０１５５】
図２４に示した手順は、図２１におけるステップS２１０４の処理に相当する。デバイス応答タイマーT1満了処理においては、まず、ステップS２４０１において一次探索ポートをクローズする。より具体的には、ステップS２２０３において、MIBOpen関数を用いてオープンしたポートのポート値を図５のRAM５０３に記憶させているので、そのポート値を引数にしてMIBClose関数を呼び出す。同時にRAM５０３に記憶しておいたポート値をNULL値でクリアする。
【０１５６】
次に、ステップS２４０２において、全ての二次探索ポートをクローズする。より具体的には、検出デバイステーブル２０２０のポート値の列２００２を上から下へ順に走査し、それぞれのポート値を引数にしてMIBClose関数を呼び出す。同時に、ポートがクローズされたことを示すために、検出デバイステーブル２０２０のポート値の列の各欄をNULL値でクリアする。
【０１５７】
最後に、ステップS２４０３において、検出デバイステーブル２０２０に格納されている情報を上位モジュールに通知する。より具体的には、検出デバイステーブル２０２０に登録されているネットワークデバイスの数、すなわち検出デバイステーブル２０２０の行数と、検出デバイステーブル１２２０のRAM５０３における先頭アドレスを上位モジュールに通知する。上位モジュールは、この通知された情報を基に、検出されたネットワークデバイスの一覧を図５のディスプレイ５１０に表示する。
【０１５８】
図２５は、探索間隔タイマーT2が満了した際の処理を示すフローチャートである。タイマーサービスはOS（オペレーションシステム）によって提供され、指定したタイマー時間が経過するとOSが本手順を呼び出す。
【０１５９】
図２５に示した手順は、図２１におけるステップS２１０５の処理に相当する。探索間隔タイマーT2満了処理においては、まず、ステップS２５０１において、直前に行われた探索の結果を次回の探索に生かすために、検出デバイステーブル２０２０の情報を前回検出デバイステーブル２０３０にコピーする。
【０１６０】
なお、ステップS２５０２からステップS２５０６までの動作は、図２２におけるステップS２２０２からステップS２２０６までの動作と同様であるため説明を省略する。
【０１６１】
〔第３の実施の形態〕
上記で説明した本発明に係るネットワーク管理ソフトウェアは、外部からインストールされるプログラムがPC５００によって実行される形で実施されてもよい。その場合、CD-ROM、フラッシュメモリ、フロッピーディスクなどの記憶媒体を介して、或いは電子メール、パソコン通信などのネットワークを介して、そのプログラムを含む情報群を外部の記憶媒体からPC５００のRAM５０３にロードすることにより、そのプログラムはPC５００に供給される。この場合でも本発明は適用されるものである。
【０１６２】
図１８は、記憶媒体の一例であるCD-ROMのメモリマップを示す図である。９９９９はディレクトリ情報を記憶してある領域で、以降のインストールプログラムを記憶してある領域９９９８及びネットワーク管理ソフトウェアを記憶してある９９９７の位置を記憶している。９９９８は、インストールプログラムを記憶してある領域である。９９９７は、ネットワーク管理ソフトウェアを記憶してある領域である。
【０１６３】
本発明のネットワーク管理ソフトウェアがPC５００にインストールされる際には、まず、インストールプログラムがPC５００のシステムにロードされ、CPU５０１によって実行される。次に、CPU５０１によって実行されるインストールプログラムが、ネットワーク管理ソフトウェアを記憶してある領域９９９７からネットワーク管理ソフトウェアを読み出してハードディスク５１１に格納する。
【０１６４】
なお、本発明は、複数の機器（例えば、ホストコンピュータ、インターフェイス機器、リーダなど）から構成されるシステム或いは統合装置に適用しても、ひとつの機器からなる装置に適用してもよい。
【０１６５】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても、本発明の目的が達成すされることは言うまでもない。
【０１６６】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１６７】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１６８】
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１６９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施の形態の機能が実現され得る。
【０１７０】
なお、本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体から、そのプログラムをパソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【０１７１】
【発明の効果】
以上説明したように、本発明によれば、ネットワークデバイスの探索シーケンスにおいて、必要なパケットを送受信することにより、ネットワークトラフィックの輻輳を解消することが可能である。例えば、１回目の探索で既に情報が取得されているネットワークデバイスに関しては、２回目以降の探索においては、動的に変化し得る属性値をデバイスから取得し、静的な属性値については、１回目の探索で取得した情報を用いるので、２回目以降の探索において、ネットワークの通信量を大幅に削減できる。
【図面の簡単な説明】
【図１】プリンタをネットワークに接続するためのネットワークボードを、開放型アーキテクチャのプリンタへ装着した場合のネットワークを示す図である。
【図２】エージェントを実装したネットワークボードが、装着されたプリンタの断面図である。
【図３】ネットワークボードとプリンタとLANとの電気的接続を示すブロック図である。
【図４】  MIBの構造を示す概念図である。
【図５】ネットワーク管理ソフトウェアを実行可能なPCの構成を示すブロック図である。
【図６】ネットワーク管理ソフトウェアのモジュール構成を示す図である。
【図７】  SNMPプロトコルを用いる場合のパケットのフォーマットを示す図である。
【図８】マネージャとエージェント間でのSNMPコマンドの送受信を示す図である。
【図９】  MIBモジュールが提供する関数を示す図である。
【図１０】従来例における探索モジュールとネットワークデバイス間の通信シーケンスを示す図である。
【図１１】本発明の第1の実施の形態における探索モジュールとネットワークデバイス間の通信シーケンスを示す図である。
【図１２】第１の実施の形態における検出デバイステーブル（ａ）と前回検出デバイステーブル（ｂ）を示す図である。
【図１３】第１の実施の形態におけるネットワーク管理ソフトウェア全体の動作を示すフローチャートである。
【図１４】第１の実施の形態における探索モジュールがネットワークデバイスの探索を開始する際の動作を示すフローチャートである。
【図１５】第１の実施の形態におけるＳＮＭＰパケット受信した際の処理を示すフローチャートである。
【図１６】第１の実施の形態におけるデバイス応答タイマーが満了した際の処理を示すフローチャートである。
【図１７】第１の実施の形態における探索間隔タイマーが満了した際の処理を示すフローチャートである。
【図１８】本発明のネットワーク管理ソフトウェアを記憶した記憶媒体におけるメモリマップを示す図である。
【図１９】本発明の第２の実施の形態における探索モジュールとネットワークデバイス間の通信シーケンスを示す図である。
【図２０】第２の実施の形態における検出デバイステーブル（ａ）と前回検出デバイステーブル（ｂ）を示す図である。
【図２１】第２の実施の形態におけるネットワーク管理ソフトウェア全体の動作を示すフローチャートである。
【図２２】第２の実施の形態における探索モジュールがネットワークデバイスの探索を開始する際の動作を示すフローチャートである。
【図２３】第２の実施の形態におけるＳＮＭＰパケット受信した際の処理を示すフローチャートである。
【図２４】第２の実施の形態におけるデバイス応答タイマーが満了した際の処理を示すフローチャートである。
【図２５】第２の実施の形態における探索間隔タイマーが満了した際の処理を示すフローチャートである。
【符号の説明】
１００、１１０、１２０  ＬＡＮ
１０１  ネットワークボード
１０２、１０５、１０９ａ、１０９ｂ、１１６、１１７  プリンタ
１０４、１１１、１１２、１２１、１２２  ＰＣ
１０６、１１３  ファイルサーバ
１０７、１１４  ネットワークディスク
１０８、１１５  プリントサーバ
１３０  モデム／トランスポンダ
１４０  バックボーン
１５０  プリンタインターフェイスカード
１５１  マイクロプロセッサ
１６０  プリンタエンジン
２００  共有メモリ
３０１  ＭＰＵ
３０２  ＲＡＭ
３０３  ＲＯＭ
５００  ＰＣ
５０１  ＣＰＵ
５０２  ＲＯＭ
５０３  ＲＡＭ
５０４  システムバス
５０５  キーボードコントローラ
５０６  ＣＲＴコントローラ
５０７  ディスクコントローラ
５０８  ネットワークインタフェースカード
５０９  キーボード
５１０  ＣＲＴ
５１１  ハードディスク
５１２  フロッピーディスク
６０１  デバイスリストモジュール
６０２  全体制御モジュール
６０３  コンフィグレータ
６０４  探索モジュール
６０５  ＮｅｔＷａｒｅジョブモジュール
６０６  ＵＩ  Ａモジュール
６０７  ＵＩ  Ｂモジュール
６０８  制御Ａモジュール
６０９  制御Ｂモジュール
６１０  ＭＩＢモジュール
６１１  ＳＮＭＰモジュール
６１２  共通トランスポートモジュール
６１３  ＩＰＸ  ハンドラ
６１４  ＵＤＰ  ハンドラ
６１６  ＮｅｔＷａｒｅ  ＡＰＩ
６１７  ＷｉｎＳｏｃｋ  ＡＰＩ
９０１  ＭＩＢＯｐｅｎ関数
９０２  ＭＩＢＲｅａｄＯｂｊｅｃｔｓ関数
９０３  ＭＩＢＷｒｉｔｅＯｂｊｅｃｔｓ関数
９０４  ＭＩＢＣｌｏｓｅ関数
９０５  コールバック関数
１０３０、１１３０、１９３０  探索モジュール
１０３１  デバイス１
１０３２  デバイス２
１２２０、２０２０  検出デバイステーブル
１２３０、２０３０  前回検出デバイステーブル
【図１】
0003782600.tif 000002
【図２】
0003782600.tif 000003
【図３】
0003782600.tif 000004
【図４】
0003782600.tif 000005
【図５】
0003782600.tif 000006
【図６】
0003782600.tif 000007
【図７】
0003782600.tif 000008
【図８】
0003782600.tif 000009
【図９】
0003782600.tif 000010
【図１０】
0003782600.tif 000011
【図１１】
0003782600.tif 000012
【図１２】
0003782600.tif 000013
【図１３】
0003782600.tif 000014
【図１４】
0003782600.tif 000015
【図１５】
0003782600.tif 000016
【図１６】
0003782600.tif 000017
【図１７】
0003782600.tif 000018
【図１８】
0003782600.tif 000019
【図１９】
0003782600.tif 000020
【図２０】
0003782600.tif 000021
【図２１】
0003782600.tif 000022
【図２２】
0003782600.tif 000023
【図２３】
0003782600.tif 000024
【図２４】
0003782600.tif 000025
【図２５】
0003782600.tif 000026