holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/winddi.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/winddi.h	Thu Sep 16 09:43:14 2010 +0100
@@ -0,0 +1,4258 @@
+/*
+ * winddi.h
+ *
+ * GDI device driver interface
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __WINDDI_H
+#define __WINDDI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __VIDEO_H
+#error video.h cannot be included with winddi.h
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+#include <wingdi.h>
+
+#ifndef __DD_INCLUDED__
+/* FIXME: Some DirectDraw structures not added yet */
+typedef ULONG_PTR FLATPTR;
+typedef struct _DD_SURFACECALLBACKS {
+} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
+typedef struct _DD_PALETTECALLBACKS {
+} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
+typedef struct _DD_CALLBACKS {
+} DD_CALLBACKS, *PDD_CALLBACKS;
+typedef struct _DD_HALINFO {
+} DD_HALINFO, *PDD_HALINFO;
+typedef struct _VIDEOMEMORY {
+} VIDEOMEMORY, *LPVIDEOMEMORY;
+typedef struct _DD_DIRECTDRAW_GLOBAL {
+} DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
+typedef struct _DD_SURFACE_LOCAL {
+} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
+#endif
+
+#ifndef __DDRAWI_INCLUDED__
+typedef PVOID LPVIDMEM;
+#endif
+
+#if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
+typedef struct _DDSCAPS {
+} DDSCAPS, *PDDSCAPS;
+typedef struct _DDSCAPSEX {
+} DDSCAPSEX, *PDDSCAPSEX;
+typedef PVOID LPVMEMHEAP;
+#endif
+
+#if defined(_WIN32K_)
+#define WIN32KAPI DECL_EXPORT
+#else
+#define WIN32KAPI DECL_IMPORT
+#endif
+
+#define DDI_DRIVER_VERSION_NT4            0x00020000
+#define DDI_DRIVER_VERSION_SP3            0x00020003
+#define DDI_DRIVER_VERSION_NT5            0x00030000
+#define DDI_DRIVER_VERSION_NT5_01         0x00030100
+
+#define GDI_DRIVER_VERSION                0x4000
+
+#ifdef _X86_
+
+typedef DWORD FLOATL;
+
+#else /* !_X86_ */
+
+typedef FLOAT FLOATL;
+
+#endif
+
+typedef SHORT FWORD;
+typedef LONG LDECI4;
+typedef ULONG IDENT;
+
+typedef ULONG_PTR HFF;
+typedef ULONG_PTR HFC;
+
+typedef LONG PTRDIFF;
+typedef PTRDIFF *PPTRDIFF;
+typedef LONG FIX;
+typedef FIX *PFIX;
+typedef ULONG ROP4;
+typedef ULONG MIX;
+typedef ULONG HGLYPH;
+typedef HGLYPH *PHGLYPH;
+
+typedef LONG_PTR (DDKAPI *PFN)();
+
+DECLARE_HANDLE(HBM);
+DECLARE_HANDLE(HDEV);
+DECLARE_HANDLE(HSURF);
+DECLARE_HANDLE(DHSURF);
+DECLARE_HANDLE(DHPDEV);
+DECLARE_HANDLE(HDRVOBJ);
+
+
+#define GDI_DRIVER_VERSION                0x4000
+
+typedef struct _ENG_EVENT *PEVENT;
+
+#define OPENGL_CMD                        4352
+#define OPENGL_GETINFO                    4353
+#define WNDOBJ_SETUP                      4354
+
+#define FD_ERROR                          0xFFFFFFFF
+#define DDI_ERROR                         0xFFFFFFFF
+
+#define HFF_INVALID                       ((HFF) 0)
+#define HFC_INVALID                       ((HFC) 0)
+#define HGLYPH_INVALID                    ((HGLYPH) -1)
+
+#define FP_ALTERNATEMODE                  1
+#define FP_WINDINGMODE                    2
+
+#define DN_ACCELERATION_LEVEL             1
+#define DN_DEVICE_ORIGIN                  2
+#define DN_SLEEP_MODE                     3
+#define DN_DRAWING_BEGIN                  4
+
+#define DCR_SOLID                         0
+#define DCR_DRIVER                        1
+#define DCR_HALFTONE                      2
+
+#define GX_IDENTITY                       0
+#define GX_OFFSET                         1
+#define GX_SCALE                          2
+#define GX_GENERAL                        3
+
+typedef struct _POINTE {
+	FLOATL  x;
+	FLOATL  y;
+} POINTE, *PPOINTE;
+
+typedef union _FLOAT_LONG {
+  FLOATL  e;
+  LONG  l;
+} FLOAT_LONG, *PFLOAT_LONG;
+
+typedef struct _POINTFIX {
+  FIX  x;
+  FIX  y;
+} POINTFIX, *PPOINTFIX;
+
+typedef struct _RECTFX {
+  FIX  xLeft;
+  FIX  yTop;
+  FIX  xRight;
+  FIX  yBottom;
+} RECTFX, *PRECTFX;
+
+typedef struct _POINTQF {
+  LARGE_INTEGER  x;
+  LARGE_INTEGER  y;
+} POINTQF, *PPOINTQF;
+
+
+typedef struct _BLENDOBJ {
+  BLENDFUNCTION  BlendFunction;
+} BLENDOBJ,*PBLENDOBJ;
+
+/* BRUSHOBJ.flColorType */
+#define BR_DEVICE_ICM    0x01
+#define BR_HOST_ICM      0x02
+#define BR_CMYKCOLOR     0x04
+#define BR_ORIGCOLOR     0x08
+
+typedef struct _BRUSHOBJ {
+  ULONG  iSolidColor;
+  PVOID  pvRbrush;
+  FLONG  flColorType;
+} BRUSHOBJ;
+
+typedef struct _CIECHROMA {
+  LDECI4  x;
+  LDECI4  y;
+  LDECI4  Y;
+} CIECHROMA;
+
+typedef struct _RUN {
+  LONG  iStart;
+  LONG  iStop;
+} RUN, *PRUN;
+
+typedef struct _CLIPLINE {
+  POINTFIX  ptfxA;
+  POINTFIX  ptfxB;
+  LONG  lStyleState;
+  ULONG  c;
+  RUN  arun[1];
+} CLIPLINE, *PCLIPLINE;
+
+/* CLIPOBJ.iDComplexity constants */
+#define DC_TRIVIAL                        0
+#define DC_RECT                           1
+#define DC_COMPLEX                        3
+
+/* CLIPOBJ.iFComplexity constants */
+#define FC_RECT                           1
+#define FC_RECT4                          2
+#define FC_COMPLEX                        3
+
+/* CLIPOBJ.iMode constants */
+#define TC_RECTANGLES                     0
+#define TC_PATHOBJ                        2
+
+/* CLIPOBJ.fjOptions constants */
+#define OC_BANK_CLIP                      1
+
+typedef struct _CLIPOBJ {
+  ULONG  iUniq;
+  RECTL  rclBounds;
+  BYTE  iDComplexity;
+  BYTE  iFComplexity;
+  BYTE  iMode;
+  BYTE  fjOptions;
+} CLIPOBJ;
+
+typedef struct _COLORINFO {
+  CIECHROMA  Red;
+  CIECHROMA  Green;
+  CIECHROMA  Blue;
+  CIECHROMA  Cyan;
+  CIECHROMA  Magenta;
+  CIECHROMA  Yellow;
+  CIECHROMA  AlignmentWhite;
+  LDECI4  RedGamma;
+  LDECI4  GreenGamma;
+  LDECI4  BlueGamma;
+  LDECI4  MagentaInCyanDye;
+  LDECI4  YellowInCyanDye;
+  LDECI4  CyanInMagentaDye;
+  LDECI4  YellowInMagentaDye;
+  LDECI4  CyanInYellowDye;
+  LDECI4  MagentaInYellowDye;
+} COLORINFO, *PCOLORINFO;
+
+/* DEVHTADJDATA.DeviceFlags constants */
+#define DEVHTADJF_COLOR_DEVICE            0x00000001
+#define DEVHTADJF_ADDITIVE_DEVICE         0x00000002
+
+typedef struct _DEVHTINFO {
+  DWORD  HTFlags;
+  DWORD  HTPatternSize;
+  DWORD  DevPelsDPI;
+  COLORINFO  ColorInfo;
+} DEVHTINFO, *PDEVHTINFO;
+
+typedef struct _DEVHTADJDATA {
+  DWORD   DeviceFlags;
+  DWORD   DeviceXDPI;
+  DWORD   DeviceYDPI;
+  PDEVHTINFO  pDefHTInfo;
+  PDEVHTINFO  pAdjHTInfo;
+} DEVHTADJDATA, *PDEVHTADJDATA;
+
+/* DEVINFO.flGraphicsCaps flags */
+#define GCAPS_BEZIERS           0x00000001
+#define GCAPS_GEOMETRICWIDE     0x00000002
+#define GCAPS_ALTERNATEFILL     0x00000004
+#define GCAPS_WINDINGFILL       0x00000008
+#define GCAPS_HALFTONE          0x00000010
+#define GCAPS_COLOR_DITHER      0x00000020
+#define GCAPS_HORIZSTRIKE       0x00000040
+#define GCAPS_VERTSTRIKE        0x00000080
+#define GCAPS_OPAQUERECT        0x00000100
+#define GCAPS_VECTORFONT        0x00000200
+#define GCAPS_MONO_DITHER       0x00000400
+#define GCAPS_ASYNCCHANGE       0x00000800
+#define GCAPS_ASYNCMOVE         0x00001000
+#define GCAPS_DONTJOURNAL       0x00002000
+#define GCAPS_DIRECTDRAW        0x00004000
+#define GCAPS_ARBRUSHOPAQUE     0x00008000
+#define GCAPS_PANNING           0x00010000
+#define GCAPS_HIGHRESTEXT       0x00040000
+#define GCAPS_PALMANAGED        0x00080000
+#define GCAPS_DITHERONREALIZE   0x00200000
+#define GCAPS_NO64BITMEMACCESS  0x00400000
+#define GCAPS_FORCEDITHER       0x00800000
+#define GCAPS_GRAY16            0x01000000
+#define GCAPS_ICM               0x02000000
+#define GCAPS_CMYKCOLOR         0x04000000
+#define GCAPS_LAYERED           0x08000000
+#define GCAPS_ARBRUSHTEXT       0x10000000
+#define GCAPS_SCREENPRECISION   0x20000000
+#define GCAPS_FONT_RASTERIZER   0x40000000
+#define GCAPS_NUP               0x80000000
+
+/* DEVINFO.iDitherFormat constants */
+#define BMF_1BPP       1L
+#define BMF_4BPP       2L
+#define BMF_8BPP       3L
+#define BMF_16BPP      4L
+#define BMF_24BPP      5L
+#define BMF_32BPP      6L
+#define BMF_4RLE       7L
+#define BMF_8RLE       8L
+#define BMF_JPEG       9L
+#define BMF_PNG       10L
+
+/* DEVINFO.flGraphicsCaps2 flags */
+#define GCAPS2_JPEGSRC          0x00000001
+#define GCAPS2_xxxx             0x00000002
+#define GCAPS2_PNGSRC           0x00000008
+#define GCAPS2_CHANGEGAMMARAMP  0x00000010
+#define GCAPS2_ALPHACURSOR      0x00000020
+#define GCAPS2_SYNCFLUSH        0x00000040
+#define GCAPS2_SYNCTIMER        0x00000080
+#define GCAPS2_ICD_MULTIMON     0x00000100
+#define GCAPS2_MOUSETRAILS      0x00000200
+#define GCAPS2_RESERVED1        0x00000400
+
+typedef struct _DEVINFO {
+  FLONG  flGraphicsCaps;
+  LOGFONTW  lfDefaultFont;
+  LOGFONTW  lfAnsiVarFont;
+  LOGFONTW  lfAnsiFixFont;
+  ULONG  cFonts;
+  ULONG  iDitherFormat;
+  USHORT  cxDither;
+  USHORT  cyDither;
+  HPALETTE  hpalDefault;
+  FLONG  flGraphicsCaps2;
+} DEVINFO, *PDEVINFO;
+
+typedef struct _DRIVEROBJ *PDRIVEROBJ;
+
+typedef BOOL DDKAPI CALLBACK
+(*FREEOBJPROC)(
+  /*IN*/ PDRIVEROBJ  pDriverObj);
+
+typedef struct _DRIVEROBJ {
+  PVOID  pvObj;
+  FREEOBJPROC  pFreeProc;
+  HDEV  hdev;
+  DHPDEV  dhpdev;
+} DRIVEROBJ;
+
+/* DRVFN.iFunc constants */
+#define INDEX_DrvEnablePDEV               0L
+#define INDEX_DrvCompletePDEV             1L
+#define INDEX_DrvDisablePDEV              2L
+#define INDEX_DrvEnableSurface            3L
+#define INDEX_DrvDisableSurface           4L
+#define INDEX_DrvAssertMode               5L
+#define INDEX_DrvOffset                   6L
+#define INDEX_DrvResetPDEV                7L
+#define INDEX_DrvDisableDriver            8L
+#define INDEX_DrvCreateDeviceBitmap       10L
+#define INDEX_DrvDeleteDeviceBitmap       11L
+#define INDEX_DrvRealizeBrush             12L
+#define INDEX_DrvDitherColor              13L
+#define INDEX_DrvStrokePath               14L
+#define INDEX_DrvFillPath                 15L
+#define INDEX_DrvStrokeAndFillPath        16L
+#define INDEX_DrvPaint                    17L
+#define INDEX_DrvBitBlt                   18L
+#define INDEX_DrvCopyBits                 19L
+#define INDEX_DrvStretchBlt               20L
+#define INDEX_DrvSetPalette               22L
+#define INDEX_DrvTextOut                  23L
+#define INDEX_DrvEscape                   24L
+#define INDEX_DrvDrawEscape               25L
+#define INDEX_DrvQueryFont                26L
+#define INDEX_DrvQueryFontTree            27L
+#define INDEX_DrvQueryFontData            28L
+#define INDEX_DrvSetPointerShape          29L
+#define INDEX_DrvMovePointer              30L
+#define INDEX_DrvLineTo                   31L
+#define INDEX_DrvSendPage                 32L
+#define INDEX_DrvStartPage                33L
+#define INDEX_DrvEndDoc                   34L
+#define INDEX_DrvStartDoc                 35L
+#define INDEX_DrvGetGlyphMode             37L
+#define INDEX_DrvSynchronize              38L
+#define INDEX_DrvSaveScreenBits           40L
+#define INDEX_DrvGetModes                 41L
+#define INDEX_DrvFree                     42L
+#define INDEX_DrvDestroyFont              43L
+#define INDEX_DrvQueryFontCaps            44L
+#define INDEX_DrvLoadFontFile             45L
+#define INDEX_DrvUnloadFontFile           46L
+#define INDEX_DrvFontManagement           47L
+#define INDEX_DrvQueryTrueTypeTable       48L
+#define INDEX_DrvQueryTrueTypeOutline     49L
+#define INDEX_DrvGetTrueTypeFile          50L
+#define INDEX_DrvQueryFontFile            51L
+#define INDEX_DrvMovePanning              52L
+#define INDEX_DrvQueryAdvanceWidths       53L
+#define INDEX_DrvSetPixelFormat           54L
+#define INDEX_DrvDescribePixelFormat      55L
+#define INDEX_DrvSwapBuffers              56L
+#define INDEX_DrvStartBanding             57L
+#define INDEX_DrvNextBand                 58L
+#define INDEX_DrvGetDirectDrawInfo        59L
+#define INDEX_DrvEnableDirectDraw         60L
+#define INDEX_DrvDisableDirectDraw        61L
+#define INDEX_DrvQuerySpoolType           62L
+#define INDEX_DrvIcmCreateColorTransform  64L
+#define INDEX_DrvIcmDeleteColorTransform  65L
+#define INDEX_DrvIcmCheckBitmapBits       66L
+#define INDEX_DrvIcmSetDeviceGammaRamp    67L
+#define INDEX_DrvGradientFill             68L
+#define INDEX_DrvStretchBltROP            69L
+#define INDEX_DrvPlgBlt                   70L
+#define INDEX_DrvAlphaBlend               71L
+#define INDEX_DrvSynthesizeFont           72L
+#define INDEX_DrvGetSynthesizedFontFiles  73L
+#define INDEX_DrvTransparentBlt           74L
+#define INDEX_DrvQueryPerBandInfo         75L
+#define INDEX_DrvQueryDeviceSupport       76L
+#define INDEX_DrvReserved1                77L
+#define INDEX_DrvReserved2                78L
+#define INDEX_DrvReserved3                79L
+#define INDEX_DrvReserved4                80L
+#define INDEX_DrvReserved5                81L
+#define INDEX_DrvReserved6                82L
+#define INDEX_DrvReserved7                83L
+#define INDEX_DrvReserved8                84L
+#define INDEX_DrvDeriveSurface            85L
+#define INDEX_DrvQueryGlyphAttrs          86L
+#define INDEX_DrvNotify                   87L
+#define INDEX_DrvSynchronizeSurface       88L
+#define INDEX_DrvResetDevice              89L
+#define INDEX_DrvReserved9                90L
+#define INDEX_DrvReserved10               91L
+#define INDEX_DrvReserved11               92L
+#define INDEX_LAST                        93L
+
+typedef struct _DRVFN {
+  ULONG  iFunc;
+  PFN  pfn;
+} DRVFN, *PDRVFN;
+
+/* DRVENABLEDATA.iDriverVersion constants */
+#define DDI_DRIVER_VERSION_NT4            0x00020000
+#define DDI_DRIVER_VERSION_SP3            0x00020003
+#define DDI_DRIVER_VERSION_NT5            0x00030000
+#define DDI_DRIVER_VERSION_NT5_01         0x00030100
+
+typedef struct _DRVENABLEDATA {
+  ULONG  iDriverVersion;
+  ULONG  c;
+  DRVFN  *pdrvfn;
+} DRVENABLEDATA, *PDRVENABLEDATA;
+
+DECLARE_HANDLE(HSEMAPHORE);
+
+typedef struct {
+  DWORD  nSize;
+  HDC  hdc;
+  PBYTE  pvEMF;
+  PBYTE  pvCurrentRecord;
+} EMFINFO, *PEMFINFO;
+
+typedef struct _ENGSAFESEMAPHORE {
+  HSEMAPHORE  hsem;
+  LONG  lCount;
+} ENGSAFESEMAPHORE;
+
+typedef struct _ENG_TIME_FIELDS {
+  USHORT  usYear;
+  USHORT  usMonth;
+  USHORT  usDay;
+  USHORT  usHour;
+  USHORT  usMinute;
+  USHORT  usSecond;
+  USHORT  usMilliseconds;
+  USHORT  usWeekday;
+} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
+
+typedef struct _ENUMRECTS {
+  ULONG  c;
+  RECTL  arcl[1];
+} ENUMRECTS;
+
+typedef struct _FD_XFORM {
+  FLOATL  eXX;
+  FLOATL  eXY;
+  FLOATL  eYX;
+  FLOATL  eYY;
+} FD_XFORM, *PFD_XFORM;
+
+/* FD_DEVICEMETRICS.flRealizedType constants */
+#define FDM_TYPE_BM_SIDE_CONST            0x00000001
+#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE     0x00000002
+#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE   0x00000004
+#define FDM_TYPE_ZERO_BEARINGS            0x00000008
+#define FDM_TYPE_CONST_BEARINGS           0x00000010
+
+typedef struct _FD_DEVICEMETRICS {
+  FLONG  flRealizedType;
+  POINTE  pteBase;
+  POINTE  pteSide;
+  LONG  lD;
+  FIX  fxMaxAscender;
+  FIX  fxMaxDescender;
+  POINTL  ptlUnderline1;
+  POINTL  ptlStrikeout;
+  POINTL  ptlULThickness;
+  POINTL  ptlSOThickness;
+  ULONG  cxMax;
+  ULONG  cyMax;
+  ULONG  cjGlyphMax;
+  FD_XFORM  fdxQuantized;
+  LONG  lNonLinearExtLeading;
+  LONG  lNonLinearIntLeading;
+  LONG  lNonLinearMaxCharWidth;
+  LONG  lNonLinearAvgCharWidth;
+  LONG  lMinA;
+  LONG  lMinC;
+  LONG  lMinD;
+  LONG  alReserved[1];
+} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
+
+/* FD_GLYPHATTR.iMode constants */
+#define FO_ATTR_MODE_ROTATE               1
+
+typedef struct _FD_GLYPHATTR {
+  ULONG  cjThis;
+  ULONG  cGlyphs;
+  ULONG  iMode;
+  BYTE  aGlyphAttr[1];
+} FD_GLYPHATTR, *PFD_GLYPHATTR;
+
+/* FD_GLYPHSET.flAccel */
+#define GS_UNICODE_HANDLES                0x00000001
+#define GS_8BIT_HANDLES                   0x00000002
+#define GS_16BIT_HANDLES                  0x00000004
+
+typedef struct _WCRUN {
+  WCHAR  wcLow;
+  USHORT  cGlyphs;
+  HGLYPH  *phg;
+} WCRUN, *PWCRUN;
+
+typedef struct _FD_GLYPHSET {
+  ULONG  cjThis;
+  FLONG  flAccel;
+  ULONG  cGlyphsSupported;
+  ULONG  cRuns;
+  WCRUN  awcrun[1];
+} FD_GLYPHSET, *PFD_GLYPHSET;
+
+typedef struct _FD_KERNINGPAIR {
+  WCHAR  wcFirst;
+  WCHAR  wcSecond;
+  FWORD  fwdKern;
+} FD_KERNINGPAIR;
+
+typedef struct _FLOATOBJ
+{
+  ULONG  ul1;
+  ULONG  ul2;
+} FLOATOBJ, *PFLOATOBJ;
+
+typedef struct _FLOATOBJ_XFORM {
+  FLOATOBJ  eM11;
+  FLOATOBJ  eM12;
+  FLOATOBJ  eM21;
+  FLOATOBJ  eM22;
+  FLOATOBJ  eDx;
+  FLOATOBJ  eDy;
+} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
+
+/* FONTDIFF.fsSelection */
+#define FM_SEL_ITALIC                     0x0001
+#define FM_SEL_UNDERSCORE                 0x0002
+#define FM_SEL_NEGATIVE                   0x0004
+#define FM_SEL_OUTLINED                   0x0008
+#define FM_SEL_STRIKEOUT                  0x0010
+#define FM_SEL_BOLD                       0x0020
+#define FM_SEL_REGULAR                    0x0040
+
+typedef struct _FONTDIFF {
+  BYTE  jReserved1;
+  BYTE  jReserved2;
+  BYTE  jReserved3;
+  BYTE  bWeight;
+  USHORT  usWinWeight;
+  FSHORT  fsSelection;
+  FWORD  fwdAveCharWidth;
+  FWORD  fwdMaxCharInc;
+  POINTL  ptlCaret;
+} FONTDIFF;
+
+typedef struct _FONTSIM {
+  PTRDIFF  dpBold;
+  PTRDIFF  dpItalic;
+  PTRDIFF  dpBoldItalic;
+} FONTSIM;
+
+/* FONTINFO.flCaps constants */
+#define FO_DEVICE_FONT                    1L
+#define FO_OUTLINE_CAPABLE                2L
+
+typedef struct _FONTINFO {
+  ULONG  cjThis;
+  FLONG  flCaps;
+  ULONG  cGlyphsSupported;
+  ULONG  cjMaxGlyph1;
+  ULONG  cjMaxGlyph4;
+  ULONG  cjMaxGlyph8;
+  ULONG  cjMaxGlyph32;
+} FONTINFO, *PFONTINFO;
+
+/* FONTOBJ.flFontType constants */
+#define FO_TYPE_RASTER   RASTER_FONTTYPE
+#define FO_TYPE_DEVICE   DEVICE_FONTTYPE
+#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
+#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
+
+#define FO_SIM_BOLD      0x00002000
+#define FO_SIM_ITALIC    0x00004000
+#define FO_EM_HEIGHT     0x00008000
+#define FO_GRAY16        0x00010000
+#define FO_NOGRAY16      0x00020000
+#define FO_NOHINTS       0x00040000
+#define FO_NO_CHOICE     0x00080000
+#define FO_CFF            0x00100000
+#define FO_POSTSCRIPT     0x00200000
+#define FO_MULTIPLEMASTER 0x00400000
+#define FO_VERT_FACE      0x00800000
+#define FO_DBCS_FONT      0X01000000
+#define FO_NOCLEARTYPE    0x02000000
+#define FO_CLEARTYPE_X    0x10000000
+#define FO_CLEARTYPE_Y    0x20000000
+
+typedef struct _FONTOBJ {
+  ULONG  iUniq;
+  ULONG  iFace;
+  ULONG  cxMax;
+  FLONG  flFontType;
+  ULONG_PTR  iTTUniq;
+  ULONG_PTR  iFile;
+  SIZE  sizLogResPpi;
+  ULONG  ulStyleSize;
+  PVOID  pvConsumer;
+  PVOID  pvProducer;
+} FONTOBJ;
+
+typedef struct _GAMMARAMP {
+  WORD  Red[256];
+  WORD  Green[256];
+  WORD  Blue[256];
+} GAMMARAMP, *PGAMMARAMP;
+
+/* GDIINFO.ulPrimaryOrder constants */
+#define PRIMARY_ORDER_ABC                 0
+#define PRIMARY_ORDER_ACB                 1
+#define PRIMARY_ORDER_BAC                 2
+#define PRIMARY_ORDER_BCA                 3
+#define PRIMARY_ORDER_CBA                 4
+#define PRIMARY_ORDER_CAB                 5
+
+/* GDIINFO.ulHTPatternSize constants */
+#define HT_PATSIZE_2x2                    0
+#define HT_PATSIZE_2x2_M                  1
+#define HT_PATSIZE_4x4                    2
+#define HT_PATSIZE_4x4_M                  3
+#define HT_PATSIZE_6x6                    4
+#define HT_PATSIZE_6x6_M                  5
+#define HT_PATSIZE_8x8                    6
+#define HT_PATSIZE_8x8_M                  7
+#define HT_PATSIZE_10x10                  8
+#define HT_PATSIZE_10x10_M                9
+#define HT_PATSIZE_12x12                  10
+#define HT_PATSIZE_12x12_M                11
+#define HT_PATSIZE_14x14                  12
+#define HT_PATSIZE_14x14_M                13
+#define HT_PATSIZE_16x16                  14
+#define HT_PATSIZE_16x16_M                15
+#define HT_PATSIZE_SUPERCELL              16
+#define HT_PATSIZE_SUPERCELL_M            17
+#define HT_PATSIZE_USER                   18
+#define HT_PATSIZE_MAX_INDEX              HT_PATSIZE_USER
+#define HT_PATSIZE_DEFAULT                HT_PATSIZE_SUPERCELL_M
+#define HT_USERPAT_CX_MIN                 4
+#define HT_USERPAT_CX_MAX                 256
+#define HT_USERPAT_CY_MIN                 4
+#define HT_USERPAT_CY_MAX                 256
+
+/* GDIINFO.ulHTOutputFormat constants */
+#define HT_FORMAT_1BPP                    0
+#define HT_FORMAT_4BPP                    2
+#define HT_FORMAT_4BPP_IRGB               3
+#define HT_FORMAT_8BPP                    4
+#define HT_FORMAT_16BPP                   5
+#define HT_FORMAT_24BPP                   6
+#define HT_FORMAT_32BPP                   7
+
+/* GDIINFO.flHTFlags */
+#define HT_FLAG_SQUARE_DEVICE_PEL         0x00000001
+#define HT_FLAG_HAS_BLACK_DYE             0x00000002
+#define HT_FLAG_ADDITIVE_PRIMS            0x00000004
+#define HT_FLAG_USE_8BPP_BITMASK          0x00000008
+#define HT_FLAG_INK_HIGH_ABSORPTION       0x00000010
+#define HT_FLAG_INK_ABSORPTION_INDICES    0x00000060
+#define HT_FLAG_DO_DEVCLR_XFORM           0x00000080
+#define HT_FLAG_OUTPUT_CMY                0x00000100
+#define HT_FLAG_PRINT_DRAFT_MODE          0x00000200
+#define HT_FLAG_INVERT_8BPP_BITMASK_IDX   0x00000400
+#define HT_FLAG_8BPP_CMY332_MASK          0xFF000000
+
+#define MAKE_CMYMASK_BYTE(c,m,y)          ((BYTE)(((BYTE)(c) & 0x07) << 5) \
+                                          |(BYTE)(((BYTE)(m) & 0x07) << 2) \
+                                          |(BYTE)((BYTE)(y) & 0x03))
+
+#define MAKE_CMY332_MASK(c,m,y)           ((DWORD)(((DWORD)(c) & 0x07) << 29)\
+                                          |(DWORD)(((DWORD)(m) & 0x07) << 26)\
+                                          |(DWORD)(((DWORD)(y) & 0x03) << 24))
+
+/* GDIINFO.flHTFlags constants */
+#define HT_FLAG_INK_ABSORPTION_IDX0       0x00000000
+#define HT_FLAG_INK_ABSORPTION_IDX1       0x00000020
+#define HT_FLAG_INK_ABSORPTION_IDX2       0x00000040
+#define HT_FLAG_INK_ABSORPTION_IDX3       0x00000060
+
+#define HT_FLAG_HIGHEST_INK_ABSORPTION    (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX3)
+#define HT_FLAG_HIGHER_INK_ABSORPTION     (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX2)
+#define HT_FLAG_HIGH_INK_ABSORPTION       (HT_FLAG_INK_HIGH_ABSORPTION \
+                                          |HT_FLAG_INK_ABSORPTION_IDX1)
+#define HT_FLAG_NORMAL_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX0
+#define HT_FLAG_LOW_INK_ABSORPTION        HT_FLAG_INK_ABSORPTION_IDX1
+#define HT_FLAG_LOWER_INK_ABSORPTION      HT_FLAG_INK_ABSORPTION_IDX2
+#define HT_FLAG_LOWEST_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX3
+
+#define HT_BITMASKPALRGB                  (DWORD)'0BGR'
+#define HT_SET_BITMASKPAL2RGB(pPal)       (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
+#define HT_IS_BITMASKPALRGB(pPal)         (*((LPDWORD)(pPal)) == (DWORD)0)
+
+/* GDIINFO.ulPhysicalPixelCharacteristics constants */
+#define PPC_DEFAULT                       0x0
+#define PPC_UNDEFINED                     0x1
+#define PPC_RGB_ORDER_VERTICAL_STRIPES    0x2
+#define PPC_BGR_ORDER_VERTICAL_STRIPES    0x3
+#define PPC_RGB_ORDER_HORIZONTAL_STRIPES  0x4
+#define PPC_BGR_ORDER_HORIZONTAL_STRIPES  0x5
+
+#define PPG_DEFAULT                       0
+#define PPG_SRGB                          1
+
+typedef struct _GDIINFO {
+  ULONG  ulVersion;
+  ULONG  ulTechnology;
+  ULONG  ulHorzSize;
+  ULONG  ulVertSize;
+  ULONG  ulHorzRes;
+  ULONG  ulVertRes;
+  ULONG  cBitsPixel;
+  ULONG  cPlanes;
+  ULONG  ulNumColors;
+  ULONG  flRaster;
+  ULONG  ulLogPixelsX;
+  ULONG  ulLogPixelsY;
+  ULONG  flTextCaps;
+  ULONG  ulDACRed;
+  ULONG  ulDACGreen;
+  ULONG  ulDACBlue;
+  ULONG  ulAspectX;
+  ULONG  ulAspectY;
+  ULONG  ulAspectXY;
+  LONG  xStyleStep;
+  LONG  yStyleStep;
+  LONG  denStyleStep;
+  POINTL  ptlPhysOffset;
+  SIZEL  szlPhysSize;
+  ULONG  ulNumPalReg;
+  COLORINFO  ciDevice;
+  ULONG  ulDevicePelsDPI;
+  ULONG  ulPrimaryOrder;
+  ULONG  ulHTPatternSize;
+  ULONG  ulHTOutputFormat;
+  ULONG  flHTFlags;
+  ULONG  ulVRefresh;
+  ULONG  ulBltAlignment;
+  ULONG  ulPanningHorzRes;
+  ULONG  ulPanningVertRes;
+  ULONG  xPanningAlignment;
+  ULONG  yPanningAlignment;
+  ULONG  cxHTPat;
+  ULONG  cyHTPat;
+  LPBYTE  pHTPatA;
+  LPBYTE  pHTPatB;
+  LPBYTE  pHTPatC;
+  ULONG  flShadeBlend;
+  ULONG  ulPhysicalPixelCharacteristics;
+  ULONG  ulPhysicalPixelGamma;
+} GDIINFO, *PGDIINFO;
+
+/* PATHDATA.flags constants */
+#define PD_BEGINSUBPATH                   0x00000001
+#define PD_ENDSUBPATH                     0x00000002
+#define PD_RESETSTYLE                     0x00000004
+#define PD_CLOSEFIGURE                    0x00000008
+#define PD_BEZIERS                        0x00000010
+#define PD_ALL                            (PD_BEGINSUBPATH \
+                                          |PD_ENDSUBPATH \
+                                          |PD_RESETSTYLE \
+                                          |PD_CLOSEFIGURE \
+                                          PD_BEZIERS)
+
+typedef struct _PATHDATA {
+  FLONG  flags;
+  ULONG  count;
+  POINTFIX  *glypptfx;
+} PATHDATA, *PPATHDATA;
+
+/* PATHOBJ.fl constants */
+#define PO_BEZIERS                        0x00000001
+#define PO_ELLIPSE                        0x00000002
+#define PO_ALL_INTEGERS                   0x00000004
+#define PO_ENUM_AS_INTEGERS               0x00000008
+
+typedef struct _PATHOBJ {
+  FLONG  fl;
+  ULONG  cCurves;
+} PATHOBJ;
+
+typedef struct _GLYPHBITS {
+  POINTL  ptlOrigin;
+  SIZEL  sizlBitmap;
+  BYTE  aj[1];
+} GLYPHBITS;
+
+typedef union _GLYPHDEF {
+  GLYPHBITS  *pgb;
+  PATHOBJ  *ppo;
+} GLYPHDEF;
+
+typedef struct _GLYPHPOS {
+  HGLYPH  hg;
+  GLYPHDEF  *pgdf;
+  POINTL  ptl;
+} GLYPHPOS, *PGLYPHPOS;
+
+typedef struct _GLYPHDATA {
+  GLYPHDEF  gdf;
+  HGLYPH  hg;
+  FIX  fxD;
+  FIX  fxA;
+  FIX  fxAB;
+  FIX  fxInkTop;
+  FIX  fxInkBottom;
+  RECTL  rclInk;
+  POINTQF  ptqD;
+} GLYPHDATA;
+
+typedef struct _IFIEXTRA {
+  ULONG  ulIdentifier;
+  PTRDIFF  dpFontSig;
+  ULONG  cig;
+  PTRDIFF  dpDesignVector;
+  PTRDIFF  dpAxesInfoW;
+  ULONG  aulReserved[1];
+} IFIEXTRA, *PIFIEXTRA;
+
+/* IFIMETRICS constants */
+
+#define FM_VERSION_NUMBER                 0x0
+
+/* IFIMETRICS.fsType constants */
+#define FM_TYPE_LICENSED                  0x2
+#define FM_READONLY_EMBED                 0x4
+#define FM_EDITABLE_EMBED                 0x8
+#define FM_NO_EMBEDDING                   FM_TYPE_LICENSED
+
+/* IFIMETRICS.flInfo constants */
+#define FM_INFO_TECH_TRUETYPE             0x00000001
+#define FM_INFO_TECH_BITMAP               0x00000002
+#define FM_INFO_TECH_STROKE               0x00000004
+#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
+#define FM_INFO_ARB_XFORMS                0x00000010
+#define FM_INFO_1BPP                      0x00000020
+#define FM_INFO_4BPP                      0x00000040
+#define FM_INFO_8BPP                      0x00000080
+#define FM_INFO_16BPP                     0x00000100
+#define FM_INFO_24BPP                     0x00000200
+#define FM_INFO_32BPP                     0x00000400
+#define FM_INFO_INTEGER_WIDTH             0x00000800
+#define FM_INFO_CONSTANT_WIDTH            0x00001000
+#define FM_INFO_NOT_CONTIGUOUS            0x00002000
+#define FM_INFO_TECH_MM                   0x00004000
+#define FM_INFO_RETURNS_OUTLINES          0x00008000
+#define FM_INFO_RETURNS_STROKES           0x00010000
+#define FM_INFO_RETURNS_BITMAPS           0x00020000
+#define FM_INFO_DSIG                      0x00040000
+#define FM_INFO_RIGHT_HANDED              0x00080000
+#define FM_INFO_INTEGRAL_SCALING          0x00100000
+#define FM_INFO_90DEGREE_ROTATIONS        0x00200000
+#define FM_INFO_OPTICALLY_FIXED_PITCH     0x00400000
+#define FM_INFO_DO_NOT_ENUMERATE          0x00800000
+#define FM_INFO_ISOTROPIC_SCALING_ONLY    0x01000000
+#define FM_INFO_ANISOTROPIC_SCALING_ONLY  0x02000000
+#define FM_INFO_TECH_CFF                  0x04000000
+#define FM_INFO_FAMILY_EQUIV              0x08000000
+#define FM_INFO_DBCS_FIXED_PITCH          0x10000000
+#define FM_INFO_NONNEGATIVE_AC            0x20000000
+#define FM_INFO_IGNORE_TC_RA_ABLE         0x40000000
+#define FM_INFO_TECH_TYPE1                0x80000000
+
+#define MAXCHARSETS                       16
+
+/* IFIMETRICS.ulPanoseCulture constants */
+#define  FM_PANOSE_CULTURE_LATIN          0x0
+
+typedef struct _IFIMETRICS {
+  ULONG  cjThis;
+  ULONG  cjIfiExtra;
+  PTRDIFF  dpwszFamilyName;
+  PTRDIFF  dpwszStyleName;
+  PTRDIFF  dpwszFaceName;
+  PTRDIFF  dpwszUniqueName;
+  PTRDIFF  dpFontSim;
+  LONG  lEmbedId;
+  LONG  lItalicAngle;
+  LONG  lCharBias;
+  PTRDIFF  dpCharSets;
+  BYTE  jWinCharSet;
+  BYTE  jWinPitchAndFamily;
+  USHORT  usWinWeight;
+  ULONG  flInfo;
+  USHORT  fsSelection;
+  USHORT  fsType;
+  FWORD  fwdUnitsPerEm;
+  FWORD  fwdLowestPPEm;
+  FWORD  fwdWinAscender;
+  FWORD  fwdWinDescender;
+  FWORD  fwdMacAscender;
+  FWORD  fwdMacDescender;
+  FWORD  fwdMacLineGap;
+  FWORD  fwdTypoAscender;
+  FWORD  fwdTypoDescender;
+  FWORD  fwdTypoLineGap;
+  FWORD  fwdAveCharWidth;
+  FWORD  fwdMaxCharInc;
+  FWORD  fwdCapHeight;
+  FWORD  fwdXHeight;
+  FWORD  fwdSubscriptXSize;
+  FWORD  fwdSubscriptYSize;
+  FWORD  fwdSubscriptXOffset;
+  FWORD  fwdSubscriptYOffset;
+  FWORD  fwdSuperscriptXSize;
+  FWORD  fwdSuperscriptYSize;
+  FWORD  fwdSuperscriptXOffset;
+  FWORD  fwdSuperscriptYOffset;
+  FWORD  fwdUnderscoreSize;
+  FWORD  fwdUnderscorePosition;
+  FWORD  fwdStrikeoutSize;
+  FWORD  fwdStrikeoutPosition;
+  BYTE  chFirstChar;
+  BYTE  chLastChar;
+  BYTE  chDefaultChar;
+  BYTE  chBreakChar;
+  WCHAR  wcFirstChar;
+  WCHAR  wcLastChar;
+  WCHAR  wcDefaultChar;
+  WCHAR  wcBreakChar;
+  POINTL  ptlBaseline;
+  POINTL  ptlAspect;
+  POINTL  ptlCaret;
+  RECTL  rclFontBox;
+  BYTE  achVendId[4];
+  ULONG  cKerningPairs;
+  ULONG  ulPanoseCulture;
+  PANOSE  panose;
+#if defined(_WIN64)
+  PVOID  Align;
+#endif
+} IFIMETRICS, *PIFIMETRICS;
+
+/* LINEATTRS.fl */
+#define LA_GEOMETRIC                      0x00000001
+#define LA_ALTERNATE                      0x00000002
+#define LA_STARTGAP                       0x00000004
+#define LA_STYLED                         0x00000008
+
+/* LINEATTRS.iJoin */
+#define JOIN_ROUND                        0L
+#define JOIN_BEVEL                        1L
+#define JOIN_MITER                        2L
+
+/* LINEATTRS.iEndCap */
+#define ENDCAP_ROUND                      0L
+#define ENDCAP_SQUARE                     1L
+#define ENDCAP_BUTT                       2L
+
+typedef struct _LINEATTRS {
+  FLONG  fl;
+  ULONG  iJoin;
+  ULONG  iEndCap;
+  FLOAT_LONG  elWidth;
+  FLOATL  eMiterLimit;
+  ULONG  cstyle;
+  PFLOAT_LONG  pstyle;
+  FLOAT_LONG  elStyleState;
+} LINEATTRS, *PLINEATTRS;
+
+typedef struct _PALOBJ {
+  ULONG  ulReserved;
+} PALOBJ;
+
+typedef struct _PERBANDINFO {
+  BOOL  bRepeatThisBand;
+  SIZEL  szlBand;
+  ULONG  ulHorzRes;
+  ULONG  ulVertRes;
+} PERBANDINFO, *PPERBANDINFO;
+
+/* STROBJ.flAccel constants */
+#define SO_FLAG_DEFAULT_PLACEMENT        0x00000001
+#define SO_HORIZONTAL                    0x00000002
+#define SO_VERTICAL                      0x00000004
+#define SO_REVERSED                      0x00000008
+#define SO_ZERO_BEARINGS                 0x00000010
+#define SO_CHAR_INC_EQUAL_BM_BASE        0x00000020
+#define SO_MAXEXT_EQUAL_BM_SIDE          0x00000040
+#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
+#define SO_GLYPHINDEX_TEXTOUT            0x00000100
+#define SO_ESC_NOT_ORIENT                0x00000200
+#define SO_DXDY                          0x00000400
+#define SO_CHARACTER_EXTRA               0x00000800
+#define SO_BREAK_EXTRA                   0x00001000
+
+typedef struct _STROBJ {
+  ULONG  cGlyphs;
+  FLONG  flAccel;
+  ULONG  ulCharInc;
+  RECTL  rclBkGround;
+  GLYPHPOS  *pgp;
+  LPWSTR  pwszOrg;
+} STROBJ;
+
+typedef struct _SURFACEALIGNMENT {
+  union {
+		struct {
+			DWORD  dwStartAlignment;
+			DWORD  dwPitchAlignment;
+			DWORD  dwReserved1;
+			DWORD  dwReserved2;
+		} Linear;
+		struct {
+			DWORD  dwXAlignment;
+			DWORD  dwYAlignment;
+			DWORD  dwReserved1;
+			DWORD  dwReserved2;
+		} Rectangular;
+  };
+} SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
+
+/* SURFOBJ.iType constants */
+#define STYPE_BITMAP                      0L
+#define STYPE_DEVICE                      1L
+#define STYPE_DEVBITMAP                   3L
+
+/* SURFOBJ.fjBitmap constants */
+#define BMF_TOPDOWN                       0x0001
+#define BMF_NOZEROINIT                    0x0002
+#define BMF_DONTCACHE                     0x0004
+#define BMF_USERMEM                       0x0008
+#define BMF_KMSECTION                     0x0010
+#define BMF_NOTSYSMEM                     0x0020
+#define BMF_WINDOW_BLT                    0x0040
+#define BMF_UMPDMEM                       0x0080
+#define BMF_RESERVED                      0xFF00
+
+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;
+
+typedef struct _TYPE1_FONT {
+  HANDLE  hPFM;
+  HANDLE  hPFB;
+  ULONG  ulIdentifier;
+} TYPE1_FONT;
+
+typedef struct _WNDOBJ {
+  CLIPOBJ  coClient;
+  PVOID  pvConsumer;
+  RECTL  rclClient;
+  SURFOBJ  *psoOwner;
+} WNDOBJ, *PWNDOBJ;
+
+typedef struct _XFORML {
+  FLOATL  eM11;
+  FLOATL  eM12;
+  FLOATL  eM21;
+  FLOATL  eM22;
+  FLOATL  eDx;
+  FLOATL  eDy;
+} XFORML, *PXFORML;
+
+typedef struct _XFORMOBJ {
+  ULONG  ulReserved;
+} XFORMOBJ;
+
+/* XLATEOBJ.flXlate constants */
+#define XO_TRIVIAL                        0x00000001
+#define XO_TABLE                          0x00000002
+#define XO_TO_MONO                        0x00000004
+#define XO_FROM_CMYK                      0x00000008
+#define XO_DEVICE_ICM                     0x00000010
+#define XO_HOST_ICM                       0x00000020
+
+typedef struct _XLATEOBJ {
+  ULONG  iUniq;
+  FLONG  flXlate;
+  USHORT  iSrcType;
+  USHORT  iDstType;
+  ULONG  cEntries;
+  ULONG  *pulXlate;
+} XLATEOBJ;
+
+typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ FLONG  fl);
+
+
+WIN32KAPI
+HANDLE
+DDKAPI
+BRUSHOBJ_hGetColorTransform(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+PVOID
+DDKAPI
+BRUSHOBJ_pvAllocRbrush(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ ULONG  cj);
+
+WIN32KAPI
+PVOID
+DDKAPI
+BRUSHOBJ_pvGetRbrush(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+BRUSHOBJ_ulGetBrushColor(
+  /*IN*/ BRUSHOBJ  *pbo);
+
+WIN32KAPI
+BOOL
+DDKAPI
+CLIPOBJ_bEnum(
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ ULONG  *pv);
+
+/* CLIPOBJ_cEnumStart.iType constants */
+#define CT_RECTANGLES                     0L
+
+/* CLIPOBJ_cEnumStart.iDirection constants */
+#define CD_RIGHTDOWN                      0x00000000
+#define CD_LEFTDOWN                       0x00000001
+#define CD_LEFTWARDS                      0x00000001
+#define CD_RIGHTUP                        0x00000002
+#define CD_UPWARDS                        0x00000002
+#define CD_LEFTUP                         0x00000003
+#define CD_ANY                            0x00000004
+
+WIN32KAPI
+ULONG
+DDKAPI
+CLIPOBJ_cEnumStart(
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BOOL  bAll,
+  /*IN*/ ULONG  iType,
+  /*IN*/ ULONG  iDirection,
+  /*IN*/ ULONG  cLimit);
+
+WIN32KAPI
+PATHOBJ*
+DDKAPI
+CLIPOBJ_ppoGetPath(
+  /*IN*/ CLIPOBJ  *pco);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngAcquireSemaphore(
+  /*IN*/ HSEMAPHORE  hsem);
+
+#define FL_ZERO_MEMORY                    0x00000001
+#define FL_NONPAGED_MEMORY                0x00000002
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocMem(
+  /*IN*/ ULONG  Flags,
+  /*IN*/ ULONG  MemSize,
+  /*IN*/ ULONG  Tag);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocPrivateUserMem(
+  /*IN*/ PDD_SURFACE_LOCAL  psl,
+  /*IN*/ SIZE_T  cj,
+  /*IN*/ ULONG  tag);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngAllocUserMem(
+  /*IN*/ SIZE_T  cj,
+  /*IN*/ ULONG  tag);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngAlphaBlend(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+/* EngAssociateSurface.flHooks constants */
+#define HOOK_BITBLT                       0x00000001
+#define HOOK_STRETCHBLT                   0x00000002
+#define HOOK_PLGBLT                       0x00000004
+#define HOOK_TEXTOUT                      0x00000008
+#define HOOK_PAINT                        0x00000010
+#define HOOK_STROKEPATH                   0x00000020
+#define HOOK_FILLPATH                     0x00000040
+#define HOOK_STROKEANDFILLPATH            0x00000080
+#define HOOK_LINETO                       0x00000100
+#define HOOK_COPYBITS                     0x00000400
+#define HOOK_MOVEPANNING                  0x00000800
+#define HOOK_SYNCHRONIZE                  0x00001000
+#define HOOK_STRETCHBLTROP                0x00002000
+#define HOOK_SYNCHRONIZEACCESS            0x00004000
+#define HOOK_TRANSPARENTBLT               0x00008000
+#define HOOK_ALPHABLEND                   0x00010000
+#define HOOK_GRADIENTFILL                 0x00020000
+#define HOOK_FLAGS                        0x0003b5ff
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngAssociateSurface(
+  /*IN*/ HSURF  hsurf,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ FLONG  flHooks);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngBitBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCheckAbort(
+  /*IN*/ SURFOBJ  *pso);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngClearEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+FD_GLYPHSET*
+DDKAPI
+EngComputeGlyphSet(
+  /*IN*/ INT  nCodePage,
+  /*IN*/ INT  nFirstChar,
+  /*IN*/ INT  cChars);
+
+/* EngControlSprites.fl constants */
+#define ECS_TEARDOWN                      0x00000001
+#define ECS_REDRAW                        0x00000002
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngControlSprites(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCopyBits(
+
+  /*OUT*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+WIN32KAPI
+HBITMAP
+DDKAPI
+EngCreateBitmap(
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ LONG  lWidth,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ FLONG  fl,
+  /*IN*/ PVOID  pvBits);
+
+WIN32KAPI
+CLIPOBJ*
+DDKAPI
+EngCreateClip(
+  VOID);
+
+WIN32KAPI
+HBITMAP
+DDKAPI
+EngCreateDeviceBitmap(
+  /*IN*/ DHSURF  dhsurf,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormatCompat);
+
+WIN32KAPI
+HSURF
+DDKAPI
+EngCreateDeviceSurface(
+  DHSURF  dhsurf,
+  SIZEL  sizl,
+  ULONG  iFormatCompat);
+
+#if 0
+WIN32KAPI
+HDRVOBJ
+DDKAPI
+EngCreateDriverObj(
+  PVOID  pvObj,
+  FREEOBJPROC  pFreeObjProc,
+  HDEV  hdev);
+#endif
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngCreateEvent(
+
+  /*OUT*/ PEVENT  *ppEvent);
+
+/* EngCreatePalette.iMode constants */
+#define PAL_INDEXED                       0x00000001
+#define PAL_BITFIELDS                     0x00000002
+#define PAL_RGB                           0x00000004
+#define PAL_BGR                           0x00000008
+#define PAL_CMYK                          0x00000010
+
+WIN32KAPI
+HPALETTE
+DDKAPI
+EngCreatePalette(
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cColors,
+  /*IN*/ ULONG  *pulColors,
+  /*IN*/ FLONG  flRed,
+  /*IN*/ FLONG  flGreen,
+  /*IN*/ FLONG  flBlue);
+
+WIN32KAPI
+PATHOBJ*
+DDKAPI
+EngCreatePath(
+  VOID);
+
+WIN32KAPI
+HSEMAPHORE
+DDKAPI
+EngCreateSemaphore(
+  VOID);
+
+/* EngCreateWnd.fl constants */
+#define WO_RGN_CLIENT_DELTA               0x00000001
+#define WO_RGN_CLIENT                     0x00000002
+#define WO_RGN_SURFACE_DELTA              0x00000004
+#define WO_RGN_SURFACE                    0x00000008
+#define WO_RGN_UPDATE_ALL                 0x00000010
+#define WO_RGN_WINDOW                     0x00000020
+#define WO_DRAW_NOTIFY                    0x00000040
+#define WO_SPRITE_NOTIFY                  0x00000080
+#define WO_RGN_DESKTOP_COORD              0x00000100
+
+WIN32KAPI
+WNDOBJ*
+DDKAPI
+EngCreateWnd(
+  SURFOBJ  *pso,
+  HWND  hwnd,
+  WNDOBJCHANGEPROC  pfn,
+  FLONG  fl,
+  int  iPixelFormat);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDebugBreak(
+  VOID);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDebugPrint(
+  /*IN*/ PCHAR StandardPrefix,
+  /*IN*/ PCHAR DebugMessage,
+  /*IN*/ va_list ap);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteClip(
+  /*IN*/ CLIPOBJ  *pco);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteDriverObj(
+  /*IN*/ HDRVOBJ  hdo,
+  /*IN*/ BOOL  bCallBack,
+  /*IN*/ BOOL  bLocked);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteFile(
+  /*IN*/ LPWSTR  pwszFileName);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeletePalette(
+  /*IN*/ HPALETTE  hpal);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeletePath(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteSafeSemaphore(
+  /*IN OUT*/ ENGSAFESEMAPHORE  *pssem);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteSemaphore(
+  /*IN OUT*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngDeleteSurface(
+  /*IN*/ HSURF  hsurf);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngDeleteWnd(
+  /*IN*/ WNDOBJ  *pwo);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngDeviceIoControl(
+  /*IN*/ HANDLE  hDevice,
+  /*IN*/ DWORD  dwIoControlCode,
+  /*IN*/ LPVOID  lpInBuffer,
+  /*IN*/ DWORD  nInBufferSize,
+  /*IN OUT*/ LPVOID  lpOutBuffer,
+  /*IN*/ DWORD  nOutBufferSize,
+
+  /*OUT*/ LPDWORD  lpBytesReturned);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngDitherColor(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngEnumForms(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ DWORD  Level,
+
+  /*OUT*/ LPBYTE  pForm,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded,
+
+  /*OUT*/ LPDWORD  pcReturned);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngEraseSurface(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  iColor);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFindImageProcAddress(
+  /*IN*/ HANDLE  hModule,
+  /*IN*/ LPSTR  lpProcName);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFindResource(
+  /*IN*/ HANDLE  h,
+  /*IN*/ int  iName,
+  /*IN*/ int  iType,
+
+  /*OUT*/ PULONG  pulSize);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFntCacheAlloc(
+  /*IN*/ ULONG  FastCheckSum,
+  /*IN*/ ULONG  ulSize);
+
+/* EngFntCacheFault.iFaultMode constants */
+#define ENG_FNT_CACHE_READ_FAULT          0x00000001
+#define ENG_FNT_CACHE_WRITE_FAULT         0x00000002
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFntCacheFault(
+  /*IN*/ ULONG  ulFastCheckSum,
+  /*IN*/ ULONG  iFaultMode);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngFntCacheLookUp(
+  /*IN*/ ULONG  FastCheckSum,
+
+  /*OUT*/ ULONG  *pulSize);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeMem(
+  /*IN*/ PVOID  Mem);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeModule(
+  /*IN*/ HANDLE  h);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreePrivateUserMem(
+  /*IN*/ PDD_SURFACE_LOCAL  psl,
+  /*IN*/ PVOID  pv);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngFreeUserMem(
+  /*IN*/ PVOID  pv);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngGetCurrentCodePage(
+
+  /*OUT*/ PUSHORT  OemCodePage,
+
+  /*OUT*/ PUSHORT  AnsiCodePage);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetCurrentProcessId(
+  VOID);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetCurrentThreadId(
+  VOID);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+EngGetDriverName(
+  /*IN*/ HDEV  hdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetFileChangeTime(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ LARGE_INTEGER  *pChangeTime);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetFilePath(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ WCHAR  (*pDest)[MAX_PATH+1]);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetForm(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pFormName,
+  /*IN*/ DWORD  Level,
+
+  /*OUT*/ LPBYTE  pForm,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngGetLastError(
+  VOID);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetPrinter(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ DWORD  dwLevel,
+
+  /*OUT*/ LPBYTE  pPrinter,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngGetPrinterData(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pValueName,
+
+  /*OUT*/ LPDWORD  pType,
+
+  /*OUT*/ LPBYTE  pData,
+  /*IN*/ DWORD  nSize,
+
+  /*OUT*/ LPDWORD  pcbNeeded);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+EngGetPrinterDataFileName(
+  /*IN*/ HDEV  hdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetPrinterDriver(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pEnvironment,
+  /*IN*/ DWORD  dwLevel,
+
+  /*OUT*/ BYTE  *lpbDrvInfo,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ DWORD  *pcbNeeded);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngGetProcessHandle(
+  VOID);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGetType1FontList(
+  /*IN*/ HDEV  hdev,
+
+  /*OUT*/ TYPE1_FONT  *pType1Buffer,
+  /*IN*/ ULONG  cjType1Buffer,
+
+  /*OUT*/ PULONG  pulLocalFonts,
+
+  /*OUT*/ PULONG  pulRemoteFonts,
+
+  /*OUT*/ LARGE_INTEGER  *pLastModified);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngGradientFill(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+/* EngHangNotification return values */
+#define EHN_RESTORED                      0x00000000
+#define EHN_ERROR                         0x00000001
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngHangNotification(
+  /*IN*/ HDEV  hDev,
+  /*IN*/ PVOID  Reserved);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngInitializeSafeSemaphore(
+
+  /*OUT*/ ENGSAFESEMAPHORE  *pssem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngIsSemaphoreOwned(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngIsSemaphoreOwnedByCurrentThread(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngLineTo(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadImage(
+  /*IN*/ LPWSTR  pwszDriver);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadModule(
+  /*IN*/ LPWSTR  pwsz);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngLoadModuleForWrite(
+  /*IN*/ LPWSTR  pwsz,
+  /*IN*/ ULONG  cjSizeOfModule);
+
+WIN32KAPI
+PDD_SURFACE_LOCAL
+DDKAPI
+EngLockDirectDrawSurface(
+  /*IN*/ HANDLE  hSurface);
+
+WIN32KAPI
+DRIVEROBJ*
+DDKAPI
+EngLockDriverObj(
+  /*IN*/ HDRVOBJ  hdo);
+
+WIN32KAPI
+SURFOBJ*
+DDKAPI
+EngLockSurface(
+  /*IN*/ HSURF  hsurf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngLpkInstalled(
+  VOID);
+
+WIN32KAPI
+PEVENT
+DDKAPI
+EngMapEvent(
+  /*IN*/ HDEV  hDev,
+  /*IN*/ HANDLE  hUserObject,
+  /*IN*/ PVOID  Reserved1,
+  /*IN*/ PVOID  Reserved2,
+  /*IN*/ PVOID  Reserved3);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngMapFile(
+  /*IN*/ LPWSTR  pwsz,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ ULONG_PTR  *piFile);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMapFontFile(
+  ULONG_PTR  iFile,
+  PULONG  *ppjBuf,
+  ULONG  *pcjBuf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMapFontFileFD(
+  /*IN*/ ULONG_PTR  iFile,
+
+  /*OUT*/ PULONG  *ppjBuf,
+
+  /*OUT*/ ULONG  *pcjBuf);
+
+WIN32KAPI
+PVOID
+DDKAPI
+EngMapModule(
+  /*IN*/ HANDLE  h,
+
+  /*OUT*/ PULONG  pSize);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngMarkBandingSurface(
+  /*IN*/ HSURF  hsurf);
+
+/* EngModifySurface.flSurface constants */
+#define MS_NOTSYSTEMMEMORY                0x00000001
+#define MS_SHAREDACCESS                   0x00000002
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngModifySurface(
+  /*IN*/ HSURF  hsurf,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ FLONG  flHooks,
+  /*IN*/ FLONG  flSurface,
+  /*IN*/ DHSURF  dhsurf,
+  /*IN*/ VOID  *pvScan0,
+  /*IN*/ LONG  lDelta,
+  /*IN*/ VOID  *pvReserved);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngMovePointer(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+WIN32KAPI
+int
+DDKAPI
+EngMulDiv(
+  /*IN*/ int  a,
+  /*IN*/ int  b,
+  /*IN*/ int  c);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngMultiByteToUnicodeN(
+
+  /*OUT*/ LPWSTR  UnicodeString,
+  /*IN*/ ULONG  MaxBytesInUnicodeString,
+
+  /*OUT*/ PULONG  BytesInUnicodeString,
+  /*IN*/ PCHAR  MultiByteString,
+  /*IN*/ ULONG  BytesInMultiByteString);
+
+WIN32KAPI
+INT
+DDKAPI
+EngMultiByteToWideChar(
+  /*IN*/ UINT  CodePage,
+
+  /*OUT*/ LPWSTR  WideCharString,
+  /*IN*/ INT  BytesInWideCharString,
+  /*IN*/ LPSTR  MultiByteString,
+  /*IN*/ INT  BytesInMultiByteString);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngPaint(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngPlgBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngProbeForRead(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngProbeForReadAndWrite(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length,
+  /*IN*/ ULONG  Alignment);
+
+typedef enum _ENG_DEVICE_ATTRIBUTE {
+  QDA_RESERVED = 0,
+  QDA_ACCELERATION_LEVEL
+} ENG_DEVICE_ATTRIBUTE;
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngQueryDeviceAttribute(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ ENG_DEVICE_ATTRIBUTE  devAttr,
+  /*IN*/ VOID  *pvIn,
+  /*IN*/ ULONG  ulInSize,
+
+  /*OUT*/ VOID  *pvOut,
+
+  /*OUT*/ ULONG  ulOutSize);
+
+WIN32KAPI
+LARGE_INTEGER
+DDKAPI
+EngQueryFileTimeStamp(
+  /*IN*/ LPWSTR  pwsz);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryLocalTime(
+
+  /*OUT*/ PENG_TIME_FIELDS  ptf);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngQueryPalette(
+  /*IN*/ HPALETTE  hPal,
+
+  /*OUT*/ ULONG  *piMode,
+  /*IN*/ ULONG  cColors,
+
+  /*OUT*/ ULONG  *pulColors);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryPerformanceCounter(
+
+  /*OUT*/ LONGLONG  *pPerformanceCount);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngQueryPerformanceFrequency(
+
+  /*OUT*/ LONGLONG  *pFrequency);
+
+typedef enum _ENG_SYSTEM_ATTRIBUTE {
+  EngProcessorFeature = 1,
+  EngNumberOfProcessors,
+  EngOptimumAvailableUserMemory,
+  EngOptimumAvailableSystemMemory,
+} ENG_SYSTEM_ATTRIBUTE;
+
+#define QSA_MMX                           0x00000100
+#define QSA_SSE                           0x00002000
+#define QSA_3DNOW                         0x00004000
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngQuerySystemAttribute(
+  /*IN*/ ENG_SYSTEM_ATTRIBUTE  CapNum,
+
+  /*OUT*/ PDWORD  pCapability);
+
+WIN32KAPI
+LONG
+DDKAPI
+EngReadStateEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngReleaseSemaphore(
+  /*IN*/ HSEMAPHORE  hsem);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngRestoreFloatingPointState(
+  /*IN*/ VOID  *pBuffer);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngSaveFloatingPointState(
+
+  /*OUT*/ VOID  *pBuffer,
+  /*IN*/ ULONG  cjBufferSize);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+EngSecureMem(
+  /*IN*/ PVOID  Address,
+  /*IN*/ ULONG  Length);
+
+WIN32KAPI
+LONG
+DDKAPI
+EngSetEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngSetLastError(
+  /*IN*/ ULONG  iError);
+
+WIN32KAPI
+ULONG
+DDKAPI
+EngSetPointerShape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngSetPointerTag(
+  /*IN*/ HDEV  hdev,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ FLONG  fl);
+
+WIN32KAPI
+DWORD
+DDKAPI
+EngSetPrinterData(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPWSTR  pType,
+  /*IN*/ DWORD  dwType,
+  /*IN*/ LPBYTE  lpbPrinterData,
+  /*IN*/ DWORD  cjPrinterData);
+
+typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngSort(
+  /*IN OUT*/ PBYTE  pjBuf,
+  /*IN*/ ULONG  c,
+  /*IN*/ ULONG  cjElem,
+  /*IN*/ SORTCOMP  pfnComp);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStretchBlt(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStretchBltROP(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStrokeAndFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngStrokePath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngTextOut(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngTransparentBlt(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnicodeToMultiByteN(
+
+  /*OUT*/ PCHAR  MultiByteString,
+  /*IN*/ ULONG  MaxBytesInMultiByteString,
+
+  /*OUT*/ PULONG  BytesInMultiByteString,
+  /*IN*/ PWSTR  UnicodeString,
+  /*IN*/ ULONG  BytesInUnicodeString);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnloadImage(
+  /*IN*/ HANDLE  hModule);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnlockDirectDrawSurface(
+  /*IN*/ PDD_SURFACE_LOCAL  pSurface);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnlockDriverObj(
+  /*IN*/ HDRVOBJ  hdo);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnlockSurface(
+  /*IN*/ SURFOBJ  *pso);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnmapEvent(
+  /*IN*/ PEVENT  pEvent);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngUnmapFile(
+  /*IN*/ ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnmapFontFile(
+  ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnmapFontFileFD(
+  /*IN*/ ULONG_PTR  iFile);
+
+WIN32KAPI
+VOID
+DDKAPI
+EngUnsecureMem(
+  /*IN*/ HANDLE  hSecure);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngWaitForSingleObject(
+  /*IN*/ PEVENT  pEvent,
+  /*IN*/ PLARGE_INTEGER  pTimeOut);
+
+WIN32KAPI
+INT
+DDKAPI
+EngWideCharToMultiByte(
+  /*IN*/ UINT  CodePage,
+  /*IN*/ LPWSTR  WideCharString,
+  /*IN*/ INT  BytesInWideCharString,
+
+  /*OUT*/ LPSTR  MultiByteString,
+  /*IN*/ INT  BytesInMultiByteString);
+
+WIN32KAPI
+BOOL
+DDKAPI
+EngWritePrinter(
+  /*IN*/ HANDLE  hPrinter,
+  /*IN*/ LPVOID  pBuf,
+  /*IN*/ DWORD  cbBuf,
+
+  /*OUT*/ LPDWORD  pcWritten);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Add(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_AddFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_AddLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Div(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_DivFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_DivLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_Equal(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_EqualLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+LONG
+DDKAPI
+FLOATOBJ_GetFloat(
+  /*IN*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+LONG
+DDKAPI
+FLOATOBJ_GetLong(
+  /*IN*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_GreaterThan(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_GreaterThanLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_LessThan(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+BOOL
+DDKAPI
+FLOATOBJ_LessThanLong(
+  /*IN*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Mul(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_MulFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_MulLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Neg(
+  /*IN OUT*/ PFLOATOBJ  pf);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SetFloat(
+
+  /*OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SetLong(
+
+  /*OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_Sub(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ PFLOATOBJ  pf1);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SubFloat(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ FLOATL  f);
+
+WIN32KAPI
+VOID
+DDKAPI
+FLOATOBJ_SubLong(
+  /*IN OUT*/ PFLOATOBJ  pf,
+  /*IN*/ LONG  l);
+
+WIN32KAPI
+ULONG
+DDKAPI
+FONTOBJ_cGetAllGlyphHandles(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ HGLYPH  *phg);
+
+WIN32KAPI
+ULONG
+DDKAPI
+FONTOBJ_cGetGlyphs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cGlyph,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  *ppvGlyph);
+
+WIN32KAPI
+FD_GLYPHSET*
+DDKAPI
+FONTOBJ_pfdg(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+IFIMETRICS*
+DDKAPI
+FONTOBJ_pifi(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+PBYTE
+DDKAPI
+FONTOBJ_pjOpenTypeTablePointer(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  ulTag,
+
+  /*OUT*/ ULONG  *pcjTable);
+
+WIN32KAPI
+PFD_GLYPHATTR
+DDKAPI 
+FONTOBJ_pQueryGlyphAttrs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+WIN32KAPI
+PVOID
+DDKAPI
+FONTOBJ_pvTrueTypeFontFile(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ ULONG  *pcjFile);
+
+WIN32KAPI
+LPWSTR
+DDKAPI
+FONTOBJ_pwszFontFilePaths(
+  /*IN*/ FONTOBJ  *pfo,
+
+  /*OUT*/ ULONG  *pcwc);
+
+WIN32KAPI
+XFORMOBJ*
+DDKAPI
+FONTOBJ_pxoGetXform(
+  /*IN*/ FONTOBJ  *pfo);
+
+WIN32KAPI
+VOID
+DDKAPI
+FONTOBJ_vGetInfo(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ FONTINFO  *pfi);
+
+WIN32KAPI
+FLATPTR
+DDKAPI
+HeapVidMemAllocAligned(
+  /*IN*/ LPVIDMEM  lpVidMem,
+  /*IN*/ DWORD  dwWidth,
+  /*IN*/ DWORD  dwHeight,
+  /*IN*/ LPSURFACEALIGNMENT  lpAlignment,
+
+  /*OUT*/ LPLONG  lpNewPitch);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_ComputeRGBGammaTable(
+  /*IN*/ USHORT  GammaTableEntries,
+  /*IN*/ USHORT  GammaTableType,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma,
+
+  /*OUT*/ LPBYTE  pGammaTable);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_Get8BPPFormatPalette(
+
+  /*OUT*/ LPPALETTEENTRY  pPaletteEntry,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma);
+
+WIN32KAPI
+LONG
+DDKAPI
+HT_Get8BPPMaskPalette(
+  /*IN OUT*/ LPPALETTEENTRY  pPaletteEntry,
+  /*IN*/ BOOL  Use8BPPMaskPal,
+  /*IN*/ BYTE  CMYMask,
+  /*IN*/ USHORT  RedGamma,
+  /*IN*/ USHORT  GreenGamma,
+  /*IN*/ USHORT  BlueGamma);
+
+WIN32KAPI
+LONG
+DDKAPI
+HTUI_DeviceColorAdjustment(
+  /*IN*/ LPSTR  pDeviceName,
+
+  /*OUT*/ PDEVHTADJDATA  pDevHTAdjData);
+
+WIN32KAPI
+ULONG
+DDKAPI
+PALOBJ_cGetColors(
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors,
+
+  /*OUT*/ ULONG  *pulColors);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bCloseFigure(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bEnum(
+  /*IN*/ PATHOBJ  *ppo,
+
+  /*OUT*/ PATHDATA  *ppd);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bEnumClipLines(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ ULONG  cb,
+
+  /*OUT*/ CLIPLINE  *pcl);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bMoveTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  ptfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bPolyBezierTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ ULONG  cptfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+PATHOBJ_bPolyLineTo(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ ULONG  cptfx);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vEnumStart(
+  /*IN*/ PATHOBJ  *ppo);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vEnumStartClipLines(
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LINEATTRS  *pla);
+
+WIN32KAPI
+VOID
+DDKAPI
+PATHOBJ_vGetBounds(
+  /*IN*/ PATHOBJ  *ppo,
+
+  /*OUT*/ PRECTFX  prectfx);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bEnum(
+  /*IN*/ STROBJ  *pstro,
+
+  /*OUT*/ ULONG  *pc,
+
+  /*OUT*/ PGLYPHPOS  *ppgpos);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bEnumPositionsOnly(
+  /*IN*/ STROBJ  *pstro,
+
+  /*OUT*/ ULONG  *pc,
+
+  /*OUT*/ PGLYPHPOS  *ppgpos);
+
+WIN32KAPI
+BOOL
+DDKAPI
+STROBJ_bGetAdvanceWidths(
+  /*IN*/ STROBJ  *pso,
+  /*IN*/ ULONG  iFirst,
+  /*IN*/ ULONG  c,
+
+  /*OUT*/ POINTQF  *pptqD);
+
+WIN32KAPI
+DWORD
+DDKAPI
+STROBJ_dwGetCodePage(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+FIX
+DDKAPI
+STROBJ_fxBreakExtra(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+FIX
+DDKAPI
+STROBJ_fxCharacterExtra(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+VOID
+DDKAPI
+STROBJ_vEnumStart(
+  /*IN*/ STROBJ  *pstro);
+
+WIN32KAPI
+VOID
+DDKAPI
+VidMemFree(
+  /*IN*/ LPVMEMHEAP  pvmh,
+  /*IN*/ FLATPTR  ptr);
+
+WIN32KAPI
+BOOL
+DDKAPI
+WNDOBJ_bEnum(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ ULONG  *pul);
+
+WIN32KAPI
+ULONG
+DDKAPI
+WNDOBJ_cEnumStart(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ ULONG  iType,
+  /*IN*/ ULONG  iDirection,
+  /*IN*/ ULONG  cLimit);
+
+WIN32KAPI
+VOID
+DDKAPI
+WNDOBJ_vSetConsumer(
+  /*IN*/ WNDOBJ  *pwo,
+  /*IN*/ PVOID  pvConsumer);
+
+/* XFORMOBJ_bApplyXform.iMode constants */
+#define XF_LTOL                           0L
+#define XF_INV_LTOL                       1L
+#define XF_LTOFX                          2L
+#define XF_INV_FXTOL                      3L
+
+WIN32KAPI
+BOOL
+DDKAPI
+XFORMOBJ_bApplyXform(
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cPoints,
+  /*IN*/ PVOID  pvIn,
+
+  /*OUT*/ PVOID  pvOut);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XFORMOBJ_iGetFloatObjXform(
+  /*IN*/ XFORMOBJ  *pxo,
+
+  /*OUT*/ FLOATOBJ_XFORM  *pxfo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XFORMOBJ_iGetXform(
+  /*IN*/ XFORMOBJ  *pxo,
+
+  /*OUT*/ XFORML  *pxform);
+
+/* XLATEOBJ_cGetPalette.iPal constants */
+#define XO_SRCPALETTE                     1
+#define XO_DESTPALETTE                    2
+#define XO_DESTDCPALETTE                  3
+#define XO_SRCBITFIELDS                   4
+#define XO_DESTBITFIELDS                  5
+
+WIN32KAPI
+ULONG
+DDKAPI
+XLATEOBJ_cGetPalette(
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iPal,
+  /*IN*/ ULONG  cPal,
+
+  /*OUT*/ ULONG  *pPal);
+
+WIN32KAPI
+HANDLE
+DDKAPI
+XLATEOBJ_hGetColorTransform(
+  /*IN*/ XLATEOBJ  *pxlo);
+
+WIN32KAPI
+ULONG
+DDKAPI
+XLATEOBJ_iXlate(
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iColor);
+
+WIN32KAPI
+ULONG*
+DDKAPI
+XLATEOBJ_piVector(
+  /*IN*/ XLATEOBJ  *pxlo);
+
+
+
+/* Graphics Driver Functions */
+
+BOOL
+DDKAPI
+DrvAlphaBlend(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+BOOL
+DDKAPI
+DrvAssertMode(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ BOOL  bEnable);
+
+BOOL
+DDKAPI
+DrvBitBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+VOID
+DDKAPI
+DrvCompletePDEV(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HDEV  hdev);
+
+BOOL
+DDKAPI
+DrvCopyBits(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+HBITMAP
+DDKAPI
+DrvCreateDeviceBitmap(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormat);
+
+VOID
+DDKAPI
+DrvDeleteDeviceBitmap(
+  /*IN*/ DHSURF  dhsurf);
+
+HBITMAP
+DDKAPI
+DrvDeriveSurface(
+  DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
+  DD_SURFACE_LOCAL  *pSurface);
+
+LONG
+DDKAPI
+DrvDescribePixelFormat(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ ULONG  cjpfd,
+
+  /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
+
+VOID
+DDKAPI
+DrvDestroyFont(
+  /*IN*/ FONTOBJ  *pfo);
+
+VOID
+DDKAPI
+DrvDisableDriver(
+  VOID);
+
+VOID
+DDKAPI
+DrvDisablePDEV(
+  /*IN*/ DHPDEV  dhpdev);
+
+VOID
+DDKAPI
+DrvDisableSurface(
+  /*IN*/ DHPDEV  dhpdev);
+
+#define DM_DEFAULT                        0x00000001
+#define DM_MONOCHROME                     0x00000002
+
+ULONG
+DDKAPI
+DrvDitherColor(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+ULONG
+DDKAPI
+DrvDrawEscape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn);
+
+BOOL
+DDKAPI
+DrvEnableDriver(
+  /*IN*/ ULONG  iEngineVersion,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ DRVENABLEDATA  *pded);
+
+DHPDEV
+DDKAPI
+DrvEnablePDEV(
+  /*IN*/ DEVMODEW  *pdm,
+  /*IN*/ LPWSTR  pwszLogAddress,
+  /*IN*/ ULONG  cPat,
+
+  /*OUT*/ HSURF  *phsurfPatterns,
+  /*IN*/ ULONG  cjCaps,
+
+  /*OUT*/ ULONG  *pdevcaps,
+  /*IN*/ ULONG  cjDevInfo,
+
+  /*OUT*/ DEVINFO  *pdi,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ LPWSTR  pwszDeviceName,
+  /*IN*/ HANDLE  hDriver);
+
+HSURF
+DDKAPI
+DrvEnableSurface(
+  /*IN*/ DHPDEV  dhpdev);
+
+/* DrvEndDoc.fl constants */
+#define ED_ABORTDOC                       0x00000001
+
+BOOL
+DDKAPI
+DrvEndDoc(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FLONG  fl);
+
+ULONG
+DDKAPI
+DrvEscape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+BOOL
+DDKAPI
+DrvFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+ULONG
+DDKAPI
+DrvFontManagement(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+VOID
+DDKAPI
+DrvFree(
+  /*IN*/ PVOID  pv,
+  /*IN*/ ULONG_PTR  id);
+
+/* DrvGetGlyphMode return values */
+#define FO_HGLYPHS                        0L
+#define FO_GLYPHBITS                      1L
+#define FO_PATHOBJ                        2L
+
+ULONG
+DDKAPI
+DrvGetGlyphMode(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo);
+
+ULONG
+DDKAPI
+DrvGetModes(
+  /*IN*/ HANDLE  hDriver,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ DEVMODEW  *pdm);
+
+PVOID
+DDKAPI
+DrvGetTrueTypeFile(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  *pcj);
+
+BOOL
+DDKAPI
+DrvGradientFill(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+BOOL
+DDKAPI
+DrvIcmCheckBitmapBits(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hColorTransform,
+  /*IN*/ SURFOBJ  *pso,
+
+  /*OUT*/ PBYTE  paResults);
+
+HANDLE
+DDKAPI
+DrvIcmCreateColorTransform(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
+  /*IN*/ PVOID  pvSourceProfile,
+  /*IN*/ ULONG  cjSourceProfile,
+  /*IN*/ PVOID  pvDestProfile,
+  /*IN*/ ULONG  cjDestProfile,
+  /*IN*/ PVOID  pvTargetProfile,
+  /*IN*/ ULONG  cjTargetProfile,
+  /*IN*/ DWORD  dwReserved);
+
+BOOL
+DDKAPI
+DrvIcmDeleteColorTransform(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hcmXform);
+
+/* DrvIcmSetDeviceGammaRamp.iFormat constants */
+#define IGRF_RGB_256BYTES                 0x00000000
+#define IGRF_RGB_256WORDS                 0x00000001
+
+BOOL
+DDKAPI
+DrvIcmSetDeviceGammaRamp(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ LPVOID  lpRamp);
+
+BOOL
+DDKAPI
+DrvLineTo(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+ULONG_PTR
+DDKAPI
+DrvLoadFontFile(
+  ULONG  cFiles,
+  ULONG_PTR  *piFile,
+  PVOID  *ppvView,
+  ULONG  *pcjView,
+  DESIGNVECTOR  *pdv,
+  ULONG  ulLangID,
+  ULONG  ulFastCheckSum);
+
+VOID
+DDKAPI
+DrvMovePointer(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+BOOL
+DDKAPI
+DrvNextBand(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+VOID
+DDKAPI
+DrvNotify(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iType,
+  /*IN*/ PVOID  pvData);
+
+BOOL
+DDKAPI
+DrvOffset(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ FLONG  flReserved);
+
+BOOL
+DDKAPI
+DrvPaint(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvPlgBlt(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+/* DrvQueryAdvanceWidths.iMode constants */
+#define QAW_GETWIDTHS                     0
+#define QAW_GETEASYWIDTHS                 1
+
+BOOL
+DDKAPI
+DrvQueryAdvanceWidths(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  pvWidths,
+  /*IN*/ ULONG  cGlyphs);
+
+/* DrvQueryDeviceSupport.iType constants */
+#define QDS_CHECKJPEGFORMAT               0x00000000
+#define QDS_CHECKPNGFORMAT                0x00000001
+
+BOOL
+DDKAPI
+DrvQueryDeviceSupport(
+  SURFOBJ  *pso,
+  XLATEOBJ  *pxlo,
+  XFORMOBJ  *pxo,
+  ULONG  iType,
+  ULONG  cjIn,
+  PVOID  pvIn,
+  ULONG  cjOut,
+  PVOID  pvOut);
+
+/* DrvQueryDriverInfo.dwMode constants */
+#define DRVQUERY_USERMODE                 0x00000001
+
+BOOL
+DDKAPI
+DrvQueryDriverInfo(
+  DWORD  dwMode,
+  PVOID  pBuffer,
+  DWORD  cbBuf,
+  PDWORD  pcbNeeded);
+
+PIFIMETRICS
+DDKAPI
+DrvQueryFont(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG_PTR  *pid);
+
+/* DrvQueryFontCaps.pulCaps constants */
+#define QC_OUTLINES                       0x00000001
+#define QC_1BIT                           0x00000002
+#define QC_4BIT                           0x00000004
+
+#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
+
+LONG
+DDKAPI
+DrvQueryFontCaps(
+  /*IN*/ ULONG  culCaps,
+
+  /*OUT*/ ULONG  *pulCaps);
+
+/* DrvQueryFontData.iMode constants */
+#define QFD_GLYPHANDBITMAP                1L
+#define QFD_GLYPHANDOUTLINE               2L
+#define QFD_MAXEXTENTS                    3L
+#define QFD_TT_GLYPHANDBITMAP             4L
+#define QFD_TT_GRAY1_BITMAP               5L
+#define QFD_TT_GRAY2_BITMAP               6L
+#define QFD_TT_GRAY4_BITMAP               8L
+#define QFD_TT_GRAY8_BITMAP               9L
+
+#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
+
+LONG
+DDKAPI
+DrvQueryFontData(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  hg,
+  /*IN OUT*/ GLYPHDATA  *pgd,
+  /*IN OUT*/ PVOID  pv,
+  /*IN*/ ULONG  cjSize);
+
+/* DrvQueryFontFile.ulMode constants */
+#define QFF_DESCRIPTION                   0x00000001
+#define QFF_NUMFACES                      0x00000002
+
+LONG
+DDKAPI
+DrvQueryFontFile(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulMode,
+  /*IN*/ ULONG  cjBuf,
+  /*IN*/ ULONG  *pulBuf);
+
+/* DrvQueryFontTree.iMode constants */
+#define QFT_UNICODE                       0L
+#define QFT_LIGATURES                     1L
+#define QFT_KERNPAIRS                     2L
+#define QFT_GLYPHSET                      3L
+
+PVOID
+DDKAPI
+DrvQueryFontTree(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  *pid);
+
+PFD_GLYPHATTR
+DDKAPI
+DrvQueryGlyphAttrs(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+ULONG
+DDKAPI
+DrvQueryPerBandInfo(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN OUT*/ PERBANDINFO  *pbi);
+
+/* DrvQueryTrueTypeOutline.bMetricsOnly constants */
+#define TTO_METRICS_ONLY                  0x00000001
+#define TTO_QUBICS                        0x00000002
+#define TTO_UNHINTED                      0x00000004
+
+LONG
+DDKAPI
+DrvQueryTrueTypeOutline(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ HGLYPH  hglyph,
+  /*IN*/ BOOL  bMetricsOnly,
+  /*IN*/ GLYPHDATA  *pgldt,
+  /*IN*/ ULONG  cjBuf,
+
+  /*OUT*/ TTPOLYGONHEADER  *ppoly);
+
+LONG
+DDKAPI
+DrvQueryTrueTypeTable(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulFont,
+  /*IN*/ ULONG  ulTag,
+  /*IN*/ PTRDIFF  dpStart,
+  /*IN*/ ULONG  cjBuf,
+
+  /*OUT*/ BYTE  *pjBuf,
+
+  /*OUT*/ PBYTE  *ppjTable,
+
+  /*OUT*/ ULONG *pcjTable);
+
+/* DrvRealizeBrush.iHatch constants */
+#define RB_DITHERCOLOR                    0x80000000L
+
+#define HS_DDI_MAX                        6
+
+BOOL
+DDKAPI
+DrvRealizeBrush(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ SURFOBJ  *psoTarget,
+  /*IN*/ SURFOBJ  *psoPattern,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iHatch);
+
+/* DrvResetDevice return values */
+#define DRD_SUCCESS                       0
+#define DRD_ERROR                         1
+
+ULONG
+DDKAPI
+DrvResetDevice(
+  /*IN*/ DHPDEV dhpdev,
+  /*IN*/ PVOID Reserved);
+
+BOOL
+DDKAPI
+DrvResetPDEV(
+  DHPDEV  dhpdevOld,
+  DHPDEV  dhpdevNew);
+
+/* DrvSaveScreenBits.iMode constants */
+#define SS_SAVE                           0x00000000
+#define SS_RESTORE                        0x00000001
+#define SS_FREE                           0x00000002
+
+ULONG_PTR
+DDKAPI
+DrvSaveScreenBits(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  ident,
+  /*IN*/ RECTL  *prcl);
+
+BOOL
+DDKAPI
+DrvSendPage(
+  /*IN*/ SURFOBJ  *pso);
+
+BOOL
+DDKAPI
+DrvSetPalette(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ FLONG  fl,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors);
+
+BOOL
+DDKAPI
+DrvSetPixelFormat(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ HWND  hwnd);
+
+/* DrvSetPointerShape return values */
+#define SPS_ERROR                         0x00000000
+#define SPS_DECLINE                       0x00000001
+#define SPS_ACCEPT_NOEXCLUDE              0x00000002
+#define SPS_ACCEPT_EXCLUDE                0x00000003
+#define SPS_ACCEPT_SYNCHRONOUS            0x00000004
+
+/* DrvSetPointerShape.fl constants */
+#define SPS_CHANGE                        0x00000001L
+#define SPS_ASYNCCHANGE                   0x00000002L
+#define SPS_ANIMATESTART                  0x00000004L
+#define SPS_ANIMATEUPDATE                 0x00000008L
+#define SPS_ALPHA                         0x00000010L
+#define SPS_LENGTHMASK                    0x00000F00L
+#define SPS_FREQMASK                      0x000FF000L
+
+ULONG
+DDKAPI
+DrvSetPointerShape(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+BOOL
+DDKAPI
+DrvStartBanding(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+BOOL
+DDKAPI
+DrvStartDoc(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LPWSTR  pwszDocName,
+  /*IN*/ DWORD  dwJobId);
+
+BOOL
+DDKAPI
+DrvStartPage(
+  /*IN*/ SURFOBJ  *pso);
+
+BOOL
+DDKAPI
+DrvStretchBlt(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+BOOL
+DDKAPI
+DrvStretchBltROP(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+BOOL
+DDKAPI
+DrvStrokeAndFillPath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+BOOL
+DDKAPI
+DrvStrokePath(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvSwapBuffers(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ WNDOBJ  *pwo);
+
+VOID
+DDKAPI
+DrvSynchronize(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ RECTL  *prcl);
+
+/* DrvSynchronizeSurface.fl constants */
+#define DSS_TIMER_EVENT                   0x00000001
+#define DSS_FLUSH_EVENT                   0x00000002
+
+VOID
+DDKAPI
+DrvSynchronizeSurface(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+BOOL
+DDKAPI
+DrvTextOut(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+BOOL
+DDKAPI
+DrvTransparentBlt(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+BOOL
+DDKAPI
+DrvUnloadFontFile(
+  /*IN*/ ULONG_PTR  iFile);
+
+/* WNDOBJCHANGEPROC.fl constants */
+#define WOC_RGN_CLIENT_DELTA              0x00000001
+#define WOC_RGN_CLIENT                    0x00000002
+#define WOC_RGN_SURFACE_DELTA             0x00000004
+#define WOC_RGN_SURFACE                   0x00000008
+#define WOC_CHANGED                       0x00000010
+#define WOC_DELETE                        0x00000020
+#define WOC_DRAWN                         0x00000040
+#define WOC_SPRITE_OVERLAP                0x00000080
+#define WOC_SPRITE_NO_OVERLAP             0x00000100
+
+typedef VOID DDKAPI
+(CALLBACK * WNDOBJCHANGEPROC)(
+  WNDOBJ  *pwo,
+  FLONG  fl);
+
+
+typedef BOOL DDKAPI
+(*PFN_DrvAlphaBlend)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ BLENDOBJ  *pBlendObj);
+
+typedef BOOL DDKAPI
+(*PFN_DrvAssertMode)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ BOOL  bEnable);
+
+typedef BOOL DDKAPI
+(*PFN_DrvBitBlt)(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclTrg,
+  /*IN*/ POINTL  *pptlSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrush,
+  /*IN*/ ROP4  rop4);
+
+typedef VOID DDKAPI
+(*PFN_DrvCompletePDEV)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HDEV  hdev);
+
+typedef BOOL DDKAPI
+(*PFN_DrvCopyBits)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ POINTL  *pptlSrc);
+
+typedef HBITMAP DDKAPI
+(*PFN_DrvCreateDeviceBitmap)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ SIZEL  sizl,
+  /*IN*/ ULONG  iFormat);
+
+typedef VOID DDKAPI
+(*PFN_DrvDeleteDeviceBitmap)(
+  /*IN*/ DHSURF  dhsurf);
+
+typedef HBITMAP DDKAPI
+(*PFN_DrvDeriveSurface)(
+  DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
+  DD_SURFACE_LOCAL  *pSurface);
+
+typedef LONG DDKAPI
+(*PFN_DrvDescribePixelFormat)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ ULONG  cjpfd,
+
+  /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
+
+typedef VOID DDKAPI
+(*PFN_DrvDestroyFont)(
+  /*IN*/ FONTOBJ  *pfo);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisableDriver)(
+  VOID);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisablePDEV)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef VOID DDKAPI
+(*PFN_DrvDisableSurface)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef ULONG DDKAPI
+(*PFN_DrvDitherColor)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  rgb,
+
+  /*OUT*/ ULONG  *pul);
+
+typedef ULONG DDKAPI
+(*PFN_DrvDrawEscape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn);
+
+typedef BOOL DDKAPI
+(*PFN_DrvEnableDriver)(
+  /*IN*/ ULONG  iEngineVersion,
+  /*IN*/ ULONG  cj,
+
+  /*OUT*/ DRVENABLEDATA  *pded);
+#if 0
+typedef DHPDEV DDKAPI
+(*PFN_DrvEnablePDEV)(
+  /*IN*/ DEVMODEW  *pdm,
+  /*IN*/ LPWSTR  pwszLogAddress,
+  /*IN*/ ULONG  cPat,
+
+  /*OUT*/ HSURF  *phsurfPatterns,
+  /*IN*/ ULONG  cjCaps,
+
+  /*OUT*/ ULONG  *pdevcaps,
+  /*IN*/ ULONG  cjDevInfo,
+
+  /*OUT*/ DEVINFO  *pdi,
+  /*IN*/ HDEV  hdev,
+  /*IN*/ LPWSTR  pwszDeviceName,
+  /*IN*/ HANDLE  hDriver);
+#endif
+typedef HSURF DDKAPI
+(*PFN_DrvEnableSurface)(
+  /*IN*/ DHPDEV  dhpdev);
+
+typedef BOOL DDKAPI
+(*PFN_DrvEndDoc)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FLONG  fl);
+
+typedef ULONG DDKAPI
+(*PFN_DrvEscape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iEsc,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+typedef BOOL DDKAPI
+(*PFN_DrvFillPath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix,
+  /*IN*/ FLONG  flOptions);
+
+typedef ULONG DDKAPI
+(*PFN_DrvFontManagement)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG  cjIn,
+  /*IN*/ PVOID  pvIn,
+  /*IN*/ ULONG  cjOut,
+
+  /*OUT*/ PVOID  pvOut);
+
+typedef VOID DDKAPI
+(*PFN_DrvFree)(
+  /*IN*/ PVOID  pv,
+  /*IN*/ ULONG_PTR  id);
+
+typedef ULONG DDKAPI
+(*PFN_DrvGetGlyphMode)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo);
+
+typedef ULONG DDKAPI
+(*PFN_DrvGetModes)(
+  /*IN*/ HANDLE  hDriver,
+  /*IN*/ ULONG  cjSize,
+
+  /*OUT*/ DEVMODEW  *pdm);
+
+typedef PVOID DDKAPI
+(*PFN_DrvGetTrueTypeFile)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  *pcj);
+
+typedef BOOL DDKAPI
+(*PFN_DrvGradientFill)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ TRIVERTEX  *pVertex,
+  /*IN*/ ULONG  nVertex,
+  /*IN*/ PVOID  pMesh,
+  /*IN*/ ULONG  nMesh,
+  /*IN*/ RECTL  *prclExtents,
+  /*IN*/ POINTL  *pptlDitherOrg,
+  /*IN*/ ULONG  ulMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmCheckBitmapBits)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hColorTransform,
+  /*IN*/ SURFOBJ  *pso,
+
+  /*OUT*/ PBYTE  paResults);
+
+typedef HANDLE DDKAPI
+(*PFN_DrvIcmCreateColorTransform)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
+  /*IN*/ PVOID  pvSourceProfile,
+  /*IN*/ ULONG  cjSourceProfile,
+  /*IN*/ PVOID  pvDestProfile,
+  /*IN*/ ULONG  cjDestProfile,
+  /*IN*/ PVOID  pvTargetProfile,
+  /*IN*/ ULONG  cjTargetProfile,
+  /*IN*/ DWORD  dwReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmDeleteColorTransform)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ HANDLE  hcmXform);
+
+typedef BOOL DDKAPI
+(*PFN_DrvIcmSetDeviceGammaRamp)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG  iFormat,
+  /*IN*/ LPVOID  lpRamp);
+
+typedef BOOL DDKAPI
+(*PFN_DrvLineTo)(
+  SURFOBJ  *pso,
+  CLIPOBJ  *pco,
+  BRUSHOBJ  *pbo,
+  LONG  x1,
+  LONG  y1,
+  LONG  x2,
+  LONG  y2,
+  RECTL  *prclBounds,
+  MIX  mix);
+
+typedef ULONG_PTR DDKAPI
+(*PFN_DrvLoadFontFile)(
+  ULONG  cFiles,
+  ULONG_PTR  *piFile,
+  PVOID  *ppvView,
+  ULONG  *pcjView,
+  DESIGNVECTOR  *pdv,
+  ULONG  ulLangID,
+  ULONG  ulFastCheckSum);
+
+typedef VOID DDKAPI
+(*PFN_DrvMovePointer)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvNextBand)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+typedef VOID DDKAPI
+(*PFN_DrvNotify)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iType,
+  /*IN*/ PVOID  pvData);
+
+typedef BOOL DDKAPI
+(*PFN_DrvOffset)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ FLONG  flReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvPaint)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvPlgBlt)(
+  /*IN*/ SURFOBJ  *psoTrg,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMsk,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ POINTFIX  *pptfx,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ POINTL  *pptl,
+  /*IN*/ ULONG  iMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryAdvanceWidths)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  *phg,
+
+  /*OUT*/ PVOID  pvWidths,
+  /*IN*/ ULONG  cGlyphs);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryDeviceSupport)(
+  SURFOBJ  *pso,
+  XLATEOBJ  *pxlo,
+  XFORMOBJ  *pxo,
+  ULONG  iType,
+  ULONG  cjIn,
+  PVOID  pvIn,
+  ULONG  cjOut,
+  PVOID  pvOut);
+
+typedef BOOL DDKAPI
+(*PFN_DrvQueryDriverInfo)(
+  DWORD  dwMode,
+  PVOID  pBuffer,
+  DWORD  cbBuf,
+  PDWORD  pcbNeeded);
+
+typedef PIFIMETRICS DDKAPI
+(*PFN_DrvQueryFont)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG_PTR  *pid);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontCaps)(
+  /*IN*/ ULONG  culCaps,
+
+  /*OUT*/ ULONG  *pulCaps);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontData)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ HGLYPH  hg,
+  /*IN OUT*/ GLYPHDATA  *pgd,
+  /*IN OUT*/ PVOID  pv,
+  /*IN*/ ULONG  cjSize);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryFontFile)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulMode,
+  /*IN*/ ULONG  cjBuf,
+  /*IN*/ ULONG  *pulBuf);
+
+typedef PVOID DDKAPI
+(*PFN_DrvQueryFontTree)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  iFace,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  *pid);
+
+typedef PFD_GLYPHATTR DDKAPI
+(*PFN_DrvQueryGlyphAttrs)(
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ ULONG  iMode);
+
+typedef ULONG DDKAPI
+(*PFN_DrvQueryPerBandInfo)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN OUT*/ PERBANDINFO  *pbi);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryTrueTypeOutline)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ HGLYPH  hglyph,
+  /*IN*/ BOOL  bMetricsOnly,
+  /*IN*/ GLYPHDATA  *pgldt,
+  /*IN*/ ULONG  cjBuf,
+  /*OUT*/ TTPOLYGONHEADER  *ppoly);
+
+typedef LONG DDKAPI
+(*PFN_DrvQueryTrueTypeTable)(
+  /*IN*/ ULONG_PTR  iFile,
+  /*IN*/ ULONG  ulFont,
+  /*IN*/ ULONG  ulTag,
+  /*IN*/ PTRDIFF  dpStart,
+  /*IN*/ ULONG  cjBuf,
+  /*OUT*/ BYTE  *pjBuf,
+  /*OUT*/ PBYTE  *ppjTable,
+  /*OUT*/ ULONG *pcjTable);
+
+typedef BOOL DDKAPI
+(*PFN_DrvRealizeBrush)(
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ SURFOBJ  *psoTarget,
+  /*IN*/ SURFOBJ  *psoPattern,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ ULONG  iHatch);
+
+typedef ULONG DDKAPI
+(*PFN_DrvResetDevice)(
+  /*IN*/ DHPDEV dhpdev,
+  /*IN*/ PVOID Reserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvResetPDEV)(
+  DHPDEV  dhpdevOld,
+  DHPDEV  dhpdevNew);
+
+typedef ULONG_PTR DDKAPI
+(*PFN_DrvSaveScreenBits)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ ULONG_PTR  ident,
+  /*IN*/ RECTL  *prcl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSendPage)(
+  /*IN*/ SURFOBJ  *pso);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSetPalette)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ PALOBJ  *ppalo,
+  /*IN*/ FLONG  fl,
+  /*IN*/ ULONG  iStart,
+  /*IN*/ ULONG  cColors);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSetPixelFormat)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LONG  iPixelFormat,
+  /*IN*/ HWND  hwnd);
+
+typedef ULONG DDKAPI
+(*PFN_DrvSetPointerShape)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ SURFOBJ  *psoColor,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ LONG  xHot,
+  /*IN*/ LONG  yHot,
+  /*IN*/ LONG  x,
+  /*IN*/ LONG  y,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartBanding)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ POINTL  *pptl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartDoc)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ LPWSTR  pwszDocName,
+  /*IN*/ DWORD  dwJobId);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStartPage)(
+  /*IN*/ SURFOBJ  *pso);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStretchBlt)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStretchBltROP)(
+  /*IN*/ SURFOBJ  *psoDest,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ SURFOBJ  *psoMask,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ COLORADJUSTMENT  *pca,
+  /*IN*/ POINTL  *pptlHTOrg,
+  /*IN*/ RECTL  *prclDest,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ POINTL  *pptlMask,
+  /*IN*/ ULONG  iMode,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ DWORD  rop4);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStrokeAndFillPath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pboStroke,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ BRUSHOBJ  *pboFill,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ MIX  mixFill,
+  /*IN*/ FLONG  flOptions);
+
+typedef BOOL DDKAPI
+(*PFN_DrvStrokePath)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ PATHOBJ  *ppo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XFORMOBJ  *pxo,
+  /*IN*/ BRUSHOBJ  *pbo,
+  /*IN*/ POINTL  *pptlBrushOrg,
+  /*IN*/ LINEATTRS  *plineattrs,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvSwapBuffers)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ WNDOBJ  *pwo);
+
+typedef VOID DDKAPI
+(*PFN_DrvSynchronize)(
+  /*IN*/ DHPDEV  dhpdev,
+  /*IN*/ RECTL  *prcl);
+
+typedef VOID DDKAPI
+(*PFN_DrvSynchronizeSurface)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ RECTL  *prcl,
+  /*IN*/ FLONG  fl);
+
+typedef BOOL DDKAPI
+(*PFN_DrvTextOut)(
+  /*IN*/ SURFOBJ  *pso,
+  /*IN*/ STROBJ  *pstro,
+  /*IN*/ FONTOBJ  *pfo,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ RECTL  *prclExtra,
+  /*IN*/ RECTL  *prclOpaque,
+  /*IN*/ BRUSHOBJ  *pboFore,
+  /*IN*/ BRUSHOBJ  *pboOpaque,
+  /*IN*/ POINTL  *pptlOrg,
+  /*IN*/ MIX  mix);
+
+typedef BOOL DDKAPI
+(*PFN_DrvTransparentBlt)(
+  /*IN*/ SURFOBJ  *psoDst,
+  /*IN*/ SURFOBJ  *psoSrc,
+  /*IN*/ CLIPOBJ  *pco,
+  /*IN*/ XLATEOBJ  *pxlo,
+  /*IN*/ RECTL  *prclDst,
+  /*IN*/ RECTL  *prclSrc,
+  /*IN*/ ULONG  iTransColor,
+  /*IN*/ ULONG  ulReserved);
+
+typedef BOOL DDKAPI
+(*PFN_DrvUnloadFontFile)(
+  /*IN*/ ULONG_PTR  iFile);
+
+
+WIN32KAPI
+VOID
+DDKAPI
+DrvDisableDirectDraw(
+  /*IN*/ DHPDEV  dhpdev);
+
+WIN32KAPI
+BOOL
+DDKAPI
+DrvEnableDirectDraw(
+  /*IN*/ DHPDEV  dhpdev,
+  /*OUT*/ DD_CALLBACKS  *pCallBacks,
+  /*OUT*/ DD_SURFACECALLBACKS  *pSurfaceCallBacks,
+  /*OUT*/ DD_PALETTECALLBACKS  *pPaletteCallBacks);
+
+WIN32KAPI
+BOOL
+DDKAPI
+DrvGetDirectDrawInfo(
+  /*IN*/ DHPDEV  dhpdev,
+  /*OUT*/ DD_HALINFO  *pHalInfo,
+  /*OUT*/ DWORD  *pdwNumHeaps,
+  /*OUT*/ VIDEOMEMORY  *pvmList,
+  /*OUT*/ DWORD  *pdwNumFourCCCodes,
+  /*OUT*/ DWORD  *pdwFourCC);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined __VIDEO_H */
+
+#endif /* __WINDDI_H */