set most of trunk svn property eol-style:native
[reactos.git] / reactos / subsystems / win32 / win32k / include / driver.h
index d6febdd..eff9cc9 100644 (file)
-\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
+