drvEnableSurface 函数 (winddi.h)

DrvEnableSurface 函数设置要绘制的图面并将其与给定的物理设备相关联。

语法

HSURF DrvEnableSurface(
  DHPDEV dhpdev
);

参数

dhpdev

物理设备的 PDEV 句柄。 这是 DrvEnablePDEV 的返回值。 PDEV 描述要为其创建图面的物理设备。

返回值

返回值是标识新创建的图面的句柄。 否则,它为零,并记录错误代码。

注解

有两种方法可用于准备图面。

  1. 在此方法中,建议驱动程序通过调用 EngCreateDeviceSurface 来创建图面。 GDI 创建图面并返回驱动程序的句柄后,驱动程序将调用 EngModifySurface,该标志设置适当的挂钩标志(可选)通知 GDI 图面的位置。
  2. 第二种方法是Windows NT 4.0 驱动程序使用的方法。 在此方法中,驱动程序调用 EngCreateBitmap。 此调用后,驱动程序调用 EngAssociateSurface 以将图面与物理显示设备相关联。 此 GDI 函数允许驱动程序指定标准格式位图支持哪些图形输出例程。 仅当给定物理设备不存在图面时,才能调用此函数。 如果将 Windows 2000 或更高版本的驱动程序重新移植到 Windows NT 4.0 上运行,则必须使用此方法。 如果此类驱动程序也将在 Windows 2000 或更高版本上运行,驱动程序中的单独代码路径应使用第一种方法。

    对于打印机设备,通常情况是 GDI 将图形直接收集到 GDI 位图上。 驱动程序应调用 EngCreateBitmap,它允许 GDI 为位图分配内存。

任何现有的 GDI 位图句柄都是有效的图面句柄。

对于使用 GDI 托管图面的 打印机图形 DLLDrvEnableSurface 函数应调用 EngCreateBitmap,指定足够大的图面大小以包含整个物理页。 如果失败,则应尝试对 EngCreateBitmap 的重复调用,并减小图面大小,直到调用成功。 有效大小应指定为 EngMarkBandingSurface 的输入,这会通知 GDI 需要表面带带。

DrvEnableSurface 将句柄返回到主图面后,请勿在该句柄上调用 EngModifySurfaceEngAssociateSurface。 这样做可能会导致某些情况下出现 bug 检查。 有关详细信息,请参阅 Microsoft 知识库文章330248

图形驱动程序需要 DrvEnableSurface

要求

   
目标平台 台式机
标头 winddi.h (包括 Winddi.h)

另请参阅

DrvDisableSurface

DrvEnablePDEV

EngCreateBitmap

EngCreateDeviceSurface