EngAssociateSurface 函式 (winddi.h)
EngAssociateSurface函式會將指定的表面標示為屬於指定裝置。
語法
ENGAPI BOOL EngAssociateSurface(
HSURF hsurf,
HDEV hdev,
FLONG flHooks
);
參數
hsurf
要與 hdev相關聯之表面或點陣圖的控制碼。 此控制碼是由 EngCreateBitmap 或 EngCreateDeviceBitmap傳回。
hdev
要與表面相關聯之裝置的控制碼。 這是傳遞至驅動程式 DrvCompletePDEV 函式的 GDI 建立控制碼。
flHooks
指定驅動程式可從 GDI 攔截的函式。 驅動程式必須針對在 flHooks中設定的每個位實作對應的函式。 這個成員是下列任一值的位 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 作業系統。 |
目標平台 | Universal |
標頭 | winddi.h (包含 Winddi.h) |
程式庫 | Win32k.lib |
Dll | Win32k.sys |