typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
The SURFOBJ structure is the user object for a surface. A device driver usually calls methods on a surface object only when the surface object represents a GDI bitmap or a device-managed surface.
Members
dhsurf
If the surface is a device managed surface, this member is a device handle identifying the surface. Otherwise, this member is zero.
hsurf
Identifies the surface.
dhpdev
Identifies the device's PDEV that is associated with the specified surface.
hdev
GDI's logical handle for the PDEV associated with this device.
sizlBitmap
Specifies the size of the surface, in pixels.
cjBits
Specifies the size of the buffer pointed to, if pvBits is not null.
pvBits
Points to the surface's pixels, if the surface is a standard format bitmap. Otherwise, this member is null.
pvScan0
Points to the first scanline of the bitmap.
lDelta
Specifies the count of bytes required to move down one scan line in the bitmap.
iUniq
Specifies the current state of the specified surface. Every time the surface changes this value is incremented; this enables drivers to cache source surfaces.
iBitmapFormat
Specifies the standard format most closely matching this surface. If the iType member specifies a bitmap (STYPE_BITMAP), this member specifies its format. Windows NT supports a set of predefined formats, although applications can also send device-specific formats by using SetDIBitsToDevice. Supported predefined formats include the following:
Value | Meaning |
BMF_1BPP | 1 bit per pixel. |
BMF_4BPP | 4 bits per pixel. |
BMF_8BPP | 8 bits per pixel. |
BMF_16BPP | 16 bits per pixel. |
BMF_24BPP | 24 bits per pixel. |
BMF_32BPP | 32 bits per pixel. |
BMF_4RLE | 4 bits per pixel, run length encoded. |
BMF_8RLE | 8 bits per pixel, run length encoded. |
iType
Surface type, which is one of the following:
Type | Definition |
STYPE_BITMAP | The surface is a bitmap. |
STYPE_DEVICE | The surface is managed by the device. |
STYPE_DEVBITMAP | The surface is a device format bitmap. |
fjBitmap
If the surface is of type STYPE_BITMAP and is a standard noncompressed format bitmap, the following flag can be set. Otherwise, this member should be ignored.
Value | Meaning |
BMF_TOPDOWN | The first scan line represents the top of the bitmap. |
BMF_NOZEROINIT | The bitmap was not zero-initialized. |
BMF_DONTCACHE | The bitmap should not be cached by the driver because it is a transient bitmap, created by GDI, that the driver will never see again. |
Comments
When information about a particular surface is required by a driver, the driver must access the SURFOBJ. This structure allows quick access to the properties of the surface.
When a SURFOBJ structure represents a GDI bitmap, the driver must be able to determine the format of the bitmap and locate the bitmap bits.
When a SURFOBJ structure represents a device surface, the driver must be able to locate the device handle for the surface.