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

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

Info

Publication number
JP2010033607A
JP2010033607A JP2009257555A JP2009257555A JP2010033607A JP 2010033607 A JP2010033607 A JP 2010033607A JP 2009257555 A JP2009257555 A JP 2009257555A JP 2009257555 A JP2009257555 A JP 2009257555A JP 2010033607 A JP2010033607 A JP 2010033607A
Authority
JP
Japan
Prior art keywords
operating system
device driver
interface
hardware
shell
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.)
Withdrawn
Application number
JP2009257555A
Other languages
English (en)
Inventor
James A Keller
エイ ケラー ジェームズ
Kevin J Flory
ジェイ フローリー ケヴィン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
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 Altera Corp filed Critical Altera Corp
Publication of JP2010033607A publication Critical patent/JP2010033607A/ja
Withdrawn legal-status Critical Current

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】動的プログラム可能なモード切替えディバイスドライバアーキテクチャの提供。
【解決手段】
ディバイスドライバは、オペレーティングシステムインタフェースオブジェクトと、コンピュータインタフェースオブジェクトと、オペレーティングシステムインタフェースオブジェクトの各々によってコール可能な処理ルーチンのディバイスドライバライブラリとを有する。ディバイスドライバライブラリはプログラミング値の生成とコンピュータインタフェースへの適用を定義する実行コンテキストの選択を作動可能化する。ハードウェアインタフェースの状態は、個別のコンテキストにおいて仮想化および維持され、実質的にディバイスドライバ専用のコンテキスト切換えを介して、選択されたオペレーティングシステム事象に応答してハードウェアインタフェースの状態のアプリケーション特有の動的変更を可能にする。
【選択図】 図2

Description

