Поделиться через


Метод 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

Указатель на переменную, которая получает количество байтов, необходимое GetFrameMoveRects для хранения сведений о перемещаемых областях в буфере в pMoveRectBuffer.

Дополнительные сведения о возврате требуемого размера буфера см. в разделе Примечания.

Возвращаемое значение

GetFrameMoveRects возвращает:

  • S_OK, успешно ли получена информация о перемещенных прямоугольниках.
  • DXGI_ERROR_ACCESS_LOST, если интерфейс дублирования рабочего стола недопустим. Интерфейс дублирования рабочего стола обычно становится недопустимым, если на рабочем столе отображается изображение другого типа. Примеры такой ситуации:
    • Переключатель рабочего стола
    • Изменение режима
    • Включение DWM, отключение DWM или другого полноэкранного приложения
    В этом случае приложение должно освободить интерфейс IDXGIOutputDuplication и создать новую idXGIOutputDuplication для нового содержимого.
  • DXGI_ERROR_MORE_DATA, если буфер, предоставленный вызывающим приложением, недостаточно велик.
  • DXGI_ERROR_INVALID_CALL, если приложение называется GetFrameMoveRects без владения образом рабочего стола.
  • E_INVALIDARG, если один из параметров GetFrameMoveRects является неверным; Например, если 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
Header dxgi1_2.h
Библиотека Dxgi.lib

См. также раздел

IDXGIOutputDuplication