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 关闭或其他全屏应用程序切换
- 如果调用应用程序提供的缓冲区不够大,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 参数中分配和指定的缓冲区空间量。
缓冲区包含当前帧脏 RECT的列表。
注意若要生成直观准确的桌面副本,应用程序必须先处理所有移动 RECT,然后才能处理脏 RECT。
要求
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | dxgi1_2.h |
Library | Dxgi.lib |