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
Library Dxgi.lib

另请参阅

IDXGIOutputDuplication