JP2000500601A - 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ - Google Patents

動的プログラム可能なモード切換えディバイスドライバアーキテクチャ

Info

Publication number
JP2000500601A
JP2000500601A JP9519937A JP51993797A JP2000500601A JP 2000500601 A JP2000500601 A JP 2000500601A JP 9519937 A JP9519937 A JP 9519937A JP 51993797 A JP51993797 A JP 51993797A JP 2000500601 A JP2000500601 A JP 2000500601A
Authority
JP
Japan
Prior art keywords
interface
device driver
module
operating system
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9519937A
Other languages
English (en)
Other versions
JP4442732B2 (ja
Inventor
ジェームズ エイ ケラー
ケヴィン ジェイ フローリー
Original Assignee
ダイアモンド マルチメディア システムズ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ダイアモンド マルチメディア システムズ インコーポレイテッド filed Critical ダイアモンド マルチメディア システムズ インコーポレイテッド
Publication of JP2000500601A publication Critical patent/JP2000500601A/ja
Application granted granted Critical
Publication of JP4442732B2 publication Critical patent/JP4442732B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Abstract

(57)【要約】 オペレーティングシステム(54)を機能サブエレメントを含むコントローラディバイスのコンピュータインタフェースへ結合するディバイスドライバアーキテクチャ。ディバイスドライバ(50)は各々がオペレーティングシステムインタフェース(OSI)をオペレーティングシステム(54)へ提供するオペレーティングシステムインタフェースオブジェクトと、コントローラディバイスの前以て決定されたそれぞれのサブエレメントのオペレーティングモード確立するために各々がコンピュータインタフェースへ適用されるべきプログラミング値の生成を提供するコンピュータインタフェースオブジェクトと、データを処理し、そして、前以て決定済みの組合わせにおける複数のコンピュータインタフェースオブジェクトへのコールを生成するためにオペレーティングシステムインタフェースオブジェクトの各々によってコール可能な処理ルーチンのディバイスドライバライブラリとを有する。ディバイスドライバライブラリはその中においてプログラミング値の生成とコンピュータインタフェースへの適用を定義する実行コンテキストの選択を作動可能化する。ハードウェアインタフェースの状態は、個別のコンテキストにおいて仮想化および維持され、実質的にディバイスドライバ(50)専用のコンテキスト切換えを介して、選択されたオペレーティングシステム事象に応答してハードウェアインタフェースの状態のアプリケーション特有の動的変更を可能にする。

Description

【発明の詳細な説明】 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ 発明の背景 発明の分野 本発明は、全体的に、コアオペレーティングシステムと、通常、ハードウェア ディバイスとの間のインタフェースを定義および確立するためにコンピュータオ ペレーティングシステムにおいて用いられるディバイスドライバの設計に関し、 詳細には、その中で特に情報ディスプレイ機能を含むオペレーティングシステム 機能を一般的にサポートするハードウェアディバイスが作動する、仮想化され、 かつ、コンテキスト切り替え可能なインタフェース環境を提供するモジュール式 ディバイスドライバアーキテクチャに関する。 関連技術の説明 通常のコンピュータシステムにおいて、ソフトウェアオペレーティングシステ ムは、ユーティリティ及びデーモンプログラムを含むアプリケーションプログラ ムに一般化されたシステムサービスを提供する。これらのシステムサービスには 、通常、個々のハードウェア周辺ディバイスへのアクセスが含まれ、この場合、 各ディバイスが、通常、コンピュータシステムに、明確に定義されたハードウェ アインタフェースを提供するこれらのハードウェア周辺ディバイスは、コンピュ ータシステムに直接的或いは間接的に付加されていても差し支えない。ディバイ スドライバは、オペレーティングシステムに一体構造として統合可能なソフトウ ェアモジュール又は構成要素として実現され、通常、明確に定義されたソフトウ ェアアプリケーションプログラムインタフェース(API)を、オペレーティン グシステム及び各ハードウェアインタフェース用のアプリケーションプログラム に提供するために用いられる。ディバイスドライバは、しばしば、例えばビデオ コントローラのような特定クラスのハードウェアインタフェースに関する細目仕 様を備えたアプリケーションプログラム又はオペレーティングシステムの対話( イ ンタラクション)を単純化することの出来る程度のディバイス独立性または仮想 化を提供する。通常、特定のハードウェアインタフェースの基礎となる各具体化 に関しては、アプリケーションプログラム及びオペレーティングシステムに提供 される他の点では共通なAPIを実現するために特有のディバイスドライバが用 いられる。 従来のディバイスドライバ設計に固有な多くに問題が有る。第1に、従来のデ ィバイスドライバは、特定のハードウェアインタフェース、及び、基礎ディバイ ス、又は、コントローラシステムの機能にとって特有である。従って、ハードウ ェアコントローラの新規または異なるバージョンが作成されると、必ず、新規ま たは異なるハードウェアにとって同等に特有な新規ディバイスドライバも開発さ れなければならない。多数の異なるバージョンのあるハードウェアディバイスの 場合には、概して同数のディバイスドライバが開発されなければならない。その 代わりに、複数のバージョン又はタイプのディバイスをサポートするように、単 一組合わせディバイスドライバを作成することが可能である。この種のディバイ スドライバは、通常、他の点では実質的に相互に独立している複数のディバイス 特有ドライバを、単一2進ファイルに組み込む。 特定のハードウェア1個をサポートするために必要なディバイスドライバの有 効個数も、その中で当該ハードウェアが使用されるオペレーティングシステム環 境の個数および差に依存する。極めて密接に関係したオペレーティングシステム において、当該ディバイスドライバの実質的な再開発には、特定のオペレーティ ングシステムに当該ディバイスドライバを組み込む適切な能力を提供すること、 及び、おそらく更に重要なはずであるが、論理的には類似するが、しばしば、全 く異なるAPIを当該オペレーティングシステム及びアプリケーションに提供す ることの両方が必要とされる。通常、当該ディバイスドライバのAPIの詳細な 定義は、当該ディバイスドライバ自体の詳細な設計を規制する。従って、ハード ウェアは同じであるがオペレーティングシステムの異なる場合のディバイスドラ イバは、しばしば、殆ど完全に独立して開発される。 特定のハードウェアコントローラをサポートするために必要なディバイスドラ イバの個数に影響する別の問題は特定のコントローラへ接続される他のハードウ ェア及びシステムの性質に起因する。再び、コンピュータシステムの詳細な構成 に融通性を持たせるために、ハードウェアコントローラは、多数の明確に異なる オペレーションモードをサポート可能であり得る。例えば、ビデオコントローラ は、かなりの範囲に亙って、ビデオディスプレイ解像度及び色深度をサポート可 能であり得る。ただし、この場合の範囲は、例えば、特定のビデオコントローラ に実際に実現されたビデオRAMの量のような、直接的制限条件により、そして 、添付ビデオディスプレイの垂直および水平最大周波数によって間接的に拘束さ れることがある。特定のアプリケーションの必要条件が、ディバイスドライバに よってサポートされなければならない特定のオペレーションモードの選択を要求 することもあり得る。一般的に、多くのディバイスドライバは、それぞれ、1つ 又は複数のオペレーションモード異なる集合をサポートするようなハードウェア コントローラを備える。従って、特定のコンピュータシステムのコンフィギュレ ーションに直接基づくオペレーティングシステムの組込みに関して、装備されて いるディバイスドライバのなかの1つが選定されなければならない。所要のオペ レーティングモードの集合をサポートするディバイスドライバを選出することが 困難であることは別として、異なる個々のディバイスドライバをサポートする多 くの種類のモードをプリエンプティブ(割り込み優先的)に決定するには本質的 な困難が存在する。個々のドライバは僅かな量だけ異なるとしても、開発対象と なるドライバが、かなりの個数に達することはあり得るはずである。 第2の問題は、部分的には第1の問題の結果に関係するが、各ディバイスドラ イバは、商的に受け入れ可能なオペレーションであることを保証するために、当 該ディバイスドライバがその中で使用される可能性のある全ての種類の環境にお いて徹底的にテストされなければならないということである。一般に、ディバイ スドライバは、実質的には、オペレーティングシステムに全体として組込まれた モノリシックソフトウェアモジュールである。従って、特定のオペレーティング システム用の或る1個のディバイスドライバの極く些細な異形部をテストを行う 場合であっても、当該ディバイスドライバの正しい動作を立証するために、操作 機能及びアプリケーション互換性の全テストを行うことが必要である。選択的機 能テストは、モノリシックにコード化されたディバイスドライバのあらゆる修正 に起因する付帯的な操作上のエラーの真の可能性により、一般に、不適当である 。実際に異なるディバイスドライバの実質的な個数が、適度に複雑なハードウェ アコントローラ及び対応するテストの組のサイズ及び範囲に関して、テストの実 施を支持したとしても、ディバイスドライバのテストを実施することは、かなり の出費と新規製品または改良バージョンの市販開始の大幅な遅延とを意味する。 従来のディバイスドライバ設計に関する第3の問題は、この種の設計が実質的 に静的なタイプのハードウェアコントローラ管理を提供することである。一般に 、ディバイスドライバは、当該ディバイスドライバによって管理されるハードウ ェアコントローラに関して、ただ1組のオペレーティングパラメータを設定する 。コンピュータシステムにおいて実行するオペレーティングシステム及びアプリ ケーションプログラムは、全て、この静的モードのパラメータを許容しなければ ならず、そうでなければ、正しく作動することに実質的に失敗するはずである。 限られた場合において、従来のディバイスドライバは、ある種のモードを利用可 能にするか、或いは、アプリケーションプログラムにとって見える状態にするこ とが可能である。従って、これらのモードを利用するために、ディバイスドライ バは、アプリケーションプログラムを信頼して、実質的にコンパイルされたハー ドウェア依存性を持つ。このような場合、モードスイッチ(態様切換え)を引き 起こすことができるとしても、この種のあらゆるスイッチ(切換え)に実際的に 気付かない他の実行プログラムに潜在的な悪影響を及ぼすけれども、アプリケー ションプログラムはモード変更を引き起こす。 一般に、或る種の多重タスクオペレーティングシステムは、オペレーティング システムにサポートされた状態変更に限られるけれども、制限された動的ハード ウェアコントローラモード切換えを実施することが出来る。これらの場合、オペ レーティングシステムは、新規な作動モードの状態に関して一貫性をもつディバ イスドライバ及びハードウェアコントローラの状態を実質的に再ロードする。た だし、実行中のアプリケーションとディバイスドライバ及びハードウェアコント ローラの状態との間には直接的関係はない。再び、あらゆる実行中のアプリケー ションは、あらゆるモードスイッチに、完全にではないとしても殆ど気付かない 。従って、選定されたモードは、いくらかの実行中アプリケーションに関しては 最 適であっても、現行の実行焦点調節を伴ったアプリケーションに関しては、必ず しも最適であるとは限らないはすである。 発明の要約 従って、本発明の一般的な目的は、動的再構成に基づき独立したハードウェア コンフィギュレーションオプションを提供することのできる融通性に富むモジュ ール式ディバイスドライバアーキテクチャを提供することにある。 これは、本発明において、プロセッサを有するコンピュータシステムの記憶装 置に装備され、複数の機能サブエレメントを含むコントローラディバイスのコン ピュータインタフェースにオペレーティングシステムを結合するために作動する ディバイスドライバアーキテクチャを提供することによって達成される。ディバ イスドライバは、それぞれがオペレーティングシステムへのオペレーティングシ ステムインタフェース(OSI)を提供する複数のオペレーティングシステムイ ンタフェースオブジェクトと、コントローラディバイスのそれぞれ所定のサブエ レメントのオペレーティングモードを確立するためにそれぞれがコンピュータイ ンタフェースへ適用されるべきプログラミング値の生成を提供する複数のコンピ ュータインタフェースオブジェクトと、データを処理し、そして、所定の組合わ せにおける複数のコンピュータインタフェースオブジェクトへのコールを生成す るために、複数のオペレーティングシステムインタフェースオブジェクトの各々 によってコール可能な処理ルーチンのディバイスドライバライブラリとを有する 。 ディバイスドライバライブラリは、その中において、プログラミング値の生成 及びコンピュータインタフェースへのプログラミング値の適用を定義するための 実行コンテキストの選択を作動可能化する。 本発明の利点は、ハードウェアインタフェースの状態、及び、これに対応して 、ハードウェアインタフェースを提供するコントローラの状態が個別コンテキス ト内において仮想化および維持されることである。ほかの点においては個々のア プリケーションプログラムによって取り扱い或いは管理されなければならないコ ントローラの操作上の機能またはモードは、本発明のオペレーションによって仮 想化可能である。本発明は、ディバイスドライバのオペレーションによって実行 さ れる実質的な専用コンテキスト切換えを介してハードウェアインタフェースの状 態のアプリケーション特有の動的変更を提供する。選定されたオペレーティング システム事象は、新規コンテキストの作成、及び、当該ディバイスドライバによ るコンテキスト間の動的切換えを開始するために、修正或いはトラップされる。 本発明の他の利点は、ディバイスドライバが、当該ディバイスドライバを介し てコントローラによりサポートされる機能の包括的な最適化を提供することであ る。ディバイスドライバは、当該ディバイスドライバによってサポートされるA PIコールインタフェースの仮想化を提供する。オペレーティングシステムイン タフェースオブジェクトの使用を介したコールインタフェースの仮想化は、独立 して定義されたAPI、及び、共通実行ストリームによって実質的にサポートさ れるべき機能的に等価なコールの変換に関して、特有のサポートを提供する。 本発明の更なる利点は、ディバイスドライバのコールインタフェースの仮想化 が、APIコール及びそれらのパラメータの共同評価を構造的に確立し、共同実 行ストリーム内における後続するパラメータチェックに関する必要条件を実質的 に除去することである。コンテキストデータ構造を参照するポインタと結合した 結果としての実質的に線形の実行ストリームは、効率的な実行動作を保証し、同 時に、従来のモノリシックディバイスドライバにおいて達成可能であるよりも実 質的に更に大きい機能性を作動可能化する。 本発明の更に他の利点は、ディバイスドライバが、実質的に線形の実行ストリ ームのコンテキスト依存変更を提供することである。コンテキスト間の切換えを 作動化またはサポートするために必要な変換機能は、変換機能の実施が必要かど うかを判定するための反復テストを最小限にするように実行ストリームに機能を 直接リンクすることによってサポートされる。 本発明の更なる別の利点は、ディバイスドライバが、ハードウェアインタフェ ースを介してアクセス可能な特定のコントローラコンフィギュレーションをサポ ートするために必要または最適である実質的な機能オブジェクトの動的ローディ ング及びコンフィギュレーションを組み込むことである。ディバイスドライバは 、当該コントローラを構成する独立した機能的なサブエレメントを識別するため にハードウェアインタフェースを介して、或いは、そうでなければ、コントロー ラ から獲得された符号化済みコンフィギュレーションデータに応答し、サブエレメ ントをサポートするために適したハードウェアインタフェースオブジェクトの対 応する集合を決定し、当該ディバイスドライバの初期化の一部として、オブジェ クト集合において動的にロード及びリンクする。 本発明の更に別の利点は、ディバイスドライバが、機能的または操作上の或る アスペクトに関してプログラム可能であるような様々のハードウェアインタフェ ースオブジェクトをサポートすることである。ハードウェアインタフェースを介 して、或いは、そうでなければ、コントローラから獲得された符号化済みのコン フィギュレーションデータに基づき、当該ディバイスドライバは、ハードウェア インタフェースオブジクトがそれらの対応するサブエレメントをどのようにして サポートするかということの詳細について定義する操作上のコンフィギュレーシ ョンデータを用いてハードウェアインタフェースオブジェクトをプログラムする ために、システムメモリからのコンフィギュレーションデータを識別し、そして 、ロードする。 更に本発明の他の利点は、当該ディバイスドライバが、その中において、他の ハードウェアインタフェースオブジェクト、及び、ディバイスドライバの他の構 造的構成要素との実質的分離における新規ハードウェアインタフェースオブジェ クトが開発可能であるような、確立したアーキテクチャを提供することである。 ハードウェアインタフェースオブジェクトの構造的設計は、対応するハードウェ アインタフェースオブジェクトをプログラムするために使用される操作上のコン フィギュレーションデータを再定義することによって実施されるべきコンフィギ ュレーションの実質的な改訂及び改良を前記オブジェクト自体が同様に可能にす る。改訂されるか、或いは、新規なコントローラサブエレメントをサポートする ディバイスドライバの修正は、サブエレメントに対応するハードウェアインタフ ェースオブジェクトに対してソースコード修正の準備をすることと対照的に、コ ンフィギュレーションデータファイルの単なる編集に限られることがある。いず れにせよ、互換性テストは、コントローラの改訂されるか、或いは、新規なサブ エレメントをサポートする特定のハードウェアインタフェースオブジェクトのテ ストに適当に限定することが出来る。 本発明の更に別の利点は、ディバイスドライバが、ビデオディスプレイコント ローラによって現在サポートされている色深度について一貫性のある報告を実施 するために、オペレーティングシステムの修正を提供することである。異なる色 深度コンテキストは、1つ又は複数の実行中アプリケーションの最大許容色深度 に対応する各コンテキストを用いて、実行中のアプリケーションの集合に関して 確立される。コンテキストが変更されるにつれて、或るアプリケーションの最大 色深度が、ビデオディスプレイコントローラの色深度能力を越えた場合、該当す る線形実行ストリームにリンクされた色深度変換機能が、ディスプレイデータ色 深度変換を提供する。 図面の簡単な説明 本発明のこれら及び他の利点及び特徴は、本発明について以下に示す詳細な説 明を添付図面と関連して考察することにより一層良く理解されるはずである。こ の場合、次に示す添付図面全体を通して、同じ参照番号は同じ部分を示すものと する。 図1は本発明に従って作成されたコンピュータシステムの概略構成図である。 図2は本発明のディバイスドライバの初期化期間中における、本発明のアーキ テクチャ的コンフィギュレーションの概略構成図を提供する。 図3は本発明の初期化を詳述するフローチャートを提供する。 図4は本発明のディバイスドライバのランタイム実行期間中における、本発明 のアーキテクチャ的コンフィギュレーションの概略構成図を提供する。 図5aはディバイスドライバコンテキストを定義する複数のシェルオブジェクト とシェルライブラリと、本発明の好ましい実施例と一貫性をもつオペレーティン グシステムの物理的ディバイス構造との間の関係を示す一般的な説明図を提供す る。 図5bは本発明の好ましい実施例と一貫性をもつハードウェアインタフェース オブジェクトの複数の例示の間の関係を示す一般化された説明図を提供する。 図6aは、本発明の好ましい実施例に従ったコンテキストスイッチに関して準 備する過程の動作を示すフローチャートを提供する。 図6bは、本発明の好ましい実施例に従った新規コンテキストの実現化に用い られる過程を示すフローチャートを提供する。 図7は本発明の好ましい実施例に従って構成されたディバイスドライバの動作 を終結させるために用いられる過程のソフトウェアフロー図を提供する。 図8は本発明と一貫性をもつオペレーティングシステム内において実行する多 重仮想マシンをサポートする本発明の真、及び、仮想の両アーキテクチュア的コ ンフィギュレーションの使用を説明する構成図を提供する。 図9は本発明に従って作成された仮想ディバイスドライバのアーキテクチュア 的コンフィギュレーションの概略構成図を提供する。発明の詳細な説明 I.ハードウェアシステムの概観 本発明の利用に適したコンピュータシステム10を図1に示す。コンピュータ システム10は、システムデータバス14を介して主記憶装置16および大容量 記憶周辺装置18に結合される中央処理装置(CPU)12を含むことが好まし く、前記の大容量記憶周辺装置はディスクドライブコントローラ及びハードディ スクドライブユニットを含むことが好ましい。サポートされている機能が非揮発 性資源からの或る実行可能なデータ及び構成ファイルの読取りを可能にする場合 には、本発明のためには、大容量記憶周辺装置18の動作だけで十分である。従 って、大容量記憶周辺装置18は、一般にファイル指向編成されているコンピュ ータシステム10によって読取り可能なデータの記憶装置を提供する外部又は遠 隔装置、或いは、システムへのアクセスを提供する通信コントローラであっても 差し支えない。 ビデオディスプレイコントローラ19も、同様に、システムバス14に結合さ れた周辺ディバイスとして提供される。本発明に用いられるビデオディスプレイ コントローラ19のハードウェア具体化例の性質は全体的に従来通りである。た だし、本発明に関係する状況について説明する場合における当該ビデオコントロ ーラ19は、統合的に当該コントローラ19を構成する論理的に独立したサブエ レメントの収集体として一意的に記述される。これらのサブエレメントは、全体 的に独立した操作プログラミング可能性に関して、これらが特に機能的な独自性 (アイデンティティ)を持つことによって論理的に区別される。すなわち、コン トローラ19のハードウェア具体化例の機能に関する区分が、本発明のためのコ ントローラ19を構成する個別サブエレメントを大筋において規制する。 サブエレメントを区別するための別の基準は、プログラムによるCPU12の 実行の最終的な結果として、対応するサブエレメントをプログラミングする方法 における一般性(コモナリティ)に基づいて機能をグループ化することである。 従って、図1に概要的に示すように、ビデオコントローラ19のサブエレメント には、これらに限定されることなく、ビデオディスプレイバッファ20、D−A 変換器(DAC)22、ビデオグラフィックスアクセラレータ24、ビデオコン トローラ26、プログラム可能なクロックゼネレータ28、ハードウェアカーソ ルコントローラ、及び、コーダ‐デコーダユニット(CODEC)が含まれるこ とが好ましい。コントローラ19を構成するこれらサブエレメントの各々は、シ ステムバス14に適切に結合されるハードウェアレジスタインタフェース30を 介して比較的独立的にプログラム可能である。従って、CPU12は、サブエレ メント20、22、24、26、28からの情報をプログラム化および獲得可能 である。レジスタインタフェース30及び1つ又は複数のサブエレメントは、実 際問題として、1つの単一集積回路上に物理的に常駐可能である。1つの単一集 積回路上にサブエレメントが共同所在すること、又は、サブエレメントが他のサ ブエレメントを介してアクセス可能である可能性は、サブエレメントを相互に機 能的に区別することには影響を及ぼさない。 サブエレメント20〜28のプログラミングによって、ビデオディスプレイ3 2は、テキスト及び図式情報の提示(プレゼンテーション)用としてサポートさ れる。本発明の好ましい実施例において、多重ディスプレイウィンドウ34、3 6は、ディスプレイ32上に見える現在作動中または「焦点(フォーカス)」デ ィスプレイウィンドウを選択するために使用できるポインタ38と組合わせてサ ポートされる。ディスプレイウィンドウ34、36は、多数の個別事象を介して 現行焦点を獲得することが出来る。これらの事象には、コンピュータシステム1 0によって実行するための新規アプリケーションプログラムの開始が含まれる。 新規に開始されるアプリケーションのメインウィンドウは、デフォルトにより、 ディスプレイ32の現行焦点を獲得する。ポインタ38は、例えば、マウスクリ ックの発生に際して焦点調節を受けるウィンドウ34、36を選択するためにも 利用することができる。最後に、ディスプレイウィンドウ34、36は、別のア プリケーションの終了に際して焦点調節を受けることが可能である。これらの情 況の各々において、焦点調節事象が生成され、この生成に際して、オペレーティ ングシステムの実行を介してCPU12が作動可能である。 他の周辺装置40も、同様に、コンピュータシステム10の構成要素として存 在しても差し支えない。これら他の周辺装置40には、オーディオ、リアルタイ ムビデオ、及び、単独または相互組合わせされた他の複雑な多重機能作動(オペ レーション)をサポートする複雑なコントローラが含まれても差し支えない。当 該コントローラの機能的動作及び編成が、CPU12によって直接或いは間接的 にプログラム可能な非常に多数の機能エレメントとして合理的に細分化されるこ とを条件として、この種の複雑なコントローラは本発明によって効果的にサポー ト可能である。例えば、システムバス14に呈示されるレジスタインタフェース を介して全て直接或いは間接的に表されるウェーブテーブル合成、FM合成、等 化コントローラ、残響コントローラ、及び、多重チャネル増幅器サブエレメント を呈示する高性能オーディオサブシステムは、本発明によって最も適切にサポー ト可能である。 II.ソフトウェアシステムの概観 本発明は、任意の個数のサブエレメントを備えたあらゆる周辺コントローラを 容易にサポート可能であるが、好ましい実施例に示すように、ビデオディスプレ イコントローラ19のサポート及び制御用として適用される場合に、最もよく理 解されるはずである。図2において、本発明の好ましいディバイスドライバ実施 例50は、ビデオディスプレイコントローラ19のレジスタインタフェース30 へのディバイスドライバの論理的結合を表すハードウェアインタフェースとオペ レーティングシステム層54との間に配置されている。オペレーティングシステ ム層54には、一般に、オペレーティングシステム核56と、いくらかの基礎的 なオペレーティングシステムレベルの機能性を追加する潜在的に1つ又は複数の オペレーティングシステムエキステンション58とが含まれる。最後に、オペレ ーティングシステム層54は、結果的に、1つ又は複数のアプリケーションプロ グラム60をサポート可能である。 動作に際して、アプリケーションプログラム60は、アプリケーション60に よってコール出来る実行エントリポイントの1つの集合として効果的に提供され るアプリケーションプログラムインタフェース(API)を介してオペレーティ ングシステム層54サポートサービスを獲得する。本発明の実施例に従い、オペ レーティングシステム核APIコールポイントの小さい部分集合62は、ディバ イスドライバ50の初期化に際して修正される。これらの修正されたコールポイ ントには、ウィンドウ焦点調節変化事象をアプリケーション60に報告するエン トリポイントルーチン、及び、当該ディスプレイ32の現行カラー深度をアプリ ケーション60に報告し返すエントリポイントルーチンが含まれる。焦点調節変 化事象(イベント)は、当該事象に応答して追加事象処理を提供するオペレーテ ィングシステムエキステンション58へのAPIコールを含むように修正される ことが好ましい。この追加事象処理には、焦点調節事象の結果として一般的に開 始されるべきアプリケーションの実行環境を定量化するデータを獲得するための 構成(コンフィギュレーション)検索の実施が含まれる。検索されたデータには 、開始されようとしているアプリケーションのために必要とされるスクリーン解 像度およびカラー深度構成(コンフィギュレーション)が含まれることが好まし い。 カラー深度報告ルーチンの修正は、任意のアプリケーション60によって要求 された最大カラー深度が当該ディスプレイ32の現行カラー深度としてアプリケ ーション60に報告されることを保証するために明確に実施される。従って、本 発明の好ましい実施例によれば、全てのアプリケーション60は、特にカラー深 度に関して、当該ディスプレイ32の完全に仮想化された表現を基準として実行 する。即ち、ディバイスドライバ50は、どのようなカラー深度がアプリケーシ ョン60によって要求されようとも、要求されたカラー深度が他のアプリケーシ ョン60によって扱うことの出来る最大カラー深度、或いは、実際に、当該ディ スプレイ32自体の最大カラー深度を超過すると否とに拘わらず、完全なサポー トを提供する。 A.ディバイスドライバのソフトウェアアーキテクチャ 上位レベル: 核層54は、オペレーティングシステム核56及びあらゆるエキステンション 58に、ディバイスドライバ50へのエントリポイントを提供するオペレーティ ングシステムAPI(O/S API)を介してディバイスドライバ50に接続 する。ディバイスドライバ50内において、O/S APIは、主として、グラ フィックスディスプレイインタフェース(GDI)モジュール64、直接ドロー (DD)モジュール66、各々が、例えば、直接3D(D3D)のような現在ま たは将来の定義済みAPIを表す任意の個数の他のモジュール68を含む多数の オペレーティングシステムインタフェースモジュールによってサポートされてい る。追加APIエントリポイントは、オペレーティングシステム(O/S)モジ ュール70、グラフィックスインタフェース(GRX)モジュール71、及び、 シェルモジュール72によって提供される。これらのモジュールは、当該ディバ イスドライバ50のO/S APIを構成するコール可能な実質的にすべてのエ ントリポイントを集団的に表す。 シェルモジュール72は、システム始動に際してオペレーティングシステム核 56の初期化の一部として記憶装置16にロードされるディバイスドライバ50 の初期構成要素である。例えば、Microsoft MS−Windows’ 95TMのような通常のオペレーティングシステムにおいては、例えば、MS−W indows’95のレジストリサービスのような標準初期化構成(コンフィギ ュレーション)ファイル又はデータベースにおける参照の結果として、オペレー ティングシステム核56は、シェルモジュール72を記憶装置16にロードする はずである。 シェルモジュール72によって提供される初期化エントリポイントは、オペレ ーティングシステム核56がディバイスドライバ50の当該ディバイスドライバ 特有の初期化を開始することを可能にする。この初期化の一部分として、シェル モジュールは、ボードドライバ、ハードウェアインタフェースモジュールの集合 、及び、オペレーティングシステム層54に呈示されるはずのO/S APIを サポートするようにディバイスドライバ50の具体化を完成するために必要なオ ペレーティングシステムインタフェースモジュールの補集合を決定する。好まし い実施例において、シェルモジュール72に静的にリンクされなかった場合には 、決定されたこれらの追加モジュールが動的にロードされ、その次に、ディバイ スドライバ50に論理的にリンクされる。 ディバイスドライバ50の初期化のためのサポートサービスを獲得するために 必要なO/S APIへのコールインタフェースを確立するためには、少なくと もオペレーティングシステムモジュール70は、シェルモジュール72の必須部 分または構成要素としてロードする。GRXモジュール71も同様にシェルモジ ュール72によってロードされることが好ましい。実用的利便さの問題として、 一般的に使用される他のデフォルトオペレーティングシステムインタフェースモ ジュールも、同様に、オペレーティングシステムモジュール70に静的にリンク 可能である。 GDI64,DD66、及び、D3D68モジュールによって特に実演される ように、本発明のディバイスドライバ50は、当該ディバイスドライバ50のO /S APIを、オペレーティングシステム核56、及び/又は、オペレーティ ングシステムエキステンション58の特定の部分に特有な分離されたユニットと して具体化することが好ましい。従って、好ましい実施例において、GDIモジ ュール64は、MS−Windows’95TM製品用としてMicrosoft によって事前に定義されたフラットモデルDIBエンジンドライバインタフェー スをサポートすることが好ましい。同様に、直接ドローモジュール66は、標準 直接ドローAPI用ハードウェア独立インタフェースをサポートする。D3Dモ ジュール68は、Windows’95TM用として発表済みのMicrosof t直接3D APIをサポートするはずである。これらの各APIに関する文書 は、Microsoft,Inc.(Redmond、Washington) の市販製品として入手可能なMicrosoftソフトウェア開発キット(SD K)及びMicrosoftディバイスドライバキット(SDK)の一部として 入手可能である。従って、本発明にかかる動的ローディング能力は、ディバイス ドライバ50によって提供される包括的APIサポートが、容易に注文作成され ることを可能にし、そして、追加オペレーティングシステムインタフェースモジ ュールの動的ローディングを介して、拡張されることを可能にする。 O/S及びGRXモジュール70、71を含むシェルモジュール72は、ディ バイスドライバ50の動作(オペレーション)を介して、通常および所有権を主 張できる(プロプラェタリ)両サポート機能をサポートするための必要性に応じ て、オペレーティングシステム層54に対し、通常および所有権を主張できる( プロプラェタリ)両APIインタフェース部分を提供する。通常のAPI部分に は、記憶装置16へのローディングに際して、オペレーティングシステム層54 により、シェルモジュール72の初期化を開始することを可能にする初期化エン トリポイントが含まれる。一般的標準終了(ターミネーション)コールエントリ ポイントも同様に提供される。このエントリポイントは、オペレーティングシス テム層54が、オペレーティングシステム層54のシャットダウンが切迫してい ること、及び、ディバイスドライバの順序立った終了が要求されることをディバ イスドライブ50に合図することを可能にする。 シェルモジュール72によって提供される所有権を主張できる(プロプラエタ リ)APIエントリポイントには、当該ディスプレイ32上に呈示されるデスク トップを定義するデータの読取り及び書き込み、現行ビューポート、及び、ディ バイスドライバ50のオペレーションを定義する或るデータを提供するエントリ ポイントが含まれる。この後の方の情報には、ディスプレイ32の現在の物理的 カラー深度、ディスプレイポインタ38の現行カラー及びパターン、及び、例え ば、ディバイスドライバ50のインタレース、ビデオ同期化タイプ、ビデオ高速 スクロール、及び、カラーイネイブルオプションのような、大幅にビデオハード ウェア特有化された多数の態様の設定が含まれても差し支えない。 最後に、オペレーティングシステムモジュール72は、基礎的なオペレーティ ングシステムサービスを獲得するためにオペレーティングシステム層54をコー ルするディバイスドライバサポートルーチンを提供する。本発明の好ましい実施 例において、これらのシステムサービスには、記憶装置の割当、既に割当て済み である記憶装置の解放、メモリオブジェクトの実行可能またはロック状態を不能 にし、データを読み取り、そして、定義済みI/Oアドレスにデータを書き込み 、そして、一般に大容量記憶周辺装置18によって記憶された状態にある名前付 きデータファイルを開き、読み取り、そして、閉じるために動的リンクライブラ リ、例えばメモリオブジェクトを実行可能にするかく又は、実メモリ内のメモリ オブジェクトをロックすることを可能にするような記憶管理機能のローディング 及びアンローディングが含まれる。 B.ディバイスドライバソフトウェアのアーキテクチャ 下位レベル: シェルモジュール72は、ビデオディスプレイコントローラ19の特定の場合 に関して、同様に、ディバイスドライバ50の動的構成(コンフィギュレーショ ン)を提供する。コンピュータシステム10においては、機能的に類似する多数 のビデオディスプレイコントローラ19のうちの任意の個数を利用可能であるが 、本発明のディバイスドライバ50は、特定のビデオディスプレイコントローラ 19のハードウェア仕様細目を最適サポートするようにボードドライバ74の動 的選択およびディバイスドライバ50への包含(インクリュージョン)を提供す る。シェルモジュール72は、任意個数の異形体(バリアント)の中から、特定 のビデオディスプレイコントローラ19の主要態様に対応する特定のボードドラ イバ74を選定する。実際には、特定のビデオディスプレイコントローラ19の 主要態様は、コントローラ19の具体化に用いられる集積回路グラフィックスア クセラレータチップ又はチップ集合の特定の構造(アーキテクチャ)である。従 って、1つの単一ボードドライバ74は、ディスプレイコントローラ19の特定 変形体の適切に定義されたファミリに対応しても差し支えない。他のボードドラ イバは、定義の異なるコントローラの別のファミリに対応するように構成可能で ある。 ボードドライバ74は、1組のハードウェアインターフェイスモジュールを選 択的にサポートすることにより、ディバイスドライバ50の動的構成(コンフィ ギュレーション)の追加層を提供する。これらのハードウェアインタフェースモ ジュールは、ディバイスドライバ50の構成要素として動的にロードすることが 可能であり、そして、ビデオディスプレイコントローラ19の特定具体化の個別 サブエレメントに実質的に対応する。本発明の好ましい実施例において、ハード ウェアインタフェースモジュールの集合には、クロックモジュール76、DAC モジュール78、CODBCモジュール80、ハードウェアカーソルサポートモ ジュール82、ビデオモジュール84、二次元グラフィックス制御モジュール8 6、及び、三次元グラフィックス制御(3D)モジュール88が含まれる。ディ バイスドライバ50に動的にロードされたハードウェアインタフェースモジュー ルの特定の集合は、ビデオディスプレイコントローラ19の具体化例に存在する 特定のサブエレメントに対応するボードドライバ74によって決定される。即ち 、クロックサブエレメント28の特定の具体化例に従属する特定の対応するクロ ックモジュール76は、ボードドライバ74によって識別され、そして、ディバ イスドライバ50に動的にロードされる。従って、例えば、DACサブエレメン ト22の新規バージョンを、ほかの点では一般的に既に存在するビデオディスプ レイコントローラ19の設計に包含させることは、ディバイスドライバ50の実 質的にはDACモジュール78のみの機能性に関して対応する改訂を実施するこ とにより、即座に収容可能である。従って、ディバイスドライバ50のサブエレ メント特有の態様を、動的にロード可能なモジュール内に配分することにより、 ディバイスドライバ50の最終的構成性能および動作の有意な改訂が、ディバイ スドライバ50を残りの部分から分離することによって実施されることを可能に する。この種のハードウェア特有の変更も、同様に、他のハードウェアインタフ ェースモジュール及びディバイスドライバ50の更に高位の層から効果的に分離 される。従って、ディスプレイコントローラ19の新規バージョンに関するディ バイスドライバ50構成(コンフィギュレーション)は、1個または複数の特定 の新規または改訂済みハードウェアインターフェイスモジュールのみを基準とし てテストすることが可能である。 実際問題として、或る種のハードウェアインタフェースモジュールは、ボード ドライバ74と静的にリンクしても差し支えない。モジュールの基礎的な補集合 は、必ず、或いは、ほぼ必ず特定のボードドライバ74と共に使用されるが、こ の場合には、ボードドライバ74と一緒にモジュールをロードすることによって 最適化が達成される。静的にリンクされたモジュールを後続使用することは、対 応するサブエレメントをサポートするために動的にリンク可能なモジュールを準 備することにより、同じく効果的にオーバライド可能である。動的にロードされ たモジュールは、静的にリンクされた対応するモジュールに優先して使用するこ とが好ましい。 III.ディバイスドライバの初期化 本発明のディバイスドライバ50を初期化する過程の概要を図3に示す。MS −Windows’95TMオペレーティングシステムによって作動する好まし い実施例に関して、この初期化過程を説明することとする。 A.初期上位レベル初期化 オペレーティングシステム初期化の通常の実行に関連して、シェルモジュール 72は、レジストリサービスデータベースファイルにおける通常のシステムドラ イバ参照(リファレンス)の結果として、記憶装置16にロードされる90。一 旦、記憶装置内に常駐した場合には、ディバイスドライバ従属初期化を開始する ために、コールが、シェルモジュール72の初期化エントリポイントに対して行 われる。シェルモジュール72の初期化ルーチンは、シェルオブジェクト126 (SHELLOBJ)の作成92、その次に、93においてオペレーティングシ ステムオブジェクト128(OSOBJ)の作成を提供する。 シェルオブジェクトは、ディバイスドライバ50の構造と論理的にリンクする 最上レベルデータ構造として用いられる。シェルオブジェクトの有意要素を表I に識別する。 表に示すように、シェルオブジェクトには、いくらかの大域フラグデータ、A PTコールエントリポイント、ディバイスドライバ50の構成要素を表す高レベ ルソフトウェアオブジェクトへのポインタ、及び、多数のシェルライブラリルー チン又はディバイスドライバ50の内部オペレーションをサポートするために用 いられる機能が含まれる。 オペレーティングシステムオブジェクトは、オペレーティングシステム層54 サポート機能へのAPIコールアクセスを提供する。オペレーティングシステム オブジェクトのエレメントを表IIに識別する。 サポートされるエントリポイント別に示すように、O/Sオブジェクトは、オ ペレーティングシステム層54へのコールインタフェースを供給する。下位レベ ル及びBIOS機能へのコールインタフェース、及び、プラットホーム特有機能 へのコールインタフェースを提供する。このプラットホーム特有コールインタフ ェースは、プラットホーム可搬性の細部を隠すために役立つ多数のユーティリテ ィ又はライブラリルーチンを意味する。O/Sオブジェクトの他の機能と必ずし も関連しているとは限らないが、1つのモジュールに全てのプラットホーム特有 コール及び機能を収集するために、これらのルーチンはこのモジュールに集中さ れ、それによって、プラットホーム可搬性の変化を実質的にこの1つのモジュー ルに制限する。更に、これらのルーチンは、当該モジュールの残りの部分と同様 に、アセンブラコーディングを用いて、全体的に最も良好に具体化される。 B.下位レベル初期化 シェルモジュール72は、次に、ディバイスドライバ50の残りの部分の動的 ローディングを開始する。正しいボードドライバ74を識別するために、シェル モジュール72は、特定のボードタイプを識別するためのビデオディスプレイコ ントローラ19の初期評価94を実施する。ボード識別子は、コントローラ19 に物理的に常駐し、そして、シェルオブジェクトの「BoardData」フィ ールドに記憶されているデータ構造から、コントローラ19を介して読み取られ ることが好ましい。好ましい実施例において、ボード識別子は、最初、レジスタ インタフェース30を介してアクセス可能なビデオディスプレイコントローラ1 9に設置されている通常のオンボードROM29に記憶される。表IIIは、ボ ード識別子データ構造の好ましい構造を提供する。 「ID」フィールドは、ボード識別子構造がディバイスドライバ50に適合す ることを確認する静的データ値を提供する。「Revision」フィールドは 、将来、代替構造が具体化された場合に、ボード識別子構造の特定構造を定義す るために用いられる。「StructureSize」フィールドは、構造のサ イズを定義する。「BoardFamily」フィールドは、この特定な場合に おけるビデオディスプレイコントローラ19をサポートするために必要なディバ イスドライバ50の一部分としてロードされることが必要なボードドライバ74 を主として識別するために用いることのできる値を記憶する。少なくとも「Bo ardFamily」値を含むボード識別子構造の値は、board.datフ ァイルにおいてキー名探索(ルックアップ)を実施するためのキーとして用いら れる。キーは、有意ボード識別子フィールド値の単純連結として形成されること が好ましい。board.datファイルは、特定の場合におけるボードドライ バ74の対応ファイル名にキーを相関関係付けるフラットファイルであることが 好ましい。 特定のボードドライバ74が94において一旦識別されると、当該キー値に対 応するボードドライバ74をロードするために、シェルモジュール72は、オペ レーティングシステムモジュール70を介してコールを発行する。これに応答し て、オペレーティングシステム層54は、96において、リクエストされたボー ドドライバ74を記憶装置16にロードし、そして、メモリポインタをシェルモ ジュール72に戻す。次に、ボードドライバ74の初期化エントリポイントがコ ールされる。 ボードドライバ74の初期化の一部分として、ボードオブジェクト98が作成 される。ボードオブジェクトは、厳密には、オペレーティングシステムもハード ウェアインタフェースモジュールも表さないが、オペレーティングシステム又は ハードウェアインタフェースモジュールを表すオブジェクトによって便宜上用い られる基礎データ構造形を確立する。ボードオブジェクトの構造を表IVに示す 。 ボードオブジェクト初期化の一部分として、ボード識別子構造へのポインタ「 BoardData」は、シェル72から獲得される100。ビデオディスプレ イコントローラ19に所在する各サブエレメントの特定のタイプを識別するため に、ボード識別子構造における更なるフィールドが調査される。プリセットされ たコード化済みの値は、特定の場合におけるサブエレメントを識別するために用 いられる。ボード識別子のフィールドは、一般に、コントローラ19のサブエレ メントの固定された態様に対応することが好ましい。例えば、DACのタイプ又 はビデオメモリ、VRAM又はDRAMのタイプは、ボード識別子構造を介して 提供されても差し支えない。 おそらくフィールドがアップグレード可能であるために、サブエレメントの態 様が固定されていない場合には、特定の態様は、従来の方法によって決定される ことが必要である。例えば、コントローラが一度使用されさえすれば、ビデオデ ィスプレイコントローラ19において利用可能なディスプレイRAMの量(ビデ オメモリサイズ)は変更可能である。ただし、ボード識別子は、静的であり、そ して、コントローラ19の製造に際して確立される。従って、従来のメモリ走査 ルーチンは、そのような場合においてビデオディスプレイコントローラ19に所 在するビデオメモリの全体量を正確に決定するために利用することが出来る。デ ィスプレイコントローラ19は、おそらく、当該コントローラ19が遺産的に具 体化されたことにより、同様に、ボード識別子29を持っていないこともあり得 る。従って、この場合、当該コントローラ19に所在するサブエレメントの妥当 な識別は、通常のInt10 Biosコールを介して獲得された情報から推論 可能である。 ボード識別子構造における最後のフィールドは「BoardDependen tInfo」フィールドである。このフィールドは、特定のボードタイプ及びモ デルの追加操作特性にフラグを立てるために使用されることが好ましいワード‐ ワイドビットマップデータエリアを提供する。これらのフラグは、従属的かつボ ードドライバ74によって一意的に復号された具体化である。特に、これらのフ ラグビットは、識別されなければボード識別子の他のフィールドによってカバー されることのない詳細な構成(コンフィギュレーション)オプションを識別する ために使用可能である。例えば、1つのフラグビットは、ディバイスドライバ5 0のより後の方のバージョンと共に使用可能な些細なサブエレメントオプション の存在を識別するために使用可能である。 従って、ボードドライバ74は、ボード識別子構造から、ビデオディスプレイ コントローラ19を最適サポートするために必要なハードウェアインタフェース モジュールの特定の集合を決定する102。次に、ボードドライバ74は、オペ レーティングシステムモジュール70を介してボードモジュールと静的にリンク していないハードウェアインタフェースモジュールの識別済み集合を順次にロー ディングすること104をリクエストする。各ハードウェアインタフェースモジ ュール76−88が記憶装置16にロードされるにつれて、対応するソフトウェ アオブジェクトを確立するために、各モジュールの初期化ルーチンがコールされ る106。好ましいディバイスドライバ50において、各ハードウェアインタフ ェースオブジェクトは、共通ヘッダ部分とハードウェア従属部分とを含むデータ 構造として構成される。共通ヘッダ部分は、表Vに示すフィールドを含むオブジ ェクトヘッダデータ構造(OBJHDR)であることが好ましい。 「ObjectVer」フィールドは、カプセル封入ハードウェアインタフェ ースによってサポートされたハードウェアサブエレメントの特定具体化を指定す る一意的な識別子を提供する。「Module」フィールドは、カプセル封入さ れたハードウェアインタフェースモジュールの記憶場所を指示するオペレーティ ングシステムから戻されたメモリポインタを含む。「ObjDataInsta nce」フィールドは、ハードウェアインタフェースオブジェクトのこの例示用 として予約されている専用データエリアへのポインタを提供する。「RegCl assHandler」フィールドは、関連ハードウェアサブエレメントが、モ ード設定動作呼出しの一部分としてプログラムされなければならないインタフェ ースレジスタを備えているかどうかを定義する。当該フィールドの値が空白(ナ ル)である場合には、リクエストされた任意のモード設定プログラミングは、ハ ードウェアインタフェースによってカプセル封入されたモジュールへハードコー ド化される。当該フィールドが空白(ナル)でない場合には、当該フィールドの 値は、レジスタ名および態様変更のサポート用に使用可能なインタフェース手順 の定義を含む構造へのポインタである。RegClassHandlerの構造 を表VIに示す。 オブジェクトヘッダの「ObjectInit」及び「ObjUnInit」 フィールドは、現在のハードウェアインタフェースオブジェクトによってカプセ ル封入されたハードウェアインタフェースモジュールを初期化および解放するた めのコールアドレスを提供する。オブジェクトヘッダの「ModeSet」フィ ールドは、態様変更をハードウェアインタフェースオブジェクトに合図するため に用いられるハードウェアインタフェースモジュールエントリポイントを確立す る。好ましい実施例において、このエントリポイントへの3つの異なるコールが 実施可能である。各コールは、1つのモード設定を呼び出すために、1つのモー ド設定が発生しようとしていること、及び、1つのモード設定が完成したことを 指示するためのコールのオペランドによって区別される。 最後に「SetDPMSState」フィールドは、システム10のパワー管 理状態の特定モジュールに特有の変更をサポートするためのエントリポイントを 提供する。 従って、ハードウェアインタフェースモジュール初期化ルーチンは、ハードウ ェアインタフェースオブジェクトのハードウェアインタフェース従属部分用の記 憶装置を含み、当該オブジェクトのこの実例におけるオブジェクト特有のフィー ルドを初期化し、そして、当該ハードウェアインタフェースオブジェクトのこの 例示に対して専用状態が維持されるべきあらゆる実例データの割当を獲得するた めに、カプセル封入ハードウェアインタフェースオブジェクトの一例の作成を提 供する。当該実例データへのポインタは、オブジェクトヘッダにおける「Obj DataInstance」フィールドに記憶される。次に、初期化ルーチンは 、ポインタをハードウェアインタフェースオブジェクトに返す。このポインタは 、ボードオブジェクト基礎構造のメンバーフィールドに記憶される108。基礎 ハードウェアインタフェースオブジェクト、特にクロックオブジェクトの定義を 表VIIに示す。 表に示すように、クロックサブエレメントと関連したハードウェア特有機能は 無い。ただし、クロック周波数は、クロックサブエレメントの一般的なプログラ ム可能態様であり、更に、モードセットオペレーションに密接に関連している。 従って、オブジェクトヘッダ構造のRegClassHandlerフィールド は、コントローラ19において生成されるクロック周波数を最終的に制御するク ロックサブエレメントのインタフェースレジスタへのアクセスをサポートするた めに必要なレジスタの定義を含むRegClassHandler構造へのポイ ンタを含む。 表VIIIは、例えば、ハードウェアカーソルオブジェクトを定義する更に幾 分か複雑なオブジェクトを示す。 既に述べたように、オブジェクトヘッダは、カーソルオブジェクトのエレメン トとして含まれる。CursorEnableフィールドは、コールパラメータ の状態に応じてハードウェアカーソルの可視性をオン(出現)又はオフ(消滅) させるために、ハードウェアカーソルインタフェースモジュールへのエントリポ イントに対するポインタを提供する。CursorSetフィールドは、オペラ ンドによりコールに対して指定されたパターンに対するカーソルパターンの設定 を提供するエントリポイント15に対するポインタを提供する。CursorM oveフィールドは、コールと共に提供されるX及びYオペランドによりディス プレイ32上におけるカーソルのホットスポットを指定するためのルーチンへの エントリポイントを識別する。CursorSetColorフィールドは、デ ィスプレイ32上に呈示された二色カーソルを色拡大するために用いられるルー チンを識別する。 他のハードウェアインタフェースオブジェクトには、DACオブジェクト13 0(DACOBJ;表IX)、ビデオオブジェクト136、グラフィックスオブ ジェクト138(DRAWENGOBJ;表X)、及び、3Dグラフィックスオ ブジェクト140が含まれる。 DrawEngObjによって参照される基礎構造には、多数の基礎的な製図 機能が含まれる。この基礎構造は、APIコールに応答してGDIオブジェクト からのコールの線形実行内における機能への直接アクセスを可能にするためにG DIオブジェクトのコード空間内に保持された機能ポインタの1つのコピーを用 いて、製図エンジンオブジェクト内に確立される。基礎構造の定義を表XIに示 す。 これらオブジェクトの定義によって示すように、ハードウェアインタフェース モジュール76−88の各々は、オブジェクト、及び、オブジェクト特有のエン トリポイントの固定した集合を提供するハードウェア特有の拡張(エキステンシ ョン)の容易な管理を可能にする標準化済み部分を含む対応するハードウェアイ ンタフェースオブジェクトを確立するために初期化する。これらオブジェクト特 有のエントリは、カプセル封入されたハードウェアインターフェイスモジュール の初期化ルーチンにより、ポインタリファレンスを用いて充填される。ポインタ リファレンスは、論理的に参照される機能を提供するカプセル封入されたモジュ ール内の機能を対象とする。現行色深度、スクリーン解像度、または、他のコン トローラ関連特性に基づいて、論理的機能特有の具体化が異なる場合には、カプ セル封入されたモジュールは、対応する特有のエントリポイントを用いて具体化 されることが好ましい。エントリポイントの適当な部分集合は、オブジェクトエ ントリポイントに初期化されたポインタリファレンスによって識別され、それに よって、ディバイスドライバ50のオペレーション進行期間中に、当該コントロ ーラ19の現行特性状態のランタイムテストを繰り返すことなしに、特性に適切 なオペレーションを暗黙確立する。 従って、個々のオブジェクトは、オブジェクト構造の共通OBJHDR態様に 基づき包括的に管理可能であり、同時に、基礎となる機能的および具体化細目か ら独立し、特に、例えば現行色深度及びスクリーン解像度のような特性に基づく 機能の種々異なる具体化例を含むそれぞれ特定タイプのハードウェアインタフェ ースオブジェクトに対して充分に定義されたエントリポイントインタフェースを 確立するためにも用いることが出来る。 本発明の好ましい実施例において、ボード識別子から識別されたboard. dmmファイルが、クロック、DAC、または、ハードウェアカーソルの存在を 、ビデオディスプレイコントローラ19における存在程明確には指定しない場合 には、ボードドライバ74と静的にリンクした対応するデフォルトモジュールが 、デフォルトモジュールとして利用される。従って、ハードウェアインタフェー スモジュールの集合が識別され、ロードされ、そして、初期化された後で、ボー ドオブジェクトにおける空白(ナル)ポインタは、ボードドライバ74によって 検出される。例えば、ハードウェアカーソルオブジェクトが存在しない場合には 、ボードドライバ74は、オブジェクトを作成し、そして、ハードウェア従属エ ントリポイントを、ボードドライバ74内の対応するデフォルトルーチンに初期 化する。それによって、ハードウェアカーソルの機能性は、ソフトウェアエミュ レーションを介してサポートされるか、或いは、更に一般的には、ハードウェア インタフェースオブジェクトのなかの別のオブジェクトの本質的な構成要素とし て サポートされる。いずれにしても、デフォルトオブジェクトはボードオブジェク トにリンクされ、その後で、動的にロード及びリンクされたハードウェアカーソ ルオブジェクトと同じ本質的な機能性を提供する。 C.上位レベル初期化完了 一旦、ハードウェアインタフェースオブジェクトの初期化が完了すると、ボー ドドライバ74の初期化ルーチンはシェルモジュール72に戻る。次に、シェル モジュール72は、GRX APIオブジェクト71を作成するために進行する 109。GRXオブジェクトは、オペレーティングシステムインタフェースオブ ジェクト64、66、68への内部汎用または仮想化インタフェースとして役立 つ。GRXオブジェクト71は、表XIIに示す比較的簡単なインタフェースを 提供する。 GrxApiFastCopyコールエントリポイントは、オン‐スクリーン 及び、オフ‐スクリーンビデオメモリ内に配置されたビットマップを操作するた めに特にシェルモジュールを含む全てのオペレーティングシステムAPIレベル モジュールによって使用可能な共通アクセスポイントを提供する。共通アクセス ポイントの確立は、ビデオメモリ管理を簡素化する。同様に、GrxApiCo lorMatchコールエントリポイントも、スクリーン32の現行色深度にお ける論理的から物理的への色変換を実施するために、全てのオペレーティングシ ステムAPIレベルモジュールによって使用可能な共通アクセスポイントを提供 する。 オペレーティングシステムインタフェースオブジェクト64、66、68の確 立を開始するために110、GRXオブジェクト71のOBJHDR内の初期化 エントリポイントは、シェルモジュール72によってコールされる。本発明の好 ましい実施例において、GDI及びDDオブジェクト64、66は、GRXオブ ジェクト初期化ルーチン内において静的に識別される。その代わりに、又は、追 加的に、オペレーティングシステムインタフェースオブジェクトは、inter face.dat構成(コンフィギュレーション)ファイルへの参照によるシェ ルモジュール72によって識別可能である。識別されたオペレーティングシステ ムインタフェースモジュールは、シェルモジュール72と静的にリンクしなかっ た場合、記憶装置16に順次ロードされる112。 各オペレーティングシステムモジュールがロードされるにつれて112、モジ ュール初期化ルーチン114がコールされる。各オペレーティングシステムイン タフェースモジュールの初期化の結果として、は、対応するオペレーティングシ ステムインタフェースオブジェクトが作成される。ハードウェアインタフェース オブジェクトの場合と同様に、オペレーティングシステムインタフェースオブジ ェクトは、それぞれ、オペレーティングシステムインタフェースオブジェクトの 操作のための共通基準を確立するオブジェクトヘッダ基礎構造(CBJHDR) を含むことが好ましい。同様に、オブジェクトヘッダの使用は、ディバイスドラ イバ50による態様変更を合図するために、コールに対するサポートを提供する 。その結果として、オペレーティングシステムオブジェクトは、必要に応じて、 当該オブジェクトの各例示に関する専用データスペースをサポートする。 GDIオブジェクト120は、表XIIIに記載された定義を用いて作成され る。 GDIオブジェクト120は、標準Dibエンジンの基礎構造インタフェース (DibengObj)に関するリンク済み参照を含むか、或いは、提供する。 基礎構造を表XIVに定義する。 DibengObjの更なる標準基礎構造を表XV及びXVIに定義する。 表XV及びXVIは、直接ドローオブジェクト124を定義するオブジェクト を示す。 16ビット及び32ビット両環境における使用をサポートするためには、16 ビット及び32ビット両APIコールをサポートするディバイスドライバ50の 構成要素に対する16ビット及び32ビット両ポインタを提供するために、付加 ObjInstData基礎構造が用いられる。 最後に、各々のオペレーティングシステムインタフェースオブジェクトの初期 化が完了するにつれて、リンク116は、GRXオブジェクト71とGDI及び DDオブジェクト120、122との間で確立される。次に、GRX初期化ルー チンはシェルへ戻る。同様に、全てのオペレーティングシステムインタフェース オブジェクトはシェルオブジェクトにリンクされる。次に、シェルモジュール7 2の初期化ルーチンが戻る。 IV.操作状態コンフィギュレーション 各オペレーティングシステム及び対応する実行可能モジュールを論理的にカプ セル封入するハードウェアインタフェースオブジェクトを備え、単一文脈状態に おいて作動中のディバイスドライバ50の論理的コンフィギュレーションを図4 に示す。シェルドライバ74の論理的にカプセル封入されない部分は、一般化さ れたシェルライブラリ72’として常駐状態を維持する。同様に、ボードドライ バ74の論理的にカプセル封入されない部分は、ボードライブラリ74’として 常駐状態を維持する。両ライブラリ72’、74’は共通資源として機能し、デ ィバイスドライバ50の内部機能をサポートイする。従って、初期化されたディ バイスドライバ50は、ドライバソフトウェア透視図から、ディバイスドライバ 50によって提供されるオペレーティングシステムAPIを凝集的に確立するオ ペレーティングシステムインタフェースオブジェクト及びディバイスドライバ5 0とハードウェアインタフェースレジスタ30との間にハードウェアインタフェ ースを確立するハードウェアインタフェースオブジェクトによって定義される。 A.上位レベル関係 GDIオブジェクト120、直接ドローオブジェクト122、直接3Dオブジ ェクト124、及び、シャルオブジェクト126を含むオペレーティングシステ ムインタフェースオブジェクトは、オペレーティングシステム層54に提供され る部分APIの定義によって相互に論理的に分割されるオブジェクトの集合を表 す。既存のAPIコールサポートの改訂、及び、あらゆる特定のオペレーティン グシステムインタフェースオブジェクトへの新規APIコールの追加は、他のオ ペレーティングシステムインタフェースの具体化または動作(オペレーション) には、設計上、実質的に一切影響を及ぼさない。更に、オペレーティングシステ ム層54による新規定義によるか、或いは、アプリケーション60から直接発信 されたコールをサポートするためかいずれの場合であっても、新規部分APIの サポートは、対応するオペレーティングシステムインタフェースオブジェクト及 びカプセル封入されたオペレーティングシステムインタフェースモジュールの定 義を介して容易に提供可能である。ただし、新規または改訂したAPIコールが 、既存のオペレーティングシステムインタフェースオブジェクトによってサポー ト される他のAPIコールのうちの任意のコール以外の非常に異なる機能に関係す るか、或いは、前記機能を必要とする場合には、追加ライブラリルーチンが、シ ェルライブラリ72’に追加されることが必要となることも有り得る。 シェルライブラリ72’は、オペレーティングシステムインターフェイスオブジ ェクトの全集合によって使用可能な1組の共通または仮想化されたサポート機能 を確立するために役立つルーチンのライブラリを提供するために、オペレーティ ングシステムインタフェースモジュールから論理的に分割される。オペレーティ ングシステムインタフェースオブジェクトの各々は、(1)明確に定義されたA PIコールセットをサポートし、(2)サポートされた各APIコールに関する パラメータ妥当性検査を提供し、(3)ディバイスドライバ50の動作における 文脈変更に際して持続することが望まれるデータオブジェクトに関する専用デー タスペースを潜在的に管理し、(4)当該オブジェクトによってサポートされる APIコールの各々を機能的に具体化するために、順序付けられた1つ又は複数 の仮想化されたコールをシェルライブラリ72’に発行し、最後に(5)フォー マットし、そして、当該オブジェクトによってサポートされるAPIコールの各 々に適した方法においてオペレーティングシステム層54にデータを戻すことが 好ましい。 本発明によって認識されるように、ディバイスドライバ50への多くのコール のバリアント(異形体)は、異なる特定のAPIに向けられる。これらのバリア ントは、例えば特定の形式およびコールを備えた一連のオペランドデータのよう に、特有の態様が異なる。従って、特定のオペランドデータ妥当性検査は各AP Iコールに特有である。従って、各オブジェクトは、APIコール特有のオペラ ンド妥当性検査、および、潜在的には、この或いは他のオペレーティングシステ ムインタフェースオブジェクトによってサポートされる機能的に類似する他のA PIコールとは対照的に一体化される或るフォーマットへのオペランドデータの 変換を実施することが好ましい。従って、1つ又は複数のAPIコールの集合は 、ディバイスドライバ50に対して内部的に仮想化される。 各オペレーティングシステムインタフェースオブジェクトは、当該オペレーテ ィングシステムインタフェースオブジェクトによってサポートされるAPIコー ルのオペランドとして、関係するか、導出されるか、或いは、提供されるデータ オブジェクトを保存する必要性に応じて、文脈特有のデータスペースを管理する 。 例えば、GDIオブジェクト120は、所定の文脈におけるディスプレイポイ ンタ38の場合と関連したビットマップ済み解像度従属パターン又は色彩を定義 するデータオブジェクトを維持可能である。従って、既存の文脈のリザンプショ ンに際して、データオブジェクトは、この文脈においてディスプレイポインタ3 8のインスタンスを能率的に再実現するために使用可能である。再実現は、一切 の参加を必要とすることなしに、或いは、あらゆるアプリケーションプログラム 60又は当該オペレーティングシステム層54への通知さえも必要とすることな しに、完全にサポートされることに特に注意されたい。この例におけるデータオ ブジェクトは、それは、ディスプレイポインタ38のパターン又はカラーを初め にセットしたAPIコールのオペランドとして提供されるオリジナルデータオブ ジェクトから導出される。例えば新規な色深度に関係する新規文脈が作成される 場合において、新規データオブジェクトは、前の文脈のデータオブジェクトから の色深度変換によって導出される。先在している文脈への文脈スイッチに際して 、データオブジェクトの先在インスタンスが再使用され、その結果として、当該 ディスプレイポインタ38のインスタンスの再実現において情報は一切失われる ことはない。 同様に、GDIオブジェクト120のインスタンスは、パレット化されたカラ ーコンテキストにおいて、カラーパレットのみに限らず、順方向及び逆方向のパ レット変換表までも、パレット化されたコンテキストに特有のPDevice構 造の一部として維持されることが好ましい。Windows’95TMオペレーテ ィングシステムにおいて、オペレーティングシステム層54は、少なくとも当該 オペレーティングシステム層54から選定されたコールに関するディスプレイタ イプのディバイスドライバにパスされる或る情報を維持するために用いられるフ ィジカルディバイス(PDevice)構造への単一ポインタをサポートする。 PDevice構造の意図は、ハードウェア特有のコンフィギュレーションデー タを一般的に記憶するためにディバイスドライバ50によって使用可能な増補可 能なデータ構造を提供することにある。本発明は、パレット化されたコンテキス トに特有の色変換表を記憶するために用いられるだけでなく、各コンテキストに 関する新規PDevice構造を一般的に複製し、そして、対応するコンテキス トの色深度と合致する構造を増補する。PDevice構造の好ましい構造を表 XVIIに示す。 コンテキスト特有の持続性データオブジェクトとして効果的なカラーパレット 表のメンテナンスは、パレット化された文脈への文脈スイッチに際して、カラー パレット及び変換表の迅速な回復を可能にする。特に、パレット化されないコン テキスト期間中、及び、潜在的には、独立したカラーパレット及び変換表定義を 備えた独立PDevice構造を使用する他のパレット化されたコンテキスト期 間中において、PDevice構造の一部分としてカラーパレット変換表をメン テナンスすることは、同様に、パレットベース製図動作の継続をサポートする。 いずれにしても、パレット化されたコンテキストに対して論理的に実行するアプ リケーションからドライブされる進行中の製図動作は、カラーパレットデータ及 び対応するコンテキストの変換表に対して製図コマンドを変換または分解するこ とによって、現在活動中のコンテキストの色深度またはカラーパレットへ正しく 変換可能である。即ち、現在活動中でないコンテキストに対して論理的に実行す るアプリケーション60の製図コマンドは、現行コンテキストの色深度において 製図コマンドを実施するために現在活動中でないコンテキストのデータオブジェ クトの参照により、必要に応じて効果的に再実現される。現在活動中でないコン テキストのデータオブジェクトは、データ構造、特に各コンテキストを定義する ために用いられるシェルオブジェクトを探索することによって位置付けすること が出来る。 本発明の好ましい実施例において、オペレーティングシステムインタフェース オブジェクトは、いくぶんの薄い層を表す。当該インタフェースオブジェクトに よってサポートされる特有のAPIコールの各々に関する実行のスレッドを定義 するために適切であるように、APIコールは、高レベルにおいて、シェルライ ブラリ72’及びハードウェアオブジェクト130−140に対して実質的に線 形コールシーケンスへ仮想化されることが好ましい。一般に、シェルライブラリ 72’におけるルーチンへの共通コールの使用を最大化することが望ましい。逆 に、オペレーティングシステムインタフェースオブジェクトの機能を実質的にデ ータ妥当性検査、基礎データ変換、及び、サポートされる各APIコールに関す る線形実行スレッドの仕様に制限することが望ましい。 Windows’95TM具体化においては、オペレーティングシステム層54 が、かなり原子的なAPIコールをディバイスドライバ50へ発行する。従って 、殆ど全てのオペレーティングシステムインタフェースオブジェクトは、API コールを実施するために必要な実行スレッドを機能的に具体化するために、シェ ルライブラリ72’及びハードウェアインタフェースオブジェクトに対して少数 のコールを実施することになる。性能にとって好都合である場合、或いは、使用 が特定のAPIコールに実質的に制限される場合、或る種の実行機能は、オペレ ーティングシステムインタフェースオブジェクトによって実施可能である。特に 、座標の初期クリッピング及び変換は、オブジェクトを描写するためのAPIコ ールに応答するオペランドの妥当性検査と協調して、オペレーティングシステム インタフェースオブジェクトによって実施可能である。別の出所からの新規デー タオブジェクトの内容を導出するために色深度変換を実施し、次に、スクリーン 32に対して製図動作を実現するために、更に実質的なルーチン、又は、例えば 、新規な継続性データオブジェクトの記憶を確立するために用いられるルーチン のような多重APIコールによって一層必要になると推測されるルーチンが、シ ェルライブラリ72’及びハードウェアインタフェースオブジェクトにおいて適 切 であるように、実行されることが好ましい。 従って、所要の新規データオブジェクトの作成を要求し、そして、当該オブジ ェクトに対するポインタを最終的に取り戻して受け取るために、例えば、最初の APIコールは、オペレーティングシステム54によって、対応するオペレーテ ィングシステムインタフェースオブジェクトに対して行われる。コールの仮想化 された線形スレッドは、結果として割当を要求し、記憶装置内にロックし、そし て、結果として得られるオブジェクトへポインタを戻すシェルライブラリ72’ へのコールと共に始まる。これらのリクエストの実施に際して、シェルライブラ リ72’は、オペレーティングシステム層54への要求されるオペレーティング システムAPIコールを中継する必要性に応じて、オペレーティングシステムイ ンタフェースオブジェクト128を順次にコールする。シェルライブラリ72’ によってサポートされるこのような個々の機能の線形化は、プリエンプティブオ ペランドの妥当性検査およびオペレーティングシステムインタフェースオブジェ クトによって実施される仮想化によって可能になる。オペランドデータは、シェ ルライブラリ72’又はハードウェアインタフェースオブジェクトの任意のオブ ジェクトが、特定のAPIコールから後続する各処理過程に適したフォーム及び フォーマットにおいてコールされる以前に、確立される。従って、例外的条件を 扱うため、或いは、データが利用可能か、又は、処理用として受け入れ可能なフ ォーマットであるかどうかを決定するための全ての、或いは、殆ど全部の条件付 ブランチは、オペレーティングシステムインタフェースオブジェクトのレベル以 下が除去される。即ち、オペランドデータの存在、フォーム及びフォーマットに 関してチェックするための進行中の条件付きブランチング無しに、仮想化された APIコールの具体化が実質的に線形化される。更に、現行色深度および機能に 適した解像度に対する機能ポインタを備えたハードウェアインタフェースオブジ ェクトを初期化すると、ディスプレイ32の現行作動状態に関してチェック及び 調節するために進行中の条件付きブランチングを排除する。 次に、オペレーティングシステムオブジェクトに対するその次のAPIコール は、新規に製作されたデータオブジェクトにおける識別されたデータオブジェク トの変換に向けられることもある。オペレーティングシステムインタフェースオ ブジェクトを介して行われるその次のAPIコールは、以前に作成され、かつ、 変換されたAPIコールによって識別されるデータオブジェクトを用いて、特有 の製図動作を指定することが出来る。各API製図コールは、1つ又は複数のコ ールによる実質的に線形のシーケンスを、特定の製図動作を実現するために適切 であるように、シェルライブラリ72’及びハードウェアインタフェースオブジ ェクトへ再び発行することにより、受取りオペレーティングシステムインタフェ ースオブジェクトによって実行される。 従って、オペレーティングシステムインタフェースオブジェクトの各々は、最 小複製コードを含んだ状態で、オペランド検証およびフォーマット変換を実施す ることによってコールの仮想化を最大にするように定義される。従って、シェル ライブラリ72’は、オリジナルのオペランドデータの妥当性再検査、変換、ま たは、再フォーマット化を反復することに起因する実行性能的な罰を受けること なしに最大限に使用される。更に、オペレーティングシステムインタフェースオ ブジェクトは、コントローラ19の動作特性に関して連続的に再評価および調節 する必要性なしに、即座に利用可能な機能ポインタを介して、ハードウェアイン タフェースオブジェクトへ直接コールアクセスする機能を備える。 シェルライブラリ72’は、オペレーティングシステムインタフェースオブジ ェクトから受信した共通仮想化されたコールの効果的拡張および具体化を同様に 提供可能である。シェルライブラリ72’へのこの種のコールは、結果的にハー ドウェア特有の機能を呼び出すために、ハードウェアインタフェースオブジェク トに向けられた一般的に短く実質的に線形のコールシーケンスに拡張されること が好ましい。シェルライブラリ72’によってコールされたハードウェアインタ フェースオブジェクトの特定の集合または部分集合は、オペレーティングシステ ムインタフェースオブジェクトから受信した特定のコールに高度に依存する。た だし、シェルライブラリ72’によって行われたコールの各々は、ハードウェア インタフェースオブジェクトデータ構造の仮想化された定義の結果として、ハー ドウェアインタフェースオブジェクトの集合と効果的な仮想関係を保持する。即 ち、ハードウェア金属製品インタフェースオブジェクトの構造定義は、当該オブ ジェクトによってカプセル封入された特定のハードウェアインタフェースモジュ ールの具体化から独立した、各オブジェクトタイプに関して実質的に固定される 。 従って、オペレーティングシステムインタフェースオブジェクト並びにシェル ライブラリ72’からハードウェアインタフェースにオブジェクトまでのコール は、ハードウェアインターフェイスモジュールの実際の具体化から抽出される。 APIコールを実現するために用いられる短く実質的に線形のコールシーケンス を使用することによって、 仮想化されたAPIコールの実行速度は最大化され る。 B.下位レベル構成(コンフィギュレーション)の関係 ハードウェアインタフェースオブジェクトとオペレーティングシステムインタ フェースオブジェクトとは、両者共に、コントローラ19のインタフェースレジ スタ30とインターフェイスするために必要とされるハードウェア特有のオペレ ーションを定義する薄い層として実現されることが好ましいという点において類 似する。ハードウェアインタフェースオブジェクトは、(1)サポート支援支持 物‖特定タイプのハードウェアサブエレメントに特有の明確に定義されたオペレ ーションの集合をサポートし、(2)サポートされる各オペレーションの機能を 実現するために、関連ハードウェアインタフェースレジスタの少なくとも論理的 なプログラミングを提供し、(3)当該ディバイスドライバ50のオペレーショ ンにおいてコンテキストを通じて持続することが望まれるデータオブジェクトに 関する専用データスペースを潜在的に管理し、そして、最後に(4)インタフェ ースレジスタ30から直接的或いは間接的に読取られたデータを返すことに機能 的に制約されることが好ましい。 特定のタイプのハードウェアインタフェースオブジェクトによってサポートさ れるオペレーションは、オブジェクト構造の一部として定義される。一般に、ハ ードウェアインタフェースオブジェクトへのコールは、結果的に、インタフェー スレジスタ30の1つ又は複数のレジスタに対するリファレンス及び参照された レジスタにプログラムされるべきデータ値のストリングを生成する。レジスタの プログラミングは、実際には、ボードライブラリ74’へのコールに応答して実 施されることが好ましい。シェルライブラリ72’の場合と同様に、ボードライ ブラリ74’は、ハードウェアインタフェースオブジェクトによって使用される 一般化されるか或いは共通のルーチンを終結する。従って、コードの重複は全体 的に減じられ、そして、記憶装置16のアドレススペース内のディスプレイバッ ファ20をロードし、定義し、そして、管理するためのルーチンを含む詳細なレ ジスタインタフェースルーチンは、当該ディバイスドライバ50の他の全ての態 様から実質的に分離された明確に定義された場所に主として配置される。この場 合における1つの重要な例外は、グラフィックスハードウェアインタフェースオ ブジェクト138に関係して発生する。性能上の目的から、このオブジェクトは 、レジスタインタフェース30及びディスプレイバッファ20に対して直接作動 することが好ましい。従って、ボードライブラリ74’は、ディスプレイバッフ ァ20の現行ロケーション及び定義を戻すルーチンを提供することが好ましい。 コントローラ19の対応するサブエレメントのハードウェアインタフェースへの 直接アクセス機能を備えることにより、ビデオ及び3Dハードウェアインタフェ ースオブジェクト136、140も、同様に、利益を得るはずであることが予測 される。 従って、ハードウェアインタフェースオブジェクトを介してオペレーティング システムインタフェースの間に成立する効率的に成層化かつ仮想化された関係が 、本発明によって確立される。この仮想化された関係は、当該ディバイスドライ バ50への2つの異なるAPIコールの実行フローを追跡することにより、実演 により容易に示される。 V.操作状態コンテキスト及び態様の切換え(スイッチング) 本発明の好ましい実施例において、ビデオディスプレイコントローラ19は、 多くの異なる水平及び垂直或いは空間的解像度、及び、多くの異なる色深度にお いて動作可能である。通常のコンピュータシステム10は、異なる空間解像度お よび色深度に対して最適的に作動するアプリケーション60の多様性をしばしば 実行する。実際問題として、コンピュータシステム10において共同実行するこ とを試みるアプリケーション60の空間および色深度に関する必要条件および操 作上の制限条件は、空間解像度と色深度が相互に排他的でない場合には、アプリ ケーション60を継続実行するためにはしばしば最適でないような空間解像度及 び色深度に共同実行を制限することがあり得る。 ディバイスドライバ50のアーキテクチャは、本発明に従い、ディバイスドラ イバ50の作動状態において、単独およびコンテキストスイッチ(切換え)との 組合わせにより、モードスイッチ(切換え)動作を提供する。モードスイッチ及 びコンテキストスイチの両切換えは、アプリケーション60及びオペレーティン グシステム層54のコンテキスト状態から実質的に独立して実施され、そして、 特に管理される。既存のモードの特定のアスペクトに特有なデータが、モードス イッチを通じて継続しなければならない場合には、モードスイッチは単独で実施 可能である。コンテキストスイッチは、独立したコンテキストにおけるモードデ ータの継続的記憶を提供するために、モードスイッチと組合わされてディバイス ドライバ50によって実施される。従って、ディバイスドライバコンテキストス イッチ(切換え)は、特定のコンテキストと関連した持続的データオブジェクト における状態およびモード特有データの記憶により、状態的コントローラのモー ド変更をサポートするために用いられる。ディバイスドライバ50によるコンテ キスト文スイッチのコンテキスト及び動作の管理は、アプリケーションプログラ ム60を変更することなく、オペレーティングシステム核56に極く僅かな特有 の修正を施すことによりコンテキスト文切換えを可能にする。 A.一定コンテキストモードのスイッチ(切換え) モードスイッチをサポートするためには、支援支持物にオペレーティングシス テム核56は、そのウィンドウが現行ポインタの焦点調節を有するアプリケーシ ョン60用として事前に選定された空間解像度へビデオコントローラ19を切換 えるために、ディバイスドライバ50に向けてAPIコールを発信する核56へ のパッチ62をインストールすることによって修正される。更に進歩したオペレ ーティングシステム54は、オペレーティングシステムパッチをインストールす る必要性なしに使用できる事象の生成を組み込み方式により提供可能である。パ ッチインモードにおいて設定されたAPIコールはシェルオブジェクトにフック され、そして、物理的ディスプレイ32の所望新規空間解像度を提供することが 好ましい。APIコールは、所要空間解像度と組合わせた色深度も指定するはず である。所望色深度および空間解像度の両方が現行色深および空間解像度と同じ である場合には、単にAPIコールが戻るだけである。空間解像度だけが異なる 場合には、モード切換え(スイッチ)の実施だけが必要である。モードスイッチ を実施するために必要とされるコントローラモード設定変更は、ディバイスドラ イバ50のその時点現在のコンテキストにおいて実施される。 本発明の好ましい実施例によれば、1つの単一コンテキスト内におけるモード 設定変更は、主として、シェルオブジェクト126及びシェルライブラリ72’ の制御の下に実施される。シェルオブジェクト126へのAPIコールは、モー ド設定が実施されるべきであることを指定する。シェルオブジェクト126は、 所望の色深度及び空間解像度を獲得するために、O/Sオブジェクト128を介 して、オペレーティングシステム層54にコールする。シェルオブジェクト12 6は、最初に、所望空間解像度を指定する返されたオペランドの妥当性を確認す る。次に、オペレーティングシステム及びハードウェアインタフェースオブジェ クトの各々を順次にコールするために、最初に「モード変更直前」オペランドを 用い、次に、「モード変更」オペランドを使用し、最後に「モード変更完了」オ ペランドを用いて、シェルライブラリ72’のセットモードルーチンが、シェル オブジェクト126によって、コールされる。 「モード変更直前」オペランドを用いた最初のコールは、コントローラ19に 対してドライバ50の状態を静止させるために必要な事象のシーケンスをディバ イスドライバ50内において開始する。特に、シェルライブラリ72’のモード 設定ルーチンは、モード設定に参加することが必要な現行コンテキスト内におい てオペレーティングシステム及びハードウェアインタフェースオブジェクトの各 々を識別するために作動する。これらのインタフェースオブジェクトは、オブジ ェクト特有のRegClassHandler構造に対して有効または非無効の ポインタを有するオブジェクトとして識別される。次に、モード設定コールは、 参加している各オブジェクトに対して順々に配置される。これに応答して、各オ ブジェクトは、現行状態データを、例えば現行PDevice及びGDI_In fotable構造のようなシステムデータ構造に、或いは、オブジェクト自体 の専用データスペースに、現行コンテキスト内に明確に定義された実行状態を確 立するために適切であるように、順々に保管するために実行する。最後の参加オ ブジェクトの戻りが完了すると、ディバイスドライバ50の動作の実質的な静止 が完了する。次に、シェルライブラリ72’は、シェルオブジェクト126に戻 る。 次に、「モード更変」を指定する第2のモード設定コールは、シェルオブ ジェクト126によって、シェルライブラリ72’に発信される。「モード変更 」オペランドを用いてシェルライブラリ72’によりコールされると、ボードラ イブラリ74’は、空間解像度と色深度との所望組合わせに対応する「Sect ionName」を構成する。次に、所定の「SectionName」によっ て識別されるセクションを位置決めするにはsystem.iniファイルの場 合と全体的に同じ構造シンタックス(構文)を有することが好ましいmodes .dmmコンフィギュレーションファイルを走査するために、オペレーティング システムインタフェースオブジェクト128を介して、O/S APIコールが 行われる。Windows’95TMの具体化例において、画素当たり8ビットの 色深度であって1024x768の空間解像度を定義するSectionHea derは、[1024,768,8]として指定される。 所定のSectionHeaderに後続するテキストは、シェルライブラリ 72’によって読み取られ、そして、パーズ(オペランド解析)される。このテ キストは、オペレーションの新規コントローラモードを設定するためにコントロ ーラ19の各参加サブエレメントに対して実施されなければならない特定のモー ド設定命令の構造化された仕様を表す。好ましい実施例において、モード設定命 令は、RBGISTERCLASS、COMMAND、及び、アーギュメントの ようなコンマで区切られた項で構成されたライン指向文である。好ましい実施例 において、コントローラ19のどのサブエレメントが特定の命令に応答してプロ グラムされるべきかを最終的に決定するために、RegClassHandle r構造の「クラス名」フィールドは、命令のREGISTERCLASS項に相 互関係を持つはずである。 現在4つの直接実行コマンドが有る、即ち、ラン(RUN)、リード/マスク /ライト(RMW)、ディレイ(DLY)、及び、Int10(I10)である 。 本発明の好ましい実施例においてサポートされる第5番目の命令は、論理的に 含み、それによってパーズすることをシェルライブラリ72’のパージングルー チンに指示する組込み指令疑似命令であり、modes.dmmファイルにおけ る組込み指令指定されたSectionNameの下で用いられる。ランコマン ドの命令フォーマットを次に示す: REGISTERCLASS、RUN、REGISTERNAME、 value1、value2、value3 REGISTERNAME項は、RBGISTERCLASS結合を使用し、 RegclassMap構造へのRegclassHandler構造を介して 追跡可能な論理名を提供する。論理REGISTERNAME名は、レジスタイ ンタフェース30内の特定レジスタに究極的に分解される論理ポートアドレスに 対するRegclassMapにおいて定義される。命令の実行において、シェ ルライブラリ72’のパージングルーチンは、REGISTERNAMEのポー トアドレスに第1の値「value1」を記入する。次に、RegClassM apにおいて識別されるその次の順次的なポートアドレスには、第2の値「va lue2」が記入される。従って、論理的に順序付けられたポートのアドレスに は、特定のランコマンドによって提供される全ての値の記入が完了するまで、連 続した値が記入される。 リード/マスク/ライトコマンドの命令フォーマットを次に示す: REGISTERCLASS、RMW、REGISTERNAME、 ANDMask、XORMask この命令の実行に際して、シェルライブラリ72’のパージングルーチンは、 最初に、REGISTERNAMEに対応するポートアドレスから値を読み取り 、ANDMaskの値の2進ANDを実施し、そして、XORMaskの結果の 2進XORを実施する。次に、上記の結果が、REGISTERNAMEポート のアドルスへ戻って記入される。 ディレイコマンドの命令フォーマットを次に示す: SHELL、DLY、DelayValue この命令のRegisterClassは常に「SHELL」である。その理 由は、一切のハードウェアインタフェースオブジェクトは、当該命令の実行には 直接的に関係していないことに因る。この命令の実行に際して、シェルライブラ リ72’のパージングルーチンは、50マイクロ秒の倍数であることが好ましい DelayValueによって指定された期間中、ソフトウェアベース又はハー ドウェアベースいずれかの待ちを実行する。ディレイ命令は、ハードウェアプロ グラミングのセットアップタイムは守られなければならないが、レジスタによる 読取り可能信号がハードウェアによって供給されない場合に有用である。遅延時 間が終了した後においては、パージングルーチンは単純に継続する。 Int10コマンドの命令フォーマットを次に示す: SHELL、110、EAX、EBX、ECX、EDX この場合にも、この命令のRegisterClassは、常に「SHELL 」である。その理由は、一切のハードウェアインタフェースオブジェクトは、当 該命令の実行には直接的に関係していないことに因る。シェルライブラリ72’ のパージングルーチンは、ソフトウェア割込み10を実施し、そして、割込みに 際して対応するCPUレジスタ内に、当該命令のアーギュメント(引き数)を提 供するためにO/Sオブジェクト128をコールすることによって、この命令を 実行する。 最後に、組み込みコマンド特有の命令フォーマットを次に示す: SHELL、INC、SectionName 組み込みコマンドは、modes.dimmファイルの現行セクションのパー ジングを効果的に中断し、そして、「SectionName」によって識別さ れるセクションをパーズすることをシェルライブラリ72’のパージングルーチ ンに指示する。含まれるセクションのシェルライブラリ72’によるパージング が終了した後で、中断されたセクションのパージングが再開する。 modes.dimmファイルによって提供された命令の実行に際して、シェ ルライブラリ72’は、特定の命令を対応するハードウェアインタフェースオブ ジェクトと結合するために、RBGISTERCLASS項を利用する。命令は 最終的にコントローラ19のオペレーティングモードのプログラミングに向けら れるので、本発明の好ましい実施例において、オペレーティングシステムインタ フェースオブジェクトは、命令の一切のREGISTERCLASS項によって 引用されることはない。 命令が実行されるにつれて、当該命令の実行に必要なリード/ライトオペレー ションを実施するために、対応するRegClassHandler構造におけ るRead_reg及びWrite_regエントリがパージングルーチンによ ってコールされる。RegClassHandler構造はオブジェクトに特有 であるので、Read_reg及びWrite_reg機能は、同様に、REG ISTERNAME項によって識別される特定のオブジェクトに特有である。 本発明の好ましい実施例において、命令の実行においてレジスタ/アーギュメ ントペアが獲得される場合には、各オブジェクトのWrite_reg機能は、 レジスタ/アーギュメントペアを、実際に記入されるべきレジスタのハードウェ ア特有表現に効果的に変換することを提供する。レジスタ/アーギュメントペア は、当該命令の実行によって、フラットであって順序付けられた論理的レジスタ モデルに効果的に記入される。Write_reg機能は、当該ペアをサブエレ メントハードウェア特有モデルに変換する。例えば、DACインタフェースオブ ジェクト130特有の情況において、論理レジスタ指標値、及び、索引論理レジ スタに記憶されるべき値を用いてプログラムされる次の順次ベースレジスタによ ってベース物理レジスタがプログラムされることを要求する多重化レジスタモデ ルへの変換が行われる。従って、DACインターフェイスオブジェクト130の Write_reg機能へのコールにおいては順次レジスタが引用されるが、物 理ベースレジスタの単一ペア作成は当該機能によって記入される。 各オブジェクトのRead_reg機能は、同様の変換を実施する。引用され た論理レジスタは、対応する物理ベースレジスタに対する基準に変換される。D ACインターフェイスオブジェクト130の場合においては、正しい値が読み取 り可能であるように、論理レジスタを定義するインデックスを用いたベース物理 レジスタのプログラミングが変換に含まれる。 他のインタフェースオブジェクトは、コントローラ19の他のサブエレメント のプログラミングに適するように、当該命令のフラットな順次レジスタモデルの 直列またはビット順次モデルへの変換を提供可能である。従って、順次レジスタ /アーギュメントペアは、コントローラ19の特有サブエレメントのプログラミ ングに適したプログラム値のビット直列シーケンスが後続する論理レジスタ指標 値に変換される。 一例として、Diamond Stealth 64 Video DRAM ビデオコントローラは、S3 Vision868グラフィックスアクセラレー タチップを利用して、グラフィックスモードを作動可能化するように選択的にプ ログラムすることが可能である: グラフィックスモードの非作動化: 1024x768x8モードへのスイッチ: 好ましい実施例において、ハードウェアインタフェースオブジェクトのWri te_reg及びRead_reg機能は、レジスタインターフェイス30に対 するハードウェア読み及び書きオペレーションを実際に実施するために、ボード ライブラリ74’における多数の機能を利用する。この間接性追加レベルは、コ ントローラ19の異なるハードウェアサブエレメントに関して、コントローラ1 9の特定モデルに応じて異なる物理アドレスに存在することを可能にする。従っ て、特定のハードウェアインタフェースオブジェクトは、コントローラ19のサ ブエレメントの特定プログラミングを十分に表すが、ボードライブラリ74’は 、コンピュータシステム10の物理アドレス空間内において、サブ‐エレメント を暗黙裡に位置決めする。従って、Write_reg機能コールを介してDA Cインタフェースオブジェクトによって識別されるベース物理レジスタは、それ 自体、DACサブエレメントに論理的に関係する。ボードライブラリ74’は、 レジスタインターフェイス30の物理システムアドレス空間内においてレジスタ を位置決めするために、DACベース物理レジスタ用の物理アドレッシングオフ セットを供給する。 物理アドレッシングオフセットを確立するために、ボードライブラリ74’は 、結果的に、コントローラの主要タイプのサブエレメントに特有であるような多 数の読み及び書きルーチンを提供する。例えば、クロックインタフェースオブジ ェクトは、コントローラ19の明確に定義された特有のサブエレメントを制御す るが、通常は、DACサブエレメントと関連したレジスタ内に設置されるか或い はこれを介してアクセス可能であるようなプログラム可能クロックゼネレータを 参 照する。従って、DAC及びClock両インタフェースオブジェクト用として ボードライブラリ74’によって提供される物理アドレッシングオフセットは同 じであるはずである。 ボードライブラリ74’は、フラットな順次物理レジスタセットをアドレスす るハードウェアインタフェースオブジェクトに関するBoarRead_reg 及びBoardWrite_reg機能をサポートすることが好ましい。Boa rdRead_DAC、BoardWrite_DAC、及び、BoardWr ite_DAC_Array機能は、多重化レジスタの読み書きをサポートし、 そして、コントローラ19によって確立される場合におけるDACサブエレメン トの物理レジスタアドレス空間内に配置されたカラーパレットアレイに記入する ために、ボードライブラリ74’によって提供される。 最後に、コントローラ19の直列プログラムされたサブエレメントへの直列記 入オペレーションをサポートするために、BoardWrite_Serial Device_start及びBoardWrite_SerialDevic e_end機能が提供される。 modes.dmmファイルから走査された命令が一旦実行されると、コント ローラ19のオペレーティングモードは、所望の空間解像度および色深度の対応 するいうに変更される。次に、シェルライブラリ72’は、当該コールに対する オペランドとしての「変更モード」を有するインタフェースオブジェクトの参加 集合のモード設定機能の各々に対してコールする。インタフェースオブジェクト は、コントローラ19の新規オペレーティングモードを確立するために必要な任 意のサブエレメント特有のルーチンを実行するために、このコールを利用する。 レジスタインタフェース30におけるレジスタに必要なあらゆるプログラミング 又はディスプレイバッファ20の直接操作はこの時に実施される。最後のインタ フェースオブジェクトが、このモード設定コールから戻った場合には、シェルラ イブラリ72’がシェルオブジェクト126へ戻る。 次に、「モード変更完了」オペランドを用いた、当該モード設定における各参 加インタフェースオブジェクトへの第3及び最終コールが、シェルライブラリ7 2’によって行われる。オペレーティングシステムインタフェースオブジェクト に先立って、参加ハードウェアインタフェースオブジェクトがコールされる。各 インタフェースオブジェクトがコールされるにつれて、当該オブジェクトは、コ ントローラ19の新規オペレーティングモードにおけるコントローラ19のサブ エレメントのオペレーションをサポートするために必要な任意のハードウェア特 有オペレーションを実行する。一般に、ハードウェアインタフェースオブジェク トは、このコールに応答して単純に戻る。特定のオブジェクトが空間解像度、色 深度、または、他のディバイス特性に基づく具体化依存性を有する場合には、1 つの例外が存在する。例えば、Graphicsオブジェクト138のようなハ ードウェアインタフェースオブジェクトによってカプセル封入されたモジュール が、例えば色深度によって区別される同じ論理機能をサポートする多重ルーチン を提示する場合には、当該オブジェクト構造のコールエントリポイントにおける 機能ポインタは、新規色深度に適したルーチンをポイントするように更新される 。 オペレーティングシステムインタフェースオブジェクトは、ディスプレイ解像 度、色深度、または、当該コントローラ19の新規オペレーティングモードの他 のディバイス特性に対応するように、現行コンテキストにおいて存在するデータ オブジェクトを再実現するために、この「変更モード」コールを利用することが 好ましい。特に、例えばGDIオブジェクトのようなオペレーティングシステム インタフェースオブジェクトは、ディスプレイ32に目に見える特徴を表示する ビットマップデータオブジェクトを管理し続けることが可能である。従って、特 定のオペレーティングシステムオブジェクトは、先ず、オペレーティングシステ ムインタフェースオブジェクトによって頻繁に使用される任意の変更済みハード ウェアインタフェースオブジェクト機能ポインタを、時宜を得たコールの発信を サポートするオペレーティングシステムインタフェースオブジェクトのローカル コード空間にコピーすることが好ましい。次に、新規ディスプレイ32の空間解 像度にマッチするように実際のビットマップ解像度データオブジェクトを調節す るために、ビットマップの線形補間が実施されることが好ましい。 オペレーティングシステムインタフェースオブジェクトは、必要に応じて、対応 する更新オペレーションを、ディスプレイ32を効果的にリフレッシュするよう に導くことにより最終的に「モード変更完了」モード設定コールに応答する。こ の種の更新は、コントローラ19の新規オペレーティングモードにおいてディス プレイ32上に見えるデータオブジェクトの再実現を完了したあらゆるオペレー ティングシステムインタフェースオブジェクトに関して特に実施される。一旦ス クリーンリフッレシュが完了すると、シェルライブラリモード設定ルーチンはシ ェルオブジェクトへ戻り、その結果として、前記のシェルオブジェクトがモード 設定APIコールから戻る。このようにして、現行コンテキスト内においてモー ドを変更する過程が終了する。 A.組合わせコンテキスト及びモードスイッチ(切換え) 好ましい実施例において、コンテキストスイッチ(文脈切換え)は、新規色深 度へのコントローラ19モード設定をサポートするために、モードスイッチ(態 様切換え)と組合わされて実施される。コントローラ19の現行オペレーティン グモードの色深度と異なる特定の色深度を予測して実行するアプリケーション6 0の代わりのAPIコールは、現行色深度に従わなければならない。特に、この 種のAPIコールが、持続的パレット又はカラーマップの存在を信頼して、ディ バイスドライバ50に対して行われる場合には、コンテキストのサポートが望ま しい。代替案として、オペレーティングシステムによってサポートされても差し 支えない。オペレーティングシステム核56へのコール可能なエントリポイント は、目標色深度へのO/S APIコールインタフェースにおけるか、或いは、 それ以上において、全ての常駐ビットマップの色深度変換を提供することが可能 である。ただし、この種変換の効率及び可逆性、及び、実際に可変であるビット マップの一定のフォーム及びフォーマットに関する持続的な仮定に基づくオペレ ーティングシステム層54と相互作動するアプリケーションとディバイスドライ バとの間の潜在的非互換性に関して問題が存在する可能性がある。従って、ディ バイスドライバ自体内におけるコンテキストの切換え、即ち、分離されることは 、スイッチング交換切換えは、多くの異なるオペレーティングシステム具体化の 中においても一層強固かつ移植的であるものと推察される。 パレット及び他の持続的データは、各コンテキストによって維持され、従って 、この種のコンテキストが現在活動中でない場合であっても、基準として利用可 能 である。コンテキストは、ディバイスドライバ50の初期化に際して、デフォル トによって作成される。追加コンテキストは、新規変更へのモード変更に関して ディバイスドライバ50に対して行われたAPIコールに応答して、必要に応じ て作成される。 さて、図5aを参照することとし、シェルライブラリ72’は、少なくとも初 期において、1つの単一シェルオブジェクト150、及び、潜在的に、追加シェ ルオブジェクト152、154、156を含むメモリプール148を管理する。 シェルオブジェクト150、152、154、156の各々は、ディバイスドラ イバ50内の独立したコンテキストを表す。1つ又は複数のシェルオブジェクト 150、152、154、156は、任意の時点において、1つ又は複数の現在 実行中のアプリケーション60の色深度を表すために適切であるように、プール 148内に存在可能である。その時に実行中の一切のアプリケーション60がコ ンテキストによってサポートされる色深度を引用しない場合に、シェルオブジェ クト150によって表されるコンテキストを含むコンテキストは、後で閉じてい ても差し支えない。シェルオブジェクト148のプールを管理することに加えて 、シェルライブラリ72’は、同様に、現行コンテキストポインタ158を維持 する。このポインタ158は、コントローラ19の現行オペレーティングモード に対応するか、或いは、これを論理的に定義する特定のシェルオブジェクト15 0、152、154、156を識別するために用いられる。 図5bに全体的に示すように、ディバイスドライバ50のオペレーションにお けるコンテキストを定義するためにシェルオブジェクトを使用することにより、 ディバイスドライバ50内のそれぞれのコンテキストにおいて明白なインタフェ ースオブジェクト170、172の例示を可能にする。インタフェースオブジェ クト170、172のそれぞれの例示に関して、専用データ空間174、176 は、それぞれのインタフェースオブジェクト170、172に割当てられ、そし て、これと対応付けられる。ただし、特定のインターフェイスオブジェクト17 0の全ての例示は、共用インタフェースモジュール178を共同でカプセル封入 する。インタフェースモジュール178の実行に際して、専用データスペース1 74、176への参照は、それぞれのインタフェースオブジェクト170、17 2に設立された独立ポインタを介して作動可能化される。従って、インタフェー スモジュール178は、特定のコンテキストにおいて、正しいオブジェクトに暗 黙裡に接続される。即ち、モジュール178は、多重コンテキストの存在に関す るアスペクトを明白に管理することを要求されない。むしろ、コンテキストの管 理および操作機能は終結し、そして、シェルライブラリ72’のルーチンによっ て実施される。 コンテキストスイッチを実施する過程は、図6a及び6bに示す過程段階に従 って発生する。コンテキストスイッチは、例えば、現行コンテキストの色深度と 異なる色深度へのモード変更のような現行モードの或る種のアスペクトに持続性 を要求するオペレーティングモードへのモード変更を少なくとも推論的に指定す るAPIコールを受け取るシェルオブジェクトの現在活動中のコンテキスト例示 150と共に始まる。前の場合と同様に、シェルオブジェクト150は、API コールのオペランドの初期妥当性検査を実施し、コンテキストスイッチが必要と されることを判定し、そして、新規コンテキスト作成コール180をシェルライ ブラリ72’に発信する。シェルライブラリ72’は、所望の色深度を有するコ ンテキストが既に存在するかどうかを判定するために184その時点においてコ ンテキストプール148内に存在する可能性のあるシェルオブジェクトの存在例 示の各々を調査する。例えば、シェルオブジェクト152のような、所望の色深 度を有するシェルオブジェクトの例示が存在する場合には、シェルライブラリ7 2’への新規コンテキスト作成コールはシェルオブジェクト150に戻る。 ただし、その時点において所望のコンテキストが存在しない場合には、新規シ ェルオブジェクト例示が作成されるはずである186。この新規シェルオブジェ クトの作成に先立ち、コンテキスト変更が、以前にはサポートされなかった色深 度に関するサポートを必要とするような第1の変更である場合には、シェルライ ブラリ72’は、対応する色深度変換に関するサポートを有するように修正可能 である。本発明の好ましい実施例において、シェルライブラリ72’は、第2の 存在コンテキストの作成に関して、単に利便性に関わる問題として、全ての可能 な色深度変換に関するサポートを有するように修正される。詳細には、ただ1つ の単一コンテキストが用いられている場合であっても、色深度変換が、各々の、 及び、全ての製図オペレーションに適用可能であるかどうかに関する一定の条件 付きテストを排除するように、現行色深度と目標色深度とを判定し、両者の間の 変換を行うためのルーチンは、シェルライブラリ72’のコードに直接パッチさ れる。 本発明の色深度ルーチンは、8、16、24、及び、32ビットの色深度の間 におけるディバイス従属ビットマップの極めて迅速な変換を提供する。16、2 4、及び、32ビット色深度の間の変換は、現行ディスプレイ色深度における各 ディスプレイ画素に関して記憶されたRGE色値順組(カラーバリュータプル) の間に直接マッピングすることにより実施される。先ず、ソースアプリケーショ ンのコンテキストPDevice記憶されたカラーパレット及び変換表において RGBカラーバリュータプル(色値順組)を調べ、そして、次に、再び、現行デ ィスプレイ色深度への直接RGBカラーマッピングを実施することにより、画素 当たり8ビットのカラーインデックス(色指標)を用いてパレット化された色空 間からの変換が実施される。 16、24、または、32ビットの色深度から8ビットパレット化フォームへ の変換は更にある程度複雑である。この変換には、変換されつつある各RGBタ プル(順組)のための最適条件(ベストフィット)に関する8ビット色空間の調 査が必要である。一般に、最適カラーマッピングを見付けるためには、最小平均 二乗アルゴリズムを使用することが出来る。重要な性能改良は、変換された色を キャッシュすることによって達成できる。例えば、32ビットRGBタプルを8 ビットパレットインデックスに変換する際には、8,192個の32ビットキャ ッシュエントリを備えた基礎キャッシュテーブルを用いることが出来る。各10 ビットRGB値が3ビットだけ精度低下されると、21ビットタプルになる。従 って、現行カラーパレットに対して極めて迅速な最小平均二乗最適化を実施する ことによって決定される8ビットパレットインデックス値は、迅速変換参照表を 確立するために、各21ビットタプルを用いてキャッシュすることが出来る。次 に、後続する色変換により、先ず、事前変換されたパレットインデックスに関す る表を探索することができる。従って、全ての色深度変換は、シェルライブラリ 72’により、各API開始製図オペレーションの一部分として直接サポートさ れることが可能である。 新規シェルオブジェクトの例示は、シェルインターフェイスモジュールの初期 化ルーチンをコールすることによって実施される。ディバイスドライバ50のオ リジナルな初期化の場合と同様に、ここではシェルオブジェクト152の相当す る新規シェルオブジェクト例示は割当てられ、そして、初期化される。次に、ボ ードライブラリ74’への初期化コールが行われる。ボードライブラリ74’は 、シェルライブラリ72’と同様に、コントローラ19の全てのオペレーティン グモードを通じて定数であるので、ボードライブラリ74’に対して必要なリフ ァレンスは、個々のハードウェアインタフェースオブジェクトに対する場合と異 なり、新規シェルオブジェクト152に接続される。次に、ボードライブラリ7 4’は、オブジェクトの新規例示を作成し、そして、オブジェクトを新規シェル オブジェクト152のボード構造へ接続するために、ハードウェアインタフェー スモジュールの各々の初期化ルーチンを順々にコールする。例えば各モジュール のRegClassHandler構造の内容のように色深度スイッチを通じて 変化しない定数は、完全に再作成されるか、或いは、単にコピーされるか、或い は、現行コンテキスト文のオブジェクトから引用されるかのいずれかであること が可能である。例えば、グラフィックスハードウェアインタフェースオブジェク ト138の初期化に際して、新規専用ハードウェアアクセラレータコードデータ オブジェクトは作成可能である。このデータオブジェクトによって記憶されたコ ードは、初期化定数、または、コントローラ19のグラフィックスサブエレメン トのハードウェアアクセラレータを初期化するためにダウンロードされるシーケ ンサコードであっても差し支えない。従って、異なるシーケンサコードの集合お よび部分集合は、異なるコンテキストにおけるグラフィックスインタフェースオ ブジェクトによって管理可能である。1つの単一オペレーティングモード内にお いて、アクセラレータコードがグラフィックスサブエレメントのオペレーション に際して、必要に応じて、おそらく、異なる製図コマンドの最適実行に関する加 速度アルゴリズムを調節するために動的に交換可能である場合には、この能力は 特別の意味を持つ。次に、ボードライブラリ初期化ルーチンは、シェルライブラ リ72に戻る。 次に、残りのオペレーティングシステムインタフェースモジュールの初期化ル ーチンは、新規シェルオブジェクト152の初期化を完成するためにコールされ る。各モジュールは、対応するインタフェースオブジェクトの新規例示を作成し 、オブジェクトのために必要なあらゆる専用データ空間を作成し、その後で、当 該オブジェクトを新規シェルオブジェクト152に接続する。特に、直接ドロー オペレーティングシステムインタフェースオブジェクト122の初期化は、新規 コンテキスト特有のPDevice構造、及び、潜在的に、新規GDI_Inf otable構造の作成を提供する。ハードウェアインタフェースの場合と同様 に、これらの構造によって記憶されているデータは完全に再作成可能であり、或 いは、現行コンテキストの対応する構造からのデータは、新規構造を初期化する ために用いることが出来る。ただし、新規PDevice構造におけるデータは 、新規コンテキストの色深度を定義するために、明確に修正される。同様に、G DI_Infotableの画素深度フィールドは、新規色深度を反映するため に、同様に修正される。それ以降はシェルライブラリ72’によって管理される これら2つの新規構造に対するポインタは、新規コンテキストのシェルオブジェ クト152と論理的に対応付けられる。 従って、当該シェルオブジェクト150によって表される現行コンテキストと 論理的に異なるコンテキストを定義するために、オペレーティングシステム及び ハードウェアインタフェースオブジェクト両方の完全な補集合が作成される。次 に、実行は、シェルライブラリ72’からシェルオブジェクト150に戻る。 次に、シェルオブジェクト150は、新規コンテキストを実現するために、ボ ードライブラリ72’にコールを発信する200。好ましい実施例においてはコ ントローラ19の所望オペレーティングモードに関する所望色深度及び空間解像 度を含むシェルオブジェクト150は、新規コンテキストの特性を識別するため に十分なオペランドを提供する。これに応答して、シェルライブラリ72’は、 シェルオブジェクトを選択するために、例えばシェルオブジェクト152のよう な所望の新規コンテキストに対応するコンテキストプール148を探索する。 次に、コンテキストスイッチ(切換え)を実際に実施するための準備に際して 、シェルライブラリ72’は、「モード変更直前」オペランドを有するモード設 定 コールをモード設定206に参加するはずの各インタフェースオブジェクトへ発 信する。以前と同様に、参加するインタフェースオブジェクトの各々は、モード スイッチばかりでなくコンテキストスイッチにおいてもあらゆる状態関連情報が 一貫して持続することを保証するために、これらの情報を対応する専用データス ペースに保管する。 参加インタフェースオブジェクトの最後のオブジェクトからの復帰に際して、 シェルライブラリ72’は、現行コンテキストを定義するシェルオブジェクトと して新規シェルオブジェクト152をインストールする。同時に、シェルライブ ラリ72’は、PDevice構造、及び、ディバイスドライバ50への次のA PIコールにおいてオペレーティングシステム層によって参照されるはずの構造 としてシェルオブジェクト152と論理的に関連したGDI_Infotabl e構造を確立する。 次に、シェルライブラリ72’のパージングルーチンは、モードスイッチを実 行するために必要な命令を実行するためにコールされる。これらの命令の処理及 び実行は、ディバイスドライバ50によるコンテキストスイッチと関係しない1 つの単純なモードスイッチを実行するために必要な処理と一貫性をもつ。 モード設定命令が一旦実行されると、シェルライブラリ72’は、「モード変 更」オペランドを有するモード設定コールを各参加オブジェクトへ発信する。以 前の場合と同様に、各オブジェクトは、例えば、新規シーケンサコードをグラフ ィックスアクセラレータサブエレメントへダウンロードするように、コントロー ラ19の新規オペレーティングモードを実行またはサポートするために必要な任 意のオブジェクト特有のルーチンを実行可能である。 最後に、シェルライブラリ72’は、「モード変更完了」オペランドを有する 各参加オブジェクトにモード設定コールを発信する。これに応答して、各参加オ ブジェクトは、例えば、ディスプレイバッファ20における記憶装置の使用を再 割当てし、そして、ディスプレイ32上にハードウェアカーソルの位置を確立す ることを含むコントローラ19の作動環境を確立するために実行する。更に、フ ォールスクリーンリフレシャを要求するために、オペレーティングシステムオブ ジェクト128を介して、コールが行われる。これに応答して、オペレーティン グシステム核56は、ディスプレイ32上に見えるビットマップへポインタ基準 を提供するディバイスドライバ50への一連のコールを調節する。ディバイスド ライバ50を介して各ビットマップが処理されるにつれて、あらゆる必要な色深 度変換が、シェルライブラリ72’によって適切に実施される。 最後の参加オブジェクトからの復帰に際して、シェルライブラリ72’は、シ ェルオブジェクト152を効果的に介してオペレーティングシステム層54へ戻 る。従って、ディバイスドライバ50は、アプリケーション60又はオペレーテ ィングシステム層54から実質的に独立し、そして、これらの関連参加なしに、 モードスイッチ及びコンテキストスイッチの両方を完了する。 VI.操作状態の終結 図7に全体的に示すように、最後に、本発明は、ディバイスドライバ50のオ ペレーションを終結させる過程を手お経する。詳細には、例えばWindows ’95TMのように、オペレーティングシステム核56の具体化例は、オペレーテ ィングシステム核56の終結に際してコンピュータシステム10内の各ディバイ スドライバへ発信される標準コールとしてシャットダウンAPIコールを提供す る。シャットダウンAPIコールを受信すると、例えばシェルオブジェクト15 2のような、現在活動中のコンテキストのシェルオブジェクトは、継続して受信 したAPIコールの受入れを、オペレーティングシステムインターフェイスモジ ュールによって終結させることにより222、ディバイスドライバ50によって これ以上の一切のAPIコールの処理を作動不可能にするように作動する。従っ て、次に、ディバイスドライバ50は、整然とした方法により、予期しないAP Iコールの受信によって妨害されることなしに、シャットダウンを実施すること ができる。 次に、modes.dmm構成コンフィギュレーションファイルのデフォルト セクションは、シェルライブラリ72のパージングルーチンによって読取られ、 そして、実行される。このデフォルトセクションによって提供される命令は、コ ントローラ19に関してデフォルトオペレーティングモードを設定するために2 24用いられる。このようにして、コントローラ19は、オペレーティングシス テム核56のシャットダウンに続いて使用される可能性に関して適切であるよう な公知の安定した状態に設定される。 次に、シェルライブラリ72’は、ディバイスドライバ50のインタフェース オブジェクト及びモジュールによって用いられているシステムメモリを解放する ように作動する。詳細には、シェルライブラリ72’は、ディバイスドライバ5 0の現在の各コンテキストを識別するために作動する。識別された各コンテキス ト228に関して、シェルライブラリ72’は、特定のコンテキスト230に特 有の各ハードウェアインターフェイスオブジェクトを順次解放するために、ボー ドライブラリ74’をコールする。結果としてボードライブラリ74’は、識別 されたコンテキストのシェルオブジェクトに対応する各ハードウェアインタフェ ースオブジェクトをコールする。ハードウェアインターフェイスモジュールと対 応する最後のオブジェクトを解放した状態で、オブジェクト及びモジュールの両 方に対応したメモリスペースが解放される。いったん、全てのコンテキストに関 するハードウェアインタフェースオブジェクトの全てが一旦解放されると、ボー ドライブラリ74’は、それ自体の記憶装置232を解放するために、再びコー ルされる。 シェルライブラリ72’は、オブジェクト及び対応するモジュールに対応する メモリスペースを解放するために、現在の各コンテキストに関する各々のオペレ ーティングシステムインタフェースオブジェクト234をコールする。ディバイ スドライバ50の現行コンテキストを定義するシェルオブジェクトも同様に解放 される。次に、シェルライブラリ72’は、対応する記憶装置を効果的に解放し て終結し236、そして、オペレーティングシステム層54の終結を継続するた めに、実行がオペレーティングシステム核56へ戻る。 V.仮想化されたドライバオペレーション 好ましいMicrosoft Windows’95環境においては、いわゆ るDos−Box保護された実行空間において実行中の遺産アプリケーションを サポートすることが必要である。本発明の好ましい具体化に関連して保護されて いる実行が、フルスクリーン又はウィンドウモードのいずれかにおいて提供され る。遺産アプリケーションは、フルスクリーンモードにおけるコントローラ19 に対して直接アクセスすること、及び、プログラムすることが可能である。ウィ ンドウモードにおいて、遺産アプリケーションによって期待されるハードウェア レジスタをエミュレートするために、一般にVxDドライバと呼ばれる仮想化デ ィバイスドライバが提供される。他のウィンドウアプリケーションと共存および 共同実行するためには、遺産アプリケーションによって動的に提供されるハード ウェアプログラミングのウィンドウ関係エミュレーションが、VxDドライバに よって提供されることが期待される。一般に、VxDドライバは、コントローラ 19特有の具体化の完全エミュレーションをサポートする特異モノリシックソフ トウェアモジュールとして再び実現される。結果として、通常のVxDドライバ は、従来のディバイスドライバと関連する場合と同じ問題に遭遇する。 図8に全体的に示すように、本発明のディバイスドライバ50のアーキテクチ ャは、特に仮想ディスプレイドライバ(VDD)を含むVxDドライバを実現す るために直接的かつ効果的に採用することが出来る。既に述べたように、ディバ イスドライバ50は、オペレーティングシステム層54内に従来の方法において 設定されたWindows(Win16)仮想マシン(VM)240をサポート して作動する。Dos VM 242は、ハードウェア30への直接アクセスを 試行可能な遺産アプリケーションに関して、Dos−Box保護された実行空間 を提供する。Dos VM242の中から又はこれによって発行されるハードウ ェアアクセス試行の結果をトラップし、かつ、適切にエミュレートするために、 当該ディバイスドライバ50のバージョン50’が提供される。Dos VM 242内におけるアプリケーションのウィンドウモード実行をサポートして作動 中のVDD 50’は、オペレーティングシステムの通常使用を介して、I/O またはレジスタインタフェース30に対応するメモリスペースを選択的に確立す る。このアクセストラップは、一般に、Dos VM 242がフルスクリーン モードに切り換えられるか、或いは、実行が他の仮想マシン240、244に移 動する場合に解放(リリース)される。ウィンドウモードにおけるDos VM 242へ実行が戻る場合、或いは、フルスクリーンモードからウィンドウモー ドに切り換えられた時にアクセストラップが再表明(リアサート)される。 アクセストラップがアクセス試行を検出すると、当該トラップによって獲得さ れたアクセス特性情報がVDD 50’に提供される。詳細には、図9に示すよ うに、ボードライブラリ7431には、論理的に接続246を介して、オペレー ティングシステム54により、アクセス試行情報が提供される。VDD 50’ の構成要素は、ディスプレイドライバ50の単一コンテキストバージョンを実現 することが好ましい。ただし、Dos VM 242の下における多重コントロ ーラ19を適切にサポートするために、多重コンテキストは容易にサポートされ ることが可能である。 単一コンテキスト内において、ハードウェアインタフェースオブジェクト13 0’、132’、134’、及び、138’は、ハードウェアへ直接アクセスし ようとする連続試行に基づくディスプレイの意図的状態の表現を維持するように 、アクセス特性データを記憶するために作動する。ハードウェアインタフェース オブジェクトと対応するRegclassMap構造は、ハードウェアサブエレ メントの各クラスに対応する状態情報に関する記憶空間へのポインタを用いて増 補されることが好ましい。同様に、ハードウェアインタフェースオブジェクトは 、意図したスクリーンの外観の適切な表現のディスプレイを生じさせるために、 O/Sオブジェクト128’の支援によってオペレーティングシステムコールを 生成するエミュレーションルーチンを提供する。これらのコールは、オペレーテ ィングシステム層54に適用され、その結果として、ディスプレイドライバ54 へ適宜ルートされる。フルスクリーンモードへのスイッチに際して、ハードウェ アインタフェースオブジェクトによって維持されるディスプレイ状態は、状態デ ータをレジスタインターフェイス30へ適用することによって、意図したディス プレイ状態を確立するために直接使用することが可能である。 ディバイスドライバ50’のパーザー(構文解析系)ルーチンは、アクセス特 性情報を分析するために、逆に効果的に使用れる。アクセストラップは、暗黙裡 におけるクラストラップハンドラへのアドレス割当によって、ディバイスクラス へのアクセス試行を特徴付けるために役立つことが好ましい。従って、クラス、 アドレス、及び、アクセスを備えた値は、トラップハンドラによって収集され、 そして、逆パーザー(構文解析系)ルーチンに提供される。従って、トラップさ れた各アクセス試行により、アクセス関連データは、対応するRegClass Map識別された記憶装置に記憶される。同様に、逆パーザー(構文解析系)は 、modes.dmmファイルに記憶されているクラスレジスタ命令から究極的 に決定されたレジスタ定義に対する分析を実施する。分析結果は、記入されるこ とを意図したレジスタがインデックスレジスタであるか、又は、他の管理機能レ ジスタであるか、或いは、データレジスタであるかの論理的判定である。意図さ れたレジスタが インデックスレジスタ又は他の管理機能レジスタである場合に は、その結果としての状態変化が記録される。意図されたレジスタがデータレジ スタである場合には、レジスタの新規状態が記録され、その後で、いくらかのエ ミュレーションが必要かどうかに関して判定が行われる。記入中の特定レジスタ に応じて、一切のエミュレーションを必要としないか、或いは、フルインデック ス及びデータアクセスオペレーションが実施されることもあり得る。 従って、実質的には、同一ハードウェア及びオペレーティングシステムインタ フェースオブジェクト定義が用いられることが好ましく、そして、更に、カプセ ル封入されたハードウェアインターフェイスモジュールによって実現されるディ スプレイ特性エミュレーションルーチンの中から選択するためには、異なるディ スプレイ特性をサポートする複数の機能の中から選択する場合と同一の方法を用 いても差し支えない。パーザー(構文解析系)ルーチンが識別可能なモード集合 を検出した場合には、既に説明したようにモード設定オペレーションを実施する ために、O/Sオブジェクト128’を介してシェルオブジェクト126’がコ ールされても差し支えない。オペレーティングシステムオブジェクト120’、 122’、126’によって実現される実質的な線形コールシーケンスは、直接 的に作動可能化される。従って、オペレーティングシステムインタフェースオブ ジェクトと残りのVDD 50’との間の機能コール関係は、ディバイスドライ バ50の場合と同じである。 V.結論 以上のように、複雑かつ多機能的な周辺コントローラ並びに仮想ディバイスド ライバのサポートに適した高度に最適化されたディバイスドライバアーキテクチ ャについて説明した。ここに説明したディバイスドライバのアーキテクチャは、 サブエレメント別に詳述する方式に基づいてハードウェアから直接決定されるこ とが好ましい方法において周辺コントローラのハードウェアコンフィギュレーシ ョンに明確にマッチするように、ロードタイムにおいて当該ディバイスドライバ の動的コンフィギュレーションを直接サポートし、特有のサブエレメント設計に 従ってモジュール変更の機能的分離を本質的にサポートするモジュール式アーキ テクチャを採用し、コントローラの作動状態のモードスイッチを実施するための 効率的なメカニズムを提供し、モードスイッチの動作を選択的に用いた独立コン テキストのサポートを介して、モードスイッチから独立した持続性データのメン テナンス及び管理を実施するための効率的なメカニズムを提供し、ビデオディス プレイコントローラアプリケーションにおいて色深度変換の効率的な管理を提供 する。更に、アーキテクチャはモジュール式であって複雑であるにも拘わらず、 モジュール間のサポートされる相互作動的関係は、オペレーティングシステムA PIコールを仮想化および実現するために実質的に線形化されたコールシーケン スを作動可能化する。 本発明の好ましい実施例について既に説明した観点から、開示された実施例の 多くの修正及び変形は、当該技術分野における習熟者によって容易に察知可能な はずである。従って、本発明が、添付されている請求の範囲内において、以上に 詳細に述べられた場合とは異なって実現可能であることが理解されるはずである 。
───────────────────────────────────────────────────── 【要約の続き】 作動可能化する。ハードウェアインタフェースの状態 は、個別のコンテキストにおいて仮想化および維持さ れ、実質的にディバイスドライバ(50)専用のコンテ キスト切換えを介して、選択されたオペレーティングシ ステム事象に応答してハードウェアインタフェースの状 態のアプリケーション特有の動的変更を可能にする。

Claims (1)

  1. 【特許請求の範囲】 1.プロセッサ及び記憶装置を含むコンピュータシステムに添付されたハード ウェアコントローラの作動状態の制御された操作を提供する過程であって、前記 のコンピュータシステムがディバイスドライバを介して前記ハードウェアコント ローラへ結合するオペレーティングシステムを実行し、前記過程において、 a)前記プロセッサの動作によって前以て決定済みの第1作動状態から前記ハ ードウェアコントローラの前以て決定済みの第2の作動状態へのモードスイッチ 事象の発生を決定する過程と、 b)前記ディバイスドライバによって前記の記憶装置内に予約された前以て決 定済みの第1の場所における前記のハードウェアコントローラの前以て決定済み の前記第1の作動状態に対応する第1のコンテキストを定義するデータを選択的 に記憶する過程と、 c)前以て決定済みの前記第2の作動状態に対応する第2のコンテキスト定義 するデータを前記ディバイスドライバによって前記の記憶装置内に予約された前 以て決定済みの第2の場所から選択的に復元する過程と、 d)前以て決定済みの前記第2の作動状態を確立するために前記第2のコンテ キストを定義する前記のデータを前記のハードウェアコントローラに供給する過 程とを有する過程。 2.請求項1記載の過程において、選択的に復元する前記の過程が、 a)前以て決定済みの前記第2の場所が前記ディバイスドライバによって予約 されているかどうかを決定する過程と、 b)前以て定義済みの前記第2の場所が既に予約済みでない場合には前記ディ バイスドライバのために前以て決定済みの前記第2の場所を予約する過程と、 c)前記第2のコンテキストを定義するデータを初期化する過程とを有する過 程。 3.請求項1記載の過程において、選択的に記憶し、そして、選択的に復元す る前記の過程のうちの任意の過程がスキップされる過程。 4.請求項1または3記載の過程において、前記第2のコンテキストを定義す る前記データが前記のディバイスドライバにとって外部のデータファイルから動 的に獲得される過程。 5.プログラム可能なコントローラにオペレーティングインタフェースを提供 するためにコンピュータシステムのオペレーティングシステムと共に使用するた めのディバイスドライバにおいて、 a)モード設定オペレーションを開始するために前以て決定済みAPIコール にエントリポイントサポートを提供するための、オペレーティングシステムに結 合可能な第1のインタフェースモジュールと、 b)システムコンフィギュレーションデータを読取るために前以て決定済みの オペレーティングシステムコールにエントリポイントサポートを提供するための 、前記のオペレーティングシステムに結合可能な第2のインタフェースモジュー ルと、 c)前以て決定済みのハードウェアインタフェースレジスタプログラミングル ーチンにエントリポイントサポートを提供するための、プログラム可能なコント ローラに結合可能な第3のインタフェースモジュールと、 d)前記の第1、第2、及び、第3のインターフェイスモジュールに結合可能 なライブラリモジュールとを有し、前記のライブラリモジュールが前記第1のイ ンタフェースモジュールによる前以て決定済みの前記APIコールの受信に応答 し、前記のライブラリモジュールは前記の作動モード設定データに対応する前以 て決定済みのシステムコンフィギュレーションデータを読取るための前記の前以 て決定済みのオペレーティングシステムコールを開始するために前記第2のイン タフェースモジュールにコールを提供し、前記のライブラリモジュールは前以て 決定済みの前記システムコンフィギュレーションデータにおいて提供される前以 て決定済みの命令を実行することによってレジスタプログラミングデータを生成 するためのパーザー(構文解析系)を含み、前記のレジスタプログラミングデー タが前記第3のインタフェースモジュールの前以て決定済みの前記ハードウェア インタフェースレジスタプログラミングルーチンに提供されるディバイスドライ バ。 6.請求項5記載のディバイスドライバにおいて、前記のライブラリモジュー ルが、前記コンピュータシステムの記憶装置内において、少なくとも前記ディバ イスドライバのインスタレーション及び初期化に際して前記オペレーティングシ ステムにより前記の第1、第2、、及び、第3のモジュールに結合されるディバ イスドライバ。 7.請求項6記載のディバイスドライバにおいて、前記第3のモジュールが前 記の第3のモジュールによってサポートされた実行可能な機能に対する複数のコ ールエントリポイントを有するプログラム可能なモジュールインタフェースを有 し、前記第3のモジュールが前記第3のモジュールの前記複数のコールエントリ ポイントの前以て決定済みの部分集合に前記複数のコールエントリポイントの初 期化を提供するディバイスドライバ。 8.請求項7記載のディバイスドライバにおいて、前記第3のモジュールが前 記のモード設定オペレーションと一貫性を有する前記第3のモジュールの前記複 数のコールエントリポイントの代替部分集合に前記複数のコールエントリポイン トの再初期化を提供するディバイスドライバ。 9.請求項8記載のディバイスドライバにおいて、前記第1のモジュールが前 記のプログラム可能なモジュールインタフェースのコピーを有し、前記コピーが 前以て決定済みの前記部分集合、または、前記第3のモジュールのプログラム可 能な前記モジュールインタフェースにおいて提供される前記複数のコールエント リポイントの前記代替部分集合に適合するディバイスドライバ。 10.コンピュータシステムに結合されたプログラム可能なコントローラの作 動状態のモード設定を実施する過程において、前記のプログラム可能なコントロ ーラが前記コンピュータシステムにレジスタインタフェースを提供し、前記のコ ンピュータシステムによって実行されたオペレーティングシステムは前記のプロ グラム可能なコントローラのオペレーティングモードの前以て決定済みの特性を 定義する前以て決定されたデータを有するモードスイッチコールを提供し、 a)前記のモードスイッチコールに応答して前記プログラム可能なコントロー ラのモード設定を実施することを決定する過程と、 b)前以て決定済みの前記データに基づき前記モード設定のための目標モード を決定する過程と、 c)前記目標モードに対応する前以て決定済みのコンフィギュレーションデー タを獲得する過程と、 d)前以て決定済みの前記コンフィギュレーションデータ内に含まれる複数の 命令を識別して実行するために前以て決定済みの前記コンフィギュレーションデ ータをパーズする過程とを有し、前記複数の命令の実行により前記のプログラム 可能なコントローラのモード設定を実施するために適したレジスタプログラミン グデータを前記の目標モードに提供し、 e)前記のレジスタプログラミングデータを前記のレジスタインタフェースへ 提供する過程を有する過程。
