デスクトップの重複
Windows 8 では、独立系ソフトウェア ベンダー (ISV) がデスクトップ コラボレーションとリモート デスクトップ アクセスのシナリオをサポートしやすくするために、Microsoft DirectX Graphics Infrastructure (DXGI) ベースの新しい API が導入されています。
このようなアプリケーションは、エンタープライズや教育のシナリオで広く使用されています。 これらのアプリケーションには共通する要件があります。デスクトップのコンテンツへのアクセスと、コンテンツをリモートの場所に転送する機能です。 Windows 8 のデスクトップ複製 API は、デスクトップ コンテンツへのアクセスを提供します。
現時点では、アプリケーションでこのシナリオをシームレスに実装できるようにする Windows API はありません。 そのため、アプリケーションは、ミラー ドライバーや画面のスクレイピングなどの独自の方法を使用して、デスクトップのコンテンツにアクセスします。 ただし、これらの方法には以下の制限があります。
- パフォーマンスを最適化するのが困難な場合があります。
- API は製品の出荷後にリリースされるため、これらのソリューションでは、より新しいグラフィックス レンダリング API をサポートしていない場合があります。
- Windows では、最適化に役立つ豊富なメタデータが常に提供されるわけではありません。
- すべてのソリューションが Windows Vista 以降のバージョンの Windows のデスクトップ コンポジションと互換性があるわけではありません。
Windows 8 では、デスクトップ複製 API と呼ばれる DXGI ベースの API が導入されています。 この API は、最適化のためにビットマップと関連メタデータを使用することで、デスクトップのコンテンツへのアクセスを提供します。 この API は、Aero テーマが有効になっている状態で動作し、アプリケーションが使用するグラフィックス API には依存しません。 ユーザーがローカル コンソールでアプリケーションを表示できる場合は、コンテンツもリモートで表示できます。 つまり、全画面表示の DirectX アプリケーションでも複製できます。 この API は、保護されたビデオ コンテンツへのアクセスに対しては、保護を提供することに注意してください。
この API を使用すると、アプリケーションは、モニターの境界に沿ってデスクトップのコンテンツへのアクセスを提供するように Windows に要求できます。 アプリケーションは、アクティブなディスプレイの 1 つ以上を複製できます。 アプリケーションが複製を要求すると、以下の処理が行われます。
- Windows はデスクトップをレンダリングし、アプリケーションにコピーを提供します。
- レンダリングされた各フレームは GPU メモリに配置されます。
- レンダリングされた各フレームには、次のメタデータが付属しています。
- ダーティ領域
- 画面間の移動
- マウス カーソル情報
- アプリケーションには、フレームとメタデータへのアクセスが提供されます。
- 各フレームの処理はアプリケーションが行います。
- アプリケーションは、ダーティ領域に基づいて最適化を選択できます。
- アプリケーションでは、移動とマウスのデータを処理するためにハードウェア アクセラレーションを使用することを選択できます。
- アプリケーションは、ストリーミング出力する前に、圧縮にハードウェア アクセラレーションを使用することを選択できます。
詳細なドキュメントとサンプルについては、「デスクトップ複製 API」を参照してください。