Share via


PDD_VPORTCB_UPDATE Rückruffunktion (ddrawint.h)

Die DdVideoPortUpdate-Rückruffunktion startet und beendet das VPE-Objekt und ändert den VPE-Objektdatenstrom.

Syntax

PDD_VPORTCB_UPDATE PddVportcbUpdate;

DWORD PddVportcbUpdate(
  PDD_UPDATEVPORTDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

Zeigt auf eine DD_UPDATEVPORTDATA-Struktur , die die Informationen enthält, die für den Treiber zum Aktualisieren des VPE-Objekts erforderlich sind.

Rückgabewert

DdVideoPortUpdate gibt einen der folgenden Rückrufcodes zurück:

Hinweise

DirectDraw-Treiber, die VPE unterstützen, müssen DdVideoPortUpdate implementieren.

Wenn der dwFlags-Member der DD_UPDATEVPORTDATA-Struktur bei lpUpdate DDRAWI_VPORTSTART oder DDRAWI_VPORTUPDATE ist, sollte der Treiber die folgenden Schritte ausführen:

  • Überprüfen Sie alle Flags im dwVPFlags-Member der DDVIDEOPORTINFO-Struktur , auf die das lpVideoInfo-Element DD_UPDATEVPORTDATA Punkte aufweist. Diese Flags beschreiben, wie der Treiber Videodaten auf eine Oberfläche (oder Oberflächen) übertragen soll. Sie geben beispielsweise an, ob der Treiber autoflipping ausführen, das Video oder die VBI-Daten usw. zuschneiden soll.
  • Richten Sie Schleifen in der Hardware ein, um Video- und/oder VBI-Daten in der Reihenfolge zu schreiben, in der die Oberflächen in den Arrays gespeichert werden. Der Treiber sollte nach dem Einrichten dieser Schleifen so schnell wie möglich zurückkehren.
  • Wenn autoflipping angefordert wurde, speichern Sie den Framepufferoffset für jede Oberfläche in der internen Datenstruktur des Treibers. Die Oberflächenoffsets sollten in der Reihenfolge gespeichert werden, in der die Oberflächen in den DD_SURFACE_INT Arrays an den Elementen lplpDDSurface und lplpDVBISurface von DD_UPDATEVPORTDATA auftreten. Auf diese Weise verfügt der Treiber beim Aufruf von DdUpdateOverlay über einen Datensatz der Kehrreihenfolge der Oberflächenkette.
Wenn das dwVBIHeight-Element der DDVIDEOPORTINFO-Struktur größer als 0 ist und lplpDDVBISurface nicht NULL ist, sollte der Treiber die Zeilen der VBI-Daten , die durch die Zahl in dwVBIHeight angegeben werden, in jede Oberfläche im Array schreiben, auf die lplpDVBISurface verweist.

Wenn die Hardware des Treibers die Anzahl von Oberflächen nicht unterstützen kann, die beim Anfordern des automatischen Flippings angegeben wurde, sollte DdVideoPortUpdate den Aufruf nicht ausführen, indem DDERR_UNSUPPORTED im ddRVal-Member von DD_UPDATEVPORTDATA festgelegt wird.

Die Anzahl der Oberflächen in den Video- und VBI-Oberflächenketten kann unterschiedlich sein; Das heißt, die Elemente dwNumAutoflip und dwNumVBIAutoflip von DD_UPDATEVPORTDATA können unterschiedliche Werte aufweisen.

Wenn dwFlags DDRAWI_VPORTSTOP ist, sollte der Treiber sofort zurückkehren. Der Treiber sollte erst abfragen, wenn der Datenstrom beendet wird.

Anforderungen

   
Zielplattform Desktop
Kopfzeile ddrawint.h (include Winddi.h)

Weitere Informationen

DDVIDEOPORTINFO

DD_SURFACE_INT

DD_UPDATEVPORTDATA

DdUpdateOverlay