(発明の背景)
(発明の分野
本発明は、全体的に、コアオペレーティングシステムと、通常、ハードウェアディバイスとの間のインタフェースを定義および確立するためにコンピュータオペレーティングシステムにおいて用いられるディバイスドライバの設計に関し、詳細には、その中で特に情報ディスプレイ機能を含むオペレーティングシステム機能を一般的にサポートするハードウェアディバイスが作動する、仮想化され、かつ、コンテキスト切り替え可能なインタフェース環境を提供するモジュール式ディバイスドライバアーキテクチャに関する。
関連技術の説明
通常のコンピュータシステムにおいて、ソフトウェアオペレーティングシステムは、ユーティリティ及びデーモンプログラムを含むアプリケーションプログラムに一般化されたシステムサービスを提供する。これらのシステムサービスには、通常、個々のハードウェア周辺ディバイスへのアクセスが含まれ、この場合、各ディバイスが、通常、コンピュータシステムに、明確に定義されたハードウェアインタフェースを提供するこれらのハードウェア周辺ディバイスは、コンピュータシステムに直接的或いは間接的に付加されていても差し支えない。ディバイスドライバは、オペレーティングシステムに一体構造として統合可能なソフトウェアモジュール又は構成要素として実現され、通常、明確に定義されたソフトウェアアプリケーションプログラムインタフェース(API)を、オペレーティングシステム及び各ハードウェアインタフェース用のアプリケーションプログラムに提供するために用いられる。ディバイスドライバは、しばしば、例えばビデオコントローラのような特定クラスのハードウェアインタフェースに関する細目仕様を備えたアプリケーションプログラム又はオペレーティングシステムの対話(インタラクション)を単純化することの出来る程度のディバイス独立性または仮想化を提供する。通常、特定のハードウェアインタフェースの基礎となる各具体化に関しては、アプリケーションプログラム及びオペレーティングシステムに提供される他の点では共通なAPIを実現するために特有のディバイスドライバが用いられる。
従来のディバイスドライバ設計に固有な多くに問題が有る。第1に、従来のディバイスドライバは、特定のハードウェアインタフェース、及び、基礎ディバイス、又は、コントローラシステムの機能にとって特有である。従って、ハードウェアコントローラの新規または異なるバージョンが作成されると、必ず、新規または異なるハードウェアにとって同等に特有な新規ディバイスドライバも開発されなければならない。多数の異なるバージョンのあるハードウェアディバイスの場合には、概して同数のディバイスドライバが開発されなければならない。その代わりに、複数のバージョン又はタイプのディバイスをサポートするように、単一組合わせディバイスドライバを作成することが可能である。この種のディバイスドライバは、通常、他の点では実質的に相互に独立している複数のディバイス特有ドライバを、単一2進ファイルに組み込む。
特定のハードウェア1個をサポートするために必要なディバイスドライバの有効個数も、その中で当該ハードウェアが使用されるオペレーティングシステム環境の個数および差に依存する。極めて密接に関係したオペレーティングシステムにおいて、当該ディバイスドライバの実質的な再開発には、特定のオペレーティングシステムに当該ディバイスドライバを組み込む適切な能力を提供すること、及び、おそらく更に重要なはずであるが、論理的には類似するが、しばしば、全く異なるAPIを当該オペレーティングシステム及びアプリケーションに提供することの両方が必要とされる。通常、当該ディバイスドライバのAPIの詳細な定義は、当該ディバイスドライバ自体の詳細な設計を規制する。従って、ハードウェアは同じであるがオペレーティングシステムの異なる場合のディバイスドライバは、しばしば、殆ど完全に独立して開発される。
特定のハードウェアコントローラをサポートするために必要なディバイスドライバの個数に影響する別の問題は特定のコントローラへ接続される他のハードウェア及びシステムの性質に起因する。再び、コンピュータシステムの詳細な構成に融通性を持たせるために、ハードウェアコントローラは、多数の明確に異なるオペレーションモードをサポート可能であり得る。例えば、ビデオコントローラは、かなりの範囲に亙って、ビデオディスプレイ解像度及び色深度をサポート可能であり得る。ただし、この場合の範囲は、例えば、特定のビデオコントローラに実際に実現されたビデオRAMの量のような、直接的制限条件により、そして、添付ビデオディスプレイの垂直および水平最大周波数によって間接的に拘束されることがある。特定のアプリケーションの必要条件が、ディバイスドライバによってサポートされなければならない特定のオペレーションモードの選択を要求することもあり得る。一般的に、多くのディバイスドライバは、それぞれ、1つ又は複数のオペレーションモード異なる集合をサポートするようなハードウェアコントローラを備える。従って、特定のコンピュータシステムのコンフィギュレーションに直接基づくオペレーティングシステムの組込みに関して、装備されているディバイスドライバのなかの1つが選定されなければならない。所要のオペレーティングモードの集合をサポートするディバイスドライバを選出することが困難であることは別として、異なる個々のディバイスドライバをサポートする多くの種類のモードをプリエンプティブ(割り込み優先的)に決定するには本質的な困難が存在する。個々のドライバは僅かな量だけ異なるとしても、開発対象となるドライバが、かなりの個数に達することはあり得るはずである。
第2の問題は、部分的には第1の問題の結果に関係するが、各ディバイスドライバは、商的に受け入れ可能なオペレーションであることを保証するために、当該ディバイスドライバがその中で使用される可能性のある全ての種類の環境において徹底的にテストされなければならないということである。一般に、ディバイスドライバは、実質的には、オペレーティングシステムに全体として組込まれたモノリシックソフトウェアモジュールである。従って、特定のオペレーティングシステム用の或る1個のディバイスドライバの極く些細な異形部をテストを行う場合であっても、当該ディバイスドライバの正しい動作を立証するために、操作機能及びアプリケーション互換性の全テストを行うことが必要である。選択的機能テストは、モノリシックにコード化されたディバイスドライバのあらゆる修正に起因する付帯的な操作上のエラーの真の可能性により、一般に、不適当である。実際に異なるディバイスドライバの実質的な個数が、適度に複雑なハードウェアコントローラ及び対応するテストの組のサイズ及び範囲に関して、テストの実施を支持したとしても、ディバイスドライバのテストを実施することは、かなりの出費と新規製品または改良バージョンの市販開始の大幅な遅延とを意味する。
従来のディバイスドライバ設計に関する第3の問題は、この種の設計が実質的に静的なタイプのハードウェアコントローラ管理を提供することである。一般に、ディバイスドライバは、当該ディバイスドライバによって管理されるハードウェアコントローラに関して、ただ1組のオペレーティングパラメータを設定する。コンピュータシステムにおいて実行するオペレーティングシステム及びアプリケーションプログラムは、全て、この静的モードのパラメータを許容しなければならず、そうでなければ、正しく作動することに実質的に失敗するはずである。
限られた場合において、従来のディバイスドライバは、ある種のモードを利用可能にするか、或いは、アプリケーションプログラムにとって見える状態にすることが可能である。従って、これらのモードを利用するために、ディバイスドライバは、アプリケーションプログラムを信頼して、実質的にコンパイルされたハードウェア依存性を持つ。このような場合、モードスイッチ(態様切換え)を引き起こすことができるとしても、この種のあらゆるスイッチ(切換え)に実際的に気付かない他の実行プログラムに潜在的な悪影響を及ぼすけれども、アプリケーションプログラムはモード変更を引き起こす。
一般に、或る種の多重タスクオペレーティングシステムは、オペレーティングシステムにサポートされた状態変更に限られるけれども、制限された動的ハードウェアコントローラモード切換えを実施することが出来る。これらの場合、オペレーティングシステムは、新規な作動モードの状態に関して一貫性をもつディバイスドライバ及びハードウェアコントローラの状態を実質的に再ロードする。ただし、実行中のアプリケーションとディバイスドライバ及びハードウェアコントローラの状態との間には直接的関係はない。再び、あらゆる実行中のアプリケーションは、あらゆるモードスイッチに、完全にではないとしても殆ど気付かない。従って、選定されたモードは、いくらかの実行中アプリケーションに関しては最適であっても、現行の実行焦点調節を伴ったアプリケーションに関しては、必ずしも最適であるとは限らないはすである。
発明の要約
従って、本発明の一般的な目的は、動的再構成に基づき独立したハードウェアコンフィギュレーションオプションを提供することのできる融通性に富むモジュール式ディバイスドライバアーキテクチャを提供することにある。
これは、本発明において、プロセッサを有するコンピュータシステムの記憶装置に装備され、複数の機能サブエレメントを含むコントローラディバイスのコンピュータインタフェースにオペレーティングシステムを結合するために作動するディバイスドライバアーキテクチャを提供することによって達成される。ディバイスドライバは、それぞれがオペレーティングシステムへのオペレーティングシステムインタフェース(OSI)を提供する複数のオペレーティングシステムインタフェースオブジェクトと、コントローラディバイスのそれぞれ所定のサブエレメントのオペレーティングモードを確立するためにそれぞれがコンピュータインタフェースへ適用されるべきプログラミング値の生成を提供する複数のコンピュータインタフェースオブジェクトと、データを処理し、そして、所定の組合わせにおける複数のコンピュータインタフェースオブジェクトへのコールを生成するために、複数のオペレーティングシステムインタフェースオブジェクトの各々によってコール可能な処理ルーチンのディバイスドライバライブラリとを有する。
ディバイスドライバライブラリは、その中において、プログラミング値の生成及びコンピュータインタフェースへのプログラミング値の適用を定義するための実行コンテキストの選択を作動可能化する。
本発明の利点は、ハードウェアインタフェースの状態、及び、これに対応して、ハードウェアインタフェースを提供するコントローラの状態が個別コンテキスト内において仮想化および維持されることである。ほかの点においては個々のアプリケーションプログラムによって取り扱い或いは管理されなければならないコントローラの操作上の機能またはモードは、本発明のオペレーションによって仮想化可能である。本発明は、ディバイスドライバのオペレーションによって実行される実質的な専用コンテキスト切換えを介してハードウェアインタフェースの状態のアプリケーション特有の動的変更を提供する。選定されたオペレーティングシステム事象は、新規コンテキストの作成、及び、当該ディバイスドライバによるコンテキスト間の動的切換えを開始するために、修正或いはトラップされる。
本発明の他の利点は、ディバイスドライバが、当該ディバイスドライバを介してコントローラによりサポートされる機能の包括的な最適化を提供することである。ディバイスドライバは、当該ディバイスドライバによってサポートされるAPIコールインタフェースの仮想化を提供する。オペレーティングシステムインタフェースオブジェクトの使用を介したコールインタフェースの仮想化は、独立して定義されたAPI、及び、共通実行ストリームによって実質的にサポートされるべき機能的に等価なコールの変換に関して、特有のサポートを提供する。
本発明の更なる利点は、ディバイスドライバのコールインタフェースの仮想化が、APIコール及びそれらのパラメータの共同評価を構造的に確立し、共同実行ストリーム内における後続するパラメータチェックに関する必要条件を実質的に除去することである。コンテキストデータ構造を参照するポインタと結合した結果としての実質的に線形の実行ストリームは、効率的な実行動作を保証し、同時に、従来のモノリシックディバイスドライバにおいて達成可能であるよりも実質的に更に大きい機能性を作動可能化する。
本発明の更に他の利点は、ディバイスドライバが、実質的に線形の実行ストリームのコンテキスト依存変更を提供することである。コンテキスト間の切換えを作動化またはサポートするために必要な変換機能は、変換機能の実施が必要かどうかを判定するための反復テストを最小限にするように実行ストリームに機能を直接リンクすることによってサポートされる。
本発明の更なる別の利点は、ディバイスドライバが、ハードウェアインタフェースを介してアクセス可能な特定のコントローラコンフィギュレーションをサポートするために必要または最適である実質的な機能オブジェクトの動的ローディング及びコンフィギュレーションを組み込むことである。ディバイスドライバは、当該コントローラを構成する独立した機能的なサブエレメントを識別するためにハードウェアインタフェースを介して、或いは、そうでなければ、コントローラから獲得された符号化済みコンフィギュレーションデータに応答し、サブエレメントをサポートするために適したハードウェアインタフェースオブジェクトの対応する集合を決定し、当該ディバイスドライバの初期化の一部として、オブジェクト集合において動的にロード及びリンクする。
本発明の更に別の利点は、ディバイスドライバが、機能的または操作上の或るアスペクトに関してプログラム可能であるような様々のハードウェアインタフェースオブジェクトをサポートすることである。ハードウェアインタフェースを介して、或いは、そうでなければ、コントローラから獲得された符号化済みのコンフィギュレーションデータに基づき、当該ディバイスドライバは、ハードウェアインタフェースオブジクトがそれらの対応するサブエレメントをどのようにしてサポートするかということの詳細について定義する操作上のコンフィギュレーションデータを用いてハードウェアインタフェースオブジェクトをプログラムするために、システムメモリからのコンフィギュレーションデータを識別し、そして、ロードする。
更に本発明の他の利点は、当該ディバイスドライバが、その中において、他のハードウェアインタフェースオブジェクト、及び、ディバイスドライバの他の構造的構成要素との実質的分離における新規ハードウェアインタフェースオブジェクトが開発可能であるような、確立したアーキテクチャを提供することである。
ハードウェアインタフェースオブジェクトの構造的設計は、対応するハードウェアインタフェースオブジェクトをプログラムするために使用される操作上のコンフィギュレーションデータを再定義することによって実施されるべきコンフィギュレーションの実質的な改訂及び改良を前記オブジェクト自体が同様に可能にする。改訂されるか、或いは、新規なコントローラサブエレメントをサポートするディバイスドライバの修正は、サブエレメントに対応するハードウェアインタフェースオブジェクトに対してソースコード修正の準備をすることと対照的に、コンフィギュレーションデータファイルの単なる編集に限られることがある。いずれにせよ、互換性テストは、コントローラの改訂されるか、或いは、新規なサブエレメントをサポートする特定のハードウェアインタフェースオブジェクトのテストに適当に限定することが出来る。
本発明の更に別の利点は、ディバイスドライバが、ビデオディスプレイコントローラによって現在サポートされている色深度について一貫性のある報告を実施するために、オペレーティングシステムの修正を提供することである。異なる色深度コンテキストは、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)前記のレジスタプログラミングデータを前記のレジスタインタフェースへ提供する過程を有する過程。
図面の簡単な説明
本発明のこれら及び他の利点及び特徴は、本発明について以下に示す詳細な説明を添付図面と関連して考察することにより一層良く理解されるはずである。この場合、次に示す添付図面全体を通して、同じ参照番号は同じ部分を示すものとする。
図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のプログラミングによって、ビデオディスプレイ32は、テキスト及び図式情報の提示(プレゼンテーション)用としてサポートされる。本発明の好ましい実施例において、多重ディスプレイウィンドウ34、36は、ディスプレイ32上に見える現在作動中または「焦点(フォーカス)」ディスプレイウィンドウを選択するために使用できるポインタ38と組合わせてサポートされる。ディスプレイウィンドウ34、36は、多数の個別事象を介して現行焦点を獲得することが出来る。これらの事象には、コンピュータシステム10によって実行するための新規アプリケーションプログラムの開始が含まれる。
新規に開始されるアプリケーションのメインウィンドウは、デフォルトにより、ディスプレイ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/SAPI)を介してディバイスドライバ50に接続する。ディバイスドライバ50内において、O/S APIは、主として、グラフィックスディスプレイインタフェース(GDI)モジュール64、直接ドロー(DD)モジュール66、各々が、例えば、直接3D(D3D)のような現在または将来の定義済みAPIを表す任意の個数の他のモジュール68を含む多数のオペレーティングシステムインタフェースモジュールによってサポートされている。追加APIエントリポイントは、オペレーティングシステム(O/S)モジュール70、グラフィックスインタフェース(GRX)モジュール71、及び、シェルモジュール72によって提供される。これらのモジュールは、当該ディバイスドライバ50のO/SAPIを構成するコール可能な実質的にすべてのエントリポイントを集団的に表す。
シェルモジュール72は、システム始動に際してオペレーティングシステム核56の初期化の一部として記憶装置16にロードされるディバイスドライバ50の初期構成要素である。例えば、MicrosoftMS−Windows(登録商標)’95TMのような通常のオペレーティングシステムにおいては、例えば、MS−Windows(登録商標)’95のレジストリサービスのような標準初期化構成(コンフィギュレーション)ファイル又はデータベースにおける参照の結果として、オペレーティングシステム核56は、シェルモジュール72を記憶装置16にロードするはずである。
シェルモジュール72によって提供される初期化エントリポイントは、オペレーティングシステム核56がディバイスドライバ50の当該ディバイスドライバ特有の初期化を開始することを可能にする。この初期化の一部分として、シェルモジュールは、ボードドライバ、ハードウェアインタフェースモジュールの集合、及び、オペレーティングシステム層54に呈示されるはずのO/SAPIをサポートするようにディバイスドライバ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用として発表済みのMicrosoft直接3DAPIをサポートするはずである。これらの各APIに関する文書は、Microsoft,Inc.(Redmond、Washington)の市販製品として入手可能なMicrosoftソフトウェア開発キット(SDK)及び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、二次元グラフィックス制御モジュール86、及び、三次元グラフィックス制御(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に識別する。
Figure 2010033607
Figure 2010033607
Figure 2010033607
表に示すように、シェルオブジェクトには、いくらかの大域フラグデータ、APTコールエントリポイント、ディバイスドライバ50の構成要素を表す高レベルソフトウェアオブジェクトへのポインタ、及び、多数のシェルライブラリルーチン又はディバイスドライバ50の内部オペレーションをサポートするために用いられる機能が含まれる。
オペレーティングシステムオブジェクトは、オペレーティングシステム層54サポート機能へのAPIコールアクセスを提供する。オペレーティングシステムオブジェクトのエレメントを表IIに識別する。
Figure 2010033607
Figure 2010033607
Figure 2010033607
サポートされるエントリポイント別に示すように、O/Sオブジェクトは、オペレーティングシステム層54へのコールインタフェースを供給する。下位レベル及びBIOS機能へのコールインタフェース、及び、プラットホーム特有機能へのコールインタフェースを提供する。このプラットホーム特有コールインタフェースは、プラットホーム可搬性の細部を隠すために役立つ多数のユーティリティ又はライブラリルーチンを意味する。O/Sオブジェクトの他の機能と必ずしも関連しているとは限らないが、1つのモジュールに全てのプラットホーム特有コール及び機能を収集するために、これらのルーチンはこのモジュールに集中され、それによって、プラットホーム可搬性の変化を実質的にこの1つのモジュールに制限する。更に、これらのルーチンは、当該モジュールの残りの部分と同様に、アセンブラコーディングを用いて、全体的に最も良好に具体化される。
B.下位レベル初期化
シェルモジュール72は、次に、ディバイスドライバ50の残りの部分の動的ローディングを開始する。正しいボードドライバ74を識別するために、シェルモジュール72は、特定のボードタイプを識別するためのビデオディスプレイコントローラ19の初期評価94を実施する。ボード識別子は、コントローラ19に物理的に常駐し、そして、シェルオブジェクトの「BoardData」フィールドに記憶されているデータ構造から、コントローラ19を介して読み取られることが好ましい。好ましい実施例において、ボード識別子は、最初、レジスタインタフェース30を介してアクセス可能なビデオディスプレイコントローラ19に設置されている通常のオンボードROM29に記憶される。表IIIは、ボード識別子データ構造の好ましい構造を提供する。
Figure 2010033607
Figure 2010033607
「ID」フィールドは、ボード識別子構造がディバイスドライバ50に適合することを確認する静的データ値を提供する。「Revision」フィールドは、将来、代替構造が具体化された場合に、ボード識別子構造の特定構造を定義するために用いられる。「StructureSize」フィールドは、構造のサイズを定義する。「BoardFamily」フィールドは、この特定な場合におけるビデオディスプレイコントローラ19をサポートするために必要なディバイスドライバ50の一部分としてロードされることが必要なボードドライバ74を主として識別するために用いることのできる値を記憶する。少なくとも「BoardFamily」値を含むボード識別子構造の値は、board.datファイルにおいてキー名探索(ルックアップ)を実施するためのキーとして用いられる。キーは、有意ボード識別子フィールド値の単純連結として形成されることが好ましい。board.datファイルは、特定の場合におけるボードドライバ74の対応ファイル名にキーを相関関係付けるフラットファイルであることが好ましい。
特定のボードドライバ74が94において一旦識別されると、当該キー値に対応するボードドライバ74をロードするために、シェルモジュール72は、オペレーティングシステムモジュール70を介してコールを発行する。これに応答して、オペレーティングシステム層54は、96において、リクエストされたボードドライバ74を記憶装置16にロードし、そして、メモリポインタをシェルモジュール72に戻す。次に、ボードドライバ74の初期化エントリポイントがコールされる。
ボードドライバ74の初期化の一部分として、ボードオブジェクト98が作成される。ボードオブジェクトは、厳密には、オペレーティングシステムもハードウェアインタフェースモジュールも表さないが、オペレーティングシステム又はハードウェアインタフェースモジュールを表すオブジェクトによって便宜上用いられる基礎データ構造形を確立する。ボードオブジェクトの構造を表IVに示す。
Figure 2010033607
Figure 2010033607
ボードオブジェクト初期化の一部分として、ボード識別子構造へのポインタ「BoardData」は、シェル72から獲得される100。ビデオディスプレイコントローラ19に所在する各サブエレメントの特定のタイプを識別するために、ボード識別子構造における更なるフィールドが調査される。プリセットされたコード化済みの値は、特定の場合におけるサブエレメントを識別するために用いられる。ボード識別子のフィールドは、一般に、コントローラ19のサブエレメントの固定された態様に対応することが好ましい。例えば、DACのタイプ又はビデオメモリ、VRAM又はDRAMのタイプは、ボード識別子構造を介して提供されても差し支えない。
おそらくフィールドがアップグレード可能であるために、サブエレメントの態様が固定されていない場合には、特定の態様は、従来の方法によって決定されることが必要である。例えば、コントローラが一度使用されさえすれば、ビデオディスプレイコントローラ19において利用可能なディスプレイRAMの量(ビデオメモリサイズ)は変更可能である。ただし、ボード識別子は、静的であり、そして、コントローラ19の製造に際して確立される。従って、従来のメモリ走査ルーチンは、そのような場合においてビデオディスプレイコントローラ19に所在するビデオメモリの全体量を正確に決定するために利用することが出来る。ディスプレイコントローラ19は、おそらく、当該コントローラ19が遺産的に具体化されたことにより、同様に、ボード識別子29を持っていないこともあり得る。従って、この場合、当該コントローラ19に所在するサブエレメントの妥当な識別は、通常のInt10Biosコールを介して獲得された情報から推論可能である。
ボード識別子構造における最後のフィールドは「BoardDependentInfo」フィールドである。このフィールドは、特定のボードタイプ及びモデルの追加操作特性にフラグを立てるために使用されることが好ましいワード‐ワイドビットマップデータエリアを提供する。これらのフラグは、従属的かつボードドライバ74によって一意的に復号された具体化である。特に、これらのフラグビットは、識別されなければボード識別子の他のフィールドによってカバーされることのない詳細な構成(コンフィギュレーション)オプションを識別するために使用可能である。例えば、1つのフラグビットは、ディバイスドライバ50のより後の方のバージョンと共に使用可能な些細なサブエレメントオプションの存在を識別するために使用可能である。
従って、ボードドライバ74は、ボード識別子構造から、ビデオディスプレイコントローラ19を最適サポートするために必要なハードウェアインタフェースモジュールの特定の集合を決定する102。次に、ボードドライバ74は、オペレーティングシステムモジュール70を介してボードモジュールと静的にリンクしていないハードウェアインタフェースモジュールの識別済み集合を順次にローディングすること104をリクエストする。各ハードウェアインタフェースモジュール76−88が記憶装置16にロードされるにつれて、対応するソフトウェアオブジェクトを確立するために、各モジュールの初期化ルーチンがコールされる106。好ましいディバイスドライバ50において、各ハードウェアインタフェースオブジェクトは、共通ヘッダ部分とハードウェア従属部分とを含むデータ構造として構成される。共通ヘッダ部分は、表Vに示すフィールドを含むオブジェクトヘッダデータ構造(OBJHDR)であることが好ましい。
Figure 2010033607
「ObjectVer」フィールドは、カプセル封入ハードウェアインタフェースによってサポートされたハードウェアサブエレメントの特定具体化を指定する一意的な識別子を提供する。「Module」フィールドは、カプセル封入されたハードウェアインタフェースモジュールの記憶場所を指示するオペレーティングシステムから戻されたメモリポインタを含む。「ObjDataInstance」フィールドは、ハードウェアインタフェースオブジェクトのこの例示用として予約されている専用データエリアへのポインタを提供する。「RegClassHandler」フィールドは、関連ハードウェアサブエレメントが、モード設定動作呼出しの一部分としてプログラムされなければならないインタフェースレジスタを備えているかどうかを定義する。当該フィールドの値が空白(ナル)である場合には、リクエストされた任意のモード設定プログラミングは、ハードウェアインタフェースによってカプセル封入されたモジュールへハードコード化される。当該フィールドが空白(ナル)でない場合には、当該フィールドの値は、レジスタ名および態様変更のサポート用に使用可能なインタフェース手順の定義を含む構造へのポインタである。RegClassHandlerの構造を表VIに示す。
Figure 2010033607
オブジェクトヘッダの「ObjectInit」及び「ObjUnInit」フィールドは、現在のハードウェアインタフェースオブジェクトによってカプセル封入されたハードウェアインタフェースモジュールを初期化および解放するためのコールアドレスを提供する。オブジェクトヘッダの「ModeSet」フィールドは、態様変更をハードウェアインタフェースオブジェクトに合図するために用いられるハードウェアインタフェースモジュールエントリポイントを確立する。好ましい実施例において、このエントリポイントへの3つの異なるコールが実施可能である。各コールは、1つのモード設定を呼び出すために、1つのモード設定が発生しようとしていること、及び、1つのモード設定が完成したことを指示するためのコールのオペランドによって区別される。
最後に「SetDPMSState」フィールドは、システム10のパワー管理状態の特定モジュールに特有の変更をサポートするためのエントリポイントを提供する。
従って、ハードウェアインタフェースモジュール初期化ルーチンは、ハードウェアインタフェースオブジェクトのハードウェアインタフェース従属部分用の記憶装置を含み、当該オブジェクトのこの実例におけるオブジェクト特有のフィールドを初期化し、そして、当該ハードウェアインタフェースオブジェクトのこの例示に対して専用状態が維持されるべきあらゆる実例データの割当を獲得するために、カプセル封入ハードウェアインタフェースオブジェクトの一例の作成を提供する。当該実例データへのポインタは、オブジェクトヘッダにおける「ObjDataInstance」フィールドに記憶される。次に、初期化ルーチンは、ポインタをハードウェアインタフェースオブジェクトに返す。このポインタは、ボードオブジェクト基礎構造のメンバーフィールドに記憶される108。基礎ハードウェアインタフェースオブジェクト、特にクロックオブジェクトの定義を表VIIに示す。
Figure 2010033607
Figure 2010033607
表に示すように、クロックサブエレメントと関連したハードウェア特有機能は無い。ただし、クロック周波数は、クロックサブエレメントの一般的なプログラム可能態様であり、更に、モードセットオペレーションに密接に関連している。
従って、オブジェクトヘッダ構造のRegClassHandlerフィールドは、コントローラ19において生成されるクロック周波数を最終的に制御するクロックサブエレメントのインタフェースレジスタへのアクセスをサポートするために必要なレジスタの定義を含むRegClassHandler構造へのポインタを含む。
表VIIIは、例えば、ハードウェアカーソルオブジェクトを定義する更に幾分か複雑なオブジェクトを示す。
Figure 2010033607
既に述べたように、オブジェクトヘッダは、カーソルオブジェクトのエレメントとして含まれる。CursorEnableフィールドは、コールパラメータの状態に応じてハードウェアカーソルの可視性をオン(出現)又はオフ(消滅)させるために、ハードウェアカーソルインタフェースモジュールへのエントリポイントに対するポインタを提供する。CursorSetフィールドは、オペランドによりコールに対して指定されたパターンに対するカーソルパターンの設定を提供するエントリポイント15に対するポインタを提供する。CursorMoveフィールドは、コールと共に提供されるX及びYオペランドによりディスプレイ32上におけるカーソルのホットスポットを指定するためのルーチンへのエントリポイントを識別する。CursorSetColorフィールドは、ディスプレイ32上に呈示された二色カーソルを色拡大するために用いられるルーチンを識別する。
他のハードウェアインタフェースオブジェクトには、DACオブジェクト130(DACOBJ;表IX)、ビデオオブジェクト136、グラフィックスオブジェクト138(DRAWENGOBJ;表X)、及び、3Dグラフィックスオブジェクト140が含まれる。
Figure 2010033607
DrawEngObjによって参照される基礎構造には、多数の基礎的な製図機能が含まれる。この基礎構造は、APIコールに応答してGDIオブジェクトからのコールの線形実行内における機能への直接アクセスを可能にするためにGDIオブジェクトのコード空間内に保持された機能ポインタの1つのコピーを用いて、製図エンジンオブジェクト内に確立される。基礎構造の定義を表XIに示す。
Figure 2010033607
これらオブジェクトの定義によって示すように、ハードウェアインタフェースモジュール76−88の各々は、オブジェクト、及び、オブジェクト特有のエントリポイントの固定した集合を提供するハードウェア特有の拡張(エキステンション)の容易な管理を可能にする標準化済み部分を含む対応するハードウェアインタフェースオブジェクトを確立するために初期化する。これらオブジェクト特有のエントリは、カプセル封入されたハードウェアインターフェイスモジュールの初期化ルーチンにより、ポインタリファレンスを用いて充填される。ポインタリファレンスは、論理的に参照される機能を提供するカプセル封入されたモジュール内の機能を対象とする。現行色深度、スクリーン解像度、または、他のコントローラ関連特性に基づいて、論理的機能特有の具体化が異なる場合には、カプセル封入されたモジュールは、対応する特有のエントリポイントを用いて具体化されることが好ましい。エントリポイントの適当な部分集合は、オブジェクトエントリポイントに初期化されたポインタリファレンスによって識別され、それによって、ディバイスドライバ50のオペレーション進行期間中に、当該コントローラ19の現行特性状態のランタイムテストを繰り返すことなしに、特性に適切なオペレーションを暗黙確立する。
従って、個々のオブジェクトは、オブジェクト構造の共通OBJHDR態様に基づき包括的に管理可能であり、同時に、基礎となる機能的および具体化細目から独立し、特に、例えば現行色深度及びスクリーン解像度のような特性に基づく機能の種々異なる具体化例を含むそれぞれ特定タイプのハードウェアインタフェースオブジェクトに対して充分に定義されたエントリポイントインタフェースを確立するためにも用いることが出来る。
本発明の好ましい実施例において、ボード識別子から識別されたboard.dmmファイルが、クロック、DAC、または、ハードウェアカーソルの存在を、ビデオディスプレイコントローラ19における存在程明確には指定しない場合には、ボードドライバ74と静的にリンクした対応するデフォルトモジュールが、デフォルトモジュールとして利用される。従って、ハードウェアインタフェースモジュールの集合が識別され、ロードされ、そして、初期化された後で、ボードオブジェクトにおける空白(ナル)ポインタは、ボードドライバ74によって検出される。例えば、ハードウェアカーソルオブジェクトが存在しない場合には、ボードドライバ74は、オブジェクトを作成し、そして、ハードウェア従属エントリポイントを、ボードドライバ74内の対応するデフォルトルーチンに初期化する。それによって、ハードウェアカーソルの機能性は、ソフトウェアエミュレーションを介してサポートされるか、或いは、更に一般的には、ハードウェアインタフェースオブジェクトのなかの別のオブジェクトの本質的な構成要素としてサポートされる。いずれにしても、デフォルトオブジェクトはボードオブジェクトにリンクされ、その後で、動的にロード及びリンクされたハードウェアカーソルオブジェクトと同じ本質的な機能性を提供する。
C.上位レベル初期化完了
一旦、ハードウェアインタフェースオブジェクトの初期化が完了すると、ボードドライバ74の初期化ルーチンはシェルモジュール72に戻る。次に、シェルモジュール72は、GRXAPIオブジェクト71を作成するために進行する109。GRXオブジェクトは、オペレーティングシステムインタフェースオブジェクト64、66、68への内部汎用または仮想化インタフェースとして役立つ。GRXオブジェクト71は、表XIIに示す比較的簡単なインタフェースを提供する。
Figure 2010033607
GrxApiFastCopyコールエントリポイントは、オン‐スクリーン及び、オフ‐スクリーンビデオメモリ内に配置されたビットマップを操作するために特にシェルモジュールを含む全てのオペレーティングシステムAPIレベルモジュールによって使用可能な共通アクセスポイントを提供する。共通アクセスポイントの確立は、ビデオメモリ管理を簡素化する。同様に、GrxApiColorMatchコールエントリポイントも、スクリーン32の現行色深度における論理的から物理的への色変換を実施するために、全てのオペレーティングシステムAPIレベルモジュールによって使用可能な共通アクセスポイントを提供する。
オペレーティングシステムインタフェースオブジェクト64、66、68の確立を開始するために110、GRXオブジェクト71のOBJHDR内の初期化エントリポイントは、シェルモジュール72によってコールされる。本発明の好ましい実施例において、GDI及びDDオブジェクト64、66は、GRXオブジェクト初期化ルーチン内において静的に識別される。その代わりに、又は、追加的に、オペレーティングシステムインタフェースオブジェクトは、interface.dat構成(コンフィギュレーション)ファイルへの参照によるシェルモジュール72によって識別可能である。識別されたオペレーティングシステムインタフェースモジュールは、シェルモジュール72と静的にリンクしなかった場合、記憶装置16に順次ロードされる112。
各オペレーティングシステムモジュールがロードされるにつれて112、モジュール初期化ルーチン114がコールされる。各オペレーティングシステムインタフェースモジュールの初期化の結果として、は、対応するオペレーティングシステムインタフェースオブジェクトが作成される。ハードウェアインタフェースオブジェクトの場合と同様に、オペレーティングシステムインタフェースオブジェクトは、それぞれ、オペレーティングシステムインタフェースオブジェクトの操作のための共通基準を確立するオブジェクトヘッダ基礎構造(CBJHDR)を含むことが好ましい。同様に、オブジェクトヘッダの使用は、ディバイスドライバ50による態様変更を合図するために、コールに対するサポートを提供する。その結果として、オペレーティングシステムオブジェクトは、必要に応じて、当該オブジェクトの各例示に関する専用データスペースをサポートする。
GDIオブジェクト120は、表XIIIに記載された定義を用いて作成される。
Figure 2010033607
Figure 2010033607
GDIオブジェクト120は、標準Dibエンジンの基礎構造インタフェース(DibengObj)に関するリンク済み参照を含むか、或いは、提供する。
基礎構造を表XIVに定義する。
Figure 2010033607
DibengObjの更なる標準基礎構造を表XV及びXVIに定義する。
Figure 2010033607
Figure 2010033607
表XV及びXVIは、直接ドローオブジェクト124を定義するオブジェクトを示す。
Figure 2010033607
Figure 2010033607
16ビット及び32ビット両環境における使用をサポートするためには、16ビット及び32ビット両APIコールをサポートするディバイスドライバ50の構成要素に対する16ビット及び32ビット両ポインタを提供するために、付加ObjInstData基礎構造が用いられる。
最後に、各々のオペレーティングシステムインタフェースオブジェクトの初期化が完了するにつれて、リンク116は、GRXオブジェクト71とGDI及びDDオブジェクト120、122との間で確立される。次に、GRX初期化ルーチンはシェルへ戻る。同様に、全てのオペレーティングシステムインタフェースオブジェクトはシェルオブジェクトにリンクされる。次に、シェルモジュール72の初期化ルーチンが戻る。
IV.操作状態コンフィギュレーション
各オペレーティングシステム及び対応する実行可能モジュールを論理的にカプセル封入するハードウェアインタフェースオブジェクトを備え、単一文脈状態において作動中のディバイスドライバ50の論理的コンフィギュレーションを図4に示す。シェルドライバ74の論理的にカプセル封入されない部分は、一般化されたシェルライブラリ72’として常駐状態を維持する。同様に、ボードドライバ74の論理的にカプセル封入されない部分は、ボードライブラリ74’として常駐状態を維持する。両ライブラリ72’、74’は共通資源として機能し、ディバイスドライバ50の内部機能をサポートイする。従って、初期化されたディバイスドライバ50は、ドライバソフトウェア透視図から、ディバイスドライバ50によって提供されるオペレーティングシステムAPIを凝集的に確立するオペレーティングシステムインタフェースオブジェクト及びディバイスドライバ50とハードウェアインタフェースレジスタ30との間にハードウェアインタフェースを確立するハードウェアインタフェースオブジェクトによって定義される。
A.上位レベル関係
GDIオブジェクト120、直接ドローオブジェクト122、直接3Dオブジェクト124、及び、シャルオブジェクト126を含むオペレーティングシステムインタフェースオブジェクトは、オペレーティングシステム層54に提供される部分APIの定義によって相互に論理的に分割されるオブジェクトの集合を表す。既存のAPIコールサポートの改訂、及び、あらゆる特定のオペレーティングシステムインタフェースオブジェクトへの新規APIコールの追加は、他のオペレーティングシステムインタフェースの具体化または動作(オペレーション)には、設計上、実質的に一切影響を及ぼさない。更に、オペレーティングシステム層54による新規定義によるか、或いは、アプリケーション60から直接発信されたコールをサポートするためかいずれの場合であっても、新規部分APIのサポートは、対応するオペレーティングシステムインタフェースオブジェクト及びカプセル封入されたオペレーティングシステムインタフェースモジュールの定義を介して容易に提供可能である。ただし、新規または改訂したAPIコールが、既存のオペレーティングシステムインタフェースオブジェクトによってサポートされる他のAPIコールのうちの任意のコール以外の非常に異なる機能に関係するか、或いは、前記機能を必要とする場合には、追加ライブラリルーチンが、シェルライブラリ72’に追加されることが必要となることも有り得る。
シェルライブラリ72’は、オペレーティングシステムインターフェイスオブジェクトの全集合によって使用可能な1組の共通または仮想化されたサポート機能を確立するために役立つルーチンのライブラリを提供するために、オペレーティングシステムインタフェースモジュールから論理的に分割される。オペレーティングシステムインタフェースオブジェクトの各々は、(1)明確に定義されたAPIコールセットをサポートし、(2)サポートされた各APIコールに関するパラメータ妥当性検査を提供し、(3)ディバイスドライバ50の動作における文脈変更に際して持続することが望まれるデータオブジェクトに関する専用データスペースを潜在的に管理し、(4)当該オブジェクトによってサポートされるAPIコールの各々を機能的に具体化するために、順序付けられた1つ又は複数の仮想化されたコールをシェルライブラリ72’に発行し、最後に(5)フォーマットし、そして、当該オブジェクトによってサポートされるAPIコールの各々に適した方法においてオペレーティングシステム層54にデータを戻すことが好ましい。
本発明によって認識されるように、ディバイスドライバ50への多くのコールのバリアント(異形体)は、異なる特定のAPIに向けられる。これらのバリアントは、例えば特定の形式およびコールを備えた一連のオペランドデータのように、特有の態様が異なる。従って、特定のオペランドデータ妥当性検査は各APIコールに特有である。従って、各オブジェクトは、APIコール特有のオペランド妥当性検査、および、潜在的には、この或いは他のオペレーティングシステムインタフェースオブジェクトによってサポートされる機能的に類似する他のAPIコールとは対照的に一体化される或るフォーマットへのオペランドデータの変換を実施することが好ましい。従って、1つ又は複数のAPIコールの集合は、ディバイスドライバ50に対して内部的に仮想化される。
各オペレーティングシステムインタフェースオブジェクトは、当該オペレーティングシステムインタフェースオブジェクトによってサポートされるAPIコールのオペランドとして、関係するか、導出されるか、或いは、提供されるデータオブジェクトを保存する必要性に応じて、文脈特有のデータスペースを管理する。
例えば、GDIオブジェクト120は、所定の文脈におけるディスプレイポインタ38の場合と関連したビットマップ済み解像度従属パターン又は色彩を定義するデータオブジェクトを維持可能である。従って、既存の文脈のリザンプションに際して、データオブジェクトは、この文脈においてディスプレイポインタ38のインスタンスを能率的に再実現するために使用可能である。再実現は、一切の参加を必要とすることなしに、或いは、あらゆるアプリケーションプログラム60又は当該オペレーティングシステム層54への通知さえも必要とすることなしに、完全にサポートされることに特に注意されたい。この例におけるデータオブジェクトは、それは、ディスプレイポインタ38のパターン又はカラーを初めにセットしたAPIコールのオペランドとして提供されるオリジナルデータオブジェクトから導出される。例えば新規な色深度に関係する新規文脈が作成される場合において、新規データオブジェクトは、前の文脈のデータオブジェクトからの色深度変換によって導出される。先在している文脈への文脈スイッチに際して、データオブジェクトの先在インスタンスが再使用され、その結果として、当該ディスプレイポインタ38のインスタンスの再実現において情報は一切失われることはない。
同様に、GDIオブジェクト120のインスタンスは、パレット化されたカラーコンテキストにおいて、カラーパレットのみに限らず、順方向及び逆方向のパレット変換表までも、パレット化されたコンテキストに特有のPDevice構造の一部として維持されることが好ましい。Windows(登録商標)’95TMオペレーティングシステムにおいて、オペレーティングシステム層54は、少なくとも当該オペレーティングシステム層54から選定されたコールに関するディスプレイタイプのディバイスドライバにパスされる或る情報を維持するために用いられるフィジカルディバイス(PDevice)構造への単一ポインタをサポートする。
PDevice構造の意図は、ハードウェア特有のコンフィギュレーションデータを一般的に記憶するためにディバイスドライバ50によって使用可能な増補可能なデータ構造を提供することにある。本発明は、パレット化されたコンテキストに特有の色変換表を記憶するために用いられるだけでなく、各コンテキストに関する新規PDevice構造を一般的に複製し、そして、対応するコンテキストの色深度と合致する構造を増補する。PDevice構造の好ましい構造を表XVIIに示す。
Figure 2010033607
コンテキスト特有の持続性データオブジェクトとして効果的なカラーパレット表のメンテナンスは、パレット化された文脈への文脈スイッチに際して、カラーパレット及び変換表の迅速な回復を可能にする。特に、パレット化されないコンテキスト期間中、及び、潜在的には、独立したカラーパレット及び変換表定義を備えた独立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にコールする。シェルオブジェクト126は、最初に、所望空間解像度を指定する返されたオペランドの妥当性を確認する。次に、オペレーティングシステム及びハードウェアインタフェースオブジェクトの各々を順次にコールするために、最初に「モード変更直前」オペランドを用い、次に、「モード変更」オペランドを使用し、最後に「モード変更完了」オペランドを用いて、シェルライブラリ72’のセットモードルーチンが、シェルオブジェクト126によって、コールされる。
「モード変更直前」オペランドを用いた最初のコールは、コントローラ19に対してドライバ50の状態を静止させるために必要な事象のシーケンスをディバイスドライバ50内において開始する。特に、シェルライブラリ72’のモード設定ルーチンは、モード設定に参加することが必要な現行コンテキスト内においてオペレーティングシステム及びハードウェアインタフェースオブジェクトの各々を識別するために作動する。これらのインタフェースオブジェクトは、オブジェクト特有のRegClassHandler構造に対して有効または非無効のポインタを有するオブジェクトとして識別される。次に、モード設定コールは、参加している各オブジェクトに対して順々に配置される。これに応答して、各オブジェクトは、現行状態データを、例えば現行PDevice及びGDI_Infotable構造のようなシステムデータ構造に、或いは、オブジェクト自体の専用データスペースに、現行コンテキスト内に明確に定義された実行状態を確立するために適切であるように、順々に保管するために実行する。最後の参加オブジェクトの戻りが完了すると、ディバイスドライバ50の動作の実質的な静止が完了する。次に、シェルライブラリ72’は、シェルオブジェクト126に戻る。次に、「モード更変」を指定する第2のモード設定コールは、シェルオブジェクト126によって、シェルライブラリ72’に発信される。「モード変更」オペランドを用いてシェルライブラリ72’によりコールされると、ボードライブラリ74’は、空間解像度と色深度との所望組合わせに対応する「SectionName」を構成する。次に、所定の「SectionName」によって識別されるセクションを位置決めするにはsystem.iniファイルの場合と全体的に同じ構造シンタックス(構文)を有することが好ましいmodes.dmmコンフィギュレーションファイルを走査するために、オペレーティングシステムインタフェースオブジェクト128を介して、O/SAPIコールが行われる。Windows(登録商標)’95TMの具体化例において、画素当たり8ビットの色深度であって1024x768の空間解像度を定義するSectionHeaderは、[1024,768,8]として指定される。
所定のSectionHeaderに後続するテキストは、シェルライブラリ72’によって読み取られ、そして、パーズ(オペランド解析)される。このテキストは、オペレーションの新規コントローラモードを設定するためにコントローラ19の各参加サブエレメントに対して実施されなければならない特定のモード設定命令の構造化された仕様を表す。好ましい実施例において、モード設定命令は、RBGISTERCLASS、COMMAND、及び、アーギュメントのようなコンマで区切られた項で構成されたライン指向文である。好ましい実施例において、コントローラ19のどのサブエレメントが特定の命令に応答してプログラムされるべきかを最終的に決定するために、RegClassHandler構造の「クラス名」フィールドは、命令の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」を記入する。次に、RegClassMapにおいて識別されるその次の順次的なポートアドレスには、第2の値「value2」が記入される。従って、論理的に順序付けられたポートのアドレスには、特定のランコマンドによって提供される全ての値の記入が完了するまで、連続した値が記入される。
リード/マスク/ライトコマンドの命令フォーマットを次に示す:

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機能は、同様に、REGISTERNAME項によって識別される特定のオブジェクトに特有である。
本発明の好ましい実施例において、命令の実行においてレジスタ/アーギュメントペアが獲得される場合には、各オブジェクトのWrite_reg機能は、レジスタ/アーギュメントペアを、実際に記入されるべきレジスタのハードウェア特有表現に効果的に変換することを提供する。レジスタ/アーギュメントペアは、当該命令の実行によって、フラットであって順序付けられた論理的レジスタモデルに効果的に記入される。Write_reg機能は、当該ペアをサブエレメントハードウェア特有モデルに変換する。例えば、DACインタフェースオブジェクト130特有の情況において、論理レジスタ指標値、及び、索引論理レジスタに記憶されるべき値を用いてプログラムされる次の順次ベースレジスタによってベース物理レジスタがプログラムされることを要求する多重化レジスタモデルへの変換が行われる。従って、DACインターフェイスオブジェクト130のWrite_reg機能へのコールにおいては順次レジスタが引用されるが、物理ベースレジスタの単一ペア作成は当該機能によって記入される。
各オブジェクトのRead_reg機能は、同様の変換を実施する。引用された論理レジスタは、対応する物理ベースレジスタに対する基準に変換される。DACインターフェイスオブジェクト130の場合においては、正しい値が読み取り可能であるように、論理レジスタを定義するインデックスを用いたベース物理レジスタのプログラミングが変換に含まれる。
他のインタフェースオブジェクトは、コントローラ19の他のサブエレメントのプログラミングに適するように、当該命令のフラットな順次レジスタモデルの直列またはビット順次モデルへの変換を提供可能である。従って、順次レジスタ/アーギュメントペアは、コントローラ19の特有サブエレメントのプログラミングに適したプログラム値のビット直列シーケンスが後続する論理レジスタ指標値に変換される。
一例として、Diamond Stealth 64 Video DRAMビデオコントローラは、S3 Vision868グラフィックスアクセラレータチップを利用して、グラフィックスモードを作動可能化するように選択的にプログラムすることが可能である
Figure 2010033607
グラフィックスモードの非作動化:
Figure 2010033607
1024x768x8モードへのスイッチ:
Figure 2010033607
Figure 2010033607
好ましい実施例において、ハードウェアインタフェースオブジェクトのWrite_reg及びRead_reg機能は、レジスタインターフェイス30に対するハードウェア読み及び書きオペレーションを実際に実施するために、ボードライブラリ74’における多数の機能を利用する。この間接性追加レベルは、コントローラ19の異なるハードウェアサブエレメントに関して、コントローラ19の特定モデルに応じて異なる物理アドレスに存在することを可能にする。従って、特定のハードウェアインタフェースオブジェクトは、コントローラ19のサブエレメントの特定プログラミングを十分に表すが、ボードライブラリ74’は、コンピュータシステム10の物理アドレス空間内において、サブ‐エレメントを暗黙裡に位置決めする。従って、Write_reg機能コールを介してDACインタフェースオブジェクトによって識別されるベース物理レジスタは、それ自体、DACサブエレメントに論理的に関係する。ボードライブラリ74’は、レジスタインターフェイス30の物理システムアドレス空間内においてレジスタを位置決めするために、DACベース物理レジスタ用の物理アドレッシングオフセットを供給する。
物理アドレッシングオフセットを確立するために、ボードライブラリ74’は、結果的に、コントローラの主要タイプのサブエレメントに特有であるような多数の読み及び書きルーチンを提供する。例えば、クロックインタフェースオブジェクトは、コントローラ19の明確に定義された特有のサブエレメントを制御するが、通常は、DACサブエレメントと関連したレジスタ内に設置されるか或いはこれを介してアクセス可能であるようなプログラム可能クロックゼネレータを参照する。従って、DAC及びClock両インタフェースオブジェクト用としてボードライブラリ74’によって提供される物理アドレッシングオフセットは同じであるはずである。
ボードライブラリ74’は、フラットな順次物理レジスタセットをアドレスするハードウェアインタフェースオブジェクトに関するBoarRead_reg及びBoardWrite_reg機能をサポートすることが好ましい。BoardRead_DAC、BoardWrite_DAC、及び、BoardWrite_DAC_Array機能は、多重化レジスタの読み書きをサポートし、そして、コントローラ19によって確立される場合におけるDACサブエレメントの物理レジスタアドレス空間内に配置されたカラーパレットアレイに記入するために、ボードライブラリ74’によって提供される。
最後に、コントローラ19の直列プログラムされたサブエレメントへの直列記入オペレーションをサポートするために、BoardWrite_SerialDevice_start及びBoardWrite_SerialDevice_end機能が提供される。
modes.dmmファイルから走査された命令が一旦実行されると、コントローラ19のオペレーティングモードは、所望の空間解像度および色深度の対応するいうに変更される。次に、シェルライブラリ72’は、当該コールに対するオペランドとしての「変更モード」を有するインタフェースオブジェクトの参加集合のモード設定機能の各々に対してコールする。インタフェースオブジェクトは、コントローラ19の新規オペレーティングモードを確立するために必要な任意のサブエレメント特有のルーチンを実行するために、このコールを利用する。
レジスタインタフェース30におけるレジスタに必要なあらゆるプログラミング又はディスプレイバッファ20の直接操作はこの時に実施される。最後のインタフェースオブジェクトが、このモード設定コールから戻った場合には、シェルライブラリ72’がシェルオブジェクト126へ戻る。
次に、「モード変更完了」オペランドを用いた、当該モード設定における各参加インタフェースオブジェクトへの第3及び最終コールが、シェルライブラリ72’によって行われる。オペレーティングシステムインタフェースオブジェクトに先立って、参加ハードウェアインタフェースオブジェクトがコールされる。各インタフェースオブジェクトがコールされるにつれて、当該オブジェクトは、コントローラ19の新規オペレーティングモードにおけるコントローラ19のサブエレメントのオペレーションをサポートするために必要な任意のハードウェア特有オペレーションを実行する。一般に、ハードウェアインタフェースオブジェクトは、このコールに応答して単純に戻る。特定のオブジェクトが空間解像度、色深度、または、他のディバイス特性に基づく具体化依存性を有する場合には、1つの例外が存在する。例えば、Graphicsオブジェクト138のようなハードウェアインタフェースオブジェクトによってカプセル封入されたモジュールが、例えば色深度によって区別される同じ論理機能をサポートする多重ルーチンを提示する場合には、当該オブジェクト構造のコールエントリポイントにおける機能ポインタは、新規色深度に適したルーチンをポイントするように更新される。
オペレーティングシステムインタフェースオブジェクトは、ディスプレイ解像度、色深度、または、当該コントローラ19の新規オペレーティングモードの他のディバイス特性に対応するように、現行コンテキストにおいて存在するデータオブジェクトを再実現するために、この「変更モード」コールを利用することが好ましい。特に、例えばGDIオブジェクトのようなオペレーティングシステムインタフェースオブジェクトは、ディスプレイ32に目に見える特徴を表示するビットマップデータオブジェクトを管理し続けることが可能である。従って、特定のオペレーティングシステムオブジェクトは、先ず、オペレーティングシステムインタフェースオブジェクトによって頻繁に使用される任意の変更済みハードウェアインタフェースオブジェクト機能ポインタを、時宜を得たコールの発信をサポートするオペレーティングシステムインタフェースオブジェクトのローカルコード空間にコピーすることが好ましい。次に、新規ディスプレイ32の空間解像度にマッチするように実際のビットマップ解像度データオブジェクトを調節するために、ビットマップの線形補間が実施されることが好ましい。
オペレーティングシステムインタフェースオブジェクトは、必要に応じて、対応する更新オペレーションを、ディスプレイ32を効果的にリフレッシュするように導くことにより最終的に「モード変更完了」モード設定コールに応答する。この種の更新は、コントローラ19の新規オペレーティングモードにおいてディスプレイ32上に見えるデータオブジェクトの再実現を完了したあらゆるオペレーティングシステムインタフェースオブジェクトに関して特に実施される。一旦スクリーンリフッレシュが完了すると、シェルライブラリモード設定ルーチンはシェルオブジェクトへ戻り、その結果として、前記のシェルオブジェクトがモード設定APIコールから戻る。このようにして、現行コンテキスト内においてモードを変更する過程が終了する。
A.組合わせコンテキスト及びモードスイッチ(切換え)
好ましい実施例において、コンテキストスイッチ(文脈切換え)は、新規色深度へのコントローラ19モード設定をサポートするために、モードスイッチ(態様切換え)と組合わされて実施される。コントローラ19の現行オペレーティングモードの色深度と異なる特定の色深度を予測して実行するアプリケーション60の代わりのAPIコールは、現行色深度に従わなければならない。特に、この種のAPIコールが、持続的パレット又はカラーマップの存在を信頼して、ディバイスドライバ50に対して行われる場合には、コンテキストのサポートが望ましい。代替案として、オペレーティングシステムによってサポートされても差し支えない。オペレーティングシステム核56へのコール可能なエントリポイントは、目標色深度へのO/SAPIコールインタフェースにおけるか、或いは、それ以上において、全ての常駐ビットマップの色深度変換を提供することが可能である。ただし、この種変換の効率及び可逆性、及び、実際に可変であるビットマップの一定のフォーム及びフォーマットに関する持続的な仮定に基づくオペレーティングシステム層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の現行オペレーティングモードに対応するか、或いは、これを論理的に定義する特定のシェルオブジェクト150、152、154、156を識別するために用いられる。
図5bに全体的に示すように、ディバイスドライバ50のオペレーションにおけるコンテキストを定義するためにシェルオブジェクトを使用することにより、ディバイスドライバ50内のそれぞれのコンテキストにおいて明白なインタフェースオブジェクト170、172の例示を可能にする。インタフェースオブジェクト170、172のそれぞれの例示に関して、専用データ空間174、176は、それぞれのインタフェースオブジェクト170、172に割当てられ、そして、これと対応付けられる。ただし、特定のインターフェイスオブジェクト170の全ての例示は、共用インタフェースモジュール178を共同でカプセル封入する。インタフェースモジュール178の実行に際して、専用データスペース174、176への参照は、それぞれのインタフェースオブジェクト170、172に設立された独立ポインタを介して作動可能化される。従って、インタフェースモジュール178は、特定のコンテキストにおいて、正しいオブジェクトに暗黙裡に接続される。即ち、モジュール178は、多重コンテキストの存在に関するアスペクトを明白に管理することを要求されない。むしろ、コンテキストの管理および操作機能は終結し、そして、シェルライブラリ72’のルーチンによって実施される。
コンテキストスイッチを実施する過程は、図6a及び6bに示す過程段階に従って発生する。コンテキストスイッチは、例えば、現行コンテキストの色深度と異なる色深度へのモード変更のような現行モードの或る種のアスペクトに持続性を要求するオペレーティングモードへのモード変更を少なくとも推論的に指定するAPIコールを受け取るシェルオブジェクトの現在活動中のコンテキスト例示150と共に始まる。前の場合と同様に、シェルオブジェクト150は、APIコールのオペランドの初期妥当性検査を実施し、コンテキストスイッチが必要とされることを判定し、そして、新規コンテキスト作成コール180をシェルライブラリ72’に発信する。シェルライブラリ72’は、所望の色深度を有するコンテキストが既に存在するかどうかを判定するために184その時点においてコンテキストプール148内に存在する可能性のあるシェルオブジェクトの存在例示の各々を調査する。例えば、シェルオブジェクト152のような、所望の色深度を有するシェルオブジェクトの例示が存在する場合には、シェルライブラリ72’への新規コンテキスト作成コールはシェルオブジェクト150に戻る。
ただし、その時点において所望のコンテキストが存在しない場合には、新規シェルオブジェクト例示が作成されるはずである186。この新規シェルオブジェクトの作成に先立ち、コンテキスト変更が、以前にはサポートされなかった色深度に関するサポートを必要とするような第1の変更である場合には、シェルライブラリ72’は、対応する色深度変換に関するサポートを有するように修正可能である。本発明の好ましい実施例において、シェルライブラリ72’は、第2の存在コンテキストの作成に関して、単に利便性に関わる問題として、全ての可能な色深度変換に関するサポートを有するように修正される。詳細には、ただ1つの単一コンテキストが用いられている場合であっても、色深度変換が、各々の、及び、全ての製図オペレーションに適用可能であるかどうかに関する一定の条件付きテストを排除するように、現行色深度と目標色深度とを判定し、両者の間の変換を行うためのルーチンは、シェルライブラリ72’のコードに直接パッチされる。
本発明の色深度ルーチンは、8、16、24、及び、32ビットの色深度の間におけるディバイス従属ビットマップの極めて迅速な変換を提供する。16、24、及び、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に接続される。次に、ボードライブラリ74’は、オブジェクトの新規例示を作成し、そして、オブジェクトを新規シェルオブジェクト152のボード構造へ接続するために、ハードウェアインタフェースモジュールの各々の初期化ルーチンを順々にコールする。例えば各モジュールのRegClassHandler構造の内容のように色深度スイッチを通じて変化しない定数は、完全に再作成されるか、或いは、単にコピーされるか、或いは、現行コンテキスト文のオブジェクトから引用されるかのいずれかであることが可能である。例えば、グラフィックスハードウェアインタフェースオブジェクト138の初期化に際して、新規専用ハードウェアアクセラレータコードデータオブジェクトは作成可能である。このデータオブジェクトによって記憶されたコードは、初期化定数、または、コントローラ19のグラフィックスサブエレメントのハードウェアアクセラレータを初期化するためにダウンロードされるシーケンサコードであっても差し支えない。従って、異なるシーケンサコードの集合および部分集合は、異なるコンテキストにおけるグラフィックスインタフェースオブジェクトによって管理可能である。1つの単一オペレーティングモード内において、アクセラレータコードがグラフィックスサブエレメントのオペレーションに際して、必要に応じて、おそらく、異なる製図コマンドの最適実行に関する加速度アルゴリズムを調節するために動的に交換可能である場合には、この能力は特別の意味を持つ。次に、ボードライブラリ初期化ルーチンは、シェルライブラリ72に戻る。
次に、残りのオペレーティングシステムインタフェースモジュールの初期化ルーチンは、新規シェルオブジェクト152の初期化を完成するためにコールされる。各モジュールは、対応するインタフェースオブジェクトの新規例示を作成し、オブジェクトのために必要なあらゆる専用データ空間を作成し、その後で、当該オブジェクトを新規シェルオブジェクト152に接続する。特に、直接ドローオペレーティングシステムインタフェースオブジェクト122の初期化は、新規コンテキスト特有のPDevice構造、及び、潜在的に、新規GDI_Infotable構造の作成を提供する。ハードウェアインタフェースの場合と同様に、これらの構造によって記憶されているデータは完全に再作成可能であり、或いは、現行コンテキストの対応する構造からのデータは、新規構造を初期化するために用いることが出来る。ただし、新規PDevice構造におけるデータは、新規コンテキストの色深度を定義するために、明確に修正される。同様に、GDI_Infotableの画素深度フィールドは、新規色深度を反映するために、同様に修正される。それ以降はシェルライブラリ72’によって管理されるこれら2つの新規構造に対するポインタは、新規コンテキストのシェルオブジェクト152と論理的に対応付けられる。
従って、当該シェルオブジェクト150によって表される現行コンテキストと論理的に異なるコンテキストを定義するために、オペレーティングシステム及びハードウェアインタフェースオブジェクト両方の完全な補集合が作成される。次に、実行は、シェルライブラリ72’からシェルオブジェクト150に戻る。
次に、シェルオブジェクト150は、新規コンテキストを実現するために、ボードライブラリ72’にコールを発信する200。好ましい実施例においてはコントローラ19の所望オペレーティングモードに関する所望色深度及び空間解像度を含むシェルオブジェクト150は、新規コンテキストの特性を識別するために十分なオペランドを提供する。これに応答して、シェルライブラリ72’は、シェルオブジェクトを選択するために、例えばシェルオブジェクト152のような所望の新規コンテキストに対応するコンテキストプール148を探索する。
次に、コンテキストスイッチ(切換え)を実際に実施するための準備に際して、シェルライブラリ72’は、「モード変更直前」オペランドを有するモード設定コールをモード設定206に参加するはずの各インタフェースオブジェクトへ発信する。以前と同様に、参加するインタフェースオブジェクトの各々は、モードスイッチばかりでなくコンテキストスイッチにおいてもあらゆる状態関連情報が一貫して持続することを保証するために、これらの情報を対応する専用データスペースに保管する。
参加インタフェースオブジェクトの最後のオブジェクトからの復帰に際して、シェルライブラリ72’は、現行コンテキストを定義するシェルオブジェクトとして新規シェルオブジェクト152をインストールする。同時に、シェルライブラリ72’は、PDevice構造、及び、ディバイスドライバ50への次のAPIコールにおいてオペレーティングシステム層によって参照されるはずの構造としてシェルオブジェクト152と論理的に関連したGDI_Infotable構造を確立する。
次に、シェルライブラリ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コールを受信すると、例えばシェルオブジェクト152のような、現在活動中のコンテキストのシェルオブジェクトは、継続して受信したAPIコールの受入れを、オペレーティングシステムインターフェイスモジュールによって終結させることにより222、ディバイスドライバ50によってこれ以上の一切のAPIコールの処理を作動不可能にするように作動する。従って、次に、ディバイスドライバ50は、整然とした方法により、予期しないAPIコールの受信によって妨害されることなしに、シャットダウンを実施することができる。
次に、modes.dmm構成コンフィギュレーションファイルのデフォルトセクションは、シェルライブラリ72のパージングルーチンによって読取られ、そして、実行される。このデフォルトセクションによって提供される命令は、コントローラ19に関してデフォルトオペレーティングモードを設定するために224用いられる。このようにして、コントローラ19は、オペレーティングシステム核56のシャットダウンに続いて使用される可能性に関して適切であるような公知の安定した状態に設定される。
次に、シェルライブラリ72’は、ディバイスドライバ50のインタフェースオブジェクト及びモジュールによって用いられているシステムメモリを解放するように作動する。詳細には、シェルライブラリ72’は、ディバイスドライバ50の現在の各コンテキストを識別するために作動する。識別された各コンテキスト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をサポートして作動する。DosVM 242は、ハードウェア30への直接アクセスを試行可能な遺産アプリケーションに関して、Dos−Box保護された実行空間を提供する。Dos VM242の中から又はこれによって発行されるハードウェアアクセス試行の結果をトラップし、かつ、適切にエミュレートするために、当該ディバイスドライバ50のバージョン50’が提供される。DosVM 242内におけるアプリケーションのウィンドウモード実行をサポートして作動中のVDD 50’は、オペレーティングシステムの通常使用を介して、I/Oまたはレジスタインタフェース30に対応するメモリスペースを選択的に確立する。このアクセストラップは、一般に、DosVM 242がフルスクリーンモードに切り換えられるか、或いは、実行が他の仮想マシン240、244に移動する場合に解放(リリース)される。ウィンドウモードにおけるDosVM 242へ実行が戻る場合、或いは、フルスクリーンモードからウィンドウモードに切り換えられた時にアクセストラップが再表明(リアサート)される。
アクセストラップがアクセス試行を検出すると、当該トラップによって獲得されたアクセス特性情報がVDD50’に提供される。詳細には、図9に示すように、ボードライブラリ7431には、論理的に接続246を介して、オペレーティングシステム54により、アクセス試行情報が提供される。VDD50’の構成要素は、ディスプレイドライバ50の単一コンテキストバージョンを実現することが好ましい。ただし、Dos VM 242の下における多重コントローラ19を適切にサポートするために、多重コンテキストは容易にサポートされることが可能である。
単一コンテキスト内において、ハードウェアインタフェースオブジェクト130’、132’、134’、及び、138’は、ハードウェアへ直接アクセスしようとする連続試行に基づくディスプレイの意図的状態の表現を維持するように、アクセス特性データを記憶するために作動する。ハードウェアインタフェースオブジェクトと対応するRegclassMap構造は、ハードウェアサブエレメントの各クラスに対応する状態情報に関する記憶空間へのポインタを用いて増補されることが好ましい。同様に、ハードウェアインタフェースオブジェクトは、意図したスクリーンの外観の適切な表現のディスプレイを生じさせるために、O/Sオブジェクト128’の支援によってオペレーティングシステムコールを生成するエミュレーションルーチンを提供する。これらのコールは、オペレーティングシステム層54に適用され、その結果として、ディスプレイドライバ54へ適宜ルートされる。フルスクリーンモードへのスイッチに際して、ハードウェアインタフェースオブジェクトによって維持されるディスプレイ状態は、状態データをレジスタインターフェイス30へ適用することによって、意図したディスプレイ状態を確立するために直接使用することが可能である。
ディバイスドライバ50’のパーザー(構文解析系)ルーチンは、アクセス特性情報を分析するために、逆に効果的に使用れる。アクセストラップは、暗黙裡におけるクラストラップハンドラへのアドレス割当によって、ディバイスクラスへのアクセス試行を特徴付けるために役立つことが好ましい。従って、クラス、アドレス、及び、アクセスを備えた値は、トラップハンドラによって収集され、そして、逆パーザー(構文解析系)ルーチンに提供される。従って、トラップされた各アクセス試行により、アクセス関連データは、対応するRegClassMap識別された記憶装置に記憶される。同様に、逆パーザー(構文解析系)は、modes.dmmファイルに記憶されているクラスレジスタ命令から究極的に決定されたレジスタ定義に対する分析を実施する。分析結果は、記入されることを意図したレジスタがインデックスレジスタであるか、又は、他の管理機能レジスタであるか、或いは、データレジスタであるかの論理的判定である。意図されたレジスタがインデックスレジスタ又は他の管理機能レジスタである場合には、その結果としての状態変化が記録される。意図されたレジスタがデータレジスタである場合には、レジスタの新規状態が記録され、その後で、いくらかのエミュレーションが必要かどうかに関して判定が行われる。記入中の特定レジスタに応じて、一切のエミュレーションを必要としないか、或いは、フルインデックス及びデータアクセスオペレーションが実施されることもあり得る。
従って、実質的には、同一ハードウェア及びオペレーティングシステムインタフェースオブジェクト定義が用いられることが好ましく、そして、更に、カプセル封入されたハードウェアインターフェイスモジュールによって実現されるディスプレイ特性エミュレーションルーチンの中から選択するためには、異なるディスプレイ特性をサポートする複数の機能の中から選択する場合と同一の方法を用いても差し支えない。パーザー(構文解析系)ルーチンが識別可能なモード集合を検出した場合には、既に説明したようにモード設定オペレーションを実施するために、O/Sオブジェクト128’を介してシェルオブジェクト126’がコールされても差し支えない。オペレーティングシステムオブジェクト120’、122’、126’によって実現される実質的な線形コールシーケンスは、直接的に作動可能化される。従って、オペレーティングシステムインタフェースオブジェクトと残りのVDD50’との間の機能コール関係は、ディバイスドライバ50の場合と同じである。
V.結論
以上のように、複雑かつ多機能的な周辺コントローラ並びに仮想ディバイスドライバのサポートに適した高度に最適化されたディバイスドライバアーキテクチャについて説明した。ここに説明したディバイスドライバのアーキテクチャは、サブエレメント別に詳述する方式に基づいてハードウェアから直接決定されることが好ましい方法において周辺コントローラのハードウェアコンフィギュレーションに明確にマッチするように、ロードタイムにおいて当該ディバイスドライバの動的コンフィギュレーションを直接サポートし、特有のサブエレメント設計に従ってモジュール変更の機能的分離を本質的にサポートするモジュール式アーキテクチャを採用し、コントローラの作動状態のモードスイッチを実施するための効率的なメカニズムを提供し、モードスイッチの動作を選択的に用いた独立コンテキストのサポートを介して、モードスイッチから独立した持続性データのメンテナンス及び管理を実施するための効率的なメカニズムを提供し、ビデオディスプレイコントローラアプリケーションにおいて色深度変換の効率的な管理を提供する。更に、アーキテクチャはモジュール式であって複雑であるにも拘わらず、モジュール間のサポートされる相互作動的関係は、オペレーティングシステムAPIコールを仮想化および実現するために実質的に線形化されたコールシーケンスを作動可能化する。
本発明の好ましい実施例について既に説明した観点から、開示された実施例の多くの修正及び変形は、当該技術分野における習熟者によって容易に察知可能なはずである。従って、本発明が、添付されている請求の範囲内において、以上に詳細に述べられた場合とは異なって実現可能であることが理解されるはずである。

Claims (1)

  1. コンピュータシステムのメモリに格納されているディバイスドライバを介して、プログラム可能なコントローラにオペレーティングインタフェースを提供する方法であって、本願明細書に記載の方法。
JP2009257555A 1995-11-21 2009-11-10 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ Withdrawn JP2010033607A (ja)

Applications Claiming Priority (1)

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

Related Parent Applications (1)

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

Publications (1)

Publication Number Publication Date
JP2010033607A true JP2010033607A (ja) 2010-02-12

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 Before (1)

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

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
WO2015198880A1 (ja) * 2014-06-25 2015-12-30 ソニー株式会社 再生装置、再生方法、プログラム、および記録媒体

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
US7634011B2 (en) 2000-04-21 2009-12-15 Microsoft Corporation Application program interface (API) facilitating decoder control of accelerator resources
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
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
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
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
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
EP1286270A1 (en) * 2001-07-24 2003-02-26 Deutsche Thomson-Brandt Gmbh 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
CA2611527A1 (en) * 2005-06-09 2006-12-21 Whirlpool Corporation Software architecture system and method for communication with, and management of, at least one component within a household appliance
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 意法半导体研发(上海)有限公司 通用驱动方法和通用驱动设备
US20110063306A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
US20120054752A1 (en) * 2010-08-27 2012-03-01 Htc Corporation Electronic device having operation mode dynamic adjusting mechanism and method of the same
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
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
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
WO2015198880A1 (ja) * 2014-06-25 2015-12-30 ソニー株式会社 再生装置、再生方法、プログラム、および記録媒体

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4442732B2 (ja) 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ
JP4344403B2 (ja) コンテキスト仮想化ディバイスドライバアーキテクチャ
JP4375629B2 (ja) エミュレーション環境をサポートするディバイスドライバアーキテクチャ
US5752032A (en) Adaptive device driver using controller hardware sub-element identifier
US6393495B1 (en) Modular virtualizing device driver architecture
US5964843A (en) System for enhancing device drivers
US6167565A (en) Method and system of custom marshaling of inter-language parameters
EP0664903B1 (en) Loader system
US6959441B2 (en) Intercepting system API calls
EP1763774B1 (en) Multiple computer architecture with replicated memory fields
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
JP3357368B2 (ja) オブジェクト指向ビデオ・フレームワーク・システム
JPH07121373A (ja) データ処理システム及びその動作方法
EP0564388A2 (en) Generalized control for starting of tasks (processes and threads)
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
McAuliffe Breaking the DOS 640-kByte barrier
JPH0553840A (ja) 命令シミユレーシヨンを備える情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091110

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

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20110420

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20110510