Método IDXGIOutputDuplication::GetFrameDirtyRects (dxgi1_2.h)

Obtiene información sobre rectángulos sucios para el marco de escritorio actual.

Sintaxis

HRESULT GetFrameDirtyRects(
  [in]  UINT DirtyRectsBufferSize,
  [out] RECT *pDirtyRectsBuffer,
  [out] UINT *pDirtyRectsBufferSizeRequired
);

Parámetros

[in] DirtyRectsBufferSize

Tamaño en bytes del búfer que el autor de la llamada pasó al parámetro pDirtyRectsBuffer .

[out] pDirtyRectsBuffer

Puntero a una matriz de estructuras RECT que identifica las regiones de rectángulo sucio para el marco de escritorio.

[out] pDirtyRectsBufferSizeRequired

Puntero a una variable que recibe el número de bytes que GetFrameDirtyRects necesita almacenar información sobre las regiones desfasadas en el búfer en pDirtyRectsBuffer.

Para obtener más información sobre cómo devolver el tamaño de búfer necesario, vea Comentarios.

Valor devuelto

GetFrameDirtyRects devuelve:

  • S_OK si recuperó correctamente información sobre rectángulos sucios.
  • DXGI_ERROR_ACCESS_LOST si la interfaz de duplicación de escritorio no es válida. Normalmente, la interfaz de duplicación de escritorio no es válida cuando se muestra un tipo diferente de imagen en el escritorio. Algunos ejemplos de esta situación son:
    • Conmutador de escritorio
    • Cambio de modo
    • Cambiar de DWM activado, DWM desactivado u otra aplicación de pantalla completa
    En esta situación, la aplicación debe liberar la interfaz IDXGIOutputDuplication y crear una nueva IDXGIOutputDuplication para el nuevo contenido.
  • DXGI_ERROR_MORE_DATA si el búfer que proporcionó la aplicación que realiza la llamada no era lo suficientemente grande.
  • DXGI_ERROR_INVALID_CALL si la aplicación llamó a GetFrameDirtyRects sin poseer la imagen de escritorio.
  • E_INVALIDARG si uno de los parámetros de GetFrameDirtyRects es incorrecto; por ejemplo, si pDirtyRectsBuffer es NULL.
  • Posiblemente otros códigos de error que se describen en el tema DXGI_ERROR .

Comentarios

GetFrameDirtyRects almacena un valor de tamaño en la variable en pDirtyRectsBufferSizeRequired. Este valor especifica el número de bytes que GetFrameDirtyRects necesita para almacenar información sobre las regiones desfasadas. Puede usar este valor en las situaciones siguientes para determinar la cantidad de memoria que se va a asignar para futuros búferes que se pasan a pDirtyRectsBuffer:

  • GetFrameDirtyRects produce un error DXGI_ERROR_MORE_DATA porque el búfer no es lo suficientemente grande.
  • GetFrameDirtyRects proporciona un búfer que es mayor de lo necesario. El valor de tamaño devuelto en pDirtyRectsBufferSizeRequired informa al autor de la llamada cuánto espacio de búfer se usó en realidad en comparación con cuánto espacio de búfer asignó el autor de la llamada y se especificó en el parámetro DirtyRectsBufferSize .
El llamador también puede usar el valor devuelto en pDirtyRectsBufferSizeRequired para determinar el número de RECTdevueltos en la matriz pDirtyRectsBuffer .

El búfer contiene la lista de RECTsucios para el marco actual.

Nota Para generar una copia visualmente precisa del escritorio, una aplicación debe procesar primero todos los RECTde movimiento antes de procesar rectsucios.
 

Requisitos

   
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado dxgi1_2.h
Library Dxgi.lib

Consulte también

IDXGIOutputDuplication