IDXGIOutputDuplication::GetFrameMoveRects 方法 (dxgi1_2.h)

获取有关当前桌面框架的移动矩形的信息。

语法

HRESULT GetFrameMoveRects(
  [in]  UINT                   MoveRectsBufferSize,
  [out] DXGI_OUTDUPL_MOVE_RECT *pMoveRectBuffer,
  [out] UINT                   *pMoveRectsBufferSizeRequired
);

参数

[in] MoveRectsBufferSize

调用方传递给 pMoveRectBuffer 参数的缓冲区的大小(以字节为单位)。

[out] pMoveRectBuffer

指向 DXGI_OUTDUPL_MOVE_RECT 结构数组的指针,这些结构标识桌面框架的移动矩形区域。

[out] pMoveRectsBufferSizeRequired

指向一个变量的指针,该变量接收 GetFrameMoveRectspMoveRectBuffer 的缓冲区中存储有关移动区域的信息所需的字节数。

有关返回所需缓冲区大小的详细信息,请参阅备注。

返回值

GetFrameMoveRects 返回:

  • 如果成功检索了有关移动矩形的信息,则S_OK。
  • 如果桌面重复接口无效,DXGI_ERROR_ACCESS_LOST。 当桌面上显示不同类型的图像时,桌面重复界面通常会失效。 这种情况的示例包括:
    • 桌面交换机
    • 模式更改
    • 从 DWM 打开、DWM 关闭或其他全屏应用程序切换
    在这种情况下,应用程序必须释放 IDXGIOutputDuplication 接口,并为新内容创建新的 IDXGIOutputDuplication
  • 如果调用应用程序提供的缓冲区不够大,DXGI_ERROR_MORE_DATA。
  • 如果应用程序调用 GetFrameMoveRects 而不拥有桌面映像,则DXGI_ERROR_INVALID_CALL。
  • 如果 GetFrameMoveRects 的参数之一不正确,E_INVALIDARG;例如,如果 pMoveRectBuffer 为 NULL。
  • 可能是 DXGI_ERROR 主题中描述的其他错误代码。

备注

GetFrameMoveRects 将大小值存储在 pMoveRectsBufferSizeRequired 处的变量中。 此值指定 GetFrameMoveRects 存储有关移动区域的信息所需的字节数。 在以下情况下,可以使用此值来确定要为传递给 pMoveRectBuffer 的未来缓冲区分配的内存量:

  • GetFrameMoveRects 失败并DXGI_ERROR_MORE_DATA,因为缓冲区不够大。
  • GetFrameMoveRects 提供的缓冲区大于所需的大小。 在 pMoveRectsBufferSizeRequired 处返回的大小值通知调用方实际使用的缓冲区空间量与调用方在 MoveRectsBufferSize 参数中分配和指定的缓冲区空间量相比。
调用方还可以使用 在 pMoveRectsBufferSizeRequired 处返回的值来确定返回 的DXGI_OUTDUPL_MOVE_RECT 结构数。

缓冲区包含当前帧的移动 RECT 列表。

注意若要生成直观准确的桌面副本,应用程序必须先处理所有移动 RECT,然后才能处理脏 RECT。
 

要求

   
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 dxgi1_2.h
Library Dxgi.lib

请参阅

IDXGIOutputDuplication