PFN_DrvSynchronize
コールバックシグネチャ
void PFN_DrvSynchronize(
DHPDEV param0,
RECTL* param1
);パラメーター
| フィールド | 型 |
|---|---|
| param0 | DHPDEV |
| param1 | RECTL* |
公式ドキュメント
DrvSynchronize 関数は、GDI がデバイス管理サーフェスにアクセスする必要があることをドライバーに通知します。この関数により、デバイスのコプロセッサーが実行する非同期の描画操作を、GDI のアクセスと協調させることができます。
解説(Remarks)
この関数により、デバイスのコプロセッサーが実行する非同期の描画操作を、GDI のアクセスと協調させることができます。
DrvSynchronize は、ディスプレイドライバーで任意に実装できます。GDI がこの関数を呼び出すのは、EngAssociateSurface によってフックされている場合のみです。GDI は、デバイスサーフェスに直接描画する直前に DrvSynchronize を呼び出します。これら両方の関数を実装しているドライバーでは、GDI は DrvSynchronize ではなく DrvSynchronizeSurface を呼び出します。
この関数は、GDI がデバイス管理サーフェスに安全にアクセスできる状態になってから戻る必要があります。つまり DrvSynchronize は、デバイスのコプロセッサーによるすべての非同期の描画操作が完了するまで呼び出しから戻らないようにし、GDI がデバイス管理サーフェスに安全にアクセスできることを示す必要があります。
DrvSynchronize は、描画にコプロセッサーを使用するデバイスをサポートすることを目的としています。そのようなデバイスは、一部の描画操作を非同期として扱い、描画が完了する前に操作から GDI へ戻ることがあります。この場合、後続の描画操作が GDI によって処理される可能性があります。GDI がデバイス管理サーフェスに安全にアクセスするには、デバイスのコプロセッサーが実行している非同期レンダリングが完了していることを確認する手段が必要です。GDI はこの関数を呼び出すことで、デバイス管理サーフェスへのアクセスをドライバーと同期させます。
GDI がデバイス管理サーフェスに対して DrvSynchronize を呼び出すことはありません。DrvSynchronize 自体は出力関数ではありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)