-\r
-#ifndef __WIN32K_DRIVER_H\r
-#define __WIN32K_DRIVER_H\r
-\r
-#include <winddi.h>\r
-\r
-typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);\r
-typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *,\r
- LPWSTR,\r
- ULONG,\r
- HSURF *,\r
- ULONG,\r
- ULONG *,\r
- ULONG,\r
- DEVINFO *,\r
- LPWSTR,\r
- LPWSTR,\r
- HANDLE);\r
-typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);\r
-typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV); \r
-typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);\r
-typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);\r
-typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);\r
-typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);\r
-typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);\r
-typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);\r
-typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG); \r
-typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF); \r
-typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);\r
-typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*,\r
- XLATEOBJ*, ULONG); \r
-typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG); \r
-typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*,\r
- BRUSHOBJ*, POINTL*, PLINEATTRS, MIX); \r
-typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*,\r
- POINTL*, MIX, ULONG); \r
-typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*,\r
- XFORMOBJ*, BRUSHOBJ*, PLINEATTRS,\r
- BRUSHOBJ*, POINTL*, MIX, ULONG); \r
-typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX); \r
-typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,\r
- XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*,\r
- POINTL*, ROP4); \r
-typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,\r
- RECTL*, RECTL*, ULONG, ULONG);\r
-typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,\r
- RECTL*, POINTL*); \r
-typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,\r
- XLATEOBJ*, COLORADJUSTMENT*, POINTL*,\r
- RECTL*, RECTL*, POINTL*, ULONG);\r
-typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,\r
- XLATEOBJ*, COLORADJUSTMENT*, POINTL*,\r
- RECTL*, RECTL*, POINTL*, ULONG,\r
- BRUSHOBJ*, DWORD);\r
-typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG); \r
-typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*,\r
- RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX); \r
-typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *); \r
-typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, \r
- PVOID *); \r
-typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG); \r
-typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG); \r
-typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*,\r
- PVOID, ULONG); \r
-typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*,\r
- LONG, LONG, LONG, LONG, RECTL*, ULONG); \r
-typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*); \r
-typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG,\r
- LONG, RECTL*, MIX);\r
-typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);\r
-typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);\r
-typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);\r
-typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);\r
-typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);\r
-typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);\r
-typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);\r
-typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);\r
-typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);\r
-typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);\r
-typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);\r
-typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);\r
-typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);\r
-typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID,\r
- ULONG, PVOID);\r
-typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,\r
- PBYTE);\r
-typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL,\r
- GLYPHDATA*, ULONG, TTPOLYGONHEADER*);\r
-typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);\r
-typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);\r
-typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *,\r
- PVOID *, ULONG);\r
-typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);\r
-typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,\r
- PPIXELFORMATDESCRIPTOR);\r
-typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);\r
-typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);\r
-typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);\r
-\r
-typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);\r
-typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);\r
-typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);\r
-\r
-typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);\r
-\r
-typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);\r
-\r
-typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);\r
-\r
-typedef struct _DRIVER_FUNCTIONS\r
-{\r
- PGD_ENABLEDRIVER EnableDriver;\r
- PGD_ENABLEPDEV EnablePDEV;\r
- PGD_COMPLETEPDEV CompletePDEV;\r
- PGD_DISABLEPDEV DisablePDEV;\r
- PGD_ENABLESURFACE EnableSurface;\r
- PGD_DISABLESURFACE DisableSurface;\r
- PGD_ASSERTMODE AssertMode;\r
- PGD_OFFSET Offset;\r
- PGD_RESETPDEV ResetPDEV;\r
- PGD_DISABLEDRIVER DisableDriver;\r
- PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;\r
- PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;\r
- PGD_REALIZEBRUSH RealizeBrush;\r
- PGD_DITHERCOLOR DitherColor;\r
- PGD_STROKEPATH StrokePath;\r
- PGD_FILLPATH FillPath;\r
- PGD_STROKEANDFILLPATH StrokeAndFillPath;\r
- PGD_PAINT Paint;\r
- PGD_BITBLT BitBlt;\r
- PGD_TRANSPARENTBLT TransparentBlt;\r
- PGD_COPYBITS CopyBits;\r
- PGD_STRETCHBLT StretchBlt;\r
- PGD_STRETCHBLTROP StretchBltROP;\r
- PGD_SETPALETTE SetPalette;\r
- PGD_TEXTOUT TextOut;\r
- PGD_ESCAPE Escape;\r
- PGD_DRAWESCAPE DrawEscape;\r
- PGD_QUERYFONT QueryFont;\r
- PGD_QUERYFONTTREE QueryFontTree;\r
- PGD_QUERYFONTDATA QueryFontData;\r
- PGD_SETPOINTERSHAPE SetPointerShape;\r
- PGD_MOVEPOINTER MovePointer;\r
- PGD_LINETO LineTo;\r
- PGD_SENDPAGE SendPage;\r
- PGD_STARTPAGE StartPage;\r
- PGD_ENDDOC EndDoc;\r
- PGD_STARTDOC StartDoc;\r
- PGD_GETGLYPHMODE GetGlyphMode;\r
- PGD_SYNCHRONIZE Synchronize;\r
- PGD_SAVESCREENBITS SaveScreenBits;\r
- PGD_GETMODES GetModes;\r
- PGD_FREE Free;\r
- PGD_DESTROYFONT DestroyFont;\r
- PGD_QUERYFONTCAPS QueryFontCaps;\r
- PGD_LOADFONTFILE LoadFontFile;\r
- PGD_UNLOADFONTFILE UnloadFontFile;\r
- PGD_FONTMANAGEMENT FontManagement;\r
- PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;\r
- PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;\r
- PGD_GETTRUETYPEFILE GetTrueTypeFile;\r
- PGD_QUERYFONTFILE QueryFontFile;\r
- PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;\r
- PGD_SETPIXELFORMAT SetPixelFormat;\r
- PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;\r
- PGD_SWAPBUFFERS SwapBuffers;\r
- PGD_STARTBANDING StartBanding;\r
- PGD_NEXTBAND NextBand;\r
- PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;\r
- PGD_ENABLEDIRECTDRAW EnableDirectDraw;\r
- PGD_DISABLEDIRECTDRAW DisableDirectDraw;\r
- PGD_QUERYSPOOLTYPE QuerySpoolType;\r
- PGD_GRADIENTFILL GradientFill;\r
- PGD_SYNCHRONIZESURFACE SynchronizeSurface;\r
- PGD_ALPHABLEND AlphaBlend;\r
-} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;\r
-\r
-BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);\r
-PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);\r
-PFILE_OBJECT DRIVER_FindMPDriver(ULONG DisplayNumber);\r
-BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED, \r
- PDRIVER_FUNCTIONS DF);\r
-BOOL DRIVER_UnregisterDriver(LPCWSTR Name);\r
-INT DRIVER_ReferenceDriver (LPCWSTR Name);\r
-INT DRIVER_UnreferenceDriver (LPCWSTR Name);\r
-\r
-#endif\r
-\r
+
+#ifndef __WIN32K_DRIVER_H
+#define __WIN32K_DRIVER_H
+
+#include <winddi.h>
+
+typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
+typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *,
+ LPWSTR,
+ ULONG,
+ HSURF *,
+ ULONG,
+ ULONG *,
+ ULONG,
+ DEVINFO *,
+ LPWSTR,
+ LPWSTR,
+ HANDLE);
+typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
+typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV);
+typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);
+typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);
+typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);
+typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
+typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);
+typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);
+typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
+typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF);
+typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
+typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*,
+ XLATEOBJ*, ULONG);
+typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
+typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*,
+ BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
+typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*,
+ POINTL*, MIX, ULONG);
+typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*,
+ XFORMOBJ*, BRUSHOBJ*, PLINEATTRS,
+ BRUSHOBJ*, POINTL*, MIX, ULONG);
+typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
+typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
+ XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*,
+ POINTL*, ROP4);
+typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
+ RECTL*, RECTL*, ULONG, ULONG);
+typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
+ RECTL*, POINTL*);
+typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
+ XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
+ RECTL*, RECTL*, POINTL*, ULONG);
+typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
+ XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
+ RECTL*, RECTL*, POINTL*, ULONG,
+ BRUSHOBJ*, DWORD);
+typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
+typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*,
+ RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
+typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
+typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG,
+ PVOID *);
+typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
+typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
+typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*,
+ PVOID, ULONG);
+typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*,
+ LONG, LONG, LONG, LONG, RECTL*, ULONG);
+typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
+typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG,
+ LONG, RECTL*, MIX);
+typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);
+typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);
+typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);
+typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
+typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
+typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
+typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
+typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
+typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);
+typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);
+typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);
+typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
+typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);
+typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID,
+ ULONG, PVOID);
+typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
+ PBYTE);
+typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL,
+ GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
+typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
+typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
+typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *,
+ PVOID *, ULONG);
+typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
+typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
+ PPIXELFORMATDESCRIPTOR);
+typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
+typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
+typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
+
+typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
+typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
+typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);
+
+typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
+
+typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
+
+typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
+
+typedef struct _DRIVER_FUNCTIONS
+{
+ PGD_ENABLEDRIVER EnableDriver;
+ PGD_ENABLEPDEV EnablePDEV;
+ PGD_COMPLETEPDEV CompletePDEV;
+ PGD_DISABLEPDEV DisablePDEV;
+ PGD_ENABLESURFACE EnableSurface;
+ PGD_DISABLESURFACE DisableSurface;
+ PGD_ASSERTMODE AssertMode;
+ PGD_OFFSET Offset;
+ PGD_RESETPDEV ResetPDEV;
+ PGD_DISABLEDRIVER DisableDriver;
+ PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
+ PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
+ PGD_REALIZEBRUSH RealizeBrush;
+ PGD_DITHERCOLOR DitherColor;
+ PGD_STROKEPATH StrokePath;
+ PGD_FILLPATH FillPath;
+ PGD_STROKEANDFILLPATH StrokeAndFillPath;
+ PGD_PAINT Paint;
+ PGD_BITBLT BitBlt;
+ PGD_TRANSPARENTBLT TransparentBlt;
+ PGD_COPYBITS CopyBits;
+ PGD_STRETCHBLT StretchBlt;
+ PGD_STRETCHBLTROP StretchBltROP;
+ PGD_SETPALETTE SetPalette;
+ PGD_TEXTOUT TextOut;
+ PGD_ESCAPE Escape;
+ PGD_DRAWESCAPE DrawEscape;
+ PGD_QUERYFONT QueryFont;
+ PGD_QUERYFONTTREE QueryFontTree;
+ PGD_QUERYFONTDATA QueryFontData;
+ PGD_SETPOINTERSHAPE SetPointerShape;
+ PGD_MOVEPOINTER MovePointer;
+ PGD_LINETO LineTo;
+ PGD_SENDPAGE SendPage;
+ PGD_STARTPAGE StartPage;
+ PGD_ENDDOC EndDoc;
+ PGD_STARTDOC StartDoc;
+ PGD_GETGLYPHMODE GetGlyphMode;
+ PGD_SYNCHRONIZE Synchronize;
+ PGD_SAVESCREENBITS SaveScreenBits;
+ PGD_GETMODES GetModes;
+ PGD_FREE Free;
+ PGD_DESTROYFONT DestroyFont;
+ PGD_QUERYFONTCAPS QueryFontCaps;
+ PGD_LOADFONTFILE LoadFontFile;
+ PGD_UNLOADFONTFILE UnloadFontFile;
+ PGD_FONTMANAGEMENT FontManagement;
+ PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
+ PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
+ PGD_GETTRUETYPEFILE GetTrueTypeFile;
+ PGD_QUERYFONTFILE QueryFontFile;
+ PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
+ PGD_SETPIXELFORMAT SetPixelFormat;
+ PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
+ PGD_SWAPBUFFERS SwapBuffers;
+ PGD_STARTBANDING StartBanding;
+ PGD_NEXTBAND NextBand;
+ PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
+ PGD_ENABLEDIRECTDRAW EnableDirectDraw;
+ PGD_DISABLEDIRECTDRAW DisableDirectDraw;
+ PGD_QUERYSPOOLTYPE QuerySpoolType;
+ PGD_GRADIENTFILL GradientFill;
+ PGD_SYNCHRONIZESURFACE SynchronizeSurface;
+ PGD_ALPHABLEND AlphaBlend;
+} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
+
+BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
+PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);
+PFILE_OBJECT DRIVER_FindMPDriver(ULONG DisplayNumber);
+BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
+ PDRIVER_FUNCTIONS DF);
+BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
+INT DRIVER_ReferenceDriver (LPCWSTR Name);
+INT DRIVER_UnreferenceDriver (LPCWSTR Name);
+
+#endif
+