次の方法で共有


ミラー ドライバー

概要

Windows 8 以降では、ミラー ドライバーはシステムにインストールされません。 このセクションで説明するミラー ドライバーは、以前のバージョンの Windows でのみインストールおよび実行されます。

ただし、能力障碍や機能障碍のあるお客様に対する支援技術において、Windows 8 以降もミラー ドライバー機能の提供を希望する開発者は、特別な GDI アクセシビリティ ドライバー モデルを使用できます。 この特別なドライバー モデルの詳細については、acc_driver@microsoft.com までお問い合わせください。

ミラー ドライバー アーキテクチャに基づくリモート ディスプレイ ドライバー モデルは、Windows 8 以降でも実行できますが、Windows 10 バージョン 2004 では削除されています。 詳細については、「リモート ディスプレイ ドライバー」を参照してください。

Note

Windows 10 の時点で、GDI アクセシビリティ ドライバーは新しい製品には推奨されなくなり、Microsoft は今後の OS バージョンでサポートを削除する予定です。 GDI リモート ディスプレイ ドライバーのサポートは、Windows 10 バージョン 2004 で既に削除されています。 ただし、リモート ディスプレイ ソリューションは、カスタム リモート プロトコル プロバイダー間接ディスプレイ ドライバーを構築することで引き続き作成できます。

ミラー ドライバーの説明

ミラー ドライバーは、1 つ以上の追加の物理ディスプレイ デバイスの描画操作をミラー化する仮想デバイス用のディスプレイ ドライバーです。 実装されると、他のディスプレイ ドライバーと同様に動作しますが、ペアになっているビデオ ミニポート ドライバーは一般的なミニポート ドライバーに比べて最小限です。 ミラーリング システムのミニポート ドライバーの詳細については、「ビデオ ミニポート ドライバーでのミラー ドライバー サポート (Windows 2000 モデル)」を参照してください。 Windows 7 エディション (バージョン 7600) を介した Windows Driver Kit (WDK) には、3 つのディレクトリに格納されたコンポーネント ソース ファイルを含むサンプル ミラー ドライバーが用意されています。

ディレクトリ 次のソース ファイルが含まれます。
\src\video\displays\mirror\disp ミラー ドライバー。
\src\video\miniport\mirror\mini ミニポート ドライバー。
\src\video\displays\mirror\app ユーザーモード サービス。 また、mirror.inf. も含まれています。

GDI は仮想デスクトップをサポートし、仮想デスクトップの一部をミラー デバイスにレプリケートする機能を提供します。 GDI は、仮想デスクトップを物理ディスプレイ ドライバー レイヤーの上のグラフィックス レイヤーとして実装します。 すべての描画操作は、この仮想デスクトップ空間で開始されます。GDI は、この描画操作をクリップし、仮想デスクトップに存在する適切な物理ディスプレイ デバイスにレンダリングします。

ミラー デバイスは、仮想デスクトップ内の任意のクリップ領域 (複数の物理ディスプレイ デバイスにまたがるものも含む) を指定できます。 GDI は、そのドライバーのクリップ領域と交差するすべての描画操作をミラー デバイスに送信します。 ミラー デバイスでは、特定の物理デバイスと完全に一致するクリップ領域を設定できるため、そのデバイスを効果的にミラーリングできます。

Note

Windows 2000 以降では、ミラー ドライバーのクリップ領域にプライマリ ディスプレイ デバイスが含まれている必要があります。

Windows Vista 以降では、ミラー ドライバーが読み込まれると、デスクトップ ウィンドウ マネージャー (DWM) がオフになります。

ミラー ドライバーのコード サンプルは、ミラー ドライバーを実装する方法を示します。 サンプルの理解に役立つ詳細情報:

  • テンプレートとして、サンプル INF ファイル mirror.inf を使用します。 詳細については、「ミラー ドライバー INF ファイル」を参照してください。
  • mirror.exe を確認してください。このアプリケーションでは、ミラー ドライバーを仮想デスクトップに接続する方法をデモします。 詳細については、「ミラー ドライバーのインストール」を参照してください。
  • Win32 EnumDisplayDevices 関数の使用方法については、Windows SDK のドキュメントを参照してください。 この関数を使用して、ミラー化されるディスプレイ デバイスに関連付けられている \\.\Display# の名前を確認します。 この数値は、ミラー化されるデバイスの設定を変更する際に必要となります。 複数のインスタンスがある場合、# はインスタンスごとに異なる数値になります。そのため、使用可能なディスプレイ デバイスを反復処理して、この数値を決定する必要があります。

