Add some missing USER definitions, add a couple of FIXMEs for not
[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 /* Access Rights for Printserver, Printers and Printjobs */
252 #define SERVER_ACCESS_ADMINISTER    0x00000001
253 #define SERVER_ACCESS_ENUMERATE     0x00000002
254 #define SERVER_READ        (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE)
255 #define SERVER_WRITE       (STANDARD_RIGHTS_WRITE | \
256                             SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
257 #define SERVER_EXECUTE     (STANDARD_RIGHTS_EXECUTE |  SERVER_ACCESS_ENUMERATE)
258 #define SERVER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
259                             SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
260
261 #define PRINTER_ACCESS_ADMINISTER   0x00000004
262 #define PRINTER_ACCESS_USE          0x00000008
263 #define PRINTER_READ        (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE)
264 #define PRINTER_WRITE       (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE)
265 #define PRINTER_EXECUTE     (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE)
266 #define PRINTER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
267                              PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE)
268
269 #define JOB_ACCESS_ADMINISTER       0x00000010
270 #define JOB_READ            (STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER)
271 #define JOB_WRITE           (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER)
272 #define JOB_EXECUTE         (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER)
273 #define JOB_ALL_ACCESS      (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER)
274
275 /* TYPES */
276 typedef struct _PRINTER_DEFAULTSA {
277   LPSTR        pDatatype;
278   LPDEVMODEA pDevMode;
279   ACCESS_MASK  DesiredAccess;
280 } PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
281
282 typedef struct _PRINTER_DEFAULTSW {
283   LPWSTR       pDatatype;
284   LPDEVMODEW pDevMode;
285   ACCESS_MASK  DesiredAccess;
286 } PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
287
288 DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
289 DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
290
291 typedef struct _DRIVER_INFO_1A {
292   LPSTR     pName;
293 } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
294
295 typedef struct _DRIVER_INFO_1W {
296   LPWSTR    pName;
297 } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
298
299 DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
300 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
301 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
302
303 typedef struct _DRIVER_INFO_2A {
304   DWORD   cVersion;
305   LPSTR     pName;
306   LPSTR     pEnvironment;
307   LPSTR     pDriverPath;
308   LPSTR     pDataFile;
309   LPSTR     pConfigFile;
310 } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
311
312 typedef struct _DRIVER_INFO_2W {
313   DWORD   cVersion;
314   LPWSTR    pName;
315   LPWSTR    pEnvironment;
316   LPWSTR    pDriverPath;
317   LPWSTR    pDataFile;
318   LPWSTR    pConfigFile;
319 } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
320
321 DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
322 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
323 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
324
325 typedef struct _DRIVER_INFO_3A {
326   DWORD cVersion;
327   LPSTR pName;
328   LPSTR pEnvironment;
329   LPSTR pDriverPath;
330   LPSTR pDataFile;
331   LPSTR pConfigFile;
332   LPSTR pHelpFile;
333   LPSTR pDependentFiles;
334   LPSTR pMonitorName;
335   LPSTR pDefaultDataType;
336 } DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
337
338 typedef struct _DRIVER_INFO_3W {
339   DWORD cVersion;
340   LPWSTR pName;
341   LPWSTR pEnvironment;
342   LPWSTR pDriverPath;
343   LPWSTR pDataFile;
344   LPWSTR pConfigFile;
345   LPWSTR pHelpFile;
346   LPWSTR pDependentFiles;
347   LPWSTR pMonitorName;
348   LPWSTR pDefaultDataType;
349 } DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
350
351 DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
352 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
353 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
354
355 typedef struct _PRINTER_INFO_1A {
356   DWORD   Flags;
357   LPSTR   pDescription;
358   LPSTR   pName;
359   LPSTR   pComment;
360 } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
361
362 typedef struct _PRINTER_INFO_1W {
363   DWORD   Flags;
364   LPWSTR  pDescription;
365   LPWSTR  pName;
366   LPWSTR  pComment;
367 } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
368
369 DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
370 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
371 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
372
373 /* FIXME: winspool.h declares some structure members with the name Status.
374  * unfortunately <X11/ICE/ICElib.h> #defines Status to the type 'int'
375  * therefore the following hack */
376 #ifndef Status
377
378 typedef struct _PRINTER_INFO_2A {
379   LPSTR     pServerName;
380   LPSTR     pPrinterName;
381   LPSTR     pShareName;
382   LPSTR     pPortName;
383   LPSTR     pDriverName;
384   LPSTR     pComment;
385   LPSTR     pLocation;
386   LPDEVMODEA pDevMode;
387   LPSTR     pSepFile;
388   LPSTR     pPrintProcessor;
389   LPSTR     pDatatype;
390   LPSTR     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_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
401
402 typedef struct _PRINTER_INFO_2W {
403   LPWSTR    pServerName;
404   LPWSTR    pPrinterName;
405   LPWSTR    pShareName;
406   LPWSTR    pPortName;
407   LPWSTR    pDriverName;
408   LPWSTR    pComment;
409   LPWSTR    pLocation;
410   LPDEVMODEW pDevMode;
411   LPWSTR    pSepFile;
412   LPWSTR    pPrintProcessor;
413   LPWSTR    pDatatype;
414   LPWSTR    pParameters;
415   PSECURITY_DESCRIPTOR pSecurityDescriptor;
416   DWORD   Attributes;
417   DWORD   Priority;
418   DWORD   DefaultPriority;
419   DWORD   StartTime;
420   DWORD   UntilTime;
421   DWORD   Status;
422   DWORD   cJobs;
423   DWORD   AveragePPM;
424 } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
425
426 DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
427 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
428 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
429
430 typedef struct _PRINTER_INFO_3 {
431   PSECURITY_DESCRIPTOR pSecurityDescriptor;
432 } PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
433
434 typedef struct _PRINTER_INFO_4A {
435   LPSTR     pPrinterName;
436   LPSTR     pServerName;
437   DWORD     Attributes;
438 } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
439
440 typedef struct _PRINTER_INFO_4W {
441   LPWSTR     pPrinterName;
442   LPWSTR     pServerName;
443   DWORD     Attributes;
444 } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
445
446 DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
447 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
448 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
449
450 typedef struct _PRINTER_INFO_5A {
451   LPSTR     pPrinterName;
452   LPSTR     pPortName;
453   DWORD     Attributes;
454   DWORD     DeviceNotSelectedTimeout;
455   DWORD     TransmissionRetryTimeout;
456 } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
457
458 typedef struct _PRINTER_INFO_5W {
459   LPWSTR    pPrinterName;
460   LPWSTR    pPortName;
461   DWORD     Attributes;
462   DWORD     DeviceNotSelectedTimeout;
463   DWORD     TransmissionRetryTimeout;
464 } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
465
466 DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
467 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
468 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
469
470 typedef struct _PRINTER_INFO_6 {
471   DWORD dwStatus;
472 } PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
473
474 typedef struct _JOB_INFO_1A {
475   DWORD JobId;
476   LPSTR pPrinterName;
477   LPSTR pMachineName;
478   LPSTR pUserName;
479   LPSTR pDocument;
480   LPSTR pDatatype;
481   LPSTR pStatus;
482   DWORD Status;
483   DWORD Priority;
484   DWORD Position;
485   DWORD TotalPages;
486   DWORD PagesPrinted;
487   SYSTEMTIME Submitted;
488 } JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
489
490 typedef struct _JOB_INFO_1W {
491   DWORD JobId;
492   LPWSTR pPrinterName;
493   LPWSTR pMachineName;
494   LPWSTR pUserName;
495   LPWSTR pDocument;
496   LPWSTR pDatatype;
497   LPWSTR pStatus;
498   DWORD Status;
499   DWORD Priority;
500   DWORD Position;
501   DWORD TotalPages;
502   DWORD PagesPrinted;
503   SYSTEMTIME Submitted;
504 } JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
505
506 DECL_WINELIB_TYPE_AW(JOB_INFO_1)
507 DECL_WINELIB_TYPE_AW(PJOB_INFO_1)
508 DECL_WINELIB_TYPE_AW(LPJOB_INFO_1)
509
510 typedef struct _JOB_INFO_2A {
511   DWORD JobId;
512   LPSTR pPrinterName;
513   LPSTR pMachineName;
514   LPSTR pUserName;
515   LPSTR pDocument;
516   LPSTR pNotifyName;
517   LPSTR pDatatype;
518   LPSTR pPrintProcessor;
519   LPSTR pParameters;
520   LPSTR pDriverName;
521   LPDEVMODEA pDevMode;
522   LPSTR pStatus;
523   PSECURITY_DESCRIPTOR pSecurityDescriptor;
524   DWORD Status;
525   DWORD Priority;
526   DWORD Position;
527   DWORD StartTime;
528   DWORD UntilTime;
529   DWORD TotalPages;
530   DWORD Size;
531   SYSTEMTIME Submitted;
532   DWORD Time;
533   DWORD PagesPrinted;
534 } JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
535
536 typedef struct _JOB_INFO_2W {
537   DWORD JobId;
538   LPWSTR pPrinterName;
539   LPWSTR pMachineName;
540   LPWSTR pUserName;
541   LPWSTR pDocument;
542   LPWSTR pNotifyName;
543   LPWSTR pDatatype;
544   LPWSTR pPrintProcessor;
545   LPWSTR pParameters;
546   LPWSTR pDriverName;
547   LPDEVMODEW pDevMode;
548   LPWSTR pStatus;
549   PSECURITY_DESCRIPTOR pSecurityDescriptor;
550   DWORD Status;
551   DWORD Priority;
552   DWORD Position;
553   DWORD StartTime;
554   DWORD UntilTime;
555   DWORD TotalPages;
556   DWORD Size;
557   SYSTEMTIME Submitted;
558   DWORD Time;
559   DWORD PagesPrinted;
560 } JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
561
562 DECL_WINELIB_TYPE_AW(JOB_INFO_2)
563 DECL_WINELIB_TYPE_AW(PJOB_INFO_2)
564 DECL_WINELIB_TYPE_AW(LPJOB_INFO_2)
565
566 typedef struct _JOB_INFO_3 {
567   DWORD JobId;
568   DWORD NextJobId;
569   DWORD Reserved;
570 } JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
571
572 typedef struct _ADDJOB_INFO_1A {
573   LPSTR Path;
574   DWORD JobId;
575 } ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
576
577 typedef struct _ADDJOB_INFO_1W {
578   LPWSTR Path;
579   DWORD  JobId;
580 } ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
581
582 DECL_WINELIB_TYPE_AW(ADDJOB_INFO_1)
583 DECL_WINELIB_TYPE_AW(PADDJOB_INFO_1)
584 DECL_WINELIB_TYPE_AW(LPADDJOB_INFO_1)
585
586 typedef struct _DOC_INFO_1A {
587   LPSTR pDocName;
588   LPSTR pOutputFile;
589   LPSTR pDatatype;
590 } DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
591
592 typedef struct _DOC_INFO_1W {
593   LPWSTR pDocName;
594   LPWSTR pOutputFile;
595   LPWSTR pDatatype;
596 } DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
597
598 DECL_WINELIB_TYPE_AW(DOC_INFO_1)
599 DECL_WINELIB_TYPE_AW(PDOC_INFO_1)
600 DECL_WINELIB_TYPE_AW(LPDOC_INFO_1)
601
602 typedef struct _DOC_INFO_2A {
603   LPSTR pDocName;
604   LPSTR pOutputFile;
605   LPSTR pDatatype;
606   DWORD dwMode;
607   DWORD JobId;
608 } DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
609
610 typedef struct _DOC_INFO_2W {
611   LPWSTR pDocName;
612   LPWSTR pOutputFile;
613   LPWSTR pDatatype;
614   DWORD dwMode;
615   DWORD JobId;
616 } DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
617
618 DECL_WINELIB_TYPE_AW(DOC_INFO_2)
619 DECL_WINELIB_TYPE_AW(PDOC_INFO_2)
620 DECL_WINELIB_TYPE_AW(LPDOC_INFO_2)
621
622 typedef struct _FORM_INFO_1A {
623   DWORD Flags;
624   LPSTR pName;
625   SIZEL Size;
626   RECTL ImageableArea;
627 } FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
628
629 typedef struct _FORM_INFO_1W {
630   DWORD Flags;
631   LPWSTR pName;
632   SIZEL Size;
633   RECTL ImageableArea;
634 } FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
635
636 DECL_WINELIB_TYPE_AW(FORM_INFO_1)
637 DECL_WINELIB_TYPE_AW(PFORM_INFO_1)
638 DECL_WINELIB_TYPE_AW(LPFORM_INFO_1)
639
640 typedef struct _PRINTPROCESSOR_INFO_1A {
641   LPSTR pName;
642 } PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A,
643   *LPPRINTPROCESSOR_INFO_1A;
644
645 typedef struct _PRINTPROCESSOR_INFO_1W {
646   LPWSTR pName;
647 } PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W,
648   *LPPRINTPROCESSOR_INFO_1W;
649
650 DECL_WINELIB_TYPE_AW(PRINTPROCESSOR_INFO_1)
651 DECL_WINELIB_TYPE_AW(PPRINTPROCESSOR_INFO_1)
652 DECL_WINELIB_TYPE_AW(LPPRINTPROCESSOR_INFO_1)
653
654 typedef struct _PORT_INFO_1A {
655   LPSTR pName;
656 } PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
657
658 typedef struct _PORT_INFO_1W {
659   LPWSTR pName;
660 } PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
661
662 DECL_WINELIB_TYPE_AW(PORT_INFO_1)
663 DECL_WINELIB_TYPE_AW(PPORT_INFO_1)
664 DECL_WINELIB_TYPE_AW(LPPORT_INFO_1)
665
666 typedef struct _PORT_INFO_2A {
667   LPSTR pPortName;
668   LPSTR pMonitorName;
669   LPSTR pDescription;
670   DWORD fPortType;
671   DWORD Reserved;
672 } PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
673
674 typedef struct _PORT_INFO_2W {
675   LPWSTR pPortName;
676   LPWSTR pMonitorName;
677   LPWSTR pDescription;
678   DWORD  fPortType;
679   DWORD  Reserved;
680 } PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
681
682 DECL_WINELIB_TYPE_AW(PORT_INFO_2)
683 DECL_WINELIB_TYPE_AW(PPORT_INFO_2)
684 DECL_WINELIB_TYPE_AW(LPPORT_INFO_2)
685
686 typedef struct _PORT_INFO_3A {
687   DWORD dwStatus;
688   LPSTR pszStatus;
689   DWORD dwSeverity;
690 } PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
691
692 typedef struct _PORT_INFO_3W {
693   DWORD  dwStatus;
694   LPWSTR pszStatus;
695   DWORD  dwSeverity;
696 } PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
697
698 DECL_WINELIB_TYPE_AW(PORT_INFO_3)
699 DECL_WINELIB_TYPE_AW(PPORT_INFO_3)
700 DECL_WINELIB_TYPE_AW(LPPORT_INFO_3)
701
702 typedef struct _MONITOR_INFO_1A {
703   LPSTR pName;
704 } MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
705
706 typedef struct _MONITOR_INFO_1W {
707   LPWSTR pName;
708 } MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
709
710 DECL_WINELIB_TYPE_AW(MONITOR_INFO_1)
711 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_1)
712 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_1)
713
714 #endif /* Status */
715
716
717 typedef struct _MONITOR_INFO_2A {
718   LPSTR pName;
719   LPSTR pEnvironment;
720   LPSTR pDLLName;
721 } MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
722
723 typedef struct _MONITOR_INFO_2W {
724   LPWSTR pName;
725   LPWSTR pEnvironment;
726   LPWSTR pDLLName;
727 } MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
728
729 DECL_WINELIB_TYPE_AW(MONITOR_INFO_2)
730 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_2)
731 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_2)
732
733 typedef struct _DATATYPES_INFO_1A {
734   LPSTR pName;
735 } DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
736
737 typedef struct _DATATYPES_INFO_1W {
738   LPWSTR pName;
739 } DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
740
741 DECL_WINELIB_TYPE_AW(DATATYPES_INFO_1)
742 DECL_WINELIB_TYPE_AW(PDATATYPES_INFO_1)
743 DECL_WINELIB_TYPE_AW(LPDATATYPES_INFO_1)
744
745 typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
746   WORD  Type;
747   WORD  Reserved0;
748   DWORD Reserved1;
749   DWORD Reserved2;
750   DWORD Count;
751   PWORD pFields;
752 } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE,
753 *LPPRINTER_NOTIFY_OPTIONS_TYPE;
754
755 typedef struct _PRINTER_NOTIFY_OPTIONS {
756   DWORD Version;
757   DWORD Flags;
758   DWORD Count;
759   PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
760 } PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
761
762 typedef struct _PRINTER_NOTIFY_INFO_DATA {
763   WORD Type;
764   WORD Field;
765   DWORD Reserved;
766   DWORD Id;
767   union {
768     DWORD adwData[2];
769     struct {
770       DWORD cbBuf;
771       LPVOID pBuf;
772     } Data;
773   } NotifyData;
774 } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA,
775 *LPPRINTER_NOTIFY_INFO_DATA;
776
777 typedef struct _PRINTER_NOTIFY_INFO {
778   DWORD Version;
779   DWORD Flags;
780   DWORD Count;
781   PRINTER_NOTIFY_INFO_DATA aData[1];
782 } PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
783
784 typedef struct _PROVIDOR_INFO_1A {
785   LPSTR pName;
786   LPSTR pEnvironment;
787   LPSTR pDLLName;
788 } PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
789
790 typedef struct _PROVIDOR_INFO_1W {
791   LPWSTR pName;
792   LPWSTR pEnvironment;
793   LPWSTR pDLLName;
794 } PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
795
796 DECL_WINELIB_TYPE_AW(PROVIDOR_INFO_1)
797 DECL_WINELIB_TYPE_AW(PPROVIDOR_INFO_1)
798 DECL_WINELIB_TYPE_AW(LPPROVIDOR_INFO_1)
799
800 typedef struct _PRINTER_ENUM_VALUESA {
801   LPSTR  pValueName;
802   DWORD  cbValueName;
803   DWORD  dwType;
804   LPBYTE pData;
805   DWORD  cbData;
806 } PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA;
807
808 typedef struct _PRINTER_ENUM_VALUESW {
809   LPWSTR pValueName;
810   DWORD  cbValueName;
811   DWORD  dwType;
812   LPBYTE pData;
813   DWORD  cbData;
814 } PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW;
815
816 DECL_WINELIB_TYPE_AW(PRINTER_ENUM_VALUES)
817 DECL_WINELIB_TYPE_AW(PPRINTER_ENUM_VALUES)
818
819 typedef enum {
820  BIDI_NULL = 0,
821  BIDI_INT,
822  BIDI_FLOAT,
823  BIDI_BOOL,
824  BIDI_STRING,
825  BIDI_TEXT,
826  BIDI_ENUM,
827  BIDI_BLOB
828 } BIDI_TYPE;
829
830 typedef struct _BINARY_CONTAINER {
831  DWORD  cbBuf;
832  LPBYTE pData;
833 } BINARY_CONTAINER, *PBINARY_CONTAINER;
834
835 typedef struct _BIDI_DATA {
836  DWORD  dwBidiType;
837  union
838  {
839    BOOL             bData;
840    INT              iData;
841    LPWSTR           sData;
842    FLOAT            fData;
843    BINARY_CONTAINER biData;
844  } u;
845 } BIDI_DATA, *LPBIDI_DATA, *PBIDI_DATA;
846
847 typedef struct _BIDI_REQUEST_DATA {
848  DWORD      dwReqNumber;
849  LPWSTR     pSchema;
850  BIDI_DATA  data;
851 } BIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA;
852
853 typedef struct _BIDI_REQUEST_CONTAINER {
854  DWORD              Version;
855  DWORD              Flags;
856  DWORD              Count;
857  BIDI_REQUEST_DATA  aData[1];
858 } BIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER;
859
860 typedef struct _BIDI_RESPONSE_DATA {
861  DWORD      dwResult;
862  DWORD      dwReqNumber;
863  LPWSTR     pSchema;
864  BIDI_DATA  data;
865 } BIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA;
866
867 typedef struct _BIDI_RESPONSE_CONTAINER {
868  DWORD              Version;
869  DWORD              Flags;
870  DWORD              Count;
871  BIDI_RESPONSE_DATA aData[1];
872 } BIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER;
873
874 /* DECLARATIONS */
875 INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
876                                LPSTR pOutput, LPDEVMODEA pDevMode);
877 INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
878                                WORD fwCapability, LPWSTR pOutput,
879                                const DEVMODEW *pDevMode);
880
881 #define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
882
883 LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
884                                 LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
885                                 LPDEVMODEA pDevModeInput,DWORD fMode );
886 LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
887                                 LPWSTR pDeviceName,
888                                 LPDEVMODEW pDevModeOutput,
889                                 LPDEVMODEW pDevModeInput, DWORD fMode);
890
891 #define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
892
893 BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
894                              LPPRINTER_DEFAULTSA pDefault);
895 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
896                              LPPRINTER_DEFAULTSW pDefault);
897
898 #define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
899
900 BOOL WINAPI ResetPrinterA(HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault);
901 BOOL WINAPI ResetPrinterW(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
902 #define ResetPrinter WINELIB_NAME_AW(ResetPrinter)
903
904 BOOL WINAPI ClosePrinter (HANDLE phPrinter);
905
906 BOOL WINAPI EnumJobsA(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
907                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
908                       LPDWORD pcReturned);
909 BOOL WINAPI EnumJobsW(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
910                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
911                       LPDWORD pcReturned);
912 #define EnumJobs WINELIB_NAME_AW(EnumJobs)
913
914 BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
915                                DWORD dwLevel, LPBYTE lpbPrinters,
916                                DWORD cbBuf, LPDWORD lpdwNeeded,
917                                LPDWORD lpdwReturned);
918 BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
919                                DWORD dwLevel, LPBYTE lpbPrinters,
920                                DWORD cbBuf, LPDWORD lpdwNeeded,
921                                LPDWORD lpdwReturned);
922 #define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
923
924 BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
925
926 BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
927 BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
928 #define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
929
930 BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
931                               DWORD Level, LPBYTE pDriverInfo,
932                               DWORD cbBuf, LPDWORD pcbNeeded);
933 BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
934                               DWORD Level, LPBYTE pDriverInfo,
935                               DWORD cbBuf, LPDWORD pcbNeeded);
936 #define GetPrinterDriver WINELIB_NAME_AW(GetPrinterDriver)
937
938 BOOL WINAPI SetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
939                     DWORD Command);
940 BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
941                     DWORD Command);
942 #define SetJob WINELIB_NAME_AW(SetJob)
943
944 BOOL WINAPI GetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
945                     DWORD cbBuf, LPDWORD pcbNeeded);
946 BOOL WINAPI GetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
947                     DWORD cbBuf, LPDWORD pcbNeeded);
948 #define GetJob WINELIB_NAME_AW(GetJob)
949
950 HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter);
951 HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
952 #define AddPrinter WINELIB_NAME_AW(AddPrinter)
953
954 BOOL WINAPI DeletePrinter(HANDLE hPrinter);
955
956 BOOL WINAPI SetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
957                         DWORD Command);
958 BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
959                         DWORD Command);
960 #define SetPrinter WINELIB_NAME_AW(SetPrinter)
961
962 BOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
963                         DWORD cbBuf, LPDWORD pcbNeeded);
964 BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
965                         DWORD cbBuf, LPDWORD pcbNeeded);
966 #define GetPrinter WINELIB_NAME_AW(GetPrinter)
967
968 BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo);
969 BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
970 #define AddPrinterDriver WINELIB_NAME_AW(AddPrinterDriver)
971
972 BOOL WINAPI AddPrinterDriverExA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo,
973                                 DWORD dwFileCopyFlags);
974 BOOL WINAPI AddPrinterDriverExW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo,
975                                 DWORD dwFileCopyFlags);
976 #define AddPrinterDriverEx WINELIB_NAME_AW(AddPrinterDriverEx)
977
978 BOOL WINAPI EnumPrinterDriversA(LPSTR pName, LPSTR pEnvironment, DWORD Level,
979                                 LPBYTE pDriverInfo, DWORD cbBuf,
980                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
981 BOOL WINAPI EnumPrinterDriversW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level,
982                                 LPBYTE pDriverInfo, DWORD cbBuf,
983                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
984 #define EnumPrinterDrivers WINELIB_NAME_AW(EnumPrinterDrivers)
985
986 BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
987 BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
988 #define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
989
990 BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
991                                  LPSTR pDriverName);
992 BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,
993                                  LPWSTR pDriverName);
994 #define DeletePrinterDriver WINELIB_NAME_AW(DeletePrinterDriver)
995
996 BOOL WINAPI DeletePrinterDriverExA(LPSTR pName, LPSTR pEnvironment,
997                                    LPSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
998 BOOL WINAPI DeletePrinterDriverExW(LPWSTR pName, LPWSTR pEnvironment,
999                                    LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
1000 #define DeletePrinterDriverEx WINELIB_NAME_AW(DeletePrinterDriverEx)
1001
1002 BOOL WINAPI AddPrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1003                                LPSTR pPathName, LPSTR pPrintProcessorName);
1004 BOOL WINAPI AddPrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1005                                LPWSTR pPathName, LPWSTR pPrintProcessorName);
1006 #define AddPrintProcessor WINELIB_NAME_AW(AddPrintProcessor)
1007
1008 BOOL WINAPI EnumPrintProcessorsA(LPSTR pName, LPSTR pEnvironment,
1009                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1010                                  DWORD cbBuf, LPDWORD pcbNeeded,
1011                                  LPDWORD pcbReturned);
1012 BOOL WINAPI EnumPrintProcessorsW(LPWSTR pName, LPWSTR pEnvironment,
1013                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1014                                  DWORD cbBuf, LPDWORD pcbNeeded,
1015                                  LPDWORD pcbReturned);
1016 #define EnumPrintProcessors WINELIB_NAME_AW(EnumPrintProcessors)
1017
1018 BOOL WINAPI GetPrintProcessorDirectoryA(LPSTR pName, LPSTR pEnvironment,
1019                                         DWORD Level,
1020                                         LPBYTE pPrintProcessorInfo,
1021                                         DWORD cbBuf, LPDWORD pcbNeeded);
1022
1023 BOOL WINAPI GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
1024                                         DWORD Level,
1025                                         LPBYTE pPrintProcessorInfo,
1026                                         DWORD cbBuf, LPDWORD pcbNeeded);
1027 #define GetPrintProcessorDirectory WINELIB_NAME_AW(GetPrintProcessorDirectory)
1028
1029 BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR pName,
1030                                          LPSTR pPrintProcessorName,
1031                                          DWORD Level, LPBYTE pDatatypes,
1032                                          DWORD cbBuf, LPDWORD pcbNeeded,
1033                                          LPDWORD pcbReturned);
1034 BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR pName,
1035                                          LPWSTR pPrintProcessorName,
1036                                          DWORD Level, LPBYTE pDatatypes,
1037                                          DWORD cbBuf, LPDWORD pcbNeeded,
1038                                          LPDWORD pcbReturned);
1039 #define EnumPrintProcessorDatatypes WINELIB_NAME_AW(EnumPrintProcessorDatatypes)
1040
1041 BOOL WINAPI DeletePrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1042                                   LPSTR pPrintProcessorName);
1043 BOOL WINAPI DeletePrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1044                                   LPWSTR pPrintProcessorName);
1045 #define DeletePrintProcessor WINELIB_NAME_AW(DeletePrintProcessor)
1046
1047 DWORD WINAPI StartDocPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1048 DWORD WINAPI StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1049 #define StartDocPrinter WINELIB_NAME_AW(StartDocPrinter)
1050
1051 BOOL WINAPI StartPagePrinter(HANDLE hPrinter);
1052 BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1053                          LPDWORD pcWritten);
1054 BOOL WINAPI EndPagePrinter(HANDLE hPrinter);
1055 BOOL WINAPI AbortPrinter(HANDLE hPrinter);
1056 BOOL WINAPI ReadPrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1057                         LPDWORD pNoBytesRead);
1058 BOOL WINAPI EndDocPrinter(HANDLE hPrinter);
1059
1060 BOOL WINAPI AddJobA(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1061                     LPDWORD pcbNeeded);
1062 BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1063                     LPDWORD pcbNeeded);
1064 #define AddJob WINELIB_NAME_AW(AddJob)
1065
1066 BOOL WINAPI ScheduleJob(HANDLE hPrinter, DWORD JobID);
1067
1068 LONG WINAPI AdvancedDocumentPropertiesA(HWND hWnd, HANDLE hPrinter,
1069                                         LPSTR pDeviceName,
1070                                         PDEVMODEA pDevModeOutput,
1071                                         PDEVMODEA pDevModeInput);
1072 LONG WINAPI AdvancedDocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
1073                                         LPWSTR pDeviceName,
1074                                         PDEVMODEW pDevModeOutput,
1075                                         PDEVMODEW pDevModeInput);
1076 #define AdvancedDocumentProperties WINELIB_NAME_AW(AdvancedDocumentProperties)
1077
1078 DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
1079                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1080 DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
1081                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1082 #define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
1083
1084 DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1085                                LPCSTR pValueName, LPDWORD pType,
1086                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1087 DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1088                                LPCWSTR pValueName, LPDWORD pType,
1089                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1090 #define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
1091
1092 DWORD WINAPI DeletePrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1093                                   LPCSTR pValueName);
1094 DWORD WINAPI DeletePrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1095                                   LPCWSTR pValueName);
1096 #define DeletePrinterDataEx WINELIB_NAME_AW(DeletePrinterDataEx)
1097
1098 DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
1099                              LPBYTE pData, DWORD cbData);
1100 DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
1101                              LPBYTE pData, DWORD cbData);
1102 #define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
1103
1104 DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1105                                LPCSTR pValueName, DWORD Type,
1106                                LPBYTE pData, DWORD cbData);
1107 DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1108                                LPCWSTR pValueName, DWORD Type,
1109                                LPBYTE pData, DWORD cbData);
1110 #define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
1111
1112 DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
1113 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
1114                                                  DWORD fdwFlags,
1115                                                  DWORD fdwOptions,
1116                                                  LPVOID pPrinterNotifyOptions);
1117 BOOL WINAPI FindNextPrinterChangeNotification(HANDLE hChange,
1118                                               PDWORD pdwChange,
1119                                               LPVOID pvReserved,
1120                                               LPVOID *ppPrinterNotifyInfo);
1121 BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
1122 BOOL WINAPI FindClosePrinterChangeNotification(HANDLE hChange);
1123
1124 DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter, DWORD Error, HWND hWnd,
1125                                 LPSTR pText, LPSTR pCaption, DWORD dwType);
1126 DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter, DWORD Error, HWND hWnd,
1127                                 LPWSTR pText, LPWSTR pCaption, DWORD dwType);
1128 #define PrinterMessageBox WINELIB_NAME_AW(PrinterMessageBox)
1129
1130 BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1131 BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1132 #define AddForm WINELIB_NAME_AW(AddForm)
1133
1134 BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName);
1135 BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName);
1136 #define DeleteForm WINELIB_NAME_AW(DeleteForm)
1137
1138 BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1139                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1140 BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1141                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1142 #define GetForm WINELIB_NAME_AW(GetForm)
1143
1144 BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1145                      LPBYTE pForm);
1146 BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1147                      LPBYTE pForm);
1148 #define SetForm WINELIB_NAME_AW(SetForm)
1149
1150 BOOL WINAPI EnumFormsA(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1151                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1152 BOOL WINAPI EnumFormsW(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1153                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1154 #define EnumForms WINELIB_NAME_AW(EnumForms)
1155
1156 BOOL WINAPI EnumMonitorsA(LPSTR pName, DWORD Level, LPBYTE pMonitors,
1157                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1158 BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
1159                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1160 #define EnumMonitors WINELIB_NAME_AW(EnumMonitors)
1161
1162 DWORD WINAPI EnumPrinterDataA( HANDLE hPrinter, DWORD dwIndex, LPSTR pValueName,
1163     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1164     DWORD cbData, LPDWORD pcbData );
1165 DWORD WINAPI EnumPrinterDataW( HANDLE hPrinter, DWORD dwIndex, LPWSTR pValueName,
1166     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1167     DWORD cbData, LPDWORD pcbData );
1168 #define EnumPrinterData WINELIB_NAME_AW(EnumPrinterData)
1169
1170 BOOL WINAPI AddMonitorA(LPSTR pName, DWORD Level, LPBYTE pMonitors);
1171 BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
1172 #define AddMonitor WINELIB_NAME_AW(AddMonitor)
1173
1174 BOOL WINAPI DeleteMonitorA(LPSTR pName, LPSTR pEnvironment,
1175                            LPSTR pMonitorName);
1176 BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment,
1177                            LPWSTR pMonitorName);
1178 #define DeleteMonitor WINELIB_NAME_AW(DeleteMonitor)
1179
1180 BOOL WINAPI EnumPortsA(LPSTR pName, DWORD Level, LPBYTE pPorts,
1181                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1182 BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts,
1183                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1184 #define EnumPorts WINELIB_NAME_AW(EnumPorts)
1185
1186 BOOL WINAPI AddPortA(LPSTR pName, HWND hWnd, LPSTR pMonitorName);
1187 BOOL WINAPI AddPortW(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
1188 #define AddPort WINELIB_NAME_AW(AddPort)
1189
1190 BOOL WINAPI AddPortExA(HANDLE hMonitor, LPSTR pName, DWORD Level,
1191                        LPBYTE lpBuffer, LPSTR lpMonitorName);
1192 BOOL WINAPI AddPortExW(HANDLE hMonitor, LPWSTR pName, DWORD Level,
1193                        LPBYTE lpBuffer, LPWSTR lpMonitorName);
1194 #define AddPortEx WINELIB_NAME_AW(AddPortEx)
1195
1196 BOOL WINAPI ConfigurePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1197 BOOL WINAPI ConfigurePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1198 #define ConfigurePort WINELIB_NAME_AW(ConfigurePort)
1199
1200 BOOL WINAPI DeletePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1201 BOOL WINAPI DeletePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1202 #define DeletePort WINELIB_NAME_AW(DeletePort)
1203
1204 BOOL WINAPI SetPortA(LPSTR pName, LPSTR pPortName, DWORD dwLevel,
1205                      LPBYTE pPortInfo);
1206 BOOL WINAPI SetPortW(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
1207                      LPBYTE pPortInfo);
1208 #define SetPort WINELIB_NAME_AW(SetPort)
1209
1210 BOOL WINAPI AddPrinterConnectionA(LPSTR pName);
1211 BOOL WINAPI AddPrinterConnectionW(LPWSTR pName);
1212 #define AddPrinterConnection WINELIB_NAME_AW(AddPrinterConnection)
1213
1214 BOOL WINAPI DeletePrinterConnectionA(LPSTR pName);
1215 BOOL WINAPI DeletePrinterConnectionW(LPWSTR pName);
1216 #define DeletePrinterConnection WINELIB_NAME_AW(DeletePrinterConnection)
1217
1218 HANDLE WINAPI ConnectToPrinterDlg(HWND hwnd, DWORD Flags);
1219
1220 BOOL WINAPI AddPrintProvidorA(LPSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1221 BOOL WINAPI AddPrintProvidorW(LPWSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1222 #define AddPrintProvidor WINELIB_NAME_AW(AddPrintProvidor)
1223
1224 BOOL WINAPI DeletePrintProvidorA(LPSTR pName, LPSTR pEnvironment,
1225                                  LPSTR pPrintProvidorName);
1226 BOOL WINAPI DeletePrintProvidorW(LPWSTR pName, LPWSTR pEnvironment,
1227                                  LPWSTR pPrintProvidorName);
1228 #define DeletePrintProvidor WINELIB_NAME_AW(DeletePrintProvidor)
1229
1230 DWORD WINAPI EnumPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1231                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1232                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1233 DWORD WINAPI EnumPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1234                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1235                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1236 #define EnumPrinterDataEx WINELIB_NAME_AW(EnumPrinterDataEx)
1237
1238 LONG WINAPI ExtDeviceMode( HWND hWnd, HANDLE hInst, LPDEVMODEA pDevModeOutput,
1239     LPSTR pDeviceName, LPSTR pPort, LPDEVMODEA pDevModeInput, LPSTR pProfile,
1240     DWORD fMode);
1241
1242 LPSTR WINAPI StartDocDlgA(HANDLE hPrinter, DOCINFOA *doc);
1243 LPWSTR WINAPI StartDocDlgW(HANDLE hPrinter, DOCINFOW *doc);
1244 #define StartDocDlg WINELIB_NAME_AW(StartDocDlg)
1245
1246 #ifdef __cplusplus
1247 } /* extern "C" */
1248 #endif
1249
1250 #endif  /* __WINE_WINSPOOL_H */