SURFOBJ 结构 (winddi.h)
SURFOBJ 结构是图面的用户对象。 设备驱动程序通常仅在 Surface 对象表示 GDI 位图或 设备管理的图面时调用 Surface 对象上的方法。
语法
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV private_dhpdev;
HDEV private_hdev;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
成员
dhsurf
图面的句柄,前提是该图面由设备管理。 否则,此成员为零。
hsurf
图面的句柄。
private_dhpdev
private_hdev
dhpdev
标识与指定图面关联的设备的 PDEV 。
hdev
与此设备关联的 PDEV 的 GDI 逻辑句柄。
sizlBitmap
指定包含图面的宽度和高度(以像素为单位)的 SIZEL 结构。 SIZEL 结构与 SIZE 结构相同。
cjBits
指定 pvBits 指向的缓冲区的大小。
pvBits
如果图面是标准格式位图,则这是指向图面像素的指针。 对于BMF_JPEG或BMF_PNG图像,这是指向包含 JPEG 或 PNG 格式图像数据的缓冲区的指针。 否则,此成员为 NULL。
pvScan0
指向位图的第一个扫描行的指针。 如果 iBitmapFormat BMF_JPEG或BMF_PNG,则此成员为 NULL。
lDelta
指定在位图中向下移动一个扫描行所需的字节数。 如果 iBitmapFormat BMF_JPEG或BMF_PNG,则此成员为 NULL。
iUniq
指定指定图面的当前状态。 每次图面更改时,此值都会递增。 这使驱动程序能够缓存源图面。
对于不应缓存的图面, iUniq 设置为零。 此值与 fjBitmap 的 BMF_DONTCACHE 标志结合使用。
iBitmapFormat
指定最匹配此图面的标准格式。 如果 iType 成员指定位图 (STYPE_BITMAP) ,则此成员指定其格式。 基于 NT 的操作系统支持一组预定义的格式,但应用程序也可以使用 SetDIBitsToDevice 发送特定于设备的格式。 支持的预定义格式包括:
值 | 含义 |
---|---|
BMF_1BPP | 每个像素 1 位。 |
BMF_4BPP | 每像素 4 位。 |
BMF_8BPP | 每个像素 8 位。 |
BMF_16BPP | 每像素 16 位。 |
BMF_24BPP | 每像素 24 位。 |
BMF_32BPP | 每像素 32 位。 |
BMF_4RLE | 每像素 4 位,运行长度编码。 |
BMF_8RLE | 每像素 8 位,运行长度编码。 |
BMF_JPEG | JPEG 压缩图像。 |
BMF_PNG | PNG 压缩图像。 |
iType
图面类型,属于以下类型之一:
类型 | 定义 |
---|---|
STYPE_BITMAP | 图面是位图。 |
STYPE_DEVBITMAP | 图面是设备格式的位图。 |
STYPE_DEVICE | 图面由设备管理。 |
fjBitmap
如果图面的类型为 STYPE_BITMAP,并且是标准的未压缩格式位图,则可以设置以下标志。 否则,应忽略此成员。
值 | 含义 |
---|---|
BMF_DONTCACHE | 该位图不应由驱动程序缓存,因为它是由 GDI 创建的暂时性位图,驱动程序再也不会看到该位图。 如果设置了此标志,则此结构的 iUniq 成员将设置为 0。 |
BMF_KMSECTION | 仅供 GDI 使用,驱动程序应忽略。 |
BMF_NOTSYSMEM | 位图不在系统内存中。 EngModifySurface 在将位图移动到视频内存时设置此标志。 |
BMF_NOZEROINIT | 位图不是零初始化的。 |
BMF_TOPDOWN | 第一个扫描行表示位图的 顶部 。 |
BMF_WINDOW_BLT | GDI 设置此标志以通知驱动程序窗口从一个屏幕位置移动到另一个屏幕位置。 |
注解
当驱动程序需要有关特定图面的信息时,驱动程序必须访问 SURFOBJ。 此结构允许快速访问图面的属性。
当 SURFOBJ 结构表示 GDI 位图时,驱动程序必须能够确定位图的格式并定位位图位。
当 SURFOBJ 结构表示设备图面时,驱动程序必须能够找到图面的设备手柄。
有关支持 JPEG 和 PNG 压缩图像的详细信息,请参阅 DEVINFO。
要求
要求 | 值 |
---|---|
Header | winddi.h (包括 Winddi.h) |