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 托管图面的打印机图形 DLL,DrvEnableSurface 函数应调用 EngCreateBitmap,指定足够大以包含整个物理页面的图面大小。 如果失败,应尝试对 EngCreateBitmap 的重复调用,同时减小图面大小,直到调用成功为止。 应将有效大小指定为 EngMarkBandingSurface 的输入,这会通知 GDI 需要表面镶边。

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

DrvEnableSurface 是图形驱动程序所必需的。

要求

要求
目标平台 桌面
标头 winddi.h (包括 Winddi.h)

另请参阅

DrvDisableSurface

DrvEnablePDEV

EngCreateBitmap

EngCreateDeviceSurface