PFN_DrvEnableSurface
コールバックシグネチャ
HSURF PFN_DrvEnableSurface(
DHPDEV param0
);パラメーター
| フィールド | 型 |
|---|---|
| param0 | DHPDEV |
公式ドキュメント
DrvEnableSurface 関数は、描画対象となるサーフェスを準備し、指定された物理デバイスと関連付けます。
戻り値
戻り値は、新しく作成されたサーフェスを識別するハンドルです。それ以外の場合は 0 が返され、エラーコードがログに記録されます。
解説(Remarks)
サーフェスを使用できる状態にするには、2 つの方法があります。
- 推奨されるこの方法では、ドライバーは EngCreateDeviceSurface を呼び出してサーフェスを作成します。GDI がサーフェスを作成してドライバーにハンドルを返した後、ドライバーは EngModifySurface を呼び出します。この関数は適切なフックフラグを設定し、必要に応じてサーフェスの位置を GDI に通知します。
-
2 つ目の方法は、Windows NT 4.0 のドライバーで使用されていたものです。この方法では、ドライバーは EngCreateBitmap を呼び出します。この呼び出しの後、ドライバーは EngAssociateSurface を呼び出して、サーフェスを物理ディスプレイデバイスと関連付けます。この GDI 関数により、ドライバーは標準形式のビットマップに対してどのグラフィックス出力ルーチンがサポートされるかを指定できます。この関数を呼び出せるのは、指定された物理デバイスにサーフェスが存在しない場合だけです。Windows 2000 以降のドライバーを Windows NT 4.0 上で動作するようにバックポートする場合は、この方法を使用する必要があります。そのドライバーを Windows 2000 以降でも動作させる場合は、ドライバー内の別のコードパスで 1 つ目の方法を使用してください。
プリンターデバイスの場合、通常は GDI がグラフィックスを GDI ビットマップへ直接収集します。ドライバーは EngCreateBitmap を呼び出し、GDI にビットマップ用のメモリを割り当てさせる必要があります。
GDI が管理するサーフェスを使用する プリンターグラフィックス DLL では、DrvEnableSurface 関数は EngCreateBitmap を呼び出し、物理ページ全体を格納できる大きさのサーフェスサイズを指定する必要があります。これに失敗した場合は、サーフェスサイズを小さくしながら EngCreateBitmap の呼び出しを繰り返し、成功するまで試行します。有効だったサイズは EngMarkBandingSurface の入力として指定します。これにより、サーフェスのバンディングが必要であることが GDI に通知されます。
DrvEnableSurface がプライマリサーフェスのハンドルを返した後は、そのハンドルに対して EngModifySurface や EngAssociateSurface を呼び出さないでください。呼び出すと、状況によってはバグチェックが発生する可能性があります。詳細については、マイクロソフト サポート技術情報の記事 330248 を参照してください。
DrvEnableSurface は、グラフィックスドライバーでは必須です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)