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

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

Sintaxis

HRESULT GetFrameMoveRects(
  [in]  UINT                   MoveRectsBufferSize,
  [out] DXGI_OUTDUPL_MOVE_RECT *pMoveRectBuffer,
  [out] UINT                   *pMoveRectsBufferSizeRequired
);

Parámetros

[in] MoveRectsBufferSize

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

[out] pMoveRectBuffer

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

[out] pMoveRectsBufferSizeRequired

Puntero a una variable que recibe el número de bytes que GetFrameMoveRects necesita almacenar información sobre las regiones movidas en el búfer en pMoveRectBuffer.

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

Valor devuelto

GetFrameMoveRects devuelve:

  • S_OK si recuperó correctamente información sobre rectángulos movidos.
  • 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 proporcionado por la aplicación que realiza la llamada no es lo suficientemente grande.
  • DXGI_ERROR_INVALID_CALL si la aplicación llamó a GetFrameMoveRects sin tener la imagen de escritorio.
  • E_INVALIDARG si uno de los parámetros de GetFrameMoveRects es incorrecto; por ejemplo, si pMoveRectBuffer es NULL.
  • Posiblemente otros códigos de error que se describen en el tema DXGI_ERROR .

Comentarios

GetFrameMoveRects almacena un valor de tamaño en la variable en pMoveRectsBufferSizeRequired. Este valor especifica el número de bytes que GetFrameMoveRects necesita para almacenar información sobre las regiones movidas. 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 pMoveRectBuffer:

  • GetFrameMoveRects produce un error con DXGI_ERROR_MORE_DATA porque el búfer no es lo suficientemente grande.
  • GetFrameMoveRects proporciona un búfer que es mayor de lo necesario. El valor de tamaño devuelto en pMoveRectsBufferSizeRequired 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 MoveRectsBufferSize .
El autor de la llamada también puede usar el valor devuelto en pMoveRectsBufferSizeRequired para determinar el número de estructuras de DXGI_OUTDUPL_MOVE_RECT devueltas.

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

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

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