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 关闭或其他全屏应用程序切换
- DXGI_ERROR_WAIT_TIMEOUT超时间隔是否在下一个桌面帧可用之前已过。
- 如果应用程序调用 AcquireNextFrame 而不释放上一帧,则DXGI_ERROR_INVALID_CALL。
- 如果 AcquireNextFrame 的参数之一不正确,E_INVALIDARG;例如,如果 pFrameInfo 为 NULL。
- 可能是 DXGI_ERROR 主题中描述的其他错误代码。
注解
当 AcquireNextFrame 成功返回时,调用应用程序可以访问 AcquireNextFrame 在 ppDesktopResource 的变量中返回的桌面映像。 如果调用方在 TimeoutInMilliseconds 参数中指定零超时间隔, 则 AcquireNextFrame 将验证是否有新的桌面映像可用,立即返回,并使用返回值指示其结果。 如果调用方在 TimeoutInMilliseconds 参数中指定 INFINITE 超时间隔,则超时间隔永远不会经过。
注意 无法取消 TimeoutInMilliseconds 参数中指定的等待。 因此,如果必须定期检查其他条件 (例如终止信号) ,则应指定非 INFINITE 超时间隔。 超时间隔过后,可以针对这些其他条件检查,然后再次调用 AcquireNextFrame 以等待下一帧。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | dxgi1_2.h |
Library | Dxgi.lib |