EngCreateBitmap 函数 (winddi.h)

EngCreateBitmap 函数请求 GDI 创建和管理位图。

语法

ENGAPI HBITMAP EngCreateBitmap(
       SIZEL sizl,
       LONG  lWidth,
  [in] ULONG iFormat,
  [in] FLONG fl,
  [in] PVOID pvBits
);

参数

sizl

指定一个 SIZEL 结构,其成员包含要创建的位图的宽度和高度(以像素为单位)。 SIZEL 结构与 SIZE 结构相同。

如果 pvBits 不为 NULL,此值应表示设备上可见的所有像素,从而允许设备保留 屏幕外内存

lWidth

指定位图的分配宽度,即必须添加到指针以向下移动一个扫描行的字节数。

[in] iFormat

根据每个像素所需的颜色信息位数指定位图的格式。 此参数可能是以下值之一:

含义
BMF_1BPP 单色
BMF_4BPP 每像素 4 位
BMF_8BPP 每像素 8 位
BMF_16BPP 每像素 16 位
BMF_24BPP 每像素 24 位
BMF_32BPP 每像素 32 位
BMF_4RLE 每像素 4 位;运行长度编码
BMF_8RLE 每像素 8 位;运行长度编码

[in] fl

是一个位掩码,指定要创建的位图的属性。 此参数可以是零,也可以是以下值的任意组合:

含义
BMF_NOZEROINIT 分配位图时,GDI 不会对位图进行零初始化。 仅当 pvBitsNULL 时,才会检查此标志。
BMF_TOPDOWN 第一个扫描行表示位图的顶部。 请注意,默认情况下,标准格式位图的底部有第一个扫描行。
BMF_USERMEM GDI 将从用户内存中为位图分配内存。 默认情况下,内存是从内核的地址空间分配的。 仅当其他进程不使用所创建的位图时,才应指定此标志。 打印机驱动程序无法将用户内存传递给 EngWritePrinter

[in] pvBits

指向要创建的位图的第一个扫描行的指针。 如果此参数为 NULL,GDI 将分配位图像素的存储空间。 如果 pvBits 不为 NULL,则它是指向位图缓冲区的指针。

返回值

如果函数成功完成,则返回值是标识所创建位图的句柄。 否则,返回值为 0。 EngCreateBitmap 不记录错误代码。

注解

驱动程序可以选择为位图提供存储。

在从 DrvEnableSurface 返回之前,驱动程序应通过调用 EngAssociateSurface 将创建的位图关联为图面。

不再需要位图时,应使用 EngDeleteSurface 将其删除。

帧缓冲区显示驱动程序应使用 pvBits 参数,从而允许 GDI 直接对显示器进行大部分绘制。

要求

   
最低受支持的客户端 在 Windows 2000 及更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 winddi.h (包括 Winddi.h)
Library Win32k.lib
DLL Win32k.sys

另请参阅

DrvCreateDeviceBitmap

EngAllocUserMem