次の方法で共有


コールバック関数PDD_VPORTCB_UPDATE (ddrawint.h)

DdVideoPortUpdate コールバック関数は、VPE オブジェクトを開始および停止し、VPE オブジェクト データ ストリームを変更します。

構文

PDD_VPORTCB_UPDATE PddVportcbUpdate;

DWORD PddVportcbUpdate(
  PDD_UPDATEVPORTDATA unnamedParam1
)
{...}

パラメーター

unnamedParam1

ドライバー VPE オブジェクトを更新するために必要な情報を含むDD_UPDATEVPORTDATA構造体を指します。

戻り値

DdVideoPortUpdate は 、次のいずれかのコールバック コードを返します。

解説

VPE をサポートする DirectDraw ドライバーは 、DdVideoPortUpdate を実装する必要があります。

lpUpdate のDD_UPDATEVPORTDATA構造体の dwFlags メンバーがDDRAWI_VPORTSTARTまたはDDRAWI_VPORTUPDATE場合、ドライバーは次の操作を行う必要があります。

  • lpVideoInfo メンバーがポイントする DDVIDEOPORTINFO 構造体の dwVPFlags メンバー内のすべてのフラグDD_UPDATEVPORTDATA確認します。 これらのフラグは、ドライバーがサーフェス (またはサーフェス) にビデオ データを転送する方法を説明します。たとえば、ドライバーが自動フリップを実行するか、ビデオまたは VBI データをトリミングする必要があるかなどを示します。
  • ハードウェアでループを設定して、サーフェスが配列に格納されている順序で、ビデオや VBI データをサーフェスに書き込みます。 ドライバーは、これらのループを設定した後、できるだけ早く戻る必要があります。
  • 自動フリップが要求された場合は、ドライバーの内部データ構造に各サーフェスのフレーム バッファー オフセットを格納します。 サーフェス オフセットは、DD_UPDATEVPORTDATAの lplpDDSurface メンバーと lplpDDVBISurface メンバーのDD_SURFACE_INT配列でサーフェスが発生する順序で格納する必要があります。 このようにして、 DdUpdateOverlay が呼び出されると、ドライバーにはサーフェス チェーンの反転順序のレコードが含まれます。
DDVIDEOPORTINFO 構造体の dwVBIHeight メンバーが 0 より大きく、lplpDDVBISurfaceNULL でない場合、ドライバーは dwVBIHeight の数値で指定された VBI データの行を lplpDDVBISurface がポイントする配列内の各サーフェスに書き込む必要があります。

ドライバーのハードウェアが、自動フラグが要求されたときに指定されたサーフェスの数をサポートできない場合、 DdVideoPortUpdate は、DD_UPDATEVPORTDATA の ddRVal メンバーに DDERR_UNSUPPORTEDを設定して呼び出しを失敗させる必要があります。

ビデオおよび VBI サーフェス チェーン内のサーフェスの数は異なる場合があります。つまり、DD_UPDATEVPORTDATAの dwNumAutoflip メンバーと dwNumVBIAutoflip メンバーは異なる値にすることができます。

dwFlags がDDRAWI_VPORTSTOPされると、ドライバーはすぐに戻ります。 ドライバーは、データ ストリームが停止するまでポーリングしないでください。

要件

   
対象プラットフォーム デスクトップ
Header ddrawint.h (Winddi.h を含む)

関連項目

DDVIDEOPORTINFO

DD_SURFACE_INT

DD_UPDATEVPORTDATA

DdUpdateOverlay