Data Types

The data types defined in the following table appear in the device driver interface. Several of the listed data types are those user objects previously described in User Objects.

DDI Data Type Variable Name Prefix Definition
BOOL b A 32 bit value that can be TRUE or FALSE.
BYTE j An 8 bit unsigned integer.
BRUSHOBJ* pbo A brush object.
CLIPLINE cl A clipline object.
CLIPOBJ* pco A clipping object.
DHPDEV dhpdev A 32 bit handle, defined by the device driver, that identifies a physical device.
DHSURF dhsurf A 32 bit handle, defined by the device driver, that identifies a device managed surface.
FIX fix A 32 bit signed fixed point number. 28 bits are to the left of the binary point.
FLOAT e A 32 bit IEEE floating point number.
FLOAT_LONG el A 32 bit value that is interpreted as either a LONG or FLOAT, depending on a separate flag.
FLONG fl A set of 32 bit flags.
FONTOBJ* pfo A font object.
FSHORT fs A set of 16 bit flags.
HBM hbm A 32 bit handle, defined by GDI, that identifies a bitmap.
HPAL hpal A 32 bit handle, defined by GDI, that identifies a palette.
HSURF hsurf A 32 bit handle, defined by GDI, that identifies a surface.
LONG l A 32 bit signed integer.
MIX mix A 32 bit quantity, whose lower 16 bits define foreground and background mix modes.
PALOBJ* ppalo A palette object.
PATHOBJ* ppo A path object.
POINTE pte A point structure that consists of {FLOAT x,y;}.
POINTFX ptfx A point structure that consists of {FIX x,y;}.
POINTL ptl A point structure that consists of {LONG x,y;}.
PWSZ pwsz A pointer to a zero-terminated Unicode string.
PVOID pv A pointer to a structure that is not defined by GDI.
RECTL rcl A rectangle structure that consists of {LONG xLeft,yTop,xRight,yBottom;}
RECTFX rcfx A rectangle structure that consists of {FIX xLeft,yTop,xRight,yBottom;}
ROP4 rop4 A 32 bit value that specifies how source, destination, pattern, and mask pixels are to be mixed.
SHORT s A 16 bit signed integer.
SIZEL sizl A two-dimensional size structure that consists of {ULONG cx,cy;}.
STROBJ* pstro A text string object.
SURFOBJ* pso A surface object.
ULONG ul A 32 bit unsigned integer.
USHORT us A 16 bit unsigned integer.
XFORMOBJ* pxo A coordinate transform object.
XLATEOBJ* pxlo A color translation object.

The parameter prefixes listed in the next table are used to modify variable name prefixes in accordance with their usage.

Prefix Parameter Usage
i An enumerated index
c A count
p A pointer