EngAssociateSurface 関数 (winddi.h)
EngAssociateSurface 関数は、指定したサーフェスを指定したデバイスに属するものとしてマークします。
構文
ENGAPI BOOL EngAssociateSurface(
HSURF hsurf,
HDEV hdev,
FLONG flHooks
);
パラメーター
hsurf
hdev に関連付けるサーフェスまたはビットマップへのハンドル。 このハンドルは 、EngCreateBitmap または EngCreateDeviceBitmap によって返されました。
hdev
サーフェスを関連付けるデバイスへのハンドル。 これは、ドライバーの DrvCompletePDEV 関数に渡された GDI で作成されたハンドルです。
flHooks
ドライバーが GDI からフックできる関数を指定します。 ドライバーは 、flHook で設定するすべてのビットに対応する関数を実装する必要があります。 このメンバーは、次のいずれかの値のビットごとの OR です。
フラグ | フックする関数 |
---|---|
HOOK_ALPHABLEND | |
HOOK_BITBLT | |
HOOK_COPYBITS | |
HOOK_FILLPATH | |
HOOK_GRADIENTFILL | |
HOOK_LINETO | |
HOOK_MOVEPANNING | 古い |
HOOK_PAINT | 古い |
HOOK_PLGBLT | |
HOOK_STRETCHBLT | |
HOOK_STRETCHBLTROP | |
HOOK_STROKEANDFILLPATH | |
HOOK_STROKEPATH | |
HOOK_SYNCHRONIZE |
DrvSynchronize または DrvSynchronizeSurface (またはその両方) |
HOOK_SYNCHRONIZEACCESS | 古い |
HOOK_TEXTOUT | |
HOOK_TRANSPARENTBLT |
戻り値
関数が成功した場合、戻り値は TRUE です。 それ以外の場合、ドライバーは、実装している GDI 関数に情報を送信し、GDI の戻り値を返す必要があります。
解説
EngAssociateSurface は、プリンター ドライバーで "ルール" またはデバイス フォントを実装したり、ディスプレイ ドライバーで特別な blt ハードウェアを使用したりするために使用できます。
hsurf によって識別されるサーフェスが標準形式ビットマップの場合、ドライバーは flHooks でビットを設定することで、処理するサーフェスに対する出力関数を指定できます。 flHooks でビットを設定すると、代わりに特定の出力関数がドライバーに送信されます。 これはフックと呼ばれます。 ドライバーが呼び出しをフックしない場合、GDI は、標準の形式のビットマップが描画されているときに操作を自動的に管理します。
サーフェスを関連付けると、 PDEV の既定のパレットステップとスタイル ステップが想定されます。 DrvEnableSurface によって返される前に、サーフェスを関連付ける必要があります。
既定では、ドライバーが DrvCreateDeviceBitmapDrvDeleteDeviceBitmap/ を実装してデバイス ビットマップをサポートしている場合、GDI はデバイス ビットマップとプライマリ サーフェスへの描画呼び出しを自動的に同期しません。 たとえば、GDI はドライバーの DrvBitBlt 関数を呼び出してデバイス ビットマップに描画し、別のスレッドは ドライバーの DrvTextOut の実装を実行してプライマリ サーフェスに描画します。 ドライバーを呼び出して、同時に複数のデバイス ビットマップに描画することもできます。
DrvEnableSurface がプライマリ サーフェスにハンドルを返した後、そのハンドルで EngAssociateSurface を呼び出さないでください。 これにより、特定の状況でバグチェックが発生する可能性があります。 詳細については、 Microsoft サポート技術情報の記事「330248」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | winddi.h (Winddi.h を含む) |
Library | Win32k.lib |
[DLL] | Win32k.sys |