IDXGIOutputDuplication::GetFrameDirtyRects メソッド (dxgi1_2.h)
現在のデスクトップ フレームダーティ四角形に関する情報を取得します。
構文
HRESULT GetFrameDirtyRects(
[in] UINT DirtyRectsBufferSize,
[out] RECT *pDirtyRectsBuffer,
[out] UINT *pDirtyRectsBufferSizeRequired
);
パラメーター
[in] DirtyRectsBufferSize
呼び出し元が pDirtyRectsBuffer パラメーターに渡したバッファーのサイズ (バイト単位)。
[out] pDirtyRectsBuffer
デスクトップ フレームのダーティ四角形領域を識別する RECT 構造体の配列へのポインター。
[out] pDirtyRectsBufferSizeRequired
getFrameDirtyRects が pDirtyRectsBuffer のバッファーにダーティ領域に関する情報を格納するために必要なバイト数を受け取る変数へのポインター。
必要なバッファー サイズを返す方法の詳細については、「備考」を参照してください。
戻り値
GetFrameDirtyRects は 次を返します。
- ダーティ四角形に関する情報が正常に取得された場合にS_OKします。
- デスクトップ重複インターフェイスが無効な場合は、DXGI_ERROR_ACCESS_LOSTします。 デスクトップの複製インターフェイスは、通常、デスクトップに別の種類のイメージが表示されると無効になります。 この状況の例を次に示します。
- デスクトップ スイッチ
- モードの変更
- DWM オン、DWM オフ、またはその他の全画面表示アプリケーションから切り替える
- 呼び出し元のアプリケーションによって提供されたバッファーが十分な大きさでない場合は、DXGI_ERROR_MORE_DATAします。
- アプリケーションがデスクトップ イメージを所有せずに GetFrameDirtyRects を呼び出した場合にDXGI_ERROR_INVALID_CALLします。
- GetFrameDirtyRects のパラメーターのいずれかが正しくない場合にE_INVALIDARGします。たとえば、pDirtyRectsBuffer が NULL の場合です。
- DXGI_ERRORトピックで説明されているその他のエラー コード。
解説
GetFrameDirtyRects は、 pDirtyRectsBufferSizeRequired の変数にサイズ値を格納します。 この値は、GetFrameDirtyRects がダーティリージョンに関する情報を格納するために必要なバイト数を指定します。 この値は、次の状況で使用して、 pDirtyRectsBuffer に渡す将来のバッファーに割り当てるメモリの量を決定できます。
- バッファーの大きさが十分でないため、GetFrameDirtyRects は DXGI_ERROR_MORE_DATA で失敗します。
- GetFrameDirtyRects は、必要以上に大きいバッファーを提供します。 pDirtyRectsBufferSizeRequired で返されるサイズ値は、呼び出し元が DirtyRectsBufferSize パラメーターで割り当て、指定したバッファー領域の量と比較して、実際に使用されたバッファー領域の量を呼び出し元に通知します。
バッファーには、現在のフレームダーティ RECTの一覧が含まれています。
メモデスクトップの視覚的に正確なコピーを生成するには、アプリケーションが RECTダーティ処理する前に、まずすべての移動 RECTを処理する必要があります。
要件
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | dxgi1_2.h |
Library | Dxgi.lib |