--- /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 */