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 或其他全螢幕應用程式切換
    在此情況下,應用程式必須釋放 IDXGIOutputDuplication 介面,並為新內容建立新的 IDXGIOutputDuplication
  • 如果呼叫應用程式提供的緩衝區不夠大,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參數中配置和指定的緩衝區空間,實際使用的緩衝區空間數量。
呼叫端也可以使用pDirtyRectsBufferSizeRequired傳回的值來判斷pDirtyRectsBuffer陣列中傳回的RECT數目。

緩衝區包含目前框架的中途 RECT清單。

注意 若要產生桌面的視覺精確複本,應用程式必須先處理所有移動 RECT,再處理已變更 的 RECT
 

需求

   
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平台 Windows
標頭 dxgi1_2.h
程式庫 Dxgi.lib

另請參閱

IDXGIOutputDuplication