共用方式為


IDXGIOutputDuplication::AcquireNextFrame 方法 (dxgi1_2.h)

指出應用程式已準備好處理下一個桌面映像。

語法

HRESULT AcquireNextFrame(
  [in]  UINT                    TimeoutInMilliseconds,
  [out] DXGI_OUTDUPL_FRAME_INFO *pFrameInfo,
  [out] IDXGIResource           **ppDesktopResource
);

參數

[in] TimeoutInMilliseconds

逾時間隔,以毫秒為單位。 這個間隔會指定此方法在返回呼叫端之前等候新框架的時間量。 如果間隔經過,且無法使用新的桌面映像,這個方法會傳回 。

如需超時時間間隔的詳細資訊,請參閱。

[out] pFrameInfo

接收 DXGI_OUTDUPL_FRAME_INFO 結構的記憶體位置指標,描述框架的計時和呈現統計數據。

[out] ppDesktopResource

變數的指標,這個變數會接收包含桌面點陣圖之介面的 IDXGIResource 介面。

傳回值

AcquireNextFrame 會傳回:

  • 如果已成功收到下一個桌面映像,S_OK。
  • 如果桌面重複介面無效,DXGI_ERROR_ACCESS_LOST。 桌面重複介面通常會在桌面上顯示不同類型的影像時變成無效。 這種情況的範例包括:
    • 桌面交換器
    • 模式變更
    • 從 DWM 開啟、關閉 DWM 或其他全螢幕應用程式
    在此情況下,應用程式必須釋放 IDXGIOutputDuplication 介面,並為新內容建立新的 IDXGIOutputDuplication
  • 如果下一個桌面框架可用之前經過的逾時間隔,DXGI_ERROR_WAIT_TIMEOUT。
  • 如果應用程式呼叫 AcquireNextFrame 而不放開上一個畫面,DXGI_ERROR_INVALID_CALL。
  • 如果 AcquireNextFrame 的其中一個參數不正確,E_INVALIDARG;例如,如果 pFrameInfo 為 NULL。
  • 可能是 DXGI_ERROR 主題中所述的其他錯誤碼。

備註

當 AcquireNextFrame 成功傳回時,呼叫的應用程式可以存取 AcquireNextFrameppDesktopResource 變數中傳回的桌面映像。 如果呼叫端在 TimeoutInMilliseconds 參數中指定零個超時時間間隔, AcquireNextFrame 會驗證是否有可用的新桌面映射、立即傳回,並以傳回值指出其結果。 如果呼叫端在 TimeoutInMilliseconds 參數中指定 INFINITE 逾時時間間隔,則逾時間隔永遠不會經過。

注意 您無法取消您在 TimeoutInMilliseconds 參數中指定的等候。 因此,如果您必須定期檢查其他條件 (,例如終止訊號) ,您應該指定非 INFINITE 逾時間隔。 逾時間隔經過之後,您可以檢查這些其他條件,然後再次呼叫 AcquireNextFrame 以等候下一個畫面。
 
當操作系統更新桌面位圖影像或變更硬體指標的形狀或位置時,AcquireNextFrame 會取得新的桌面框架。 AcquireNextFrame 取得的新畫面可能只有更新桌面映射、僅更新指標圖形或位置,或兩者皆更新。

規格需求

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

另請參閱

IDXGIOutputDuplication