IDXGIOutputDuplication::MapDesktopSurface 方法 (dxgi1_2.h)

如果桌面映像已在系统内存中,则为 CPU 提供对桌面映像的有效访问。

语法

HRESULT MapDesktopSurface(
  [out] DXGI_MAPPED_RECT *pLockedRect
);

参数

[out] pLockedRect

指向 DXGI_MAPPED_RECT 结构的指针,该结构接收 CPU 直接访问图面数据所需的图面数据。

返回值

MapDesktopSurface 返回:

  • S_OK是否成功检索了图面数据。
  • 如果桌面重复接口无效,DXGI_ERROR_ACCESS_LOST。 当桌面上显示不同类型的图像时,桌面重复界面通常会失效。 这种情况的示例包括:
    • 桌面交换机
    • 模式更改
    • 从 DWM 打开、DWM 关闭或其他全屏应用程序切换
    在这种情况下,应用程序必须释放 IDXGIOutputDuplication 接口,并为新内容创建新的 IDXGIOutputDuplication
  • 如果应用程序已在桌面映像上具有未完成的映射,DXGI_ERROR_INVALID_CALL。 应用程序必须先调用 UnMapDesktopSurface ,然后才能再次调用 MapDesktopSurface 。 如果应用程序在调用 MapDesktopSurface 时不拥有桌面映像,也会返回DXGI_ERROR_INVALID_CALL。
  • 如果桌面映像不在系统内存中,DXGI_ERROR_UNSUPPORTED。 在这种情况下,应用程序必须首先将图像传输到临时图面,然后通过调用 IDXGISurface::Map 方法锁定映像。
  • 如果 pLockedRect 参数不正确,E_INVALIDARG;例如,如果 pLockedRectNULL
  • 可能是 DXGI_ERROR 主题中描述的其他错误代码。

注解

如果 DXGI_OUTDUPL_DESC 结构的 DesktopImageInSystemMemory 成员设置为 TRUE,则可以成功调用 MapDesktopSurface。 如果 DesktopImageInSystemMemoryFALSE则 MapDesktopSurface 返回DXGI_ERROR_UNSUPPORTED。 调用 IDXGIOutputDuplication::GetDesc 以检索 DXGI_OUTDUPL_DESC 结构。

要求

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

另请参阅

IDXGIOutputDuplication