JP51993797A 1995-11-21 1996-11-21 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ Expired - Lifetime JP4442732B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/561,412 1995-11-21
US08/561,412 US6289396B1 (en) 1995-11-21 1995-11-21 Dynamic programmable mode switching device driver architecture
PCT/US1996/018805 WO1997019402A1 (en) 1995-11-21 1996-11-21 Dynamic programmable mode switching device driver architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009257555A Division JP2010033607A (ja) 1995-11-21 2009-11-10 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ

Publications (2)

Publication Number Publication Date
JP2000500601A true JP2000500601A (ja) 2000-01-18
JP4442732B2 JP4442732B2 (ja) 2010-03-31

Family

ID=24241869

Family Applications (2)

Application Number Title Priority Date Filing Date
JP51993797A Expired - Lifetime JP4442732B2 (ja) 1995-11-21 1996-11-21 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ
JP2009257555A Withdrawn JP2010033607A (ja) 1995-11-21 2009-11-10 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009257555A Withdrawn JP2010033607A (ja) 1995-11-21 2009-11-10 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ

Country Status (7)

Country Link
US (1) US6289396B1 (ja)
EP (1) EP0862759B1 (ja)
JP (2) JP4442732B2 (ja)
KR (1) KR100421228B1 (ja)
AT (1) ATE352067T1 (ja)
DE (1) DE69636855T2 (ja)
WO (1) WO1997019402A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100905818B1 (ko) * 2001-07-24 2009-07-02 톰슨 라이센싱 일반적 통신 인터페이스를 구비한 집적회로 및 그러한 인터페이스를 통해 데이터를 통신하는 방법

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161250A (ja) 1994-12-06 1996-06-21 Canon Inc 情報処理装置
US5812857A (en) * 1996-08-28 1998-09-22 Extended Systems, Inc. Field configurable embedded computer system
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6952829B1 (en) * 1998-06-29 2005-10-04 International Business Machines Corporation Dynamically adapting between pessimistic and optimistic notifications to replicated objects
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
ATE488093T1 (de) * 1999-03-29 2010-11-15 Hughes Electronics Corp Procede et appareil de traitement conditionnel, stockage et affichage du contenu d'un canal numerique, dans un systeme de reception de television
US6536040B1 (en) * 1999-03-29 2003-03-18 International Business Machines Corporation Cross-platform program, system, and method having a system independent registry for use on operating systems irrespective of a registry equivalent
US6684260B1 (en) * 1999-05-04 2004-01-27 Hewlett-Packard Development Company, L.P. Maintaining consistency of device driver settings
DE19934787B4 (de) * 1999-07-27 2004-08-05 T-Mobile Deutschland Gmbh Verfahren zur automatischen Anpassung der von einer datenbereitstellenden Einrichtung zu einer datenabrufenden Einrichtung zu übertragenden Daten an die Fähigkeiten dieses Endgerätes
US6654546B1 (en) * 1999-10-05 2003-11-25 Digital Networks North America, Inc Field upgradeable recording device
US6591417B1 (en) * 1999-12-30 2003-07-08 International Business Machines Corporation Method of and system for testing compatibility with an external API upgrade
US6496195B1 (en) 2000-01-31 2002-12-17 Autodesk, Inc. Method and apparatus for automatically displaying and manipulating identifiers of a mechanical design
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6810438B1 (en) * 2000-04-05 2004-10-26 Microsoft Corporation Method for enabling value-added feature on hardware devices using a confidential mechanism to access hardware registers in a batch manner
US6701357B1 (en) * 2000-04-19 2004-03-02 Toshiba America Information Systems, Inc. Server appliance
US6891893B2 (en) * 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US7649943B2 (en) * 2000-04-21 2010-01-19 Microsoft Corporation Interface and related methods facilitating motion compensation in media processing
US7634011B2 (en) 2000-04-21 2009-12-15 Microsoft Corporation Application program interface (API) facilitating decoder control of accelerator resources
US6940912B2 (en) * 2000-04-21 2005-09-06 Microsoft Corporation Dynamically adaptive multimedia application program interface and related methods
US6609155B1 (en) * 2000-05-25 2003-08-19 International Business Machines Corporation Method and apparatus for providing relationships in simple network management protocol management information base
US20030105887A1 (en) * 2001-12-03 2003-06-05 Cox Burke David Method and system for integration of software applications
US6812923B2 (en) * 2001-03-01 2004-11-02 Microsoft Corporation Method and system for efficiently transferring data objects within a graphics display system
US6831635B2 (en) * 2001-03-01 2004-12-14 Microsoft Corporation Method and system for providing a unified API for both 2D and 3D graphics objects
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6874150B2 (en) * 2001-03-01 2005-03-29 Microsoft Corporation Method and system for maintaining connections between surfaces and objects in a graphics display system
GB2373884B8 (en) 2001-03-28 2006-05-04 Nokia Corp Method of configuring electronic devices
US20020174266A1 (en) * 2001-05-18 2002-11-21 Krishna Palem Parameterized application programming interface for reconfigurable computing systems
EP1280065B1 (en) * 2001-07-24 2005-06-15 Thomson Licensing S.A. An integrated circuit having a generic communication interface
US6819960B1 (en) 2001-08-13 2004-11-16 Rockwell Software Inc. Industrial controller automation interface
US8086664B2 (en) * 2001-09-24 2011-12-27 Siemens Industry, Inc. Method and apparatus for programming programmable controllers and generating configuration data from a centralized server
US7571445B2 (en) * 2001-11-29 2009-08-04 Dell Products L.P. System and method for dynamic device driver support in an open source operating system
US20030145127A1 (en) * 2002-01-03 2003-07-31 Unice W. Kyle Method and computer program product for providing a device driver
US7286823B2 (en) * 2002-02-15 2007-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Mobile multimedia engine
US7620904B1 (en) 2002-06-21 2009-11-17 Autodesk, Inc. On demand identifier and geometry piece association in computer aided design (CAD) environment
US7088360B1 (en) 2002-07-20 2006-08-08 Autodesk, Inc. Simplified identifier generation in a computer aided design (CAD) environment
EP1398694B1 (en) * 2002-07-26 2013-09-11 Canon Kabushiki Kaisha Information processing method
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
KR100524066B1 (ko) * 2003-02-08 2005-10-26 삼성전자주식회사 디바이스 대화창 표시방법 및 장치
DE10320827A1 (de) * 2003-05-08 2004-12-09 Siemens Ag Verfahren zur Softwareanpassung
US7636096B2 (en) * 2004-06-25 2009-12-22 Autodesk, Inc. Automatically ballooning an assembly drawing of a computer aided design
US7721298B2 (en) * 2004-12-03 2010-05-18 Microsoft Corporation Operating system performance
US8442042B2 (en) * 2005-06-09 2013-05-14 Whirlpool Corporation Appliance and a consumable holder with an embedded virtual router
US8533253B2 (en) * 2005-06-09 2013-09-10 Whirlpool Corporation Distributed object-oriented appliance control system
CN101305350A (zh) * 2005-06-09 2008-11-12 惠而浦公司 与家用电器内的至少一个部件通信以及对其进行管理的软件体系系统和方法
KR20070058977A (ko) * 2005-12-05 2007-06-11 한국전자통신연구원 홈 네트워크 단말 시스템 소프트웨어의 동적 재구성 장치및 방법
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
US8127310B1 (en) * 2007-03-26 2012-02-28 Celio Corporation Method and apparatus for dynamically switching display drivers in mobile device operating system
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
CN101770433B (zh) * 2008-12-30 2012-01-11 意法半导体研发(上海)有限公司 通用驱动方法和通用驱动设备
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
CN102385435A (zh) * 2010-08-27 2012-03-21 宏达国际电子股份有限公司 动态调整电子装置运作模式的方法及电子装置
US8813167B2 (en) * 2010-12-30 2014-08-19 Apple Inc. Dynamic device configuration using predicates
CN102867284B (zh) * 2011-07-07 2016-10-26 腾讯科技(深圳)有限公司 一种图形绘制引擎装置及其实现方法
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US9310957B2 (en) * 2013-03-07 2016-04-12 Tencent Technology (Shenzhen) Company Limited Method and device for switching current information providing mode
US10187479B2 (en) 2013-08-26 2019-01-22 Vmware, Inc. Cloud-scale heterogeneous datacenter management infrastructure
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
WO2015198880A1 (ja) * 2014-06-25 2015-12-30 ソニー株式会社 再生装置、再生方法、プログラム、および記録媒体
US9967418B1 (en) 2016-10-31 2018-05-08 Microsoft Technology Licensing, Llc Platform DMFT and interaction with IHV DMFT
US11086800B2 (en) 2019-06-01 2021-08-10 Apple Inc. Execution space agnostic device drivers

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0664536B2 (ja) 1986-01-17 1994-08-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 仮想端末サブシステムの制御方法
US4975829A (en) 1986-09-22 1990-12-04 At&T Bell Laboratories Communication interface protocol
US5175855A (en) * 1987-07-27 1992-12-29 Laboratory Technologies Corporation Method for communicating information between independently loaded, concurrently executing processes
US4755478A (en) 1987-08-13 1988-07-05 International Business Machines Corporation Method of forming metal-strapped polysilicon gate electrode for FET device
US4855936A (en) 1987-09-25 1989-08-08 International Business Machines Corp. Full-screen input/output application program interface
NL8800222A (nl) 1988-01-29 1989-08-16 Philips Nv Werkwijze voor het vervaardigen van een halfgeleiderinrichting waarbij op zelfregistrerende wijze metaalsilicide wordt aangebracht.
EP0419064A3 (en) * 1989-09-22 1992-08-05 International Business Machines Corporation Computer system having apparatus for providing pointing device independent support in an operating environment
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
JPH0727505B2 (ja) 1990-02-12 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション インターフェース方法及びインターフェース・システム
US5438672A (en) * 1990-12-18 1995-08-01 National Semiconductor Corporation Microcontroller emulator for plural device architecture configured by mode control data and operated under control code transmitted via same switching bus
US5265252A (en) * 1991-03-26 1993-11-23 International Business Machines Corporation Device driver system having generic operating system interface
US5291585A (en) 1991-07-29 1994-03-01 Dell Usa, L.P. Computer system having system feature extension software containing a self-describing feature table for accessing I/O devices according to machine-independent format
US5319751A (en) 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5305461A (en) 1992-04-03 1994-04-19 International Business Machines Corporation Method of transparently interconnecting message passing systems
EP0584909A1 (en) 1992-08-26 1994-03-02 Sun Microsystems, Inc. Self configuring device system
US5339432A (en) 1992-10-13 1994-08-16 Microsoft Corporation Method and system for providing user control of device driver configuration
US5352631A (en) 1992-12-16 1994-10-04 Motorola, Inc. Method for forming a transistor having silicided regions
US5530858A (en) 1993-04-01 1996-06-25 Intel Corporation Method and apparatus for background processing for PCMCIA card services
US5581766A (en) 1993-05-17 1996-12-03 Compaq Computer Corporation Selectable video driver system
US5564011A (en) 1993-10-05 1996-10-08 International Business Machines Corporation System and method for maintaining file data access in case of dynamic critical sector failure
JP3566975B2 (ja) 1993-10-18 2004-09-15 株式会社日立製作所 計算機操作端末装置の自動操作装置
US5603014A (en) * 1993-12-03 1997-02-11 Intel Corporation Protected mode simulation of a real mode interupt based programming interface in a computer system
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100905818B1 (ko) * 2001-07-24 2009-07-02 톰슨 라이센싱 일반적 통신 인터페이스를 구비한 집적회로 및 그러한 인터페이스를 통해 데이터를 통신하는 방법