ミラー化されるデバイスをグローバル デスクトップに接続する

  1. REG_DWORD レジストリ エントリ Attach.ToDesktop をドライバーのサービス キーに追加します。

  2. このキーのエントリを 1 に設定します。

ミラー ドライバーを無効にするには、このエントリを 0 (ゼロ) に設定します。

前述したように、ドライバーは、デバイス レイヤーの上にある描画レイヤーにインストールされて動作します。 ミラー ドライバーの座標空間はデスクトップ座標空間であるため、複数のデバイスにまたがることができます。 ミラー ドライバーの目的がプライマリ ディスプレイのミラーリングである場合、その表示座標はプライマリ ディスプレイのデスクトップ座標と一致する必要があります。

  • ミラー ドライバーの表示領域と交差するすべてのレンダリング操作について、インストールされたミラー ドライバーが呼び出されます。 複数モニター システムでは、ミラー ドライバーがプライマリ ディスプレイ デバイスのみと重複している場合、これにはすべての描画操作が含まれるとは限らない可能性があります。

  • ユーザーモード サービスを使用して、ミラー ドライバーの設定を維持することをお勧めします。 このアプリケーションでは、ドライバーが起動時に正しく読み込まれ、WM_DISPLAYCHANGE メッセージを介して表示の変更通知を取得することによって、デスクトップへの変更に適切に応答できることが保証されます。

  • GDI は、ドライバーの四角形領域と交差する任意の 2D グラフィックス DDI 描画操作に対して、ミラー ドライバーを呼び出します。 サーフェスがデバイス形式のビットマップである場合、つまり SURFOBJiType の STYPE_DEVBITMAP がある場合、GDI は四角形領域のチェックを実行しないことに注意してください。

  • いつものように、ミラー ドライバーはグローバル変数を使用せずに実装する必要があります。 すべての状態は、その特定のドライバーの PDEV に存在する必要があります。 GDI は、ビデオ ミニポート ドライバーによって作成されるすべてのハードウェア デバイス拡張機能に対して DrvEnablePDEV を呼び出します。

  • ミラー ドライバーでは DirectDraw をサポートしません。

  • ミラー ドライバーは、DEVINFO 構造体の flGraphicsCaps メンバーで、GCAPS_LAYERED フラグを TRUE に設定する必要があります。

  • アクセシビリティ ミラー ドライバーは、DEVINFO 構造体の flGraphicsCaps2 メンバーで、GCAPS2_EXCLUDELAYERED フラグと GCAPS2_INCLUDEAPIBITMAPS フラグを TRUE に設定する必要があります。

  • ミラー ドライバーは、必要に応じて DrvRealizeBrush を実装することでブラシを実現できます。

GDI を使用すると、同じドライバーを単一モニター システムと複数モニター システムの両方で実行できます。 複数モニター システムのドライバーは、グローバル デスクトップ内でのみ位置を追跡する必要があります。 GDI は、Win32 ChangeDisplaySettings 呼び出しが発生するたびに (ユーザーが [コントロール パネル] の [ディスプレイ] プログラムを使用して、デスクトップでのモニターの位置を動的に変更するときなど)、ドライバーにこの位置を提供します。 GDI は、このような変更が発生したときに、それに応じて DEVMODEW 構造体の dmPosition メンバーを更新します。 ドライバーは、DrvNotify を実装することで、このような変更の通知を受信できます。 詳細については、「ミラー ドライバのインストール」を参照してください。

Note

ミラー ドライバーは、クライアント側で完璧なピクセル精度でのレンダリングが困難な場合は、そのような精度でレンダリングする必要はありません。 たとえば、ミラー化されたイメージを受信するアダプター / モニターは、グリッド交差量子化 (GIQ) 線描画と多角形塗りつぶしを、ミラー化されるアダプター / モニターと同じ精度でレンダリングする必要はありません。