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