(57)【要約】  補助ディスプレイデバイスに結合された主要コンピュータシステムにおいて、補助ディスプレイデバイスドライバによる、補助ディスプレイプラットフォームにそのドライバを結合する実施のためのインターフェースセットが説明される。補助ディスプレイプラットフォームから受け取られるコマンドは、クラス拡張オブジェクトなど、ドライバの外部のコードによって処理されることができる。例えば、クラス拡張オブジェクトは、補助ディスプレイプラットフォームから受け取られるコマンドをドライバコードによって理解されるフォーマットへと解釈し、かつ／または変換することができる。次いで補助ディスプレイデバイスドライバは、トランスポートを経由して補助ディスプレイデバイスに対して、データを含めて対応するコマンド情報を供給することができる。イベントデータは、例えば補助ディスプレイデバイスにおいて受け取られる対応するイベント情報が、補助ディスプレイプラットフォームに戻されることができるように、インターフェースセットを経由して補助ディスプレイデバイスドライバからクラス拡張オブジェクトへと戻されることができる。【選択図】図３
2009506463.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境における方法であって、
補助ディスプレイデバイスドライバによって実施されている、前記ドライバを補助ディスプレイプラットフォームに結合する、少なくとも１つのインターフェースを含むインターフェースセットを提供するステップと、
前記補助ディスプレイプラットフォームから受け取られるコマンドに対応する呼出しを行うことを含めて、前記インターフェースセットを経由して前記補助ディスプレイデバイスドライバに呼出しを行うステップと
を含む方法。
【請求項２】
実施されるデバイスドライバインターフェースオブジェクトを補助ディスプレイドライバクラス拡張オブジェクトに登録するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記インターフェースセットを経由して前記補助ディスプレイデバイスドライバに呼出しを行うステップは、クラス拡張オブジェクトを経由して前記補助ディスプレイプラットフォームと通信するステップを含む、請求項１に記載の方法。
【請求項４】
補助ディスプレイデバイスドライバは、ユーザモードドライバフレームワーク中においてホストされ、前記方法は、前記ユーザモードドライバフレームワーク中においてヘルパーオブジェクトとして前記クラス拡張オブジェクトをインスタンス化するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記インターフェースセットと前記クラス拡張オブジェクトとを経由して前記補助ディスプレイデバイスドライバからイベントデータを取得するステップと、対応するイベント情報を前記補助ディスプレイプラットフォームに渡すステップとをさらに含む、請求項３に記載の方法。
【請求項６】
前記クラス拡張オブジェクトとモニタプロセスとを経由してセキュリティチェックを実行するステップをさらに含む、請求項３に記載の方法。
【請求項７】
主要コンピュータシステムと補助ディスプレイデバイスとを有するコンピューティング環境におけるシステムであって、
１つまたは複数のアプリケーションプログラムから前記補助ディスプレイデバイスに向かって導かれるデータを供給する補助ディスプレイプラットフォームと、
前記データを受け取り、トランスポートを経由して対応する情報を前記補助ディスプレイデバイスに供給する補助ディスプレイデバイスドライバと、
前記補助ディスプレイデバイスドライバによって実施されるインターフェースセットと、
前記インターフェースセットを経由して前記補助ディスプレイデバイスドライバと通信し、前記対応する情報として前記トランスポートを経由して前記補助ディスプレイデバイスに対して供給するために、前記補助ディスプレイプラットフォームからのデータとして受け取られるコマンドを処理するように、そして対応するデータと共に前記インターフェースを経由して前記補助ディスプレイデバイスドライバに対してコールバックするように構成されるクラス拡張オブジェクトと
を備えるシステム。
【請求項８】
前記補助ディスプレイプラットフォームからのデータとして受け取られる前記コマンドは、入出力（Ｉ／Ｏ）制御コマンドを含み、前記クラス拡張オブジェクトは、前記インターフェースセットを経由して前記補助ディスプレイデバイスドライバから前記Ｉ／Ｏ制御コマンドを受け取り、前記Ｉ／Ｏ制御コマンドを解釈し、前記Ｉ／Ｏ制御コマンドから変換される対応するデータを用いて前記インターフェースを経由して前記補助ディスプレイデバイスドライバに対してコールバックする、請求項７に記載のシステム。
【請求項９】
モニタプロセスをさらに含み、前記クラス拡張オブジェクトは、前記補助ディスプレイプラットフォームからのデータとして受け取られる前記コマンドに対してセキュリティチェックを実行するために前記モニタプロセスと通信する、請求項７に記載のシステム。
【請求項１０】
前記のインターフェースおよびクラス拡張オブジェクトは、少なくとも１つの補助ディスプレイに関連したライブラリ中において提供される、請求項７に記載のシステム。
【請求項１１】
補助ディスプレイビットマップライブラリをさらに含む、請求項７に記載のシステム。
【請求項１２】
前記インターフェースは、前記補助ディスプレイデバイスドライバから前記クラス拡張オブジェクトに対してイベントデータを供給して、対応するイベント情報を前記補助ディスプレイプラットフォームに対して供給することを容易にする手段を含む、請求項７に記載のシステム。
【請求項１３】
前記インターフェースセットは、前記補助ディスプレイデバイスドライバを前記クラス拡張オブジェクトに登録する手段と、前記補助ディスプレイデバイスドライバから前記クラス拡張オブジェクトへとコマンドを転送する手段のうちの少なくとも１つを有するインターフェースを含む、請求項７に記載のシステム。
【請求項１４】
前記インターフェースセットは、前記補助ディスプレイデバイスドライバから前記補助ディスプレイプラットフォームに対して通信するためのデバイスイベントデータ作成するために使用されるインターフェースを含み、前記インターフェースは、コンテンツ喪失イベントパケットを構築する手段と、アプリケーションイベントを構築する手段と、現在のユーザについての情報を供給する手段と、現在のユーザについての情報を要求する手段とのうちの少なくとも１つを含む、請求項７に記載のシステム。
【請求項１５】
前記インターフェースセットは、前記デバイス上でコマンドを実行するために使用されるインターフェースを含み、前記インターフェースは、前記補助ディスプレイデバイス上の表示特性を制御する手段と、前記補助ディスプレイデバイスにシステム情報を設定する手段と、呼出しプロセスのセキュリティ情報を供給する手段と、前記補助ディスプレイデバイスの能力を決定する手段と、アプリケーションが前記補助ディスプレイデバイス上で実行されることを可能にする手段と、前記補助デバイスに通知を送る手段と、前記補助デバイスからの少なくとも１つの通知を取り除く手段と、アプリケーションに関連したコンテンツを前記補助デバイスに送る手段と、前記デバイス上で実行されるソフトウェアコードをアップロードする手段と、少なくとも１組のアプリケーションに関連したコンテンツを前記補助デバイスから取り除く手段とのうちの少なくとも１つを含む、請求項７に記載のシステム。
【請求項１６】
コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記命令は、実施されるときに、
補助ディスプレイデバイスドライバから補助ディスプレイに関連したオペレーションを実行することに関連したコマンドを含む呼出しを受け取るステップと、
前記補助ディスプレイデバイスドライバによって理解されるデータフォーマットにおけるデータに前記の呼出しおよびコマンドを変換するステップと、
前記データを用いて前記補助ディスプレイデバイスドライバにコールバックするステップと
を含むステップを実行するコンピュータ読取り可能媒体。
【請求項１７】
前記呼出しは、前記補助ディスプレイデバイスドライバによって実施される定義されるインターフェースセットを経由して前記補助ディスプレイデバイスドライバから受け取られ、前記補助ディスプレイデバイスドライバにコールバックするステップは、前記定義されるインターフェースセットを経由して登録されるコールバックを経由して前記データを戻すステップを含む、請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１８】
前記コマンドに関連したセキュリティチェックを実行するステップを含むコンピュータ実行可能命令をさらに有する、請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１９】
ユーザが、ユーザ識別情報および現在の動作モードに基づいて前記補助ディスプレイデバイスドライバを経由して補助ディスプレイデバイスと対話することができるかどうかを決定するステップを含むコンピュータ実行可能命令をさらに有する、請求項１６に記載のコンピュータ読取り可能媒体。
【請求項２０】
現在の動作モードは、前記デバイスに対する異なるタイプのアクセスを可能にするように変更されることができ、現在の動作モードは、単一ユーザモードと、複数ユーザモードと、前記デバイス上にデータを有する現在のデバイスユーザについてのモードと、前記補助ディスプレイデバイスドライバが実行されるホストコンピュータシステムの現在のコンソールユーザに対するアクセスを可能にするモードのうちの１つに対応する、請求項１９に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
最新の（例えば、Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ（商標）−ベースの）コンピュータシステムにおいては、ユーザは、主要なホストコンピュータシステムと結合され、あるいはそのシステムへと一体化される小型の補助ディスプレイデバイス上で、選択されたコンテンツを閲覧し、また一般的にそのコンテンツと対話することができる。この目的を達成するために、オペレーティングシステムによってもたらされるプラットフォーム（補助ディスプレイプラットフォーム、またはＷｉｎｄｏｗｓ（登録商標）ＳｉｄｅＳｈｏｗ（商標）プラットフォームと称される）と一緒に補助ディスプレイ画面により、開発業者および著者は、コンテンツをユーザに対して提示することができるようになる。これにより、ユーザは、主要ホストコンピュータシステムが低減された電力状態（例えば、ＡＣＰＩ  Ｓ３スリープ状態）にあるときでさえ、あるいは電源が遮断されているときでさえそのコンテンツを閲覧することができるようになる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）などのオペレーティングシステムのための補助ディスプレイデバイスを作製するときに、独立系ハードウェアベンダ（ｉｎｄｅｐｅｎｄｅｎｔ  ｈａｒｄｗａｒｅ  ｖｅｎｄｏｒ）、またはＩＨＶとも称されるデバイス製造業者は、補助ディスプレイプラットフォームと補助ディスプレイデバイスとの間の通信を容易にするＷｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ（商標）ユーザモードドライバフレームワーク（Ｕｓｅｒ  Ｍｏｄｅ  Ｄｒｉｖｅｒ  Ｆｒａｍｅｗｏｒｋ）（ＵＭＤＦ）ドライバを実施する（ｉｍｐｌｅｍｅｎｔ）。ドライバを作成することは、他の物事のうちでもとりわけ、補助ディスプレイドライバが、補助ディスプレイプラットフォームから論理的補助ディスプレイオペレーションへとデータを復号化し、次いで補助ディスプレイデバイスが理解するプロトコルを介してこれらの意図をそのデバイスに対して送信することが必要とされるので複雑になっている。補助ディスプレイデバイスは、潜在的に多数の形態を取ることができ、そのデバイスと通信するために使用される基礎となるトランスポートプロトコル（ｔｒａｎｓｐｏｒｔ  ｐｒｏｔｏｃｏｌ）は、デバイスタイプごとに変化することができる。ドライバを作成することは、このようにしてデバイス製造業者にとって、とりわけ時間がかかり、厄介で、飽き飽きし、エラーを引き起こしがちな試みとなる。
【課題を解決するための手段】
【０００３】
この概要は、詳細な説明中において以下でさらに説明される、簡略化された形式の代表的な概念の選択を導入するために提供される。この概要は、特許請求の範囲の主題の主要な特徴または絶対不可欠な特徴を識別するようには意図されず、また特許請求の範囲の主題の範囲をどのようにも制限することになるように使用されることも意図されない。
【０００４】
簡潔に言えば、本明細書中で説明される主題の様々な態様は、ドライバを補助ディスプレイプラットフォームに結合する補助ディスプレイデバイスドライバによって実施されることができるインターフェースセット（ｉｎｔｅｒｆａｃｅ  ｓｅｔ）を対象としている。そのインターフェースセットを経由して補助ディスプレイデバイスドライバ中へと呼び出すことにより、補助ディスプレイプラットフォームから受け取られるコマンドは、ドライバの外部のコードによって処理されることができ、それによって補助ディスプレイプラットフォームとドライバの間の通信を容易にしている。例えば、クラス拡張オブジェクトは、補助ディスプレイプラットフォームから受け取られるコマンドを解釈し、かつ／またはドライバコードがもっと簡単に処理することができるフォーマットへと変換し、それによってそのドライバコードを簡略化する。イベントデータは、対応するイベント情報が、補助ディスプレイプラットフォームへと渡されることができるように補助ディスプレイデバイスドライバから供給されることができる。
【０００５】
したがって、補助ディスプレイプラットフォームは、１つまたは複数のアプリケーションプログラムから補助ディスプレイデバイスに向かって導かれるデータを供給することができ、補助ディスプレイデバイスドライバがそのデータを受け取るときに、補助ディスプレイデバイスドライバによって実施されるインターフェースセットにより、ヘルパーオブジェクト（ｈｅｌｐｅｒ  ｏｂｊｅｃｔ）は、補助ディスプレイプラットフォームからのデータとして受け取られるコマンドを処理し、対応するデータを用いてインターフェースを経由して補助ディスプレイデバイスドライバに対してコールバックすることができるようになる。例えば、補助ディスプレイに関連したオペレーションを実行することに関連したコマンドを含む補助ディスプレイデバイスドライバからの呼出しを受け取るとすぐに、そのヘルパーオブジェクトは、その呼出しおよびコマンドを補助ディスプレイデバイスドライバによって理解されるデータフォーマットのデータへと変換し、そのデータを用いて補助ディスプレイデバイスドライバにコールバックすることができる。次いで補助ディスプレイデバイスドライバは、トランスポートを経由して補助ディスプレイデバイスに対して対応する情報を供給することができる。
【０００６】
他の利点は、図面と併せて解釈されるときに以下の詳細な説明から明らかになるであろう。
本発明は、例を用いて例証され、添付図面だけには限定されない。これらの図面中において、同様な参照番号は、同様な要素を示している。
【発明を実施するための最良の形態】
【０００７】
例示の動作環境
図１は、本発明が実施されることができる適切なコンピューティングシステム環境１００の一例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例であるにすぎず、本発明の用途または機能の範囲についてのどのような限定も示唆することは意図されていない。またコンピューティング環境１００は、例示の動作環境１００中に示されるコンポーネントのうちのどの１つまたは組合せに関連したどのような依存性も要件も有するものとして解釈されるべきではない。
【０００８】
本発明は、非常に多数の他の汎用または専用のコンピューティングシステムの環境またはコンフィギュレーションを用いて動作可能である。本発明と共に使用するのに適したものとすることができるよく知られているコンピューティングシステム、コンピューティング環境、および／またはコンピューティングコンフィギュレーションの例は、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルな大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのどれかを含む分散コンピューティング環境などを含んでいる。
【０００９】
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な場合について説明されることができる。一般に、プログラムモジュールは、特定のタスクを実行し、あるいは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。本発明は、タスクが、通信ネットワークを介してリンクされるリモート処理デバイスによって実行される場合の分散コンピューティング環境において実行されることもできる。分散コンピューティング環境においては、プログラムモジュールは、メモリストレージデバイスを含めて、ローカルコンピュータストレージ媒体および／またはリモートコンピュータストレージ媒体に配置されることができる。
【００１０】
図１を参照すると、本発明を実施するための例示のシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントは、それだけには限定されないが、処理装置１２０、システムメモリ１３０、およびシステムメモリを含めて様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１を含むことができる。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含めて、いくつかのタイプのバス構造のうちの任意のものとすることができる。一例として、限定するものではないが、そのようなアーキテクチャは、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＭＣＡ）バス、拡張ＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）（ＥＩＳＡ）バス、ビデオエレクトロニクス規格協会（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、およびメザニンバス（Ｍｅｚｚａｎｉｎｅ  ｂｕｓ）としても知られているペリフェラルコンポーネント相互接続（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）（ＰＣＩ）バスを含んでいる。
【００１１】
コンピュータ１１０は、一般的に様々なコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ１１０によってアクセスされることができ、揮発性媒体も不揮発性媒体も、着脱可能媒体も着脱不能媒体も含む使用可能な任意の媒体とすることができる。一例として限定するものではないが、コンピュータ読取り可能媒体は、コンピュータストレージ媒体および通信媒体を備えることができる。コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報の記憶のための任意の方法または技術で実施された揮発性および不揮発性の着脱可能および着脱不能な媒体を含んでいる。コンピュータストレージ媒体は、それだけには限定されないが、望ましい情報を記憶するために使用されることができ、コンピュータ１１０によってアクセスされることができるＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは他の任意の媒体を含む。通信媒体は、一般的に搬送波や他の移送メカニズムなどの被変調データ信号の形のコンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータを実施し、任意の情報配信媒体を含んでいる。用語「被変調データ信号」は、情報を信号の形で符号化するような方法で１つまたは複数のその特性が設定され、または変更された信号を意味する。一例として、限定するものではないが、通信媒体は、有線ネットワーク、直接配線接続などの有線媒体と、音響媒体、ＲＦ媒体、赤外線媒体、他の無線媒体などの無線媒体を含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。
【００１２】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性のメモリの形態のコンピュータストレージ媒体を含んでいる。起動中などにコンピュータ１１０内の要素間の情報を転送する助けを行う基本ルーチンを含む基本入出力システム（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１３３（ＢＩＯＳ）は、一般的にＲＯＭ１３１に記憶される。ＲＡＭ１３２は、一般的に処理装置１２０によって直接にアクセス可能であり、かつ／または現在動作させられているデータおよび／またはプログラムモジュールを含んでいる。一例として、限定するものではないが、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００１３】
コンピュータ１１０は、他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータストレージ媒体も含むこともできる。一例としてだけであるが、図１は、着脱不能な不揮発性の磁気媒体から読み取り、またはそれに書き込むハードディスクドライブ１４１と、着脱可能な不揮発性の磁気ディスク１５２から読み取り、またはそれに書き込む磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭや他の光媒体など着脱可能な不揮発性の光ディスク１５６から読み取り、またはそれに書き込む光ディスクドライブ１５５とを示している。例示の動作環境中において使用されることができる他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータストレージ媒体は、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含んでいる。ハードディスクドライブ１４１は、一般的にインターフェース１４０などの着脱不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、一般的にインターフェース１５０などの着脱可能メモリインターフェースによってシステムバス１２１に接続される。
【００１４】
以上で説明され、図１に示されたドライブとそれらの関連するコンピュータストレージ媒体は、コンピュータ１１０についてのコンピュータ読取り可能命令、データ構造、プログラムモジュールおよび他のデータの記憶を実現する。図１においては、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示される。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、またはそれらとは異なっていてもどちらにすることもできることに注意すべきである。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくともそれらが異なるコピーであることを示すために本明細書中では異なる番号が与えられる。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２、一般的にマウス、トラックボールまたはタッチパッドと称されるポインティングデバイス１６１などの入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。図１に示されていない他の入力デバイスは、ジョイスティック、ゲームパッド、サテライトディッシュ（ｓａｔｅｌｌｉｔｅ  ｄｉｓｈ）、スキャナなどを含むことができる。これらおよび他の入力デバイスは、多くの場合にシステムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続されてもよい。モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを経由してシステムバス１２１に接続される。モニタ１９１は、タッチスクリーンパネルなどと一体化されてもよい。モニタおよび／またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータなどにおけるように、コンピューティングデバイス１１０が組み込まれるハウジング（ｈｏｕｓｉｎｇ）に物理的に結合されることができることに注意すべきである。さらに、コンピューティングデバイス１１０などのコンピュータはまた、スピーカ１９５やプリンタ１９６などの他のペリフェラル出力デバイスを含むこともでき、これらは、出力ペリフェラルインターフェース１９４などを介して接続されることができる。
【００１５】
コンピュータ１１０は、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク化された環境中において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通のネットワークノードとすることができ、一般的にコンピュータ１１０に対して上記された要素のうちの多くまたはすべてを含んでいるが、メモリストレージデバイス１８１だけが図１には示されている。図１中に示される論理接続は、ローカルエリアネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）（ＬＡＮ）１７１と、ワイドエリアネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）（ＷＡＮ）１７３とを含んでいるが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的になっている。
【００１６】
ＬＡＮネットワーキング環境において使用されるときには、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用されるときには、コンピュータ１１０は、一般的にインターネットなどのＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を含んでいる。モデム１７２は、内部にあっても、あるいは外部にあってもよいが、ユーザ入力インターフェース１６０または他の適切なメカニズムを経由してシステムバス１２１に接続されることができる。ネットワーク化環境においては、コンピュータ１１０に対して示されるプログラムモジュール、またはその一部分は、リモートメモリストレージデバイスに記憶されることができる。一例として限定するものではないが、図１は、リモートアプリケーションプログラム１８５をメモリデバイス１８１上に存在するものとして示している。図に示されるネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されるであろう。
【００１７】
補助ディスプレイサブシステム１９９は、たとえコンピュータシステムの主要部分が低電力状態にあるとしても、プログラムコンテンツ、システムステータス、イベント通知などのデータをユーザに対して提供することができるようにするために、ユーザインターフェース１６０を経由して接続されることができる。補助ディスプレイサブシステム１９９は、主要処理装置１２０が低電力状態にある間に、これらのシステムの間の通信を可能にするためにモデム１７２および／またはネットワークインターフェース１７０に接続されることができる。
補助ディスプレイデバイスのドライバインターフェース
本明細書中で説明される技術の様々な態様は、補助ディスプレイドライバに書き込むタスクを簡略化することを対象としている。部分的には、これは、１組のよく定義された論理的補助ディスプレイオペレーションを実施する共通のメカニズムを提供し、それによってドライバインプリメンタ（ｄｒｉｖｅｒ  ｉｍｐｌｅｍｅｎｔｅｒ）が、実行する必要がある作業量を低減させることにより達成される。結果として、ドライバインプリメンタは、大部分は彼らの補助ディスプレイデバイスに対してトランスポートメカニズムを実現することに彼らの努力を向け、補助ディスプレイドライバと補助ディスプレイプラットフォームとの間の通信の複雑さに関心をもつ必要がなくなる。
【００１８】
この目的を達成するために、デバイスドライバインターフェースを構成する１組の論理的補助ディスプレイオペレーションと一緒に、補助ディスプレイドライバについてのインターフェースの概念が提供されている。しかしながら、理解されるように、本明細書中で説明される技術は、ＣＯＭ（コンポーネントオブジェクトモデル）（ｃｏｍｐｏｎｅｎｔ  ｏｂｊｅｃｔ  ｍｏｄｅｌ）技術に基づいた、本明細書中で説明される例など、デバイスドライバインターフェース、または補助ディスプレイドライバインターフェースを記述するために使用されるこれらの概念または例だけには限定されない。さらに、本明細書中で説明される技術は、補助デバイスの個々のどのようなタイプにも限定されず、そうではなくて、テレビジョンセット、オーディオレシーバ、オーディオ／ビデオレコーダ、電話、セパレートコンピュータ、モバイル通信デバイス、アクチュエータを有する二次ディスプレイ画面、腕時計、ウォール（例えば、キッチン）ディスプレイ、ディスプレイ画面、デジタルピクチャフレーム、掛け時計、ラジオ、メディアプレーヤ、大衆消費電子製品デバイスの主要ディスプレイ内に内蔵されたデバイスまたはその主要ディスプレイを使用したデバイス、自動車、交通ユニットまたは他の乗り物ユニット、主要コンピュータシステムのキーボードまたは他の入力デバイス、ページャ、携帯型個人情報端末（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）など、「コンピュータシステム」に結合されたデバイスである、従来デバイスとしては考えられていないデバイスを含んでいる。したがって、本発明は、本明細書中で説明される例、構成または機能だけには限定されず、そうではなくて本明細書中で説明される例、構成または機能のうちのどれもが、非限定的であり、本発明は、一般にコンピューティング、データ通信、およびコンテンツ処理において長所および利点をもたらす様々な方法で使用されることが可能である。
【００１９】
図面のうちの図２を参照すると、アプリケーションプログラム２０４および他のプログラム（例えば、オペレーティングシステムコンポーネント）を含むクライアントに対して１つまたは複数の補助デバイス（例えば、１つの補助デバイス２０２が、図２に示される）をさらす一例のアーキテクチャが示されている。プログラムレベルでプログラム２０４に対して、そしてプログラム２０４からデータを通信するために、クライアントアプリケーション２０４（プログラムのコンポーネント、またはおそらくプログラムそれ自体）をシステムに登録すること、結合された補助デバイス２０２に対してコンテンツを送ること、および結合された補助デバイス２０２からイベントを受け取ることを含めて、様々なファンクションについてのＡＰＩを提供する補助ディスプレイＡＰＩセット２０６が存在する。イベントは、ナビゲーションイベント、コンテンツ要求イベント、コンテンツ変更イベントなどを含むことができる。オペレーティングシステムコンポーネントおよび／またはアプリケーションプログラムなどのソフトウェアコードはまた、補助デバイスに対してアップロードされることもできる。
【００２０】
図２の例において、ＡＰＩレイヤ２０６は、ポータブルデバイスＡＰＩセット２０８上に書き込まれ、このポータブルデバイスＡＰＩセットは一緒に、補助ディスプレイプラットフォーム２１０と考えられることができる。一般に、ポータブルデバイスＡＰＩセット２０８は、補助ディスプレイデバイス２０２をポータブルデバイスのカテゴリにマッピングし、そのデバイスの機能の列挙を可能にする。これは、ユーザモードドライバフレームワーク２１２内にカプセル化されるが、クライアントアプリケーション２０４にさらされてはいない。例えば、補助ディスプレイＡＰＩの組２０６は、ウィンドウズポータブルデバイス（Ｗｉｎｄｏｗｓ  Ｐｏｒｔａｂｌｅ  Ｄｅｖｉｃｅ）（ＷＰＤ）ファンクションを使用して、次にデバイス２０２に対してデータを伝えるドライバフレームワーク２１２に対してプロセス間通信（Ｉｎｔｅｒｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）（ＩＰＣ）を介して通信することができる。このプラットフォームの諸部分が互いに対話することができるようにするために、インターフェースは、ドライバレベルで補助ディスプレイ機能を可能にする、デバイスのドライバによってさらされる必要があるインターフェースを含めて、各レイヤ間で定義される。
【００２１】
ハードウェアベンダの観点を考えると、一般に各補助ディスプレイデバイスベンダは、対応する補助デバイスドライバ２２４を提供する（そうではあるが、一部の状況においては、デバイスは、汎用ドライバを使用することができ、したがって例えば補助ディスプレイプラットフォームプロバイダによって提供されることができる）。一般に、ユーザモードドライバフレームワークは、補助ディスプレイプラットフォーム２１０にデバイスドライバ（例えば、２２４）を結合するための、ライブラリ２２７などを経由したデバイスドライバインターフェース（ｄｅｖｉｃｅ  ｄｒｉｖｅｒ  ｉｎｔｅｒｆａｃｅ）（ＤＤＩ）セット２２６を提供する。その場合には、ドライバ２２４は、補助ディスプレイデバイスに対して通信するために、インターフェースセット２２６を実施して、ＡＰＩによって受け取られる情報に対応する補助ディスプレイプラットフォームからデータを受け取り、適切なハードウェアインターフェース（トランスポート）２３０に対して対応するデータを転送することができる。例えば、図２において、示される例は、ＵＳＢおよびブルートゥース（登録商標）であるが、Ｗｉ−ＦＩトランスポート、ＡＭ／ＦＭトランスポート、赤外線トランスポート、ＴＣＰ／ＩＰベースのトランスポートなどのネットワークトランスポートなどを含めて他のタイプのトランスポートも実現可能である。理解されるように、任意のデバイスドライバが、必要に応じて無線通信または有線通信についてのデータを転送することになるので、これらの接続は、例示の目的のために示されるにすぎない。
【００２２】
図３は、ユーザモードドライバフレームワーク２１２の一例をより詳細に示している。上記されるように、ユーザモードドライバフレームワーク２１２は、独立系ハードウェアベンダ、またはＩＨＶによって一般的に書かれる主要コンポーネントを含むユーザモード補助ディスプレイドライバ２２４をホストする。そのドライバの役割の１つは、補助ディスプレイプラットフォーム２１０からの情報を抽出し、補助デバイス２０２において入力される任意のナビゲーションイベントを補助ディスプレイプラットフォーム２１０に戻して渡すことである。補助デバイス２０２の能力に応じて、補助ディスプレイドライバ２２４は、補助ディスプレイプラットフォーム２１０のフォーマット（これは、例えばＸＭＬで定義されるデータフォーマットを含むシンプルコンテンツフォーマット（Ｓｉｍｐｌｅ  Ｃｏｎｔｅｎｔ  Ｆｏｒｍａｔ）で到着することができる）から、デバイスがもっと簡単にレンダリングすることができる、ビットマップなどの何らかのものへとデータを変換することができる。
【００２３】
図３に表されるように、補助デバイス２０２と通信するために、補助ディスプレイドライバ２２４は、補助ディスプレイドライバ２２４の下にトランスポートドライバ２３０を実質的にスタックする、そのドライバライタ（ｄｒｉｖｅｒ  ｗｒｉｔｅｒ）（例えば、ＩＨＶ）が選択する適切な任意の通信プロトコルを使用することができる。一例の実施形態においては、接続および／または（必要に応じて）デバイス発見は、補助ディスプレイドライバ２２４中におけるコードによって処理されるが、ほとんどの場合には、デバイス発見は、オペレーティングシステムのＰｎＰサブシステムまたはＰｎＰ−Ｘサブシステムによって実行されることに注意すべきである。
【００２４】
補助ディスプレイプラットフォーム２１０にインターフェースするために、補助ディスプレイドライバ２２４は、補助ディスプレイクラス拡張ライブラリ３２６にリンクする。図３に表されるように、ひとたびリンクされた後に、補助ディスプレイクラス拡張ライブラリ３２６は、補助ディスプレイプラットフォーム２１０に対して通信コンジットを提供する。一例の実施形態においては、補助ディスプレイクラス拡張ライブラリ３２６は、補助ディスプレイプラットフォーム２１０からのデータにアクセスし、補助ディスプレイデバイス２０２を経由して受け取られる任意のナビゲーションイベントを補助ディスプレイプラットフォーム２１０に戻して渡すためにインターフェースをさらす。（図４に一般的に示される）一例の実施形態においては、補助ディスプレイクラス拡張ライブラリ３２６は、ＣＯＭコンポーネントとして実施されることができ、このＣＯＭコンポーネントは、補助ディスプレイドライバ２２４に直接にリンクされる必要はない。
【００２５】
やはり図３に表されるリファレンス補助ディスプレイビットマップライブラリ３２７は、ドライバ２２４が使用することができるオプショナルなライブラリを含み、ドライバライタが喜んで推奨されたビットマップディスプレイリファレンスプラットフォームを使用するようにソフトウェア開発を簡略化している。例えば、ビットマップライブラリ３２７と共に、ドライバ２２４は、補助ディスプレイプラットフォーム２１０から、ビットマップディスプレイリファレンス画面分解能についてフォーマットされたビットマップへと変換されたグランスモード情報（ｇｌａｎｃｅ  ｍｏｄｅ  ｉｎｆｏｒｍａｔｉｏｎ）と通知を有することができる。
【００２６】
図３には、独立系ハードウェアベンダ拡張性ライブラリ（ｉｎｄｅｐｅｎｄｅｎｔ  ｈａｒｄｗａｒｅ  ｖｅｎｄｏｒ  ｅｘｔｅｎｓｉｂｉｌｉｔｙ  ｌｉｂｒａｒｙ）３２８も示されている。例えば、独立系ハードウェアベンダが、補助ディスプレイリファレンス設計を超える、補助デバイス２０２に接続された追加のハードウェアを提供している場合、ドライバ２２４は、この追加のライブラリ３２８を用いて拡張されて、拡張された機能をサポートし、その機能を主要コンピュータシステムのオペレーティングシステムに対してさらすことができる。そのような追加のハードウェアの例は、生物測定学リーダ、ＧＰＳユニットなどを含んでいる。ハードウェアベンダ拡張性ライブラリ３２８は、フィルタドライバとしての役割を果たす追加のユーザモードドライバまたはカーネルモードドライバとして実施されることもでき、ドライバスタック中において補助ディスプレイドライバの上または下のいずれかに存在することができる。
【００２７】
図４は、図２および３の実施形態と整合した一例のＣＯＭベースの実施形態に関する詳細を提供するものである。この例においては、ドライバライタは、論理的補助ディスプレイオペレーションの集まりを含むＣＯＭインターフェースを実施するドライバ２２４を有する。実際のデバイスに応じて、必ずしもすべてのインターフェースが実施される必要はないことに注意すべきである。一般に、デバイスドライバインターフェースメソッド（ｄｅｖｉｃｅ  ｄｒｉｖｅｒ  ｉｎｔｅｒｆａｃｅ  ｍｅｔｈｏｄ）の実施形態は、与えられたデバイスについて適しているデバイス製造業者の選択のトランスポート２３０上で、補助デバイス２０２に対してデバイスドライバインターフェースメソッドの論理的意図を通信するための詳細を提供する。
【００２８】
一例の実施形態においては、実施されるデバイスドライバインターフェースオブジェクトのインスタンスは、Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ（商標）中において出荷されるライブラリ中で提供されるなど、補助ディスプレイクラス拡張コンポーネントに登録される。一般に、ドライバライタは、クラス拡張オブジェクトのインスタンスをインスタンス化するドライバエントリコードのライトレイヤ（ｌｉｇｈｔ  ｌａｙｅｒ）を実施し、その後にやって来るデータをクラス拡張オブジェクトに対して転送する。また一般的に、クラス拡張オブジェクトは、やって来る生データを論理的ドライバオペレーションへと解釈する作業も行う。クラス拡張オブジェクトは、実施されているデバイスドライバインターフェースへと呼び出され、ここで論理的オペレーションの意図は、ドライバライタのコードによって実行されることができる。
【００２９】
図４は、一例の補助ディスプレイドライバアーキテクチャのコンポーネントを示している。クラス拡張オブジェクト４４０は、ＩＳｉｄｅＳｈｏｗＣｌａｓｓＥｘｔｅｎｓｉｏｎインターフェースを実施し、補助ディスプレイドライバについてのヘルパーライブラリとしての役割を果たす。クラス拡張オブジェクト４４０は、独立系ハードウェアベンダのＵＭＤＦドライバエントリコード４４２からの転送されたファンクション制御コード（例えば、ＷＰＤの入出力制御（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  ｃｏｎｔｒｏｌ）、またはＩＯＣＴＬ）を処理することを含めて（少なくとも）２つの目的のサービスを行う。
【００３０】
クラス拡張オブジェクト４４０の一目的は、補助ディスプレイプラットフォーム２１０と補助ディスプレイデバイスとの間の通信を容易にすることである。補助ディスプレイを構成するハードウェアとファームウェアとは、独立系ハードウェアベンダの間で変化するので、補助ディスプレイドライバは、独立系ハードウェアベンダが、独立系ハードウェアベンダにより選択されたトランスポート２３０上で彼らの特定の補助ディスプレイ実施形態を用いて通信をサポートすることができるように拡張可能である。
【００３１】
図４の例においては、補助ディスプレイドライバ２２４は、補助ディスプレイクラス拡張ライブラリに対してＩ／Ｏ制御を任せる標準ユーザモードドライバフレームワーク（ＵＭＤＦ）ドライバとしてホストされる。ライブラリは、ＩＯＣＴＬをクラックし（ｃｒａｃｋ）（オープンし、そして解釈し）、セキュリティチェックを（例えば、制御パネル（ｃｏｎｔｒｏｌ  ｐａｎｅｌ）データ、またはＣＰＬデータを検証する許可マネージャ４４４を経由して）実行し、ＩＯＣＴＬを独立系ハードウェアベンダドライバコードへのコールバックに変換する（例えば、プラットフォームベンダによって提供される）ＣＯＭオブジェクトを含む。その場合には、（例えば、ブロック４４６中における）独立系ハードウェアベンダのコールバックコードは、彼らがデバイスを用いて通信するために使用するどのようなトランスポートメカニズム上においても実際のデバイストランザクション転送を行う役割を担う。したがって、補助ディスプレイドライバは、独立系ハードウェアベンダＤＬＬによってロードされる補助ディスプレイクラス拡張ＣＯＭオブジェクトを含むＤＬＬと一緒に、ＵＭＤＦドライバエントリポイント４４２とデバイス特有のコールバック４４６を含む、独立系ハードウェアベンダによって提供されるＤＬＬを含む、２つのＤＬＬとして実施されることができる。
【００３２】
上記されるように、補助ディスプレイクラス拡張オブジェクト４４０は、転送されたＷＰＤ  ＩＯＣＴＬをオープンすること、そのデータ上でセキュリティチェックを実行すること、および次いで独立系ハードウェアベンダにより供給されるコールバック上でＩＯＣＴＬをファンクショナル呼出し（ｆｕｎｃｔｉｏｎａｌ  ｃａｌｌ）へと分解することにより、転送されたＷＰＤ  ＩＯＣＴＬを処理する。より詳細には、独立系ハードウェアベンダのコールバックは、Ｉｎｉｔｉａｌｉｚｅ（）メソッドを呼び出すこと、およびＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒインターフェースを実施するオブジェクト中において渡すことにより、クラス拡張オブジェクト４４０に対して供給される。クラス拡張オブジェクトは、デバイスドライバインターフェースオブジェクトの所有権を取得し、それを戦略パターンとして使用して、ドライバコマンドを実行する。
【００３３】
この例の実施形態においては、クラス拡張オブジェクト４４０は、実際にはイベントを記入せず、イベントは、独立系ハードウェアベンダコード４４６内に記入されることに注意すべきである。この実施形態は、他のＵＭＤＦドライバと整合しており、基本的なＵＭＤＦ機能をラップする（ｗｒａｐ）ことを回避し、ＵＭＤＦとヘルパーライブラリを密結合することを回避している。
【００３４】
本出願の譲受人に対して譲渡され参照により本明細書中に組み込まれている２００４年１１月２３日に出願された米国特許出願第１０／９９６，５７７号において全般的に説明されるように、プラットフォームの一部分として、ドライバは、ＴｉｎｙＣＬＲに基づいて補助ディスプレイファームウェアを実行する拡張ディスプレイに対する通信を可能にすることができる。ＴｉｎｙＣＬＲ通信部分のない、このドライバの修正されたバージョンは、異なるタイプのデバイスにインターフェースするために他のドライバが最上部に構築され得るライブラリとして提供されることができる。クラス拡張４４０のライブラリインターフェースは、ＴｉｎｙＣＬＲファームウェアと共に機能する拡張ドライバ中においてさらされるコマンドのサブセットを含むことに注意すべきである。
【００３５】
デバイスおよびドライバの拡張性を可能にする代替的なアプローチは、メディア転送プロトコル（Ｍｅｄｉａ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）（ＭＴＰ）仕様の一部分として補助ディスプレイ機能を提供することである。これは、基本的なディスプレイ、ならびに拡張ディスプレイ機能を可能にする拡張をサポートするコアセクションを含む。補助ディスプレイＡＰＩは、ＭＴＰ上で補助ディスプレイコマンドをサポートするデバイスに対してＭＴＰを使用してメッセージを送信することに対応する。これは、システムによって提供されるＭＴＰドライバを使用してデバイスに対して通信することになる。デバイスは、それが理解することができるフォーマットへとＭＴＰメッセージを変換する役割を担うことになる。代わりに、補助ディスプレイクラス拡張は、補助ディスプレイＡＰＩが、それが通信しているデバイスの詳細を知る必要なしに、システムによって提供されるＭＴＰドライバの上部上で実行され、そしてＭＴＰコマンド中における補助ディスプレイ機能を直接にカプセル化するフィルタドライバ中に構築されることができる。
セキュリティとユーザモードの例
補助ディスプレイクラス拡張オブジェクトは、デバイスユーザモードに基づいてデバイスドライバインターフェースコマンドにフィルタをかけることにより、また認可された１人または複数人のユーザだけが、デバイス上でユーザ情報を設定することができるように保証することにより、セキュリティを実現する。デバイスドライバインターフェース（ＤＤＩ）フィルタリングでは、クラス拡張オブジェクトは、３つのタイプのデバイスユーザモードをサポートする。
【００３６】
オープンアクセス−オープンアクセスモード中におけるデバイスにより、ユーザは、そのデバイスと対話することができるようになる。ドライバは、いつでも任意のユーザについてのデバイスドライバインターフェースコマンドを可能にする。
【００３７】
インタラクティブユーザ−インタラクティブユーザモード中におけるデバイスは、主要コンピュータシステムの現在アクティブなコンソールユーザと対話するだけになる。ドライバは、現在アクティブなユーザ以外のどのユーザについてのデバイスドライバインターフェースコマンドも拒絶する。
【００３８】
固定ユーザ−固定ユーザモード中におけるデバイスだけが、単一の指定された固定ユーザと対話する。ドライバは、それらがデバイスの指定された固定ユーザでない場合に、現在アクティブなユーザ（または他の任意のユーザ）からのデバイスドライバインターフェースコマンドを拒絶する。デバイスまたはＰＣのいずれも、デバイスの固定ユーザを指定することができ、固定ユーザは、いつでも変化してもよい。
【００３９】
補助ディスプレイクラス拡張オブジェクトは、デバイスドライバインターフェースコマンドが発行されるときにある種の（例の）ステップを取ることにより、デバイスドライバインターフェースコマンドにフィルタをかける。取られるステップは、ドライバがデバイスにそのユーザモードについて問い合わせるときに戻される応答に依存する。オープンアクセスユーザモードでは、デバイスドライバインターフェースコマンドは、通過させられる。
【００４０】
ユーザモードがその代わりにインタラクティブである場合、ドライバは、（主要コンピュータシステムのコンソール上のユーザとして定義される）現在のインタラクティブユーザのＳＩＤ（セキュリティＩＤ）を取得し、ドライバは、呼出しプロセスのＳＩＤを獲得し、ドライバは、それらのＳＩＤを比較する。それらのＳＩＤが等しい場合、デバイスドライバインターフェースコマンドは、通過させられ、そうでなければ、コマンドはブロックされる。
【００４１】
ユーザモードが固定ユーザである場合、ドライバは、現在のデバイスユーザのＳＩＤについてデバイスに問い合わせ、呼出しプロセスのＳＩＤも獲得する。ドライバはそれらのＳＩＤを比較し、それらのＳＩＤが等しい場合、デバイスドライバインターフェースコマンドは通過させられ、そうでなければコマンドはブロックされる。
【００４２】
ユーザごとの設定の実施に関しては、クラス拡張オブジェクトは、ＣＰＬ（補助ディスプレイ制御パネルアプレット）を介して認可されたユーザによって指定されるユーザ設定だけが、デバイスに適用されることを保証する。この目的を達成するために、（主要コンピュータシステム上で実質的に常に実行されるプロセスを含む）モニタは、レジストリからユーザ情報を読み取る許可を有する。このプロセスは、ＰｎＰデバイス追加イベント、新しいユーザのログオンイベントまたはログオフイベント、および高速なユーザスイッチングイベントを含めて、イベントについてのシステムをモニタする。これらのイベントのうちの任意の１つが起きるときに、モニタプロセスは、ユーザ情報アップデートが起きる予定であることをドライバに通知する。この時に、クラス拡張オブジェクトは、モニタプロセスのまねをし、ユーザ情報を読み取り、その情報をデバイスに対して適用する。一実施形態においては、ユーザ情報は、許可マネージャ４４４を介して書き込まれ、レジストリから読み取られることができる。
【００４３】
ユーザが、ＣＰＬ中における設定に対して変更を行うときに、ＣＰＬは、ドライバ中に呼び出され、ユーザデータに渡される。実施されるコールバックへの呼出しを行う前に、クラス拡張オブジェクトは、レジストリに含まれるユーザデータに対してその渡されたユーザデータを検証する。
インターフェースおよびメソッドの例
ＩＳｉｄｅＳｈｏｗＣｌａｓｓＥｘｔｅｎｓｉｏｎインターフェース
独立系ハードウェアベンダは、ＩＰｎｐＣａｌｌｂａｃｋＨａｒｄｗａｒｅ：：ＯｎＰｒｅｐａｒｅＨａｒｄｗａｒｅ（）内のこのクラスのインスタンスをＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅ（）し、ＵＭＤＦドライバの寿命についてのインスタンスに対するポインタを保持すべきである。このインターフェースは、ＷＰＤ  ＩＯＣＴＬを解析すること、および独立系ハードウェアベンダによって提供されるコールバック上でそれらをデバイスドライバインターフェース呼出しに分解することによって独立系ハードウェアベンダを支援する。独立系ハードウェアベンダは、Ｉｎｉｔｉａｌｉｚｅ（）を呼び出すことにより、ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒオブジェクトをこのインターフェースに登録すべきである。
【００４４】
ＨＲＥＳＵＬＴ  Ｉｎｉｔｉａｌｉｚｅ（ＩＵｎｋｎｏｗｎ＊ＷｄｆＤｅｖｉｃｅＵｎｋｎｏｗｎ，ＩＵｎｋｎｏｗｎ＊ｐＳｉｄｅＳｈｏｗＤｒｉｖｅｒＵｎｋｎｏｗｎ）
このメソッドは、ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒオブジェクトをクラス拡張オブジェクトに登録し、使用のためにクラス拡張を初期化する。
【００４５】
ＨＲＥＳＵＬＴ  Ｕｎｉｎｉｔｉａｌｉｚｅ（）
このメソッドは、クラス拡張オブジェクトを未登録にし、クラス拡張が有する可能性がある任意のリファレンス（ｒｅｆｅｒｅｎｃｅ）を解放する。
【００４６】
ＨＲＥＳＵＬＴ  ＯｎＰｒｏｃｅｓｓＩｏＣｏｎｔｒｏｌ（ＩＷＤＦＩｏＱｕｅｕｅ＊ｐＱｕｅｕｅ，ＩＷＤＦＩｏＲｅｑｕｅｓｔ＊ｐＲｅｑｕｅｓｔ，ＵＬＯＮＧ  ＣｏｎｔｒｏｌＣｏｄｅ，ＳＩＺＥ＿Ｔ  ＩｎｐｕｔＢｕｆｆｅｒＳｉｚｅＩｎＢｙｔｅｓ，ＳＩＺＥ＿Ｔ  ＯｕｔｐｕｔＢｕｆｆｅｒＳｉｚｅＩｎＢｙｔｅｓ）
このメソッドは、転送されるＷＰＤベースのＩＯＣＴＬを受け入れる。クライアントは、このメソッドを呼び出す前にＩｎｉｔｉａｌｉｚｅ（）を呼び出すことによりＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒインターフェースを実施するオブジェクトを登録すべきである。このメソッドに渡されることができる有効なＩＯＣＴＬは、補助ディスプレイプラットフォームによって生成されるＩＯＣＴＬを含んでいる。独立系ハードウェアベンダがカスタムＷＰＤ  ＩＯＣＴＬをこのメソッドに渡したいと望む場合には、彼らは、ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒ：：ＯｎＰｒｏｃｅｓｓＷｐｄＭｅｓｓａｇｅ（）中におけるハンドラコードを実施すべきである。Ｉ／Ｏ要求は、この呼出しによって完了されることにはならないので、クライアントは、Ｉ／Ｏ要求を完了すべきである。
ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒインターフェース
ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒインターフェースは、デバイス上でコマンドを実行するためにＩＳｉｄｅＳｈｏｗＣｌａｓｓＥｘｔｅｎｓｉｏｎオブジェクトによって使用される。ＩＳｉｄｅＳｈｏｗＤｒｉｖｅｒは、Ｉｎｉｔｉａｌｉｚｅメソッドを経由してＩＳｉｄｅＳｈｏｗＣｌａｓｓＥｘｔｅｎｓｉｏｎクラスに供給される未登録のＣＯＭオブジェクトである。独立系ハードウェアベンダは、このインターフェースを実施する役割を担う。
【００４７】
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＣｕｒｒｅｎｔＵｓｅｒ（ＳＩＤ＊ｕｓｅｒ，ＬＰＣＷＳＴＲ  ｐｗｓｚＦｒｉｅｎｄｌｙＮａｍｅ）
現在のユーザが誰であるかをデバイスに伝えるために使用される。
【００４８】
ｕｓｅｒ［ｉｎ］  新しい現在のユーザを識別するＳＩＤに対するポインタ。
ｐｗｓｚＦｒｅｉｎｄｌｙＮａｍｅ［ｉｎ］  フレンドリーな人が読取り可能なユーザ名であるストリング。
【００４９】
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＣｕｒｒｅｎｔＵｓｅｒ（ＳＩＤ＊＊ｐｐｕｓｅｒ）
このメソッドにより、クライアントは、デバイスの現在指定されるユーザについてデバイスに尋ねることができるようになる。
【００５０】
ｐｐｕｓｅｒ［ｏｕｔ］  戻るとすぐに、デバイスの現在指定されるユーザのＳＩＤを含むようになるアドレスに対するポインタ。呼出し元は、ＦｒｅｅＳｉｄ（）を呼び出すことによりＳＩＤを解放すべきである。
【００５１】
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＴｉｍｅ（ＳＩＤ＊ｕｓｅｒ，ＦＩＬＥＴＩＭＥ  ｔｉｍｅ）
デバイス上に現在の時刻を設定するために使用される。
【００５２】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｔｉｍｅ［ｉｎ］  現在の時刻であるＦＩＬＥＴＩＭＥ
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＳｈｏｒｔＤａｔｅＦｏｒｍａｔ（ＳＩＤ＊ｕｓｅｒ，ＬＰＣＷＳＴＲ  ｐｗｓｚＤａｔｅＦｏｒｍａｔ）
デバイスの日付フォーマットをｓｈｏｒｔに設定するために、そしてそのフォーマットが何であるかを示すために使用される。
【００５３】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐｗｓｚＤａｔｅＦｏｒｍａｔ［ｉｎ］
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＬｏｎｇＤａｔｅＦｏｒｍａｔ（ＳＩＤ＊ｕｓｅｒ，ＬＰＣＷＳＴＲ  ｐｗｓｚＤａｔｅＦｏｒｍａｔ）
デバイスの日付フォーマットをｌｏｎｇに設定するために、そしてそのフォーマットが何であるかを示すために使用される。
【００５４】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐｗｓｚＤａｔｅＦｏｒｍａｔ［ｉｎ］
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＳｈｏｒｔＴｉｍｅＦｏｒｍａｔ（ＳＩＤ＊ｕｓｅｒ，ＬＰＣＷＳＴＲ  ｐｗｓｚＴｉｍｅＦｏｒｍａｔ）
デバイスの時間フォーマットをｓｈｏｒｔに設定するために、そしてそのフォーマットが何であるかを示すために使用される。
【００５５】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐｗｓｚＴｉｍｅＦｏｒｍａｔ［ｉｎ］  時間フォーマットを示すストリング。
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＬｏｎｇＴｉｍｅＦｏｒｍａｔ（ＳＩＤ＊ｕｓｅｒ，ＬＰＣＷＳＴＲ  ｐｗｓｚＴｉｍｅＦｏｒｍａｔ）
デバイスの時間フォーマットをｌｏｎｇに設定するために、そしてその時間フォーマットが何であるかを示すために使用される。
【００５６】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐｗｓｚＴｉｍｅＦｏｒｍａｔ［ｉｎ］  時間フォーマットを示すストリング。
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＬａｎｇｕａｇｅ（ＳＩＤ＊ｕｓｅｒ，ＬＡＮＧＩＤ  ｌｉｄ）
このメソッドは、与えられたデバイスユーザ対についての現在の言語が何であるかをデバイスに伝える。
【００５７】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｌｉｄ［ｉｎ］  指定されたユーザについての現在の言語であるＬＡＮＧＩＤ。
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＤｅｖｉｃｅＦｉｒｍｗａｒｅＶｅｒｓｉｏｎ（ＬＰＣＷＳＴＲ＊ｐｐｗｓｚＶｅｒｓｉｏｎ）
このメソッドは、デバイスファームウェアについてのバージョン情報を取り出す。
【００５８】
ｐｐｗｓｚＶｅｒｓｉｏｎ［ｏｕｔ］  戻るとすぐに、デバイスファームウェア情報を含むことになるワイドストリング（ｗｉｄｅ  ｓｔｒｉｎｇ）に対するポインタ。
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＤｅｖｉｃｅＥｎｄｐｏｉｎｔｓ（ＥＮＤＰＯＩＮＴ＿ＩＤ＊＊ｒｇＥｎｄｐｏｉｎｔｓ，ＤＷＯＲＤ＊ｃＥｎｄｐｏｉｎｔｓ）
このメソッドは、デバイスによってサポートされるエンドポイントを取り出す。
【００５９】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｒｇＥｎｄｐｏｉｎｔｓ［ｏｕｔ］  デバイスによってサポートされるエンドポイントであるＥＮＤＰＯＩＮＴのアレイに対するポインタ。
【００６０】
ｒｇＥｎｄｐｏｉｎｔｓは、ＣｏＴａｓｋＭｅｍＦｒｅｅ（）を呼び出すことによりクライアントによって解放されるべきである。
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＤｅｖｉｃｅＣａｐａｂｉｌｉｔｉｅｓ（ＰＲＯＰＥＲＴＹＫＥＹ＊ｐｋｅｙ，ＰＲＯＰＶＡＲＩＡＮＴ＊ｐｖＶａｌｕｅ）
このメソッドは、デバイスの能力（すなわち画面分解能、カラー深さなど）を決定するためにＡＰＩによって使用される。
【００６１】
ｐＫｅｙ［ｉｎ］  問い合わせるデバイス能力を識別するＰＲＯＰＥＲＴＹＫＥＹに対するポインタ。
ｐｖＶａｌｕｅ［ｏｕｔ］  戻るとすぐに、対応する能力についての値を含むことになるＰＲＯＰＶＡＲＩＡＮＴに対するポインタ。
【００６２】
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＰｒｅＥｎａｂｌｅｄＡｐｐｌｉｃａｔｉｏｎｓ（ＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ＊＊ｐｐｇｕｉｄＡｐｐｓ）
このメソッドは、第１の実行上でイネーブルにされるべきデフォルトの組のアプリケーションが何であるかを決定するためにＣＰＬによって使用される。このメソッドは、デバイスインストレーションのすぐ後で呼び出されることになる。
【００６３】
ｐｐｇｕｉｄＡｐｐｓ［ｏｕｔ］  戻るとすぐに、デフォルトの組のアプリケーションのアプリケーションｉｄを含むことになるＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤのアレイに対するポインタ。クライアントは、ＣｏＴａｓｋＭｅｍＦｒｅｅ（）に対する呼出しを用いてＧＵＩＤのアレイを解放する役割を担う。
【００６４】
ＨＲＥＳＵＬＴ  ＯｎＡｄｄＡｐｐｌｉｃａｔｉｏｎ（ＳＩＤ＊ｕｓｅｒ，ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＣＯＮＳＴ  ＰＥＮＤＰＯＩＮＴ＿ＩＤ  ｐＥｎｄｐｏｉｎｔ，ＬＰＣＷＳＴＲ  ｗｓｚＮａｍｅ，ＤＷＯＲＤ  ｐｏｌｉｃｙ，ＣＯＮＳＴ  ＢＹＴＥ＊ｐｂＬａｒｇｅＩｃｏｎ，ＤＷＯＲＤ  ｃｂＬａｒｇｅＩｃｏｎ，ＢＹＴＥ＊ｐｂＭｅｄｉｕｍＩｃｏｎ，ＤＷＯＲＤ  ｃｂＭｅｄｉｕｍＩｃｏｎ，ＣＯＮＳＴ  ＢＹＴＥ＊ｐｂＳｍａｌｌＩｃｏｎ，ＤＷＯＲＤ  ｃｂＳｍａｌＩｃｏｎ）
このメソッドは、デバイス上で指定されるユーザによる使用のためにアプリケーションをイネーブルにするためにＣＰＬによって使用される。
【００６５】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐＡｐｐＩｄ［ｉｎ］  与えられたユーザについてのデバイスに登録されるべきアプリケーションを示すＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
【００６６】
ｗｓｚＮａｍｅ［ｉｎ］  デバイスがディスプレイの目的のために使用することができるアプリケーションのフレンドリーな名前であるＬＰＣＷＳＴＲ。
ｐｏｌｉｃｙ［ｉｎ］  アプリケーションについてデバイスによって使用されるべきキャッシュポリシーを示すＤＷＯＲＤ。ポリシーは以下のような値とすることができる。
【００６７】
ＫｅｅｐＯｌｄｅｓｔ
ＫｅｅｐＦｒｅｑｕｅｎｔｌｙＡｃｃｅｓｓｅｄ
ＫｅｅｐＲｅｃｅｎｔｌｙＡｃｃｅｓｓｅｄ
ｐｂＬａｒｇｅＩｃｏｎ［ｉｎ］  アプリケーションに関連する大きなアイコンイメージであるバイトのアレイ。
【００６８】
ｃｂＬａｒｇｅＩｃｏｎ［ｉｎ］  ｐｂＬａｒｇｅＩｃｏｎによって指し示される大きなアイコンデータのバイトのカウント。
ｐｂＳｍａｌｌＩｃｏｎ［ｉｎ］  アプリケーションに関連する小さなアイコンイメージであるバイトのアレイ。
【００６９】
ｃｂＳｍａｌｌＩｃｏｎ［ｉｎ］  ｐｂＳｍａｌｌＩｃｏｎによって指し示される小さなアイコンデータのバイトのカウント。
ＨＲＥＳＵＬＴ  ＯｎＲｅｍｏｖｅＡｐｐｌｉｃａｔｉｏｎ（ＳＩＤ＊ｕｓｅｒ，ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ）
このメソッドは、デバイス上で指定されるユーザについてのアプリケーションをディスエーブルにするためにＣＰＬによって使用される。
【００７０】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｐＡｐｐＩｄ［ｉｎ］  指定されるユーザについてのデバイスから取り除かれるべきＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
【００７１】
ＨＲＥＳＵＬＴ  ＯｎＡｄｄＮｏｔｉｆｉｃａｔｉｏｎ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＮＯＴＩＦＩＣＡＴＩＯＮ＿ＩＤ  ｎｏｔｉｆｉｃａｔｉｏｎＩｄ，ＦＩＬＥＴＩＭＥ  ｆｔＥｘｐｉｒａｔｉｏｎ，ＬＰＣＷＳＴＲ  ｐｗｓｚＴｉｔｌｅ，ＬＰＣＷＳＴＲ  ｐｗｓｚＭｅｓｓａｇｅ，ＣＯＮＳＴ  ＢＹＴＥ＊ｐｂＩｍａｇｅ，ＤＷＯＲＤ  ｃｂＩｍａｇｅ）
デバイスに対して通知を送る。
【００７２】
ｐＡｐｐＩｄ［ｉｎ］  通知が送られるべきアプリケーションＩｄであるＧＵＩＤに対するポインタ。
ｎｏｔｉｆｉｃａｔｉｏｎＩｄ［ｉｎ］  通知ｉｄであるＮＯＴＩＦＩＣＡＴＩＯＮ＿ＩＤ。
【００７３】
ｆｔＥｘｐｉｒａｔｉｏｎ［ｉｎ］  通知が期限切れになり、デバイス上のビューから取り除かれるべき時刻であるＦＩＬＥＴＩＭＥ。
ｐｗｓｚＴｉｔｌｅ［ｉｎ］  通知のタイトルのテキストであるストリング。
【００７４】
ｐｗｓｚＭｅｓｓａｇｅ［ｉｎ］  通知メッセージのテキストであるストリング。
ｐｂＩｍａｇｅ［ｉｎ］  通知に関連するイメージであるバイトのアレイ。
ｃｂＩｍａｇｅ［ｉｎ］  イメージ、ｐｂＩｍａｇｅのバイトのカウント。
【００７５】
ＨＲＥＳＵＬＴ  ＯｎＲｅｍｏｖｅＮｏｔｉｆｉｃａｔｉｏｎ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＮＯＴＩＦＩＣＡＴＩＯＮ＿ＩＤ  ｎｏｔｉｆｉｃａｔｉｏｎＩｄ）
このメソッドは、デバイスからアクティブな通知を取り除く。
【００７６】
ｐＡｐｐＩｄ［ｉｎ］  取り除かれるべき通知のアプリケーションＩｄであるＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
ｎｏｔｉｆｉｃａｔｉｏｎＩｄ［ｉｎ］  通知ｉｄであるＤＷＯＲＤ。
【００７７】
ＨＲＥＳＵＬＴ  ＯｎＲｅｍｏｖｅＡｌｌＮｏｔｉｆｉｃａｔｉｏｎｓ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ）
このメソッドは、デバイスからアプリケーションについてのすべての通知を取り除く。
【００７８】
ｐＡｐＩｄ［ｉｎ］  すべての通知が取り除かれるべきアプリケーションを示すＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
ＨＲＥＳＵＬＴ  ＯｎＡｄｄＣｏｎｔｅｎｔ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＣＯＮＳＴ  ＰＥＮＤＰＯＩＮＴ＿ＩＤ  ｐＲｅｎｄｅｒｅｒＩｄ，ＣＯＮＴＥＮＴ＿ＩＤ  ｃｏｎｔｅｎｔＩｄ，  ＣＯＮＳＴ  ＢＹＴＥ＊ｐＤａｔａ，ＤＷＯＲＤ  ｃｂＤａｔａ）
このメソッドは、与えられたアプリケーションについてデバイスに対してコンテンツを送る。
【００７９】
ｐＡｐｐＩｄ［ｉｎ］  コンテンツが関連づけられるアプリケーションのアプリケーションＩｄであるＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
ｐＲｅｎｄｅｒｅｒＩｄ［ｉｎ］  コンテンツが関連づけられるレンダラＩｄであるＥＮＤＰＯＩＮＴ＿ＩＤに対するポインタ。
【００８０】
ｃｏｎｔｅｎｔｅｄ［ｉｎ］  追加すべきコンテンツのコンテンツｉｄ。
ｐｂＤａｔａ［ｉｎ］  アプリケーションに追加されるべきコンテンツであるバイトのアレイ。
【００８１】
ｃｂＤａｔａ［ｉｎ］  データのバイトのカウント。
ＨＲＥＳＵＬＴ  ＯｎＲｅｍｏｖｅＣｏｎｔｅｎｔ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＣＯＮＳＴ  ＧＵＩＤ  ｐＲｅｄｅｒＩｄ）
このメソッドは、与えられたアプリケーションについてデバイスからコンテンツを取り除く。
【００８２】
ｐＡｐｐＩｄ［ｉｎ］  コンテンツが取り除かれるべきアプリケーションのＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
ｐＲｅｎｄｅｒｅｒＩｄ［ｉｎ］  コンテンツが関連づけられるレンダラＩｄであるＧＵＩＤに対するポインタ。
【００８３】
ＨＲＥＳＵＬＴ  ＯｎＲｅｍｏｖｅＡｌｌＣｏｎｔｅｎｔ（ＣＯＮＳＴ  ＰＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤ  ｐＡｐｐＩｄ，ＣＯＮＳＴ  ＰＥＮＤＰＯＩＮＴ＿ＩＤ  ｐＲｅｎｄｅｒｅｒＩｄ）
デバイスからアプリケーションについてのすべてのコンテンツを取り除く。
【００８４】
ｐＡｐｐＩｄ［ｉｎ］  すべてのコンテンツが取り除かれることになるアプリケーションのアプリケーションＩｄであるＡＰＰＬＩＣＡＴＩＯＮ＿ＩＤに対するポインタ。
ｐＲｅｎｄｅｒｅｒＩｄ［ｉｎ］  取り除かれるべきコンテンツのレンダラＩｄであるＥＮＤＰＯＩＮＴ＿ＩＤに対するポインタ。
【００８５】
ＨＲＥＳＵＬＴ  ＯｎＳｅｔＮｏｔｉｆｉｃａｔｉｏｎｓＥｎａｂｌｅｄ（［ｉｎ］  ｃｏｎｓｔ  ＳＩＤ＊ｐＵｓｅｒＳｉｄ，［ｉｎ］  ｃｏｎｓｔ  ＢＯＯＬ  ｆＩｓＥｎａｂｌｅｄ）
デバイスによって生成される通知を抑制する。
【００８６】
ｕｓｅｒ［ｉｎ］  呼出しプロセスの所有者を示すＳＩＤに対するポインタ。
ｆＩｓＥｎａｂｌｅ［ｉｎ］  通知がデバイスによって抑制されるべきかどうかを示すブール（Ｂｏｏｌ）。
【００８７】
ＨＲＥＳＵＬＴ  ＯｎＤｅｖｉｃｅＩｏＣｏｎｔｒｏｌ（ＳＩＤ＊ｕｓｅｒ，ＩＷＤＦＩｏＱｕｅｕｅ＊ｐＱｕｅｕｅ，ＩＷＤＦＩｏＲｅｑｕｅｓｔ＊  ｐＲｅｑｕｅｓｔ，ＵＬＯＮＧ  ＣｏｎｔｒｏｌＣｏｄｅ，ＳＩＺＥ＿Ｔ  ＩｎｐｕｔＢｕｆｆｅｒＳｉｚｅＩｎＢｙｔｅｓ，ＳＩＺＥ＿Ｔ  ＯｕｔｐｕｔＢｕｆｆｅｒＳｉｚｅＩｎＢｙｔｅｓ）
このメソッドは、知られていないＷＰＤ  ＩＯＣＴＬに応じて呼び出されるフォールバックハンドラである。このメソッドは、独立系ハードウェアベンダにデバイスドライバインターフェースを拡張し、他のインターフェースメソッドと同じコンテキストで彼ら自身のＷＰＤ  ＩＯＣＴＬを実施する可能性を与える。独立系ハードウェアベンダは、渡されたデータ上で妥当性検証とセキュリティチェックの役割を担う。本メソッドの意図は、デバイスドライバインターフェースをバイパスするのではなくて拡張するメカニズムを提供することである。
【００８８】
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＤｅｖｉｃｅＮａｍｅ（［ｏｕｔ，ｓｔｒｉｎｇ］  ＬＰＷＳＴＲ＊ｐｐｗｓｚＮａｍｅ）
このメソッドは、デバイスマネージャ中におけるディスプレイの目的のためにデバイス名を取り出すために使用される。
【００８９】
ＨＲＥＳＵＬＴ  ＯｎＧｅｔＤｅｖｉｃｅＭａｎｕｆａｃｔｕｒｅｒ（［ｏｕｔ，ｓｔｒｉｎｇ］  ＬＰＷＳＴＲ＊ｐｐｗｓｚＭａｎｕｆａｃｔｕｒｅｒ）
このメソッドは、デバイスマネージャ中におけるディスプレイの目的のためにデバイス製造業者の名前を取り出すために使用される。
【００９０】
簡単に理解されることができるように、ほとんどのドライバコードは、アルゴリズム集約的ではない。可能な例外は、どのような論理的ＷＰＤオブジェクトが、オブジェクトＩＤに基づいているかを推論する、ドライバ内のメカニズムである。クラス拡張オブジェクトは、正規表現を使用して、オブジェクトＩＤを論理的ＷＰＤオブジェクトにマッチングさせる。これは、もっと極度に単純化されたストリング解析ファンクションで正規表現を置換することにより最適化され得るが、そのようにすることは、速度のために堅牢性をトレードオフする。
【図面の簡単な説明】
【００９１】
【図１】本発明の様々な態様が組み込まれることができる汎用コンピューティング環境の例示の一例を示す図である。
【図２】インターフェースセットが、補助ディスプレイデバイス通信のために実施されることができる一例のアーキテクチャを表すブロック図である。
【図３】インターフェースが、補助ディスプレイデバイス通信のために実施されることができるライブラリを含むコンポーネントの例を表すブロック図である。
【図４】補助ディスプレイデバイス通信のために使用されることができる、インターフェースの例とヘルパーオブジェクトを含むコンポーネントの例を表すブロック図である。
【図１】
2009506463.tif 000003
【図２】
2009506463.tif 000004
【図３】
2009506463.tif 000005
【図４】
2009506463.tif 000006
【国際調査報告】
2009506463.tif 000007
2009506463.tif 000008