2 #ifndef __WIN32K_DRIVER_H
3 #define __WIN32K_DRIVER_H
5 #include <ddk/winddi.h>
7 typedef BOOL STDCALL (*PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
8 typedef DHPDEV STDCALL (*PGD_ENABLEPDEV)(DEVMODEW *,
19 typedef VOID STDCALL (*PGD_COMPLETEPDEV)(DHPDEV, HDEV);
20 typedef VOID STDCALL (*PGD_DISABLEPDEV)(DHPDEV);
21 typedef HSURF STDCALL (*PGD_ENABLESURFACE)(DHPDEV);
22 typedef VOID STDCALL (*PGD_DISABLESURFACE)(DHPDEV);
23 typedef BOOL STDCALL (*PGD_ASSERTMODE)(DHPDEV, BOOL);
24 typedef BOOL STDCALL (*PGD_RESETPDEV)(DHPDEV, DHPDEV);
25 typedef HBITMAP STDCALL (*PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
26 typedef VOID STDCALL (*PGD_DELETEDEVICEBITMAP)(DHSURF);
27 typedef BOOL STDCALL (*PGD_REALIZEBRUSH)(PBRUSHOBJ, PSURFOBJ, PSURFOBJ, PSURFOBJ,
29 typedef ULONG STDCALL (*PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
30 typedef BOOL STDCALL (*PGD_STROKEPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PXFORMOBJ,
31 PBRUSHOBJ, PPOINTL, PLINEATTRS, MIX);
32 typedef BOOL STDCALL (*PGD_FILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PBRUSHOBJ,
34 typedef BOOL STDCALL (*PGD_STROKEANDFILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ,
35 PXFORMOBJ, PBRUSHOBJ, PLINEATTRS,
36 PBRUSHOBJ, PPOINTL, MIX, ULONG);
37 typedef BOOL STDCALL (*PGD_PAINT)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, PPOINTL, MIX);
38 typedef BOOL STDCALL (*PGD_BITBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
39 PXLATEOBJ, PRECTL, PPOINTL, PPOINTL, PBRUSHOBJ,
41 typedef BOOL STDCALL (*PGD_TRANSPARENTBLT)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ, PRECTL, PRECTL, ULONG, ULONG);
42 typedef BOOL STDCALL (*PGD_COPYBITS)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ,
44 typedef BOOL STDCALL (*PGD_STRETCHBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
45 PXLATEOBJ, PCOLORADJUSTMENT, PPOINTL,
46 PRECTL, PRECTL, PPOINTL, ULONG);
47 typedef BOOL STDCALL (*PGD_SETPALETTE)(DHPDEV, PPALOBJ, ULONG, ULONG, ULONG);
48 typedef BOOL STDCALL (*PGD_TEXTOUT)(PSURFOBJ, PSTROBJ, PFONTOBJ, PCLIPOBJ, PRECTL,
49 PRECTL, PBRUSHOBJ, PBRUSHOBJ, PPOINTL, MIX);
50 typedef ULONG STDCALL (*PGD_ESCAPE)(PSURFOBJ, ULONG, ULONG, PVOID *, ULONG, PVOID *);
51 typedef ULONG STDCALL (*PGD_DRAWESCAPE)(PSURFOBJ, ULONG, PCLIPOBJ, PRECTL, ULONG,
53 typedef PIFIMETRICS STDCALL (*PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
54 typedef PVOID STDCALL (*PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
55 typedef LONG STDCALL (*PGD_QUERYFONTDATA)(DHPDEV, PFONTOBJ, ULONG, HGLYPH, PGLYPHDATA,
57 typedef ULONG STDCALL (*PGD_SETPOINTERSHAPE)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PXLATEOBJ,
58 LONG, LONG, LONG, LONG, PRECTL, ULONG);
59 typedef VOID STDCALL (*PGD_MOVEPOINTER)(PSURFOBJ, LONG, LONG, PRECTL);
60 typedef BOOL STDCALL (*PGD_LINETO)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, LONG, LONG, LONG,
62 typedef BOOL STDCALL (*PGD_SENDPAGE)(PSURFOBJ);
63 typedef BOOL STDCALL (*PGD_STARTPAGE)(PSURFOBJ);
64 typedef BOOL STDCALL (*PGD_ENDDOC)(PSURFOBJ, ULONG);
65 typedef BOOL STDCALL (*PGD_STARTDOC)(PSURFOBJ, PWSTR, DWORD);
66 typedef ULONG STDCALL (*PGD_GETGLYPHMODE)(DHPDEV, PFONTOBJ);
67 typedef VOID STDCALL (*PGD_SYNCHRONIZE)(DHPDEV, PRECTL);
68 typedef ULONG STDCALL (*PGD_SAVESCREENBITS)(PSURFOBJ, ULONG, ULONG, PRECTL);
69 typedef ULONG STDCALL (*PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
70 typedef VOID STDCALL (*PGD_FREE)(PVOID, ULONG);
71 typedef VOID STDCALL (*PGD_DESTROYFONT)(PFONTOBJ);
72 typedef LONG STDCALL (*PGD_QUERYFONTCAPS)(ULONG, PULONG);
73 typedef ULONG STDCALL (*PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
74 typedef BOOL STDCALL (*PGD_UNLOADFONTFILE)(ULONG);
75 typedef ULONG STDCALL (*PGD_FONTMANAGEMENT)(PSURFOBJ, PFONTOBJ, ULONG, ULONG, PVOID,
77 typedef LONG STDCALL (*PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
79 typedef LONG STDCALL (*PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, PFONTOBJ, HGLYPH, BOOL,
80 PGLYPHDATA, ULONG, PTTPOLYGONHEADER);
81 typedef PVOID STDCALL (*PGD_GETTRUETYPEFILE)(ULONG, PULONG);
82 typedef LONG STDCALL (*PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
83 typedef BOOL STDCALL (*PGD_QUERYADVANCEWIDTHS)(DHPDEV, PFONTOBJ, ULONG, HGLYPH *,
85 typedef BOOL STDCALL (*PGD_SETPIXELFORMAT)(PSURFOBJ, LONG, ULONG);
86 typedef LONG STDCALL (*PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
87 PPIXELFORMATDESCRIPTOR);
88 typedef BOOL STDCALL (*PGD_SWAPBUFFERS)(PSURFOBJ, PWNDOBJ);
89 typedef BOOL STDCALL (*PGD_STARTBANDING)(PSURFOBJ, PPOINTL);
90 typedef BOOL STDCALL (*PGD_NEXTBAND)(PSURFOBJ, PPOINTL);
91 typedef LONG STDCALL (*PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
94 typedef struct _DRIVER_FUNCTIONS
96 PGD_ENABLEDRIVER EnableDriver;
97 PGD_ENABLEPDEV EnablePDev;
98 PGD_COMPLETEPDEV CompletePDev;
99 PGD_DISABLEPDEV DisablePDev;
100 PGD_ENABLESURFACE EnableSurface;
101 PGD_DISABLESURFACE DisableSurface;
102 PGD_ASSERTMODE AssertMode;
103 PGD_RESETPDEV ResetPDev;
104 PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
105 PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
106 PGD_REALIZEBRUSH RealizeBrush;
107 PGD_DITHERCOLOR DitherColor;
108 PGD_STROKEPATH StrokePath;
109 PGD_FILLPATH FillPath;
110 PGD_STROKEANDFILLPATH StrokeAndFillPath;
113 PGD_TRANSPARENTBLT TransparentBlt;
114 PGD_COPYBITS CopyBits;
115 PGD_STRETCHBLT StretchBlt;
116 PGD_SETPALETTE SetPalette;
119 PGD_DRAWESCAPE DrawEscape;
120 PGD_QUERYFONT QueryFont;
121 PGD_QUERYFONTTREE QueryFontTree;
122 PGD_QUERYFONTDATA QueryFontData;
123 PGD_SETPOINTERSHAPE SetPointerShape;
124 PGD_MOVEPOINTER MovePointer;
126 PGD_SENDPAGE SendPage;
127 PGD_STARTPAGE StartPage;
129 PGD_STARTDOC StartDoc;
130 PGD_GETGLYPHMODE GetGlyphMode;
131 PGD_SYNCHRONIZE Synchronize;
132 PGD_SAVESCREENBITS SaveScreenBits;
133 PGD_GETMODES GetModes;
135 PGD_DESTROYFONT DestroyFont;
136 PGD_QUERYFONTCAPS QueryFontCaps;
137 PGD_LOADFONTFILE LoadFontFile;
138 PGD_UNLOADFONTFILE UnloadFontFile;
139 PGD_FONTMANAGEMENT FontManagement;
140 PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
141 PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
142 PGD_GETTRUETYPEFILE GetTrueTypeFile;
143 PGD_QUERYFONTFILE QueryFontFile;
144 PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
145 PGD_SETPIXELFORMAT SetPixelFormat;
146 PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
147 PGD_SWAPBUFFERS SwapBuffers;
148 PGD_STARTBANDING StartBanding;
149 PGD_NEXTBAND NextBand;
151 PGD_GETDIRECTDRAWINFO,
152 PGD_ENABLEDIRECTDRAW,
153 PGD_DISABLEDIRECTDRAW,
155 PGD_QUERYSPOOLTYPE QuerySpoolType;
156 } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
158 BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
159 PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);
160 HANDLE DRIVER_FindMPDriver(LPCWSTR Name);
161 BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
162 PDRIVER_FUNCTIONS DF);
163 BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
164 INT DRIVER_ReferenceDriver (LPCWSTR Name);
165 INT DRIVER_UnreferenceDriver (LPCWSTR Name);