共用方式為


EngAssociateSurface 函式 (winddi.h)

EngAssociateSurface函式會將指定的表面標示為屬於指定裝置。

語法

ENGAPI BOOL EngAssociateSurface(
  HSURF hsurf,
  HDEV  hdev,
  FLONG flHooks
);

參數

hsurf

要與 hdev相關聯之表面或點陣圖的控制碼。 此控制碼是由 EngCreateBitmapEngCreateDeviceBitmap傳回。

hdev

要與表面相關聯之裝置的控制碼。 這是傳遞至驅動程式 DrvCompletePDEV 函式的 GDI 建立控制碼。

flHooks

指定驅動程式可從 GDI 攔截的函式。 驅動程式必須針對在 flHooks中設定的每個位實作對應的函式。 這個成員是下列任一值的位 OR:

旗標 要連結的函式
HOOK_ALPHABLEND

DrvAlphaBlend

HOOK_BITBLT

DrvBitBlt

HOOK_COPYBITS

DrvCopyBits

HOOK_FILLPATH

DrvFillPath

HOOK_GRADIENTFILL

DrvGradientFill

HOOK_LINETO

DrvLineTo

HOOK_MOVEPANNING 已淘汰
HOOK_PAINT 已淘汰
HOOK_PLGBLT

DrvPlgBlt

HOOK_STRETCHBLT

DrvStretchBlt

HOOK_STRETCHBLTROP

DrvStretchBltROP

HOOK_STROKEANDFILLPATH

DrvStrokeAndFillPath

HOOK_STROKEPATH

DrvStrokePath

HOOK_SYNCHRONIZE

DrvSynchronizeDrvSynchronizeSurface (或兩者)

HOOK_SYNCHRONIZEACCESS 已淘汰
HOOK_TEXTOUT

DrvTextOut

HOOK_TRANSPARENTBLT

DrvTransparentBlt

傳回值

如果函式成功,則傳回值為 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

另請參閱

DrvBitBlt

DrvCompletePDEV

DrvCopyBits

DrvCreateDeviceBitmap

DrvDeleteDeviceBitmap

DrvEnableSurface

DrvFillPath

DrvLineTo

DrvStretchBlt

DrvStrokeAndFillPath

DrvStrokePath

DrvSynchronize

DrvSynchronizeSurface

DrvTextOut

EngModifySurface