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
程式庫 Dxgi.lib

另請參閱

IDXGIOutputDuplication