Freigeben über


IDXGIOutputDuplication::GetFrameDirtyRects-Methode (dxgi1_2.h)

Ruft Informationen zu modifiziert Rechtecke für den aktuellen Desktopframe ab.

Syntax

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

Parameter

[in] DirtyRectsBufferSize

Die Größe des Puffers in Bytes, den der Aufrufer an den pDirtyRectsBuffer-Parameter übergeben hat .

[out] pDirtyRectsBuffer

Ein Zeiger auf ein Array von RECT-Strukturen, das die modifiziert Rechteckbereiche für den Desktopframe identifiziert.

[out] pDirtyRectsBufferSizeRequired

Zeiger auf eine Variable, die die Anzahl von Bytes empfängt, die GetFrameDirtyRects benötigt, um Informationen zu modifiziert Regionen im Puffer bei pDirtyRectsBuffer zu speichern.

Weitere Informationen zum Zurückgeben der erforderlichen Puffergröße finden Sie unter Hinweise.

Rückgabewert

GetFrameDirtyRects gibt Folgendes zurück:

  • S_OK, wenn Informationen zu modifiziert Rechtecken erfolgreich abgerufen wurden.
  • DXGI_ERROR_ACCESS_LOST, wenn die Desktopduplizierungsschnittstelle ungültig ist. Die Desktopduplizierungsschnittstelle wird in der Regel ungültig, wenn ein anderer Imagetyp auf dem Desktop angezeigt wird. Beispiele für diese Situation sind:
    • Desktop-Switch
    • Moduswechsel
    • Wechseln von DWM on, DWM off oder einer anderen Vollbildanwendung
    In dieser Situation muss die Anwendung die IDXGIOutputDuplication-Schnittstelle freigeben und eine neue IDXGIOutputDuplication für den neuen Inhalt erstellen.
  • DXGI_ERROR_MORE_DATA, wenn der Puffer, den die aufrufende Anwendung bereitgestellt hat, nicht groß genug war.
  • DXGI_ERROR_INVALID_CALL, wenn die Anwendung GetFrameDirtyRects aufgerufen hat, ohne das Desktopimage zu besitzen.
  • E_INVALIDARG, wenn einer der Parameter für GetFrameDirtyRects falsch ist; Beispielsweise, wenn pDirtyRectsBuffer NULL ist.
  • Möglicherweise andere Fehlercodes, die im Thema DXGI_ERROR beschrieben werden.

Hinweise

GetFrameDirtyRects speichert einen Größenwert in der Variablen unter pDirtyRectsBufferSizeRequired. Dieser Wert gibt die Anzahl der Bytes an, die GetFrameDirtyRects benötigt, um Informationen zu modifiziert Regionen zu speichern. Sie können diesen Wert in den folgenden Situationen verwenden, um die Menge des Arbeitsspeichers zu bestimmen, der für zukünftige Puffer zugewiesen werden soll, die Sie an pDirtyRectsBuffer übergeben:

  • GetFrameDirtyRects schlägt mit DXGI_ERROR_MORE_DATA fehl, da der Puffer nicht groß genug ist.
  • GetFrameDirtyRects stellt einen Puffer bereit, der größer als erforderlich ist. Der bei pDirtyRectsBufferSizeRequired zurückgegebene Größenwert informiert den Aufrufer darüber, wie viel Pufferspeicher tatsächlich verwendet wurde im Vergleich zu dem Pufferspeicher, den der Aufrufer zugewiesen und im Parameter DirtyRectsBufferSize angegeben hat.
Der Aufrufer kann auch den wert verwenden, der bei pDirtyRectsBufferSizeRequired zurückgegeben wird, um die Anzahl der im pDirtyRectsBuffer-Array zurückgegebenen RECT-Szu bestimmen.

Der Puffer enthält die Liste der modifiziert RECTs für den aktuellen Frame.

Hinweis Um eine visuell genaue Kopie des Desktops zu erstellen, muss eine Anwendung zuerst alle Verschieben von RECTs verarbeiten, bevor sie modifiziert RECTs verarbeitet.
 

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile dxgi1_2.h
Bibliothek Dxgi.lib

Weitere Informationen

IDXGIOutputDuplication