(57)【要約】【課題】通信システムに使用する上位アプリケーション階層と下位デバイスドライバ階層との間に中間層としてデバイス独立アクセス(ＤＩＡ)階層を位置させて相互インタフェースを提供し、上位アプリケーション階層と下位デバイスドライバ階層を独立的に共通化して使用可能にする方法を提供する。【解決手段】本発明のデバイスドライバ制御共通化方法は、ＤＩＡ階層をアプリケーション階層とデバイスドライバ階層との間に位置させ、上位アプリケーション階層及びデバイスドライバ階層にＤＩＡ階層の標準化規則を適用させる第１過程と、ＤＩＡ階層の標準化規則を通じてアプリケーション階層及びデバイスドライバ階層はＤＩＡ階層がデバイスドライバ階層及び上位アプリケーション階層に相互にアクセスする第２過程と、からなることを特徴とする。　　【選択図】図４
2004070964.tif 000002
【特許請求の範囲】
【請求項１】
　デバイスドライバ制御共通化方法において、
　デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させ、前記アプリケーション階層及びデバイスドライバ階層に前記デバイス独立アクセス階層の標準化規則を適用させる第１過程と、 
　前記デバイス独立アクセス階層の標準化規則を通じて前記アプリケーション階層及びデバイスドライバ階層が前記デバイスドライバ階層及びアプリケーション階層に相互にアクセスする第２過程と、からなることを特徴とするデバイスドライバ制御共通化方法。
【請求項２】
　前記第２過程は、 
　前記アプリケーション階層が該当デバイスドライバに対する標準化共通フォーマットに基づく制御コマンドを前記デバイス独立アクセス階層に伝送し、及び、前記デバイス独立アクセス階層が、前記制御コマンドをローカルフォーマットに基づく他の制御コマンドに変換し、該変換した制御コマンドを前記デバイスドライバに伝達する段階と、 
　前記デバイスドライバがローカルフォーマットに基づく変換した制御コマンドの応答を前記デバイス独立アクセス階層に伝送し、及び、前記デバイス独立アクセス階層が、前記デバイスドライバからの応答を標準化共通フォーマットに基づく応答に変換し、該標準化共通フォーマットに基づく応答を前記アプリケーション階層に伝達する段階と、からなる請求項１記載のデバイスドライバ制御共通化方法。
【請求項３】
　デバイスドライバ制御共通化方法において、
　デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させる過程と、 
　ファンクションブロックのファンクションのうち、該当デバイスドライバで使用可能なファンクションをファンクションテーブルに定義する過程と、 
　デバイスが初期化される場合、前記デバイス独立アクセス階層が、前記デバイスに対する標準化データフォーマットに基づくデバイスハンドラ識別子を生成し、該生成したデバイスハンドラ識別子を上位のアプリケーション階層に伝達する過程と、 
　該上位アプリケーション階層が前記デバイスハンドラ識別子を用いて所定デバイスを呼び出し、前記デバイス独立アクセス階層が前記デバイスハンドラ識別子を用いてファンクションテーブルから該当デバイスドライバのファンクションを識別する過程と、からなることを特徴とするデバイスドライバ制御共通化方法。 
【請求項４】
　前記デバイスハンドラ識別子はDCB handlerId[x1.x2.x3]で表現され、x1,x2,x3が符号なし整数であり、x1がデバイス識別子を意味するレベル１の値で、x2が該当デバイスの論理又は物理グループ番号を意味するレベル２の値で、x3が該当デバイス又はグループのチャンネル番号を意味するチャンネルの値である請求項３記載のデバイスドライバ制御共通化方法。 
【請求項５】
　前記x1,x2,x3の値が“０”であれば、該当レベル又はチャンネルが存在しないことを意味し、デバイスが初期化される場合にx1の値が“１”から順次に増加する請求項４記載のデバイスドライバ制御共通化方法。 
【請求項６】
　デバイスドライバ制御共通化方法において、 
　デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させる過程と、 
　前記アプリケーション階層によってデバイス初期化が制御される場合、前記デバイス独立アクセス階層が、前記デバイスのレベル１初期化、レベル２初期化、チャンネル初期化を実行し、前記デバイスに対する標準化データフォーマットに基づくデバイスハンドラ識別子を生成する過程と、 
　前記デバイス独立アクセス階層が前記デバイスハンドラ識別子に対応する標準化規則を実行するためのエレメントを含むデバイス制御ブロックを動的に割り当てる過程と、
　前記デバイス独立アクセス階層が前記アプリケーション階層に前記デバイスハンドラ識別子を提供する過程と、 
　前記アプリケーション階層が前記デバイスハンドラ識別子を用いて前記デバイス独立アクセス階層を通じて所定デバイスを呼び出す過程と、からなることを特徴とするデバイスドライバ制御共通化方法。　
【請求項７】
　前記デバイス制御ブロックのエレメントは、標準化固有値を有しコマンドファンクションポインタがマッピングされているコマンド識別子を含むコマンド制御テーブルの位置を知らせるポインタ*pControlTable、該当ファンクションの存在有無及び位置を識別するためにデバイスドライバ制御テーブルの位置を知らせるポインタ*pDDCB、次のレベルを指示するポインタ*pAnchorを少なくとも含む請求項６記載のデバイスドライバ制御共通化方法。
【請求項８】
　前記デバイス制御ブロックのエレメントは、デバイス初期化時に与えられる初期化プロファイルの位置を知らせるポインタ*pHandler、デバイスの初期化時に使用されるファンクションのあるファンクションポインタ*fpIntiDevice、チャンネルをオープンするときに使用されるファンクションのあるファンクションポインタ*fpOpenChannel、チャンネルをクローズするときに使用されるファンクションのあるファンクションポインタ*fpCloseChannel、オープンチャンネルのデータを読み出すときに使用されるファンクションポインタ*fpRead、オープンチャンネルのデータを書き込むときに使用されるファンクションポインタ*fpWrite、デバイスのリセット時のファンクションポインタ*fpReset、標準化固有値を有しコマンドファンクションポインタがマッピングされているコマンド識別子を含むコマンド制御テーブルの位置を知らせるポインタ*pControlTable、該当ファンクションの存在有無及び位置を識別するためにデバイスドライバ制御テーブルの位置を知らせるポインタ*pDDCB、イベントテーブルの位置を知らせるポインタ*pEventTable、次のレベルを指示するポインタ*pAnchorで構成される請求項６記載のデバイスドライバ制御共通化方法。
【請求項９】
　前記デバイスのレベル１初期化は、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]として表現されるデバイスハンドラ識別子にレベル１初期化の順序に基づくデバイスにそれぞれ対応するデバイス識別子x1値を固有値として与えることによって行われる請求項６記載のデバイスドライバ制御共通化方法。
【請求項１０】
　前記デバイスのレベル２初期化は、前記レベル１初期化後に遂行され、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]で表現されるデバイスハンドラ識別子に、デバイスにそれぞれ対応する論理又は物理グループの個数を参照してアンカーを割り当て、この割り当てられたアンカーのぞれぞれに対するグループ値x2を固有値として与えることによって行われる請求項９記載のドライバ制御共通化方法。
【請求項１１】
　前記デバイスのレベル３初期化は、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]で表現されるデバイスハンドラ識別子に、チャンネルオープン順序に基づく前記デバイス及び前記デバイス内グループが所有するチャンネルのそれぞれに対してチャンネル値x3を与えることによって行われる請求項１０記載のデバイスドライバ制御共通化方法。
【請求項１２】
　アプリケーションが標準化共通フォーマットに基づくＬＯＳ状態情報をデバイス独立アクセス階層に要求する過程と、
　前記アプリケーションからの要求を第１デバイスローカルフォーマットに変換し、第１デバイスドライバがＬＯＳ状態情報を前記デバイス独立アクセス階層に提供することを要求する過程と、
　第１デバイスローカルフォーマットに基づくＬＯＳ状態情報に対する要求に応答する過程と、
　前記デバイス独立アクセス階層が標準化共通フォーマットに基づくＬＯＳ状態情報のために前記アプリケーションに応答する過程と、を含むことを特徴とするデバイスドライバ制御共通化方法。
【請求項１３】
　前記アプリケーションからの要求を変換する過程は、
　第１デバイスが第２デバイスに変換されて前記第１デバイスドライバが第２デバイスドライバに変更される場合、前記要求を第２デバイスローカルフォーマットに変換する過程と、
　第２デバイスドライバがＬＯＳ状態情報を前記第２デバイスローカルフォーマットに基づく前記デバイス独立アクセス階層に提供することを要求する過程と、をさらに含む請求項１２記載のデバイスドライバ制御共通化方法。
【請求項１４】
　デバイスドライバに提供される制御コマンドを変更せずに、前記アプリケーションを、第２アプリケーションに変更することを収容するデバイスドライバに提供する標準化共通フォーマットに基づく制御コマンドに変換する過程をさらに含む請求項１３記載のデバイスドライバ制御共通化方法。
【請求項１５】
　デバイス独立アクセス階層がデバイスドライバ制御ブロックからマテリアルを読み出し、所定ファンクションを用いて第１デバイスドライバ及び第２デバイスドライバにアクセスすることにより、前記アプリケーションと前記第１デバイスドライバ及び第２デバイスドライバ間に相互インタフェースを提供する過程をさらに含む請求項１４記載のデバイスドライバ制御共通化方法。
【請求項１６】
　前記デバイス独立アクセス階層が標準化データフォーマットに基づく各装置に対応するデバイスハンドラ識別子を用いる請求項１５記載のデバイスドライバ制御共通化方法。
【請求項１７】
　該当デバイスを初期化する間、前記デバイス独立アクセス階層から前記アプリケーションに前記デバイスハンドラ識別子を提供する過程と、
　前記アプリケーションが、デバイスハンドラ識別子を貯蔵し、該当デバイスハンドラ識別子を用いて該当デバイスを呼び出す過程と、をさらに含む請求項１６記載のデバイスドライバ制御共通化方法。
【請求項１８】
　前記デバイス独立アクセス階層が、前記ドライバハンドラ識別子に従って特定のデバイスドライバが呼び出されたかを決定し、その結果に基づいて特定のドライバハンドラを呼び出す過程をさらに含む請求項１７記載のデバイスドライバ制御共通化方法。
【請求項１９】
　デバイス独立アクセス階層が標準化共通フォーマットを遂行するために特定のポインタ及びファンクションポインタを使用する請求項１８記載のデバイスドライバ制御共通化方法。
【請求項２０】
　前記アプリケーションが使用するファンクションブロックのファンクションを呼び出す場合、前記デバイス独立アクセス階層が、ファンクションテーブルから該当ファンクションの存在を確認し、デバイスドライバがデバイスハンドラ識別子を用いて前記アプリケーションにアクセスすることを収容するデバイスドライバの初期化を知らせるためにデバイスハンドラ識別子を使用する請求項１９記載のデバイスドライバ制御共通化方法。
【請求項２１】
　前記第１デバイスドライバが前記第２デバイスドライバに変更される場合、デバイスのためのデバイスハンドラＩＤ値を変更しない請求項２０記載のデバイスドライバ制御共通化方法。
【請求項２２】
　前記第１デバイスドライバが前記第２デバイスドライバに変更される場合、前記デバイス独立アクセス階層の制御下でポインタのアドレスを変更する請求項２１記載のデバイスドライバ制御共通化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は通信システムに関し、特に、ハードウェアチップレベルのデバイスドライバ制御を共通化するための方法に関するものである。 
【背景技術】
【０００２】
　一般に、上位アプリケーション(higher-order application)及び下位デバイスドライバ(lower-order device driver)製品は対話形成チャンネル(communication channel)が構築されないで開発されている現状があり、最近では多くのデバイスドライバがベンダー(vendor)から提供されている。これは、上位アプリケーションと下位デバイスドライバ製品間におけるコミュニケーションの不足が深刻化していることを意味する。従来、ＡＰＩ(Application Program Interface)は上位アプリケーションと下位デバイスドライバ個々特有のそれぞれの標準に基づいて作成されている。したがって、上位アプリケーション及び下位デバイスドライバはそれぞれの標準に合わせて作ることができる。 
【０００３】
　デバイスドライバが上位アプリケーションの要求を満たすことができない場合、上位アプリケーションに影響を及ぼすコード(code)や構造(structure)を変更しなければならないといった問題がある。この場合、上位アプリケーションと下位デバイスドライバを検証する必要がある。
【０００４】
　同一アプリケーションに関して下位の同一機能を有するデバイスＡがデバイスＢに変更され、あるいは２つのアプリケーションが同一デバイスドライバを使用する場合に特定部分が変更されると、上位アプリケーション及びデバイスドライバに対する検証を行わなければならない。このような検証要求は製品開発のために多くの時間を費やすことになるので、その製品開発に悪影響を与え、競争力を低下させるという問題をもたらしている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
　したがって、本発明の目的は、通信システムで相互インタフェースを確立すべく上位アプリケーション階層と下位デバイスドライバ階層との間に中間階層としてデバイス独立アクセス(Device Independent Access：ＤＩＡ)階層を配置することにより上位アプリケーション階層と下位デバイスドライバ階層を独立的に及び共通化して使用可能な方法を提供することにある。
【０００６】
　また、本発明の他の目的は、通信システムにおける下位デバイスドライバ階層を独立的に及び共通化して使用可能な方法を提供することにある。
【０００７】
　さらに、本発明の他の目的は、通信システムにおける上位アプリケーション階層を独立的に及び共通化して使用可能な方法を提供することにある。 
【課題を解決するための手段】
【０００８】
　このような課題を解決するために本発明のデバイスドライバ制御共通化方法は、 デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させ、アプリケーション階層及びデバイスドライバ階層にデバイス独立アクセス階層の標準化規則を適用させる第１過程と、前記デバイス独立アクセス階層の標準化規則を通じてアプリケーション階層及びデバイスドライバ階層がデバイスドライバ階層及び上位アプリケーション階層に相互アクセスする第２過程とからなることを特徴とする。
【０００９】
　この方法において、第２過程は、アプリケーション階層が該当デバイスドライバに対する標準化共通フォーマットに基づく制御コマンドをデバイス独立アクセス階層に伝送し、及び、デバイス独立アクセス階層が、制御コマンドをローカルフォーマットに基づく他の制御コマンドに変換し、該変換した制御コマンドをデバイスドライバに伝達する段階と、デバイスドライバがローカルフォーマットに基づく変換した制御コマンドの応答をデバイス独立アクセス階層に伝送し、及び、デバイス独立アクセス階層が、デバイスドライバからの応答を標準化共通フォーマットに基づく応答に変換し、該標準化共通フォーマットに基づく応答をアプリケーション階層に伝達する段階と、からなるとよい。
【００１０】
　また、本発明では、デバイスドライバ制御共通化方法において、デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させる過程と、ファンクションブロックのファンクションのうち、該当デバイスドライバで使用可能なファンクションをファンクションテーブルに定義する過程と、デバイスが初期化される場合、デバイス独立アクセス階層が、デバイスに対する標準化データフォーマットに基づくデバイスハンドラ識別子を生成し、該生成したデバイスハンドラ識別子を上位のアプリケーション階層に伝達する過程と、該上位アプリケーション階層がデバイスハンドラ識別子を用いて所定デバイスを呼び出し、デバイス独立アクセス階層がデバイスハンドラ識別子を用いてファンクションテーブルから該当デバイスドライバのファンクションを識別する過程と、からなることを特徴とするデバイスドライバ制御共通化方法も提供する。
【００１１】
　この方法で、デバイスハンドラ識別子はDCB handlerId[x1.x2.x3]で表現され、x1,x2,x3が符号なし整数であり、x1がデバイス識別子を意味するレベル１の値で、x2が該当デバイスの論理又は物理グループ番号を意味するレベル２の値で、x3が該当デバイス又はグループのチャンネル番号を意味するチャンネルの値であると好ましい。
【００１２】
　x1,x2,x3の値が“０”であれば、該当レベル又はチャンネルが存在しないことを意味し、デバイスが初期化される場合にx1の値が“１”から順次に増加するとなおよい。
【００１３】
　さらに、本発明では、デバイスドライバ制御共通化方法において、デバイス独立アクセス階層をアプリケーション階層とデバイスドライバ階層との間に位置させる過程と、アプリケーション階層によってデバイス初期化が制御される場合、デバイス独立アクセス階層が、デバイスのレベル１初期化、レベル２初期化、チャンネル初期化を実行し、デバイスに対する標準化データフォーマットに基づくデバイスハンドラ識別子を生成する過程と、デバイス独立アクセス階層がデバイスハンドラ識別子に対応する標準化規則を実行するためのエレメントを含むデバイス制御ブロックを動的に割り当てる過程と、デバイス独立アクセス階層がアプリケーション階層にデバイスハンドラ識別子を提供する過程と、アプリケーション階層がデバイスハンドラ識別子を用いてデバイス独立アクセス階層を通じて所定デバイスを呼び出す過程と、からなることを特徴とするデバイスドライバ制御共通化方法も提供する。
【００１４】
　この方法でデバイス制御ブロックのエレメントは、標準化固有値を有しコマンドファンクションポインタがマッピングされているコマンド識別子を含むコマンド制御テーブルの位置を知らせるポインタ*pControlTable、該当ファンクションの存在有無及び位置を識別するためにデバイスドライバ制御テーブルの位置を知らせるポインタ*pDDCB、次のレベルを指示するポインタ*pAnchorを少なくとも含むとよい。
【００１５】
　デバイス制御ブロックのエレメントは、デバイス初期化時に与えられる初期化プロファイルの位置を知らせるポインタ*pHandler、デバイスの初期化時に使用されるファンクションのあるファンクションポインタ*fpIntiDevice、チャンネルをオープンするときに使用されるファンクションのあるファンクションポインタ*fpOpenChannel、チャンネルをクローズするときに使用されるファンクションのあるファンクションポインタ*fpCloseChannel、オープンチャンネルのデータを読み出すときに使用されるファンクションポインタ*fpRead、オープンチャンネルのデータを書き込むときに使用されるファンクションポインタ*fpWrite、デバイスのリセット時のファンクションポインタ*fpReset、標準化固有値を有しコマンドファンクションポインタがマッピングされているコマンド識別子を含むコマンド制御テーブルの位置を知らせるポインタ*pControlTable、該当ファンクションの存在有無及び位置を識別するためにデバイスドライバ制御テーブルの位置を知らせるポインタ*pDDCB、イベントテーブルの位置を知らせるポインタ*pEventTable、次のレベルを指示するポインタ*pAnchorで構成されるとなおよい。
【００１６】
　デバイスのレベル１初期化は、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]として表現されるデバイスハンドラ識別子にレベル１初期化の順序に基づくデバイスにそれぞれ対応するデバイス識別子x1値を固有値として与えることによって行われると好ましい。
【００１７】
　デバイスのレベル２初期化は、レベル１初期化後に遂行され、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]で表現されるデバイスハンドラ識別子に、デバイスにそれぞれ対応する論理又は物理グループの個数を参照してアンカーを割り当て、この割り当てられたアンカーのぞれぞれに対するグループ値x2を固有値として与えることによって行われるとよい。
【００１８】
　デバイスのレベル３初期化は、x1,x2,x3が符号なし整数でありDCB handlerId[x1.x2.x3]で表現されるデバイスハンドラ識別子に、チャンネルオープン順序に基づくデバイス及びデバイス内グループが所有するチャンネルのそれぞれに対してチャンネル値x3を与えることによって行われるとなおよい。
【００１９】
　さらにまた、本発明では、アプリケーションが標準化共通フォーマットに基づくＬＯＳ状態情報をデバイス独立アクセス階層に要求する過程と、アプリケーションからの要求を第１デバイスローカルフォーマットに変換し、第１デバイスドライバがＬＯＳ状態情報を前記デバイス独立アクセス階層に提供することを要求する過程と、第１デバイスローカルフォーマットに基づくＬＯＳ状態情報に対する要求に応答する過程と、デバイス独立アクセス階層が標準化共通フォーマットに基づくＬＯＳ状態情報のためにアプリケーションに応答する過程と、を含むことを特徴とするデバイスドライバ制御共通化方法をも提供する。
【００２０】
　この方法でアプリケーションからの要求を変換する過程は、第１デバイスが第２デバイスに変換されて第１デバイスドライバが第２デバイスドライバに変更される場合、要求を第２デバイスローカルフォーマットに変換する過程と、第２デバイスドライバがＬＯＳ状態情報を第２デバイスローカルフォーマットに基づくデバイス独立アクセス階層に提供することを要求する過程と、をさらに含むとよい。
【００２１】
　デバイスドライバに提供される制御コマンドを変更せずに、アプリケーションを、第２アプリケーションに変更することを収容するデバイスドライバに提供する標準化共通フォーマットに基づく制御コマンドに変換する過程をさらに含むとなお好ましい。
【００２２】
　デバイス独立アクセス階層がデバイスドライバ制御ブロックからマテリアルを読み出し、所定ファンクションを用いて第１デバイスドライバ及び第２デバイスドライバにアクセスすることにより、アプリケーションと第１デバイスドライバ及び第２デバイスドライバ間に相互インタフェースを提供する過程をさらに含むとなおよい。
【００２３】
　デバイス独立アクセス階層が標準化データフォーマットに基づく各装置に対応するデバイスハンドラ識別子を用いるようにするとよい。さらにまた、該当デバイスを初期化する間、デバイス独立アクセス階層からアプリケーションにデバイスハンドラ識別子を提供する過程と、アプリケーションが、デバイスハンドラ識別子を貯蔵し、該当デバイスハンドラ識別子を用いて該当デバイスを呼び出す過程と、をさらに含んでもよい。
【００２４】
　デバイス独立アクセス階層が、ドライバハンドラ識別子に従って特定のデバイスドライバが呼び出されたかを決定し、その結果に基づいて特定のドライバハンドラを呼び出す過程をさらに含むようにしてもよい。
【００２５】
　この方法では、デバイス独立アクセス階層が標準化共通フォーマットを遂行するために特定のポインタ及びファンクションポインタを使用するとよい。
【００２６】
　アプリケーションが使用するファンクションブロックのファンクションを呼び出す場合、デバイス独立アクセス階層が、ファンクションテーブルから該当ファンクションの存在を確認し、デバイスドライバがデバイスハンドラ識別子を用いてアプリケーションにアクセスすることを収容するデバイスドライバの初期化を知らせるためにデバイスハンドラ識別子を使用するようにしても好ましい。
【００２７】
　第１デバイスドライバが第２デバイスドライバに変更される場合、デバイスのためのデバイスハンドラＩＤ値を変更しないようにするとなおよい。
【００２８】
　第１デバイスドライバが第２デバイスドライバに変更される場合、デバイス独立アクセス階層の制御下でポインタのアドレスを変更するとなお好ましい。
【発明の効果】
【００２９】
　本発明によれば、通信システムで上位アプリケーション階層とデバイスドライバ階層との間にＤＩＡ階層を配置するようにしたので、上位アプリケーション階層及び下位デバイスドライバ階層は相互に直接アクセスすることができるようになる。すなわち、ＤＩＡの標準化規則(rule)を通じて、上位アプリケーション階層は下位デバイスドライバ階層にアクセスすることができ、下位デバイスドライバ階層は上位アプリケーション階層にアクセスすることができるようになる。また、ＤＩＡの標準化規則を上位アプリケーション及び下位デバイスドライバに適用すればよいだけなので、その製品開発に要求される時間を短縮するだけでなく開発コストの節減、開発の信頼性を一層向上させる効果がある。
【発明を実施するための最良の形態】
【００３０】
　以下、本発明の望ましい一実施形態を添付の図面を参照して詳細に説明する。図面の説明において、同一の構成要素に対しては可能な限り同一の参照符号及び参照番号を使用して説明する。また、本発明の要旨を不明にする恐れのある公知機能及び構成についてはその詳細な説明を省略する。
【００３１】
　図１は共通のアプリケーションに関して下位の同一機能を有するデバイスＡがデバイスＢに変更される場合を示しており、図２は２つのアプリケーションが同一デバイスドライバを使用する場合を示している。 
【００３２】
　図１に示したように、上位アプリケーション２として共通アプリケーション２に関するデバイスＡがデバイスＢに変更された場合、下位デバイスＡドライバ４も下位デバイスＢドライバ６に変更される。すると、デバイスドライバ使用者は自分のデバイスドライバを趣向通りに構成できる。その場合、ＡＰＩはデバイスＡとデバイスＢに対して異なる特性を有するようになる。従って、上位アプリケーション２も変更されたデバイス及びデバイスドライバに合わせて変更されなければならない。このようにデバイスドライバが変更された場合、変更された下位デバイスドライバに関連した全てのＡＰＩが新たに検証されなければならない。言い換えると、変更された下位デバイスドライバに基づいてＡＰＩが正常動作するかどうかを検証する必要がある。さらに、変更された下位デバイスドライバに関連する全ての上位アプリケーションが他に影響を及ぼすかどうかもチェックされるべきである。
【００３３】
　次に、図２に示したように、上位アプリケーションＡ１０、Ｂ１２が共通のデバイスドライバ１４を使用する。デバイスドライバ１４は同一の機能をするデバイスドライバであるが、上位アプリケーションＡ１０、Ｂ１２はデバイスドライバから得たいフォーマットが相互に異なる。例えば、アプリケーションＡ１０ではデバイスドライバ１４から提供される２つのフォーマットＡ-１、Ａ-２を必要とし、アプリケーションＢ１２ではデバイスドライバ１４から提供される３つのフォーマットＢ-１、Ｂ-２、Ｂ-３を必要とする場合などである。これは、アプリケーション相互間におけるフォーマットの取り決め(agreement)が一致していないために発生する。従って、デバイスドライバ１４は上位階層アプリケーションＡ１０、Ｂ１２の変更要求のたびに新たにフォーマットを変更しなければならず、また、ＡＰＩも変更あるいは追加しなければならない。上位アプリケーションの要求に対して下位デバイスドライバが希望のフォーマットを支援できない状況になると、上位アプリケーション全体に影響を及ぼすコードや構造を修正しなければならないといった問題を引き起こす。この場合、上位アプリケーションはもちろん既存の検証が終わったデバイスドライバもさらに検証が必要となる。
【００３４】
　図３は、本発明の一実施形態によるデバイスドライバ制御共通化のための概念構成図である。図３に示したように、本発明の一実施形態では通信システムでＤＩＡ階層２２を上位アプリケーション２０とデバイスドライバ２４、２６との間に位置させる。上位アプリケーション２０はＤＩＡ階層２２の標準化規則を通じてデバイスドライバ２４、２６にアクセスする。同様にデバイスドライバ２４、２６はＤＩＡ階層２２の標準化規則を通じて上位アプリケーション２０にアクセスする。図４を参照してより詳細に説明すれば、次の通りである。 
【００３５】
　図４は、本発明の一実施形態によるデバイスドライバ制御共通化のためのアクセス概念図である。図４に示したように、上位アプリケーション２０が標準化共通フォーマットコマンドに基づく、例えば、ＬＯＳ(loss of state)状態情報をＤＩＡ階層２２に要求すると、ＤＩＡ階層２２はこの要求をデバイスＡローカルフォーマットに変換してデバイスＡドライバ２４にＬＯＳ状態情報を要求する。これに応じて、デバイスＡドライバ２４はデバイスＡローカルフォーマットのＬＯＳ状態情報をＤＩＡ階層に提供する。ＤＩＡ階層２２はデバイスＡローカルフォーマットのＬＯＳ状態情報を標準化共通フォーマットに変換して上位アプリケーション２０に提供する。一方、デバイスＡがデバイスＢに変更されると、デバイスＡドライバ２４もデバイスＢドライバ２６に変更される。上位アプリケーション２０はデバイス変更にかかわらず標準化共通フォーマットコマンドに基づく、例えば、ＬＯＳ状態情報をＤＩＡ階層２２に要求する。ＤＩＡ階層２２はこの要求をデバイスＢローカルフォーマットに変換してデバイスＢドライバ２６にＬＯＳ状態情報を要求する。これに応じて、デバイスＢドライバ２６はデバイスＢローカルフォーマットのＬＯＳ状態情報をＤＩＡ階層に提供する。ＤＩＡ階層２２はデバイスＢローカルフォーマットのＬＯＳ状態情報を標準化共通フォーマットに変換して上位アプリケーション２０に提供する。このように、上位アプリケーション２０と下位デバイスドライバ２４、２６との間に位置するＤＩＡ階層２２が標準化規則に基づいて相互インタフェースを提供する。これによりアプリケーション変更やデバイス変更による上位アプリケーション又はデバイスドライバの検証が不要になる。
【００３６】
　上位アプリケーション２０と下位デバイスドライバ２４、２６との間に標準化規則に基づく相互インタフェースを提供するために、本発明の一実施形態によるＤＩＡ階層２２はデバイスドライバ制御ブロック(Device Driver Control Block:ＤＤＣＢ)からマテリアル(material)を読み出し標準化規則により定義された機能を用いて下位デバイスドライバにアクセスする。ＤＤＣＢはデバイスドライバをそれぞれ共通化するために定義され、該当機能の存在有無及び位置に関する情報を提供するブロックである。 
【００３７】
　本発明の一実施形態では、ＩＴＵ/ＲＦＣ(International Telecommunications Union/Request ForComments)などの国際機構で既定義され及び標準化されたファンクションブロック(function block)の全てのファンクションのうち該当デバイスドライバに使用可能なファンクションのみがファンクションテーブルに定義される。また、本発明の一実施形態では、ＩＴＵ(International Telecommunications Union)、ＩＥＴＦ(Internet Engineering Task Force)、ＥＴＳＩ(European Telecommunications Standardization Institute)、ＡＴＭフォーラム(Asynchronous Transfer Mode forum)、ＡＤＳＬフォーラム(Asymmetrical Digital Subscriber Line forum)などの国際標準化機構により制定され標準化文書に定義された全てのファンクションブロックを使用しうる。さらに、本発明の一実施形態では、国際標準化機構により定義された全てのファンクションブロックのうち該当デバイスドライバに使用可能なファンクションのみがファンクションテーブルに再定義される。本発明の一実施形態で使用されるファンクションテーブルは標準化されたコマンド制御テーブル(command control table)としてメモリ領域に貯蔵される。　 
【００３８】
　本発明の一実施形態では、ＤＩＡ階層２２は上位アプリケーションの開発者がデバイスを容易に制御する標準化データフォーマットに基づくデバイスハンドラ識別子（identifier：ＩＤ）を使用する。デバイスハンドラＩＤは本発明の一実施形態に従う標準化データフォーマットを持つデバイスのそれぞれに対する固有識別子である。ＤＩＡ階層２２はデバイスハンドラＩＤを該当デバイスの初期化中に上位アプリケーション２０に提供する。上位アプリケーション２０は該当デバイスのデバイスハンドラＩＤを貯蔵しておき、該当デバイスの呼び出しが必要な場合にデバイスハンドラＩＤを用いて該当デバイスを呼び出す。これに応じて、ＤＩＡ階層２２はデバイスハンドラＩＤに基づきどのデバイスドライバを呼び出すかを決定し、この決定に従ってデバイスドライバを呼び出す。　　
【００３９】
　ＤＩＡ階層２２によって上位アプリケーション２０に提供される標準化固有識別子であるデバイスハンドラＩＤ及び標準化コマンド制御テーブルについて、図５〜図８を参照してより詳細に説明する。また、本発明の一実施形態で言及している該当デバイスイベントテーブル(device event table)、該当デバイスモジュールのプロファイル(profile)についても図５〜図８を参照してより詳細に説明する。 
【００４０】
　図５は、アプリケーション使用者がデバイス初期化のためＤＩＡ階層２２のＡＰＩDia_InitDeviceを呼び出した後におけるＤＣＢ(Device Control Block)の接続構造を示している。図６はレベル１初期化段階での最終ＤＣＢを示している。図７は該当するレベル２の４つのポートを備えるＨＤＬＣ(High-level Data Link Control)デバイスが初期化された場合のＤＣＢ接続構造を示している。図８はチャンネルが初期化された場合のＤＣＢ接続構造を示している。
【００４１】
　まず、デバイスハンドラＩＤを詳細に説明すれば、下記の通りである。 
【００４２】
　ＤＩＡ階層２２により生成される該当デバイスのデバイスハンドラＩＤは、例えば、図５に示したようにDCB handlerId[1.0.0]３０のような一例で表現される。このデバイスハンドラＩＤはレベル１、レベル２、チャンネルに関する３つの符号なし整数(unsigned integer)の構造で構成され、固有値をシステム内に有する。デバイスハンドラＩＤは符号なし整数x1.x2.x3で構成されている。デバイスハンドラＩＤはDCB handlerId[x1.x2.x3]で表現され、x1はデバイスＩＤを意味するレベル１の値で、x2は該当デバイスが持っている論理あるいは物理グループ番号を意味するレベル２の値で、x3は該当デバイスあるいはグループが持っているチャンネル番号を意味するチャンネルの値である。x1,x2,x3の値が“０”であれば、該当レベル又はチャンネルが存在しないことを意味する。デバイスが初期化されると、図６〜図８に示す一例のように、整数値ｘが“１”から順次に増加する。ここでレベル１の値、すなわちx1＝“０”のハンドラは存在しない。これは、レベル１の値が初期化されていないことを意味する。 
【００４３】
　図５に示したようにレベル１の値が初期化されると、本発明の一実施形態による標準化規則に基づきデバイスにより呼び出されるエレメントを含むＤＣＢ３２が動的に割り当てられる。このエレメントはＤＩＡ階層２２で標準化規則を実行するための多様なポインタ(pointer)及びファンクションポインタで構成されている。レベル１の値が初期化された場合、ＤＣＢ３２のエレメントは、*pHandler, *fpIntiDevice, *fpOpenChannel, *fpCloseChannel, *fpRead, *fpWrite, *fpReset, *pControlTable, *pDDCB, *pEventTable, *pAnchorを含む。*pHandlerはデバイス初期化時に与えられる初期化プロファイルの位置を知らせるポインタで、*fpIntiDeviceはデバイス初期化時に使用されるファンクションのあるファンクションポインタである。*fpOpenChannelはチャンネルをオープン(open)するときに使用されるファンクションのあるファンクションポインタで、*fpCloseChannelはチャンネルをクローズ(close)するときに使用されるファンクションのあるファンクションポインタである。*fpReadはオープンチャンネルのデータを読み出すときに使用されるファンクションポインタで、*fpWriteはオープンチャンネルのデータを書き込むときに使用されるファンクションポインタである。*fpResetはデバイスリセット時に使用されるファンクションポインタである。*pControlTableはコマンド制御テーブル３４の位置を知らせるポインタである。*pDDCBはデバイスドライバ制御テーブル(device driver control table)３６の位置を知らせるポインタである。*pEventTableはイベントテーブル３８の位置を知らせるポインタである。*pAnchorは次のレベルを指示するポインタである。 
【００４４】
　全てのデバイスが初期化された後、ＤＩＡ階層２２は生成したデバイスハンドラＩＤを上位アプリケーション２０に提供する。上位アプリケーション２０は該当デバイスを初期化し、与えられたデバイスハンドラＩＤのみを貯蔵する。デバイスハンドラが呼び出されると、ＤＩＡ階層２２はこれを受信してどのデバイスのドライバを呼び出すかどうかを決定し、この決定に従ってデバイスドライバを呼び出すようになる。
【００４５】
　次に、ファンクションテーブルの標準化コマンド制御テーブルについて説明する。
【００４６】
　標準化コマンド制御テーブルは該当機能群別にＩＴＵ、ＩＥＴＦ、ＥＴＳＩ、ＡＴＭフォーラム、ＡＤＳＬフォーラムなどの国際標準化機構により制定された標準化文書の該当ファンクションブロックに関連するエレメント及び該当ブロックを使用する。該当分野に追加要求があるときはいつでも標準化コマンド制御テーブルに追加が可能である。本発明の発明者は一例として超高速通信に関連する情報についてテーブルを作成した。この作成したテーブルは該当メモリ領域に貯蔵される。さらに、必要であれば、他の機能を任意に追加して直ちに反映できることに留意する。　 
【００４７】
　図５に示したように、標準化コマンド制御テーブル３４は該当ＤＣＢの*pControlTableポインタにより指示されるメモリ領域に位置している。標準化コマンド制御テーブル３４のコマンドＩＤ(commandID)は標準化されて固有値として定義されている。コマンドＩＤには該当コマンドファンクションのファンクションポインタ*fpCommandFnがマッピングされている。 
【００４８】
　下記の表１は本発明の一実施形態による標準化コマンド制御テーブル３４の構造体(structure)である。
【００４９】
【表１】
2004070964.tif 000003
【００５０】
　表１に示す‘DIA_COMMAND_ID_SDH_E'のような標準化コマンド‘typedef enum(enumulate)'が、‘DIA_COMMAND_ID_PDH_E'、‘DIA_COMMAND_ID_ATM_E'など各分野別に存在する。様々なコマンドファンクションを標準化コマンド制御テーブル３４に任意に追加できる。この標準化コマンド制御テーブル(Control Table)３４を通じて上位アプリケーション使用者はいつでも該当デバイスドライバを呼び出し可能である。デバイスドライバが変更されても該当標準化コマンドは標準化コマンド制御テーブル３４に同一に残る。実際の該当デバイスドライバが該当コマンドを実行する場合、ファンクションポインタのみが変更される。ファンクションポインタはデバイス初期化時にデバイスドライバによりＤＩＡ階層２２に提供される。コマンドはアプリケーション使用者によりＡＰＩ‘Dia_Control'を通じて呼び出される。実際に、上位アプリケーション使用者がＡＰＩ‘Dia_Control'を通じて特定制御コマンドを呼び出す場合、ＤＩＡ階層２２下にあるデバイスドライバのみが変更されるようになり、上位アプリケーション２０の使用者は同一コマンドを同一フォームで呼び出す。
【００５１】
　次に、図５を参照して本発明の一実施形態によるデバイスドライバ制御テーブル３６について説明する。図５において、デバイスドライバ制御テーブル３６は*pDDCBポインタにより指示されるテーブルであり、InitLevel1、InitLevel2、OpenChannel、CloseChannel、制御テーブル、イベントテーブルなどの位置を指示するファンクションポインタ*fp、すなわち、*fpInitLevel1、*fpInitLevel2、*fpOpenChannel、*fpCloseChannel、*fpControlTable(図示せず)、*fpEventTable(図示せず)などを含む。また、デバイスに固有な初期化ファンクション数、ポート数及びチャンネル数を示す情報(図示せず)を含んでいる。デバイスドライバ制御テーブル３６は、デバイスドライバそれぞれを共通化するために定義され、該当ファンクションの存在有無及び位置に関する情報を知らせるためのＤＤＣＢに対応させられる。デバイスドライバ制御テーブル３６は、*fpInitLevel1、*fpInitLevel2、*fpOpenChannel、*fpCloseChannel、*fpControlTable(図示せず)、*fpEventTable(図示せず)などを含む。また、デバイスに固有な初期化ファンクション数、ポート数、及びチャンネル数を示す情報(図示せず)を含んでいる。デバイスが初期化される場合、ＤＤＣＢとなるデバイスドライバ制御 テーブル３６は*pDDCBにより検出される。*fpInitLevel1、*fpInitLevel2、*fpOpenChannel、*fpCloseChannel、*fpControlTable(図示せず)、*fpEventTable(図示せず)などのマテリアルは割り当てられたＤＣＢ３２に情報として書き込まれる。
【００５２】
　次に、本発明の一実施形態によるイベントテーブルについて説明する。
【００５３】
　図５に示したイベントテーブル３８は該当ＤＣＢの*pEventTableポインタにより指示される位置にある構造体として必要時にのみ生成される。イベントテーブルを使用しないときにはヌル(Null)として指示される。イベントテーブル３８はイベントＩＤ“EventId”とイベントリスト構造体ポインタ“*pEventList”を含んでいる。それぞれのイベントリストは図９に示したように、リンクリスト(linked list)構造となっている。これに応じて、一つのイベントを数個所に通知(notification)することができ、及び、コールバックファンクション(call-back function)“Call-back Fn”を呼び出すことができる。初期イベントテーブル３８には“EventId”のみが存在し、“*pEventList”は最初に“Nullとして指示される。上位アプリケーション２０の使用者が該当イベントを使用する場合、その使用者はＡＰＩ“Dia_Register”を用いて、“*pEventList”にイベントリスト構造体のポインタを接続することにより、そのイベントを登録使用することができる。 
【００５４】
　下記の表２は、本発明の一実施形態によるイベントテーブル３８の構造体(structure)の一例を示す構成図である。 
【００５５】
【表２】
2004070964.tif 000004
【００５６】
　次に、本発明の一実施形態によるデバイスモジュールのプロファイルについて説明する。
【００５７】
　図５に示した該当ＤＣＢ３２のファンクションポインタ*fpInitDeviceが実行される場合に必要な入力引数(input argument)は構造体ポインタ(structure pointer)のフォーム(form)を備えることが可能である。特別な場合、該当デバイスの構造体が定義されるが、通常の場合にはレベル１の値の初期化時における基本アドレス(base address)、レベル２に対応するグループＩＤ、チャンネル初期化時におけるチャンネルＩＤを含む共通構造体が使用される。
【００５８】
　下記表３は本発明の一実施形態によるデバイスモジュールのプロファイル共通構造体の一例を示す構成図である。 
【００５９】
【表３】
2004070964.tif 000005
【００６０】
　以下、本発明の一実施形態による動作を詳細に説明する。
【００６１】
　上位アプリケーション２０が使用されるファンクションブロックのファンクションを呼び出す場合、ＤＩＡ階層２２は該当ファンクションテーブルの存在有無及び位置を指示する情報を備えるＤＤＣＢ(Device Driver Control Block)を用いて該当デバイスドライバのファンクションテーブルから該当ファンクションの存在有無を識別する。該当ファンクションテーブルが存在すれば該当ファンクションを呼び出す。ファンクションを呼び出すために、ＤＩＡ階層２２は該当デバイスの初期化時にデバイスハンドラＩＤを上位アプリケーション２０に知らせ、上位アプリケーションはそのデバイスハンドラＩＤを使用して下位デバイスドライバにアクセスするようになる。 
【００６２】
　まず、本発明の一実施形態によるデバイス初期化時の動作を説明すれば、下記の通りである。
【００６３】
　上位アプリケーション２０の使用者がデバイス初期化のためにＡＰＩDia_InitDeviceを呼び出すと、ＤＩＡ階層２２は該当ファンクションテーブルの位置を指示する情報を備えるＤＤＣＢ(Device Driver Control Block)を通じて上位アプリケーション２０により使用されるファンクションブロック(例えば、制御テーブル、イベントテーブルなど)のそれぞれに対するポインタを含んでいるＤＣＢ３２を動的に割り当てる。
【００６４】
　ＡＰＩDia_InitDeviceが呼び出された後、ＤＣＢの接続を図５〜図８を参照して詳細に説明する。また、この基本的な流れに応じた、データベース構造の追加も述べる。
【００６５】
　 （１）レベル１初期化
【００６６】
　初期化されるデバイスはレベル１又はレベル２、チャンネルを有する。レベル１が初期化される場合、該当デバイスの最上位ブロックになるＤＣＢ３２が動的に割り当てられ、その後、該当デバイスのレベル２がレベル１に関するＤＣＢ３２のアンカー(anchor)(アンカーポインタ*pAnchorにより指示される)を通じて参照されるようにする。各カードに使用されるデバイスの個数は既知の値なので、グロバール変数(global variable)として図５に示したデバイスＩＤ(device Id)及びＤＣＢ３２を示すポインタ*pDCBを有する最上位データベース４０が定義されたと仮定する。
【００６７】
　レベル１の初期化時のフォームは図５に示した通りである。そして、図６にレベル１初期化段階での最終ＤＣＢを示す。図５のようなＤＣＢ３２を生成するたびに、ＤＩＡ階層２２は、図６に示すように、該当ＤＣＢごとに固有なデバイスハンドラＩＤ値DCB　HandlerId[x1.x2.x3]を上位アプリケーション２０にリターンする。すなわち、ＤＩＡ階層２２ではデバイスのレベル１の初期化順序にしたがってx1値を“１”から順次に増加させつつデバイスハンドラＩＤ値DCB HandlerId[x1.x2.x3]を与える。図６の一例を参照すれば、ＨＤＬＣ(High level Data Link Control)のデバイスハンドラＩＤ値はＤＣＢ HandlerId[1.0.0]にリターンされ、ＬＡＮ(Local Area Network)のデバイスハンドラＩＤ値はＤＣＢHandlerId[2.0.0]にリターンされ、ＳＥＲＩＡＬのデバイスハンドラＩＤ値はＤＣＢ HandlerId[3.0.0]にリターンされ、ＵＴＯＰＩＡ(Universal Test & Operations Physical layer Interface for ATM)のデバイスハンドラＩＤ値はＤＣＢ HandlerId[4.0.0]にリターンされる。
【００６８】
　上位アプリケーション２０はリターンされるデバイスハンドラＩＤ値ＤＣＢ HandlerId[x1.x2.x3]を管理しなければならない。上位アプリケーション２０の使用者はリターンされるデバイスハンドラＩＤ値DCB HandlerId[x1.x2.x3]を用いて該当ファンクションのデバイスファンクション呼(device function call)が可能になる。また、デバイス初期化順序にしたがってデバイスに該当するデバイスハンドラＩＤが与えられるので、上位アプリケーション２０の使用者はリターンされるデバイスハンドラＩＤがどのデバイスに該当するかどうか識別すべきである。例えば、３つのＨＤＬＣ１、ＨＤＬＣ２、ＨＤＬＣ３のデバイスがある場合、ＨＤＬＣ３が先に初期化されると、ＨＤＬＣ３デバイスのx1値が“１”となる。
【００６９】
　(２) レベル２初期化
【００７０】
　ＤＩＡ階層２２はレベル１初期化後にレベル２の初期化を実行する。このとき、使用される情報はＤＤＣＢ(デバイスに固有な初期化ファンクション(initialization function)、及び、ポート数やチャンネル数に関する情報を有する)に関するレベル２での許容個数(例えば、ポート数)である。例えば、該当デバイスのポート数を参照してレベル２の初期化を実行できるようにアンカーが割り当てられる。そして、ＤＩＡ階層２２はレベル２に必要なＤＣＢブロックを参照可能なようにレベル１のアンカーに生成されたＤＣＢ３２のアドレスを指定する。
【００７１】
　図７は、レベル２に該当する４つのポートを備えるＨＤＬＣデバイスが初期化されたときの図である。同図を参照すれば、４つのポートにそれぞれ対応して割り当てられるアンカーAnchor1、Anchor2、Anchor3、Anchor4はデバイスハンドラＩＤ値がそれぞれDCB HandlerId[1.1.0]、DCB HandlerId[1.2.0]、DCB HandlerId[1.3.0]、DCB HandlerId[1.4.0]にリターンされる。例えば、４つのポートがポート０、ポート１、ポート２、ポート３からなっていれば、ポート０がアンカーAnchor1に、ポート１がアンカーAnchor2に、ポート２がアンカーAnchor3に、ポート３がアンカーAnchor4に割り当てられ、デバイスハンドラＩＤ値がそれぞれDCB HandlerId[1.1.0]、DCB　HandlerId[1.2.0]、DCB HandlerId[1.3.0]、DCB　HandlerId[1.4.0]として与えられる。
【００７２】
　(３) チャンネル初期化
【００７３】
　チャンネルに関するＤＣＢは必要なとき時にのみ生成されるようにする。レベル２にかかわりなくチャンネルのみある場合は図８に示すようにアンカーAnchor0にＤＣＢを接続する。
【００７４】
　図８に示したチャンネル初期化のＤＣＢ接続構造は図７と類似にチャンネル数と同一のアンカーが割り当てられ、このアンカーがＤＣＢに接続される。このとき、デバイスハンドラＩＤ値がリターンされる。アンカーAnchor1に対応するポートにチャンネル１、チャンネル２、チャンネル３、チャンネル４の４つのチャンネルが結びつけられる。そのうちチャンネル３をまずオープンすれば、初期化順序にしたがってこのオープンされたチャンネル３に対しDCB HandlerId[2.1.1]値がリターンされる。上位アプリケーション２０の使用者は上記（１）で言及したようにデバイスの初期化順序にしたがってデバイスに該当するデバイスハンドラＩＤが与えられるので、該当チャンネルとそれに対応するデバイスハンドラＩＤ値のマッピングを管理すべきである。
【００７５】
　デバイスを初期化した後、上位アプリケーション２０は標準化された識別子であるデバイスハンドラＩＤ値DCB HandlerId[x1.x2.x3]を用いてファンクションブロックのファンクションを呼び出す。それに応じて、ＤＩＡ階層２２では該当ファンクションテーブルの位置を指示するＤＤＣＢを用いて該当デバイスドライバのファンクションテーブルから該当ファンクションの存在有無を識別する。該当ファンクションが存在すれば、このファンクションが呼び出される。
【００７６】
　図１０は、本発明の一実施形態によるデバイスドライバが変更(置換)された場合を説明するための図である。 
【００７７】
　同図を参照すれば、本発明の一実施形態によるＤＩＡ階層２２によりデバイスドライバＡがデバイスドライバＢに変更されても、デバイスＨＤＬＣに対するデバイスハンドラＩＤ値DCB handlerId[1.0.0]は決して変更されない。変更されるのは、デバイス初期化時にＤＩＡ階層２２の制御下で下位デバイスドライバ及びＤＣＢ３２のポインタ(アドレス)だけが新たなデバイスを指示する場合である。これに応じて、上位アプリケーション２０は下位デバイスドライバＡが下位デバイスドライバＢに変更されても決して変更されることなく同一機能を実行することができる。 
【００７８】
　図１１〜図１４は上位アプリケーション又は下位デバイスが変更される場合における従来技術と本発明の一実施形態によ動作の比較を示した図である。
【００７９】
　図１１及び図１３は、上位アプリケーション(プログラム)が変更された場合を一例として示したものである。図１１は従来技術による上位アプリケーション(プログラム)が変更された場合を、図１３は本発明の一実施形態による上位アプリケーション(プログラム)が変更された場合をそれぞれ示す。
【００８０】
　まず、図１１を参照すれば、従来技術において上位アプリケーションＡが上位アプリケーションＢに変更されると、上位アプリケーションのみが変更されるだけではなく、これに該当する下位デバイスドライバも同様に変更されなければならない。その理由は、上位アプリケーションＡ、Ｂに関する構造及び使用するＡＰＩが異なるので、下位デバイスドライバは要求されるＡＰＩのフォームを変更して提供しなければならないからである。したがって、追加、削除、修正の動作を従来の下位デバイスドライバに適用しなければならず、それによりこの変更部分に対して検証作業を新たに実行することになる。もちろん、これを利用する上位アプリケーションＢに対する検証作業も共に行われるべきである。
【００８１】
　図１３に示すように本発明の一実施形態では、図１１に基づいて説明した従来技術の欠点を補完するために、上位アプリケーション階層と下位デバイスドライバ階層との間にＤＩＡ階層２２を位置させる。上位アプリケーション階層と下位デバイスドライバ階層との間にＤＩＡ階層２２を位置させると、上位アプリケーションＡがＢに変更されても、上位アプリケーションＡ、ＢはＤＩＡ標準化規則に従う同一の制御コマンドControl A、Control B、Control Cを使用することができる。上位アプリケーションはデバイスドライバを直接制御するのではなく、デバイスに含まれ、ＤＩＡ階層２２が使用する制御コマンドを通じて間接的にデバイスドライバを制御するようになる。図１３を一例として説明すれば、上位アプリケーションＡ、Ｂが使用する標準化共通フォーマットに基づく制御コマンドControl A、Control B、Control CはＤＩＡ階層２２によりデバイス１で使用する制御コマンドControl A-1、Control B-1、Control C-1に個別に変換される。この変換された制御コマンドControl A-1、Control B-1、Control C-1はデバイス１ドライバに提供される。したがって、上位アプリケーションは、その変更があっても特に下位デバイスドライバに左右されない。
【００８２】
　図１２及び図１４は、上位アプリケーションは変更されずに、同一の機能を有する下位デバイスが変更され、それぞれのデバイスドライバが多数個存在する場合を示している。図１２は従来技術における下位デバイスが変更された場合を、図１４は本発明の一実施形態による下位デバイスが変更された場合をそれぞれ示す。 
【００８３】
　まず、図１２を参照すれば、従来技術では上位アプリケーションはそのままで、下位デバイスドライバが変更されると、下位デバイスドライバのＡＰＩが変更される。この下位デバイスドライバのＡＰＩを使用するために、上位アプリケーションが変更される。すなわち、上位アプリケーションの一部や他の部分が同様に追加、削除、あるいは修正されなければならない。また、変更された下位デバイスドライバだけでなく上位アプリケーションも検証されなければならない。
【００８４】
　しかし、図１４に示すように本発明の一実施形態によってＤＩＡ階層２２を上位アプリケーション階層と下位デバイスドライバ階層との間に位置させるようにすれば、上位アプリケーション階層を変更することなく、下位デバイスドライバのみをＤＩＡ階層２２に基づいて変更することで、全ての作業が終わる。従って、下位デバイスドライバの検証のみが必要とされる。図１４を一例として説明すれば、上位アプリケーションＡが使用する標準化共通フォーマットに基づく制御コマンドControl A、Control B、Control CはＤＩＡ階層２２によりデバイス１が持っている制御コマンドControl A-1、Control B-1、Control C-1に個別に変換される。この変換された制御コマンドControl A-1、Control B-1、Control C-1がデバイス１ドライバに提供される。ここで、下位デバイスドライバがデバイス１ドライバからデバイス２ドライバに変更されると、下位デバイス２ドライバがデバイス２で使用される制御コマンドがControl A-2、Control B-2、Control C-2であることを上位階層のＤＩＡ階層２２に知らせる。その後、ＤＩＡ階層２２は上位アプリケーションＡが使用する標準化共通フォーマットに基づく制御コマンドControl A、Control B、Control Cをデバイス２が持っている制御コマンドControl A-2、Control B-2、Control C-2に個別に変換する。
【００８５】
　上述した本発明の説明では具体的一実施形態に基づいて説明したが、多様な変形が本発明の特許請求の範囲を外れずに実現可能である。したがって、本発明の範囲は上述した一実施形態により定められるのではなく、特許請求の範囲とこれに均等なものにより定めなければならない。
【図面の簡単な説明】
【００８６】
【図１】同一のアプリケーションで下位の同一機能をするデバイスがＡからＢに変更される場合を示す図。
【図２】同一のデバイスドライバを２つのアプリケーションが使用する場合を示す図。
【図３】本発明の一実施形態によるデバイスドライバ制御共通化のための概念図。
【図４】本発明の一実施形態によるデバイスドライバ制御共通化のためのアクセス概念図。
【図５】デバイスの初期化のためのＡＰＩDia_InitDevicが呼び出された後のＤＣＢの接続構造を説明するための図。
【図６】レベル１の初期化段階で最終ＤＣＢを示す図。
【図７】レベル２に該当するポートが４つであるＨＤＬＣデバイスが初期化されたときのＤＣＢの接続構造を説明するための図。
【図８】チャンネルが初期化されたときのＤＣＢの接続構造を説明するための図。
【図９】イベントテーブルの構造を説明するための図。
【図１０】本発明の一実施形態によるデバイスドライバが変更された場合を示す図。
【図１１】従来技術による上位アプリケーション(プログラム)が変更された場合を説明するための図。
【図１２】従来技術による下位デバイスが変更された場合を説明するための図。
【図１３】本発明の一実施形態による上位アプリケーション(プログラム)が変更された場合を説明するための図。
【図１４】本発明の一実施形態による下位デバイスが変更された場合を説明するための図。
【符号の説明】
【００８７】
２０，２１　上位アプリケーション
２２　ＤＩＡ階層
２４，２６，５０，５２　下位デバイスドライバ
３０　DCB handlerId[1.0.0]
３２　ＤＣＢ
３４　コマンド制御テーブル
３６　デバイスドライバ制御テーブル
３８　イベントテーブル
４０　最上位データベース
【図１】
2004070964.tif 000006
【図２】
2004070964.tif 000007
【図３】
2004070964.tif 000008
【図４】
2004070964.tif 000009
【図５】
2004070964.tif 000010
【図６】
2004070964.tif 000011
【図７】
2004070964.tif 000012
【図８】
2004070964.tif 000013
【図９】
2004070964.tif 000014
【図１０】
2004070964.tif 000015
【図１１】
2004070964.tif 000016
【図１２】
2004070964.tif 000017
【図１３】
2004070964.tif 000018
【図１４】
2004070964.tif 000019