Also Published As

Publication number Publication date
EP0862759A4 (en) 1999-01-27
WO1997019402A1 (en) 1997-05-29
ATE352067T1 (de) 2007-02-15
EP0862759B1 (en) 2007-01-17
KR19990071479A (ko) 1999-09-27
DE69636855D1 (de) 2007-03-08
EP0862759A1 (en) 1998-09-09
JP2010033607A (ja) 2010-02-12
US6289396B1 (en) 2001-09-11
KR100421228B1 (ko) 2004-05-31
JP4442732B2 (ja) 2010-03-31
DE69636855T2 (de) 2007-10-11

Similar Documents

Publication Publication Date Title
JP2000500601A (ja) 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ
JP2000500602A (ja) エミュレーション環境をサポートするディバイスドライバアーキテクチャ
JP2000500600A (ja) コントローラハードウェアサブエレメント識別子を使用する適応ディバイスドライバ
JP2000501211A (ja) コンテキスト仮想化ディバイスドライバアーキテクチャ
JP2000501215A (ja) モジュール式仮想化ディバイスドライバアーキテクチャ
EP0664903B1 (en) Loader system
US5269021A (en) Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
US20020099863A1 (en) Software support layer for processors executing interpreted language applications
JPH07121373A (ja) データ処理システム及びその動作方法
US6907597B1 (en) Method and apparatus for constructing an executable program in memory
CN112579254B (zh) 图形处理器的仿真方法、装置、电子设备和存储介质
US6522343B2 (en) Hosting objects in a windowed environment
US6289448B1 (en) Method, apparatus and computer program product for debugging a computer's boot process
JPH0895757A (ja) マイクロカーネル・データ処理システム用のマスタ・サーバ・プログラム・ロード方法および装置
US5504920A (en) Video driver system for communicating device specific primitive commands to multiple video controller types
CA2097541C (en) Concurrency control through a class library in object oriented technology
JPH03208187A (ja) 拡張グラフィック機能を与える方法
CN116225527A (zh) 嵌入式系统
Kenney et al. Using abstraction to create a portable object-oriented simulation
McAuliffe Breaking the DOS 640-kByte barrier
JPH0883198A (ja) プログラムシミュレーション装置
Bojovic et al. The interactive development and testing system for a RISC-style processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031121

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060213

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060213

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20070717

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091222

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term