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