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


Метод 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 или другое полноэкранное приложение
    В этом случае приложение должно освободить интерфейс IDXGIOutputDuplication и создать новую idXGIOutputDuplication для нового содержимого.
  • DXGI_ERROR_MORE_DATA, если буфер, предоставленный вызывающим приложением, недостаточно велик.
  • DXGI_ERROR_INVALID_CALL, если приложение с именем GetFrameDirtyRects не является владельцем образа рабочего стола.
  • E_INVALIDARG, если один из параметров GetFrameDirtyRects является неправильным ; например, если pDirtyRectsBuffer имеет значение NULL.
  • Возможно, другие коды ошибок, описанные в разделе DXGI_ERROR .

Комментарии

GetFrameDirtyRects сохраняет значение размера в переменной pDirtyRectsBufferSizeRequired. Это значение указывает количество байтов, необходимое GetFrameDirtyRects для хранения сведений о грязное регионах. Это значение можно использовать в следующих ситуациях, чтобы определить объем памяти, выделяемой для будущих буферов, которые передаются в pDirtyRectsBuffer:

  • GetFrameDirtyRects завершается сбоем с DXGI_ERROR_MORE_DATA, так как буфер недостаточно велик.
  • GetFrameDirtyRects предоставляет буфер, который больше, чем необходимо. Значение размера, возвращаемое в pDirtyRectsBufferSizeRequired , сообщает вызывающей стороны, сколько буферного пространства фактически было использовано по сравнению с объемом буферного пространства, выделенным вызывающим объектом и указанным в параметре DirtyRectsBufferSize .
Вызывающий объект также может использовать значение, возвращаемое в pDirtyRectsBufferSizeRequired , чтобы определить количество объектов RECT, возвращаемых в массиве pDirtyRectsBuffer .

Буфер содержит список грязное RECTдля текущего кадра.

Примечание Чтобы создать визуально точную копию рабочего стола, приложение должно сначала обработать все перемещения RECTперед обработкой грязное RECT.
 

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header dxgi1_2.h
Библиотека Dxgi.lib

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

IDXGIOutputDuplication