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