Remove extra #include directives from winspool.h.
[wine] / include / winspool.h
1 /* Definitions for printing
2  *
3  * Copyright 1998 Huw Davies, Andreas Mohr
4  *
5  * Portions Copyright (c) 1999 Corel Corporation
6  *                             (Paul Quinn, Albert Den Haan)
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22 #ifndef __WINE_WINSPOOL_H
23 #define __WINE_WINSPOOL_H
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /* DEFINES */
30
31 #define PRINTER_ATTRIBUTE_QUEUED         0x00000001
32 #define PRINTER_ATTRIBUTE_DIRECT         0x00000002
33 #define PRINTER_ATTRIBUTE_DEFAULT        0x00000004
34 #define PRINTER_ATTRIBUTE_SHARED         0x00000008
35 #define PRINTER_ATTRIBUTE_NETWORK        0x00000010
36 #define PRINTER_ATTRIBUTE_HIDDEN         0x00000020
37 #define PRINTER_ATTRIBUTE_LOCAL          0x00000040
38
39 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ       0x00000080
40 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100
41 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
42
43 #define PRINTER_ATTRIBUTE_WORK_OFFLINE   0x00000400
44 #define PRINTER_ATTRIBUTE_ENABLE_BIDI    0x00000800
45
46 #define PRINTER_CONTROL_PAUSE      1
47 #define PRINTER_CONTROL_RESUME     2
48 #define PRINTER_CONTROL_PURGE      3
49 #define PRINTER_CONTROL_SET_STATUS 4
50
51 #define PRINTER_ENUM_DEFAULT     0x00000001
52 #define PRINTER_ENUM_LOCAL       0x00000002
53 #define PRINTER_ENUM_CONNECTIONS 0x00000004
54 #define PRINTER_ENUM_FAVORITE    0x00000004
55 #define PRINTER_ENUM_NAME        0x00000008
56 #define PRINTER_ENUM_REMOTE      0x00000010
57 #define PRINTER_ENUM_SHARED      0x00000020
58 #define PRINTER_ENUM_NETWORK     0x00000040
59
60 #define PRINTER_ENUM_EXPAND      0x00004000
61 #define PRINTER_ENUM_CONTAINER   0x00008000
62
63 #define PRINTER_ENUM_ICONMASK    0x00ff0000
64 #define PRINTER_ENUM_ICON1       0x00010000
65 #define PRINTER_ENUM_ICON2       0x00020000
66 #define PRINTER_ENUM_ICON3       0x00040000
67 #define PRINTER_ENUM_ICON4       0x00080000
68 #define PRINTER_ENUM_ICON5       0x00100000
69 #define PRINTER_ENUM_ICON6       0x00200000
70 #define PRINTER_ENUM_ICON7       0x00400000
71 #define PRINTER_ENUM_ICON8       0x00800000
72
73
74 /* various printer statuses */
75 #define PRINTER_STATUS_PAUSED            0x00000001
76 #define PRINTER_STATUS_ERROR             0x00000002
77 #define PRINTER_STATUS_PENDING_DELETION  0x00000004
78 #define PRINTER_STATUS_PAPER_JAM         0x00000008
79 #define PRINTER_STATUS_PAPER_OUT         0x00000010
80 #define PRINTER_STATUS_MANUAL_FEED       0x00000020
81 #define PRINTER_STATUS_PAPER_PROBLEM     0x00000040
82 #define PRINTER_STATUS_OFFLINE           0x00000080
83 #define PRINTER_STATUS_IO_ACTIVE         0x00000100
84 #define PRINTER_STATUS_BUSY              0x00000200
85 #define PRINTER_STATUS_PRINTING          0x00000400
86 #define PRINTER_STATUS_OUTPUT_BIN_FULL   0x00000800
87 #define PRINTER_STATUS_NOT_AVAILABLE     0x00001000
88 #define PRINTER_STATUS_WAITING           0x00002000
89 #define PRINTER_STATUS_PROCESSING        0x00004000
90 #define PRINTER_STATUS_INITIALIZING      0x00008000
91 #define PRINTER_STATUS_WARMING_UP        0x00010000
92 #define PRINTER_STATUS_TONER_LOW         0x00020000
93 #define PRINTER_STATUS_NO_TONER          0x00040000
94 #define PRINTER_STATUS_PAGE_PUNT         0x00080000
95 #define PRINTER_STATUS_USER_INTERVENTION 0x00100000
96 #define PRINTER_STATUS_OUT_OF_MEMORY     0x00200000
97 #define PRINTER_STATUS_DOOR_OPEN         0x00400000
98 #define PRINTER_STATUS_SERVER_UNKNOWN    0x00800000
99 #define PRINTER_STATUS_POWER_SAVE        0x01000000
100
101 #define NO_PRIORITY  0
102 #define MAX_PRIORITY 99
103 #define MIN_PRIORITY 1
104 #define DEF_PRIORITY 1
105
106 #define JOB_CONTROL_PAUSE             1
107 #define JOB_CONTROL_RESUME            2
108 #define JOB_CONTROL_CANCEL            3
109 #define JOB_CONTROL_RESTART           4
110 #define JOB_CONTROL_DELETE            5
111 #define JOB_CONTROL_SENT_TO_PRINTER   6
112 #define JOB_CONTROL_LAST_PAGE_EJECTED 7
113
114 #define JOB_STATUS_PAUSED       0x0001
115 #define JOB_STATUS_ERROR        0x0002
116 #define JOB_STATUS_DELETING     0x0004
117 #define JOB_STATUS_SPOOLING     0x0008
118 #define JOB_STATUS_PRINTING     0x0010
119 #define JOB_STATUS_OFFLINE      0x0020
120 #define JOB_STATUS_PAPEROUT     0x0040
121 #define JOB_STATUS_PRINTED      0x0080
122 #define JOB_STATUS_DELETED      0x0100
123 #define JOB_STATUS_BLOCKED_DEVQ 0x0200
124 #define JOB_STATUS_USER_INTERVENTION 0x0400
125
126 #define JOB_POSITION_UNSPECIFIED 1
127
128 #define DI_CHANNEL 1
129 #define DI_READ_SPOOL_JOB 3
130
131 #define FORM_USER    0
132 #define FORM_BUILTIN 1
133 #define FORM_PRINTER 2
134
135 #define PORT_TYPE_WRITE        1
136 #define PORT_TYPE_READ         2
137 #define PORT_TYPE_REDIRECTED   4
138 #define PORT_TYPE_NET_ATTACHED 8
139
140 #define PORT_STATUS_TYPE_ERROR   1
141 #define PORT_STATUS_TYPE_WARNING 2
142 #define PORT_STATUS_TYPE_INFO    3
143
144 #define PORT_STATUS_OFFLINE           1
145 #define PORT_STATUS_PAPER_JAM         2
146 #define PORT_STATUS_PAPER_OUT         3
147 #define PORT_STATUS_OUTPUT_BIN_FULL   4
148 #define PORT_STATUS_PAPER_PROBLEM     5
149 #define PORT_STATUS_NO_TONER          6
150 #define PORT_STATUS_DOOR_OPEN         7
151 #define PORT_STATUS_USER_INTERVENTION 8
152 #define PORT_STATUS_OUT_OF_MEMORY     9
153 #define PORT_STATUS_TONER_LOW         10
154 #define PORT_STATUS_WARMING_UP        11
155 #define PORT_STATUS_POWER_SAVE        12
156
157 #define PRINTER_NOTIFY_TYPE 0
158 #define JOB_NOTIFY_TYPE     1
159
160 #define PRINTER_NOTIFY_FIELD_SERVER_NAME     0x00
161 #define PRINTER_NOTIFY_FIELD_PRINTER_NAME    0x01
162 #define PRINTER_NOTIFY_FIELD_SHARE_NAME      0x02
163 #define PRINTER_NOTIFY_FIELD_PORT_NAME       0x03
164 #define PRINTER_NOTIFY_FIELD_DRIVER_NAME     0x04
165 #define PRINTER_NOTIFY_FIELD_COMMENT         0x05
166 #define PRINTER_NOTIFY_FIELD_LOCATION        0x06
167 #define PRINTER_NOTIFY_FIELD_DEVMODE         0x07
168 #define PRINTER_NOTIFY_FIELD_SEPFILE         0x08
169 #define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
170 #define PRINTER_NOTIFY_FIELD_PARAMETERS      0x0a
171 #define PRINTER_NOTIFY_FIELD_DATATYPE        0x0b
172 #define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
173 #define PRINTER_NOTIFY_FIELD_ATTRIBUTES      0x0d
174 #define PRINTER_NOTIFY_FIELD_PRIORITY        0x0e
175 #define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0f
176 #define PRINTER_NOTIFY_FIELD_START_TIME      0x10
177 #define PRINTER_NOTIFY_FIELD_UNTIL_TIME      0x11
178 #define PRINTER_NOTIFY_FIELD_STATUS          0x12
179 #define PRINTER_NOTIFY_FIELD_STATUS_STRING   0x13
180 #define PRINTER_NOTIFY_FIELD_CJOBS           0x14
181 #define PRINTER_NOTIFY_FIELD_AVERAGE_PPM     0x15
182 #define PRINTER_NOTIFY_FIELD_TOTAL_PAGES     0x16
183 #define PRINTER_NOTIFY_FIELD_PAGES_PRINTED   0x17
184 #define PRINTER_NOTIFY_FIELD_TOTAL_BYTES     0x18
185 #define PRINTER_NOTIFY_FIELD_BYTES_PRINTED   0x19
186
187 #define JOB_NOTIFY_FIELD_PRINTER_NAME    0x00
188 #define JOB_NOTIFY_FIELD_MACHINE_NAME    0x01
189 #define JOB_NOTIFY_FIELD_PORT_NAME       0x02
190 #define JOB_NOTIFY_FIELD_USER_NAME       0x03
191 #define JOB_NOTIFY_FIELD_NOTIFY_NAME     0x04
192 #define JOB_NOTIFY_FIELD_DATATYPE        0x05
193 #define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
194 #define JOB_NOTIFY_FIELD_PARAMETERS      0x07
195 #define JOB_NOTIFY_FIELD_DRIVER_NAME     0x08
196 #define JOB_NOTIFY_FIELD_DEVMODE         0x09
197 #define JOB_NOTIFY_FIELD_STATUS          0x0a
198 #define JOB_NOTIFY_FIELD_STATUS_STRING   0x0b
199 #define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
200 #define JOB_NOTIFY_FIELD_DOCUMENT        0x0d
201 #define JOB_NOTIFY_FIELD_PRIORITY        0x0e
202 #define JOB_NOTIFY_FIELD_POSITION        0x0f
203 #define JOB_NOTIFY_FIELD_SUBMITTED       0x10
204 #define JOB_NOTIFY_FIELD_START_TIME      0x11
205 #define JOB_NOTIFY_FIELD_UNTIL_TIME      0x12
206 #define JOB_NOTIFY_FIELD_TIME            0x13
207 #define JOB_NOTIFY_FIELD_TOTAL_PAGES     0x14
208 #define JOB_NOTIFY_FIELD_PAGES_PRINTED   0x15
209 #define JOB_NOTIFY_FIELD_TOTAL_BYTES     0x16
210 #define JOB_NOTIFY_FIELD_BYTES_PRINTED   0x17
211
212 #define PRINTER_NOTIFY_OPTIONS_REFRESH   1
213 #define PRINTER_NOTIFY_INFO_DISCARDED    1
214
215 #define PRINTER_CHANGE_ADD_PRINTER               0x00000001
216 #define PRINTER_CHANGE_SET_PRINTER               0x00000002
217 #define PRINTER_CHANGE_DELETE_PRINTER            0x00000004
218 #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
219 #define PRINTER_CHANGE_PRINTER                   0x000000ff
220 #define PRINTER_CHANGE_ADD_JOB                   0x00000100
221 #define PRINTER_CHANGE_SET_JOB                   0x00000200
222 #define PRINTER_CHANGE_DELETE_JOB                0x00000400
223 #define PRINTER_CHANGE_WRITE_JOB                 0x00000800
224 #define PRINTER_CHANGE_JOB                       0x0000ff00
225 #define PRINTER_CHANGE_ADD_FORM                  0x00010000
226 #define PRINTER_CHANGE_SET_FORM                  0x00020000
227 #define PRINTER_CHANGE_DELETE_FORM               0x00040000
228 #define PRINTER_CHANGE_FORM                      0x00070000
229 #define PRINTER_CHANGE_ADD_PORT                  0x00100000
230 #define PRINTER_CHANGE_CONFIGURE_PORT            0x00200000
231 #define PRINTER_CHANGE_DELETE_PORT               0x00400000
232 #define PRINTER_CHANGE_PORT                      0x00700000
233 #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR       0x01000000
234 #define PRINTER_CHANGE_DELETE_PRINTER_PROCESSOR  0x04000000
235 #define PRINTER_CHANGE_PRINT_PROCESSOR           0x07000000
236 #define PRINTER_CHANGE_ADD_PRINTER_DRIVER        0x10000000
237 #define PRINTER_CHANGE_SET_PRINTER_DRIVER        0x20000000
238 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER     0x40000000
239 #define PRINTER_CHANGE_PRINTER_DRIVER            0x70000000
240 #define PRINTER_CHANGE_TIMEOUT                   0x80000000
241 #define PRINTER_CHANGE_ALL                       0x7777ffff
242
243 #define PRINTER_ERROR_INFORMATION   0x80000000
244 #define PRINTER_ERROR_WARNING       0x40000000
245 #define PRINTER_ERROR_SEVERE        0x20000000
246
247 #define PRINTER_ERROR_OUTODPAPER    0x00000001
248 #define PRINTER_ERROR_JAM           0x00000002
249 #define PRINTER_ERROR_OUTOFTONER    0x00000004
250
251 /* TYPES */
252 typedef struct _PRINTER_DEFAULTSA {
253   LPSTR        pDatatype;
254   LPDEVMODEA pDevMode;
255   ACCESS_MASK  DesiredAccess;
256 } PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
257
258 typedef struct _PRINTER_DEFAULTSW {
259   LPWSTR       pDatatype;
260   LPDEVMODEW pDevMode;
261   ACCESS_MASK  DesiredAccess;
262 } PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
263
264 DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
265 DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
266
267 typedef struct _DRIVER_INFO_1A {
268   LPSTR     pName;
269 } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
270
271 typedef struct _DRIVER_INFO_1W {
272   LPWSTR    pName;
273 } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
274
275 DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
276 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
277 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
278
279 typedef struct _DRIVER_INFO_2A {
280   DWORD   cVersion;
281   LPSTR     pName;
282   LPSTR     pEnvironment;
283   LPSTR     pDriverPath;
284   LPSTR     pDataFile;
285   LPSTR     pConfigFile;
286 } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
287
288 typedef struct _DRIVER_INFO_2W {
289   DWORD   cVersion;
290   LPWSTR    pName;
291   LPWSTR    pEnvironment;
292   LPWSTR    pDriverPath;
293   LPWSTR    pDataFile;
294   LPWSTR    pConfigFile;
295 } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
296
297 DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
298 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
299 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
300
301 typedef struct _DRIVER_INFO_3A {
302   DWORD cVersion;
303   LPSTR pName;
304   LPSTR pEnvironment;
305   LPSTR pDriverPath;
306   LPSTR pDataFile;
307   LPSTR pConfigFile;
308   LPSTR pHelpFile;
309   LPSTR pDependentFiles;
310   LPSTR pMonitorName;
311   LPSTR pDefaultDataType;
312 } DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
313
314 typedef struct _DRIVER_INFO_3W {
315   DWORD cVersion;
316   LPWSTR pName;
317   LPWSTR pEnvironment;
318   LPWSTR pDriverPath;
319   LPWSTR pDataFile;
320   LPWSTR pConfigFile;
321   LPWSTR pHelpFile;
322   LPWSTR pDependentFiles;
323   LPWSTR pMonitorName;
324   LPWSTR pDefaultDataType;
325 } DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
326
327 DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
328 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
329 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
330
331 typedef struct _PRINTER_INFO_1A {
332   DWORD   Flags;
333   LPSTR   pDescription;
334   LPSTR   pName;
335   LPSTR   pComment;
336 } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
337
338 typedef struct _PRINTER_INFO_1W {
339   DWORD   Flags;
340   LPWSTR  pDescription;
341   LPWSTR  pName;
342   LPWSTR  pComment;
343 } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
344
345 DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
346 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
347 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
348
349 /* FIXME: winspool.h declares some structure members with the name Status.
350  * unfortunatly <X11/ICE/ICElib.h> #defines Status to the type 'int'
351  * therfore the following hack */
352 #ifndef Status
353
354 typedef struct _PRINTER_INFO_2A {
355   LPSTR     pServerName;
356   LPSTR     pPrinterName;
357   LPSTR     pShareName;
358   LPSTR     pPortName;
359   LPSTR     pDriverName;
360   LPSTR     pComment;
361   LPSTR     pLocation;
362   LPDEVMODEA pDevMode;
363   LPSTR     pSepFile;
364   LPSTR     pPrintProcessor;
365   LPSTR     pDatatype;
366   LPSTR     pParameters;
367   PSECURITY_DESCRIPTOR pSecurityDescriptor;
368   DWORD   Attributes;
369   DWORD   Priority;
370   DWORD   DefaultPriority;
371   DWORD   StartTime;
372   DWORD   UntilTime;
373   DWORD   Status;
374   DWORD   cJobs;
375   DWORD   AveragePPM;
376 } PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
377
378 typedef struct _PRINTER_INFO_2W {
379   LPWSTR    pServerName;
380   LPWSTR    pPrinterName;
381   LPWSTR    pShareName;
382   LPWSTR    pPortName;
383   LPWSTR    pDriverName;
384   LPWSTR    pComment;
385   LPWSTR    pLocation;
386   LPDEVMODEW pDevMode;
387   LPWSTR    pSepFile;
388   LPWSTR    pPrintProcessor;
389   LPWSTR    pDatatype;
390   LPWSTR    pParameters;
391   PSECURITY_DESCRIPTOR pSecurityDescriptor;
392   DWORD   Attributes;
393   DWORD   Priority;
394   DWORD   DefaultPriority;
395   DWORD   StartTime;
396   DWORD   UntilTime;
397   DWORD   Status;
398   DWORD   cJobs;
399   DWORD   AveragePPM;
400 } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
401
402 DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
403 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
404 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
405
406 typedef struct _PRINTER_INFO_3 {
407   PSECURITY_DESCRIPTOR pSecurityDescriptor;
408 } PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
409
410 typedef struct _PRINTER_INFO_4A {
411   LPSTR     pPrinterName;
412   LPSTR     pServerName;
413   DWORD     Attributes;
414 } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
415
416 typedef struct _PRINTER_INFO_4W {
417   LPWSTR     pPrinterName;
418   LPWSTR     pServerName;
419   DWORD     Attributes;
420 } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
421
422 DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
423 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
424 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
425
426 typedef struct _PRINTER_INFO_5A {
427   LPSTR     pPrinterName;
428   LPSTR     pPortName;
429   DWORD     Attributes;
430   DWORD     DeviceNotSelectedTimeout;
431   DWORD     TransmissionRetryTimeout;
432 } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
433
434 typedef struct _PRINTER_INFO_5W {
435   LPWSTR    pPrinterName;
436   LPWSTR    pPortName;
437   DWORD     Attributes;
438   DWORD     DeviceNotSelectedTimeout;
439   DWORD     TransmissionRetryTimeout;
440 } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
441
442 DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
443 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
444 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
445
446 typedef struct _PRINTER_INFO_6 {
447   DWORD dwStatus;
448 } PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
449
450 typedef struct _JOB_INFO_1A {
451   DWORD JobID;
452   LPSTR pPrinterName;
453   LPSTR pMachineName;
454   LPSTR pUserName;
455   LPSTR pDocument;
456   LPSTR pDatatype;
457   LPSTR pStatus;
458   DWORD Status;
459   DWORD Priority;
460   DWORD Position;
461   DWORD TotalPages;
462   DWORD PagesPrinted;
463   SYSTEMTIME Submitted;
464 } JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
465
466 typedef struct _JOB_INFO_1W {
467   DWORD JobID;
468   LPWSTR pPrinterName;
469   LPWSTR pMachineName;
470   LPWSTR pUserName;
471   LPWSTR pDocument;
472   LPWSTR pDatatype;
473   LPWSTR pStatus;
474   DWORD Status;
475   DWORD Priority;
476   DWORD Position;
477   DWORD TotalPages;
478   DWORD PagesPrinted;
479   SYSTEMTIME Submitted;
480 } JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
481
482 DECL_WINELIB_TYPE_AW(JOB_INFO_1)
483 DECL_WINELIB_TYPE_AW(PJOB_INFO_1)
484 DECL_WINELIB_TYPE_AW(LPJOB_INFO_1)
485
486 typedef struct _JOB_INFO_2A {
487   DWORD JobID;
488   LPSTR pPrinterName;
489   LPSTR pMachineName;
490   LPSTR pUserName;
491   LPSTR pDocument;
492   LPSTR pNotifyName;
493   LPSTR pDatatype;
494   LPSTR pPrintProcessor;
495   LPSTR pParameters;
496   LPSTR pDriverName;
497   LPDEVMODEA pDevMode;
498   LPSTR pStatus;
499   PSECURITY_DESCRIPTOR pSecurityDescriptor;
500   DWORD Status;
501   DWORD Priority;
502   DWORD Position;
503   DWORD StartTime;
504   DWORD UntilTime;
505   DWORD TotalPages;
506   DWORD Size;
507   SYSTEMTIME Submitted;
508   DWORD Time;
509   DWORD PagesPrinted;
510 } JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
511
512 typedef struct _JOB_INFO_2W {
513   DWORD JobID;
514   LPWSTR pPrinterName;
515   LPWSTR pMachineName;
516   LPWSTR pUserName;
517   LPWSTR pDocument;
518   LPWSTR pNotifyName;
519   LPWSTR pDatatype;
520   LPWSTR pPrintProcessor;
521   LPWSTR pParameters;
522   LPWSTR pDriverName;
523   LPDEVMODEW pDevMode;
524   LPWSTR pStatus;
525   PSECURITY_DESCRIPTOR pSecurityDescriptor;
526   DWORD Status;
527   DWORD Priority;
528   DWORD Position;
529   DWORD StartTime;
530   DWORD UntilTime;
531   DWORD TotalPages;
532   DWORD Size;
533   SYSTEMTIME Submitted;
534   DWORD Time;
535   DWORD PagesPrinted;
536 } JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
537
538 DECL_WINELIB_TYPE_AW(JOB_INFO_2)
539 DECL_WINELIB_TYPE_AW(PJOB_INFO_2)
540 DECL_WINELIB_TYPE_AW(LPJOB_INFO_2)
541
542 typedef struct _JOB_INFO_3 {
543   DWORD JobID;
544   DWORD NextJobID;
545   DWORD Reserved;
546 } JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
547
548 typedef struct _ADDJOB_INFO_1A {
549   LPSTR Path;
550   DWORD JobID;
551 } ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
552
553 typedef struct _ADDJOB_INFO_1W {
554   LPWSTR Path;
555   DWORD  JobID;
556 } ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
557
558 DECL_WINELIB_TYPE_AW(ADDJOB_INFO_1)
559 DECL_WINELIB_TYPE_AW(PADDJOB_INFO_1)
560 DECL_WINELIB_TYPE_AW(LPADDJOB_INFO_1)
561
562 typedef struct _DOC_INFO_1A {
563   LPSTR pDocName;
564   LPSTR pOutputFile;
565   LPSTR pDatatype;
566 } DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
567
568 typedef struct _DOC_INFO_1W {
569   LPWSTR pDocName;
570   LPWSTR pOutputFile;
571   LPWSTR pDatatype;
572 } DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
573
574 DECL_WINELIB_TYPE_AW(DOC_INFO_1)
575 DECL_WINELIB_TYPE_AW(PDOC_INFO_1)
576 DECL_WINELIB_TYPE_AW(LPDOC_INFO_1)
577
578 typedef struct _DOC_INFO_2A {
579   LPSTR pDocName;
580   LPSTR pOutputFile;
581   LPSTR pDatatype;
582   DWORD dwMode;
583   DWORD JobID;
584 } DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
585
586 typedef struct _DOC_INFO_2W {
587   LPWSTR pDocName;
588   LPWSTR pOutputFile;
589   LPWSTR pDatatype;
590   DWORD dwMode;
591   DWORD JobID;
592 } DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
593
594 DECL_WINELIB_TYPE_AW(DOC_INFO_2)
595 DECL_WINELIB_TYPE_AW(PDOC_INFO_2)
596 DECL_WINELIB_TYPE_AW(LPDOC_INFO_2)
597
598 typedef struct _FORM_INFO_1A {
599   DWORD Flags;
600   LPSTR pName;
601   SIZEL Size;
602   RECTL ImageableArea;
603 } FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
604
605 typedef struct _FORM_INFO_1W {
606   DWORD Flags;
607   LPWSTR pName;
608   SIZEL Size;
609   RECTL ImageableArea;
610 } FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
611
612 DECL_WINELIB_TYPE_AW(FORM_INFO_1)
613 DECL_WINELIB_TYPE_AW(PFORM_INFO_1)
614 DECL_WINELIB_TYPE_AW(LPFORM_INFO_1)
615
616 typedef struct _PRINTPROCESSOR_INFO_1A {
617   LPSTR pName;
618 } PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A,
619   *LPPRINTPROCESSOR_INFO_1A;
620
621 typedef struct _PRINTPROCESSOR_INFO_1W {
622   LPWSTR pName;
623 } PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W,
624   *LPPRINTPROCESSOR_INFO_1W;
625
626 DECL_WINELIB_TYPE_AW(PRINTPROCESSOR_INFO_1)
627 DECL_WINELIB_TYPE_AW(PPRINTPROCESSOR_INFO_1)
628 DECL_WINELIB_TYPE_AW(LPPRINTPROCESSOR_INFO_1)
629
630 typedef struct _PORT_INFO_1A {
631   LPSTR pName;
632 } PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
633
634 typedef struct _PORT_INFO_1W {
635   LPWSTR pName;
636 } PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
637
638 DECL_WINELIB_TYPE_AW(PORT_INFO_1)
639 DECL_WINELIB_TYPE_AW(PPORT_INFO_1)
640 DECL_WINELIB_TYPE_AW(LPPORT_INFO_1)
641
642 typedef struct _PORT_INFO_2A {
643   LPSTR pPortName;
644   LPSTR pMonitorName;
645   LPSTR pDescription;
646   DWORD fPortType;
647   DWORD Reserved;
648 } PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
649
650 typedef struct _PORT_INFO_2W {
651   LPWSTR pPortName;
652   LPWSTR pMonitorName;
653   LPWSTR pDescription;
654   DWORD  fPortType;
655   DWORD  Reserved;
656 } PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
657
658 DECL_WINELIB_TYPE_AW(PORT_INFO_2)
659 DECL_WINELIB_TYPE_AW(PPORT_INFO_2)
660 DECL_WINELIB_TYPE_AW(LPPORT_INFO_2)
661
662 typedef struct _PORT_INFO_3A {
663   DWORD dwStatus;
664   LPSTR pszStatus;
665   DWORD dwSeverity;
666 } PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
667
668 typedef struct _PORT_INFO_3W {
669   DWORD  dwStatus;
670   LPWSTR pszStatus;
671   DWORD  dwSeverity;
672 } PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
673
674 DECL_WINELIB_TYPE_AW(PORT_INFO_3)
675 DECL_WINELIB_TYPE_AW(PPORT_INFO_3)
676 DECL_WINELIB_TYPE_AW(LPPORT_INFO_3)
677
678 typedef struct _MONITOR_INFO_1A {
679   LPSTR pName;
680 } MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
681
682 typedef struct _MONITOR_INFO_1W {
683   LPWSTR pName;
684 } MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
685
686 DECL_WINELIB_TYPE_AW(MONITOR_INFO_1)
687 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_1)
688 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_1)
689
690 #endif /* Status */
691
692
693 typedef struct _MONITOR_INFO_2A {
694   LPSTR pName;
695   LPSTR pEnvironment;
696   LPSTR pDLLName;
697 } MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
698
699 typedef struct _MONITOR_INFO_2W {
700   LPWSTR pName;
701   LPWSTR pEnvironment;
702   LPWSTR pDLLName;
703 } MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
704
705 DECL_WINELIB_TYPE_AW(MONITOR_INFO_2)
706 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_2)
707 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_2)
708
709 typedef struct _DATATYPES_INFO_1A {
710   LPSTR pName;
711 } DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
712
713 typedef struct _DATATYPES_INFO_1W {
714   LPWSTR pName;
715 } DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
716
717 DECL_WINELIB_TYPE_AW(DATATYPES_INFO_1)
718 DECL_WINELIB_TYPE_AW(PDATATYPES_INFO_1)
719 DECL_WINELIB_TYPE_AW(LPDATATYPES_INFO_1)
720
721 typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
722   WORD  Type;
723   WORD  Reserved0;
724   DWORD Reserved1;
725   DWORD Reserved2;
726   DWORD Count;
727   PWORD pFields;
728 } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE,
729 *LPPRINTER_NOTIFY_OPTIONS_TYPE;
730
731 typedef struct _PRINTER_NOTIFY_OPTIONS {
732   DWORD Version;
733   DWORD Flags;
734   DWORD Count;
735   PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
736 } PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
737
738 typedef struct _PRINTER_NOTIFY_INFO_DATA {
739   WORD Type;
740   WORD Field;
741   DWORD Reserved;
742   DWORD Id;
743   union {
744     DWORD adwData[2];
745     struct {
746       DWORD cbBuf;
747       LPVOID pBuf;
748     } Data;
749   } NotifyData;
750 } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA,
751 *LPPRINTER_NOTIFY_INFO_DATA;
752
753 typedef struct _PRINTER_NOTIFY_INFO {
754   DWORD Version;
755   DWORD Flags;
756   DWORD Count;
757   PRINTER_NOTIFY_INFO_DATA aData[1];
758 } PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
759
760 typedef struct _PROVIDOR_INFO_1A {
761   LPSTR pName;
762   LPSTR pEnvironment;
763   LPSTR pDLLName;
764 } PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
765
766 typedef struct _PROVIDOR_INFO_1W {
767   LPWSTR pName;
768   LPWSTR pEnvironment;
769   LPWSTR pDLLName;
770 } PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
771
772 DECL_WINELIB_TYPE_AW(PROVIDOR_INFO_1)
773 DECL_WINELIB_TYPE_AW(PPROVIDOR_INFO_1)
774 DECL_WINELIB_TYPE_AW(LPPROVIDOR_INFO_1)
775
776 typedef struct _PRINTER_ENUM_VALUESA {
777   LPSTR  pValueName;
778   DWORD  cbValueName;
779   DWORD  dwType;
780   LPBYTE pData;
781   DWORD  cbData;
782 } PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA;
783
784 typedef struct _PRINTER_ENUM_VALUESW {
785   LPWSTR pValueName;
786   DWORD  cbValueName;
787   DWORD  dwType;
788   LPBYTE pData;
789   DWORD  cbData;
790 } PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW;
791
792 DECL_WINELIB_TYPE_AW(PRINTER_ENUM_VALUES)
793 DECL_WINELIB_TYPE_AW(PPRINTER_ENUM_VALUES)
794
795 /* DECLARATIONS */
796 INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
797                                LPSTR pOutput, LPDEVMODEA pDevMode);
798 INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
799                                WORD fwCapability, LPWSTR pOutput,
800                                const DEVMODEW *pDevMode);
801
802 #define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
803
804 LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
805                                 LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
806                                 LPDEVMODEA pDevModeInput,DWORD fMode );
807 LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
808                                 LPWSTR pDeviceName,
809                                 LPDEVMODEW pDevModeOutput,
810                                 LPDEVMODEW pDevModeInput, DWORD fMode);
811
812 #define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
813
814 BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
815                              LPPRINTER_DEFAULTSA pDefault);
816 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
817                              LPPRINTER_DEFAULTSW pDefault);
818
819 #define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
820
821 BOOL WINAPI ResetPrinterA(HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault);
822 BOOL WINAPI ResetPrinterW(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
823 #define ResetPrinter WINELIB_NAME_AW(ResetPrinter)
824
825 BOOL WINAPI ClosePrinter (HANDLE phPrinter);
826
827 BOOL WINAPI EnumJobsA(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
828                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
829                       LPDWORD pcReturned);
830 BOOL WINAPI EnumJobsW(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
831                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
832                       LPDWORD pcReturned);
833 #define EnumJobs WINELIB_NAME_AW(EnumJobs)
834
835 BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
836                                DWORD dwLevel, LPBYTE lpbPrinters,
837                                DWORD cbBuf, LPDWORD lpdwNeeded,
838                                LPDWORD lpdwReturned);
839 BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
840                                DWORD dwLevel, LPBYTE lpbPrinters,
841                                DWORD cbBuf, LPDWORD lpdwNeeded,
842                                LPDWORD lpdwReturned);
843 #define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
844
845 BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
846
847 BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
848 BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
849 #define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
850
851 BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
852                               DWORD Level, LPBYTE pDriverInfo,
853                               DWORD cbBuf, LPDWORD pcbNeeded);
854 BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
855                               DWORD Level, LPBYTE pDriverInfo,
856                               DWORD cbBuf, LPDWORD pcbNeeded);
857 #define GetPrinterDriver WINELIB_NAME_AW(GetPrinterDriver)
858
859 BOOL WINAPI SetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
860                     DWORD Command);
861 BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
862                     DWORD Command);
863 #define SetJob WINELIB_NAME_AW(SetJob)
864
865 BOOL WINAPI GetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
866                     DWORD cbBuf, LPDWORD pcbNeeded);
867 BOOL WINAPI GetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
868                     DWORD cbBuf, LPDWORD pcbNeeded);
869 #define GetJob WINELIB_NAME_AW(GetJob)
870
871 HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter);
872 HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
873 #define AddPrinter WINELIB_NAME_AW(AddPrinter)
874
875 BOOL WINAPI DeletePrinter(HANDLE hPrinter);
876
877 BOOL WINAPI SetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
878                         DWORD Command);
879 BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
880                         DWORD Command);
881 #define SetPrinter WINELIB_NAME_AW(SetPrinter)
882
883 BOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
884                         DWORD cbBuf, LPDWORD pcbNeeded);
885 BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
886                         DWORD cbBuf, LPDWORD pcbNeeded);
887 #define GetPrinter WINELIB_NAME_AW(GetPrinter)
888
889 BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo);
890 BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
891 #define AddPrinterDriver WINELIB_NAME_AW(AddPrinterDriver)
892
893 BOOL WINAPI EnumPrinterDriversA(LPSTR pName, LPSTR pEnvironment, DWORD Level,
894                                 LPBYTE pDriverInfo, DWORD cbBuf,
895                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
896 BOOL WINAPI EnumPrinterDriversW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level,
897                                 LPBYTE pDriverInfo, DWORD cbBuf,
898                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
899 #define EnumPrinterDrivers WINELIB_NAME_AW(EnumPrinterDrivers)
900
901 BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
902 BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
903 #define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
904
905 BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
906                                  LPSTR pDriverName);
907 BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,
908                                  LPWSTR pDriverName);
909 #define DeletePrinterDriver WINELIB_NAME_AW(DeletePrinterDriver)
910
911 BOOL WINAPI AddPrintProcessorA(LPSTR pName, LPSTR pEnvironment,
912                                LPSTR pPathName, LPSTR pPrintProcessorName);
913 BOOL WINAPI AddPrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
914                                LPWSTR pPathName, LPWSTR pPrintProcessorName);
915 #define AddPrintProcessor WINELIB_NAME_AW(AddPrintProcessor)
916
917 BOOL WINAPI EnumPrintProcessorsA(LPSTR pName, LPSTR pEnvironment,
918                                  DWORD Level, LPBYTE pPrintProcessorInfo,
919                                  DWORD cbBuf, LPDWORD pcbNeeded,
920                                  LPDWORD pcbReturned);
921 BOOL WINAPI EnumPrintProcessorsW(LPWSTR pName, LPWSTR pEnvironment,
922                                  DWORD Level, LPBYTE pPrintProcessorInfo,
923                                  DWORD cbBuf, LPDWORD pcbNeeded,
924                                  LPDWORD pcbReturned);
925 #define EnumPrintProcessors WINELIB_NAME_AW(EnumPrintProcessors)
926
927 BOOL WINAPI GetPrintProcessorDirectoryA(LPSTR pName, LPSTR pEnvironment,
928                                         DWORD Level,
929                                         LPBYTE pPrintProcessorInfo,
930                                         DWORD cbBuf, LPDWORD pcbNeeded);
931
932 BOOL WINAPI GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
933                                         DWORD Level,
934                                         LPBYTE pPrintProcessorInfo,
935                                         DWORD cbBuf, LPDWORD pcbNeeded);
936 #define GetPrintProcessorDirectory WINELIB_NAME_AW(GetPrintProcessorDirectory)
937
938 BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR pName,
939                                          LPSTR pPrintProcessorName,
940                                          DWORD Level, LPBYTE pDatatypes,
941                                          DWORD cbBuf, LPDWORD pcbNeeded,
942                                          LPDWORD pcbReturned);
943 BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR pName,
944                                          LPWSTR pPrintProcessorName,
945                                          DWORD Level, LPBYTE pDatatypes,
946                                          DWORD cbBuf, LPDWORD pcbNeeded,
947                                          LPDWORD pcbReturned);
948 #define EnumPrintProcessorDatatypes WINELIB_NAME_AW(EnumPrintProcessorDatatypes)
949
950 BOOL WINAPI DeletePrintProcessorA(LPSTR pName, LPSTR pEnvironment,
951                                   LPSTR pPrintProcessorName);
952 BOOL WINAPI DeletePrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
953                                   LPWSTR pPrintProcessorName);
954 #define DeletePrintProcessor WINELIB_NAME_AW(DeletePrintProcessor)
955
956 DWORD WINAPI StartDocPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
957 DWORD WINAPI StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
958 #define StartDocPrinter WINELIB_NAME_AW(StartDocPrinter)
959
960 BOOL WINAPI StartPagePrinter(HANDLE hPrinter);
961 BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
962                          LPDWORD pcWritten);
963 BOOL WINAPI EndPagePrinter(HANDLE hPrinter);
964 BOOL WINAPI AbortPrinter(HANDLE hPrinter);
965 BOOL WINAPI ReadPrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
966                         LPDWORD pNoBytesRead);
967 BOOL WINAPI EndDocPrinter(HANDLE hPrinter);
968
969 BOOL WINAPI AddJobA(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
970                     LPDWORD pcbNeeded);
971 BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
972                     LPDWORD pcbNeeded);
973 #define AddJob WINELIB_NAME_AW(AddJob)
974
975 BOOL WINAPI ScheduleJob(HANDLE hPrinter, DWORD JobID);
976
977 LONG WINAPI AdvancedDocumentPropertiesA(HWND hWnd, HANDLE hPrinter,
978                                         LPSTR pDeviceName,
979                                         PDEVMODEA pDevModeOutput,
980                                         PDEVMODEA pDevModeInput);
981 LONG WINAPI AdvancedDocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
982                                         LPWSTR pDeviceName,
983                                         PDEVMODEW pDevModeOutput,
984                                         PDEVMODEW pDevModeInput);
985 #define AdvancedDocumentProperties WINELIB_NAME_AW(AdvancedDocumentProperties)
986
987 DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
988                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
989 DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
990                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
991 #define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
992
993 DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
994                                LPSTR pValueName, LPDWORD pType,
995                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
996 DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
997                                LPWSTR pValueName, LPDWORD pType,
998                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
999 #define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
1000
1001 DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
1002                              LPBYTE pData, DWORD cbData);
1003 DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
1004                              LPBYTE pData, DWORD cbData);
1005 #define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
1006
1007 DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
1008                                LPSTR pValueName, DWORD Type,
1009                                LPBYTE pData, DWORD cbData);
1010 DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
1011                                LPWSTR pValueName, DWORD Type,
1012                                LPBYTE pData, DWORD cbData);
1013 #define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
1014
1015 DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
1016 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
1017                                                  DWORD fdwFlags,
1018                                                  DWORD fdwOptions,
1019                                                  LPVOID pPrinterNotifyOptions);
1020 BOOL WINAPI FindNextPrinterChangeNotification(HANDLE hChange,
1021                                               PDWORD pdwChange,
1022                                               LPVOID pvReserved,
1023                                               LPVOID *ppPrinterNotifyInfo);
1024 BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
1025 BOOL WINAPI FindClosePrinterChangeNotification(HANDLE hChange);
1026
1027 DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter, DWORD Error, HWND hWnd,
1028                                 LPSTR pText, LPSTR pCaption, DWORD dwType);
1029 DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter, DWORD Error, HWND hWnd,
1030                                 LPWSTR pText, LPWSTR pCaption, DWORD dwType);
1031 #define PrinterMessageBox WINELIB_NAME_AW(PrinterMessageBox)
1032
1033 BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1034 BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1035 #define AddForm WINELIB_NAME_AW(AddForm)
1036
1037 BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName);
1038 BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName);
1039 #define DeleteForm WINELIB_NAME_AW(DeleteForm)
1040
1041 BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1042                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1043 BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1044                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1045 #define GetForm WINELIB_NAME_AW(GetForm)
1046
1047 BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1048                      LPBYTE pForm);
1049 BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1050                      LPBYTE pForm);
1051 #define SetForm WINELIB_NAME_AW(SetForm)
1052
1053 BOOL WINAPI EnumFormsA(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1054                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1055 BOOL WINAPI EnumFormsW(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1056                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1057 #define EnumForms WINELIB_NAME_AW(EnumForms)
1058
1059 BOOL WINAPI EnumMonitorsA(LPSTR pName, DWORD Level, LPBYTE pMonitors,
1060                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1061 BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
1062                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1063 #define EnumMonitors WINELIB_NAME_AW(EnumMonitors)
1064
1065 BOOL WINAPI AddMonitorA(LPSTR pName, DWORD Level, LPBYTE pMonitors);
1066 BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
1067 #define AddMonitor WINELIB_NAME_AW(AddMonitor)
1068
1069 BOOL WINAPI DeleteMonitorA(LPSTR pName, LPSTR pEnvironment,
1070                            LPSTR pMonitorName);
1071 BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment,
1072                            LPWSTR pMonitorName);
1073 #define DeleteMonitor WINELIB_NAME_AW(DeleteMonitor)
1074
1075 BOOL WINAPI EnumPortsA(LPSTR pName, DWORD Level, LPBYTE pPorts,
1076                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1077 BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts,
1078                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1079 #define EnumPorts WINELIB_NAME_AW(EnumPorts)
1080
1081 BOOL WINAPI AddPortA(LPSTR pName, HWND hWnd, LPSTR pMonitorName);
1082 BOOL WINAPI AddPortW(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
1083 #define AddPort WINELIB_NAME_AW(AddPort)
1084
1085 BOOL WINAPI ConfigurePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1086 BOOL WINAPI ConfigurePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1087 #define ConfigurePort WINELIB_NAME_AW(ConfigurePort)
1088
1089 BOOL WINAPI DeletePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1090 BOOL WINAPI DeletePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1091 #define DeletePort WINELIB_NAME_AW(DeletePort)
1092
1093 BOOL WINAPI SetPortA(LPSTR pName, LPSTR pPortName, DWORD dwLevel,
1094                      LPBYTE pPortInfo);
1095 BOOL WINAPI SetPortW(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
1096                      LPBYTE pPortInfo);
1097 #define SetPort WINELIB_NAME_AW(SetPort)
1098
1099 BOOL WINAPI AddPrinterConnectionA(LPSTR pName);
1100 BOOL WINAPI AddPrinterConnectionW(LPWSTR pName);
1101 #define AddPrinterConnection WINELIB_NAME_AW(AddPrinterConnection)
1102
1103 BOOL WINAPI DeletePrinterConnectionA(LPSTR pName);
1104 BOOL WINAPI DeletePrinterConnectionW(LPWSTR pName);
1105 #define DeletePrinterConnection WINELIB_NAME_AW(DeletePrinterConnection)
1106
1107 HANDLE WINAPI ConnectToPrinterDlg(HWND hwnd, DWORD Flags);
1108
1109 BOOL WINAPI AddPrintProvidorA(LPSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1110 BOOL WINAPI AddPrintProvidorW(LPWSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1111 #define AddPrintProvidor WINELIB_NAME_AW(AddPrintProvidor)
1112
1113 BOOL WINAPI DeletePrintProvidorA(LPSTR pName, LPSTR pEnvironment,
1114                                  LPSTR pPrintProvidorName);
1115 BOOL WINAPI DeletePrintProvidorW(LPWSTR pName, LPWSTR pEnvironment,
1116                                  LPWSTR pPrintProvidorName);
1117 #define DeletePrintProvidor WINELIB_NAME_AW(DeletePrintProvidor)
1118
1119 DWORD WINAPI EnumPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1120                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1121                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1122 DWORD WINAPI EnumPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1123                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1124                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1125 #define EnumPrinterDataEx WINELIB_NAME_AW(EnumPrinterDataEx)
1126
1127
1128
1129 #ifdef __cplusplus
1130 } /* extern "C" */
1131 #endif
1132
1133 #endif  /* __WINE_WINSPOOL_H */