d3d8: Implement CopyRects with BltFast.
[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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ       0x00000080
39 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100
40 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
41 #define PRINTER_ATTRIBUTE_WORK_OFFLINE      0x00000400
42 #define PRINTER_ATTRIBUTE_ENABLE_BIDI       0x00000800
43 #define PRINTER_ATTRIBUTE_RAW_ONLY          0x00001000
44 #define PRINTER_ATTRIBUTE_PUBLISHED         0x00002000
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 #define PRINTER_ENUM_HIDE        0x01000000
73
74
75 /* various printer statuses */
76 #define PRINTER_STATUS_PAUSED            0x00000001
77 #define PRINTER_STATUS_ERROR             0x00000002
78 #define PRINTER_STATUS_PENDING_DELETION  0x00000004
79 #define PRINTER_STATUS_PAPER_JAM         0x00000008
80 #define PRINTER_STATUS_PAPER_OUT         0x00000010
81 #define PRINTER_STATUS_MANUAL_FEED       0x00000020
82 #define PRINTER_STATUS_PAPER_PROBLEM     0x00000040
83 #define PRINTER_STATUS_OFFLINE           0x00000080
84 #define PRINTER_STATUS_IO_ACTIVE         0x00000100
85 #define PRINTER_STATUS_BUSY              0x00000200
86 #define PRINTER_STATUS_PRINTING          0x00000400
87 #define PRINTER_STATUS_OUTPUT_BIN_FULL   0x00000800
88 #define PRINTER_STATUS_NOT_AVAILABLE     0x00001000
89 #define PRINTER_STATUS_WAITING           0x00002000
90 #define PRINTER_STATUS_PROCESSING        0x00004000
91 #define PRINTER_STATUS_INITIALIZING      0x00008000
92 #define PRINTER_STATUS_WARMING_UP        0x00010000
93 #define PRINTER_STATUS_TONER_LOW         0x00020000
94 #define PRINTER_STATUS_NO_TONER          0x00040000
95 #define PRINTER_STATUS_PAGE_PUNT         0x00080000
96 #define PRINTER_STATUS_USER_INTERVENTION 0x00100000
97 #define PRINTER_STATUS_OUT_OF_MEMORY     0x00200000
98 #define PRINTER_STATUS_DOOR_OPEN         0x00400000
99 #define PRINTER_STATUS_SERVER_UNKNOWN    0x00800000
100 #define PRINTER_STATUS_POWER_SAVE        0x01000000
101
102 #define NO_PRIORITY  0
103 #define MAX_PRIORITY 99
104 #define MIN_PRIORITY 1
105 #define DEF_PRIORITY 1
106
107 #define JOB_CONTROL_PAUSE             1
108 #define JOB_CONTROL_RESUME            2
109 #define JOB_CONTROL_CANCEL            3
110 #define JOB_CONTROL_RESTART           4
111 #define JOB_CONTROL_DELETE            5
112 #define JOB_CONTROL_SENT_TO_PRINTER   6
113 #define JOB_CONTROL_LAST_PAGE_EJECTED 7
114
115 #define JOB_STATUS_PAUSED       0x0001
116 #define JOB_STATUS_ERROR        0x0002
117 #define JOB_STATUS_DELETING     0x0004
118 #define JOB_STATUS_SPOOLING     0x0008
119 #define JOB_STATUS_PRINTING     0x0010
120 #define JOB_STATUS_OFFLINE      0x0020
121 #define JOB_STATUS_PAPEROUT     0x0040
122 #define JOB_STATUS_PRINTED      0x0080
123 #define JOB_STATUS_DELETED      0x0100
124 #define JOB_STATUS_BLOCKED_DEVQ 0x0200
125 #define JOB_STATUS_USER_INTERVENTION 0x0400
126
127 #define JOB_POSITION_UNSPECIFIED 1
128
129 #define DI_CHANNEL 1
130 #define DI_READ_SPOOL_JOB 3
131
132 #define FORM_USER    0
133 #define FORM_BUILTIN 1
134 #define FORM_PRINTER 2
135
136 #define PORT_TYPE_WRITE        1
137 #define PORT_TYPE_READ         2
138 #define PORT_TYPE_REDIRECTED   4
139 #define PORT_TYPE_NET_ATTACHED 8
140
141 #define PORT_STATUS_TYPE_ERROR   1
142 #define PORT_STATUS_TYPE_WARNING 2
143 #define PORT_STATUS_TYPE_INFO    3
144
145 #define PORT_STATUS_OFFLINE           1
146 #define PORT_STATUS_PAPER_JAM         2
147 #define PORT_STATUS_PAPER_OUT         3
148 #define PORT_STATUS_OUTPUT_BIN_FULL   4
149 #define PORT_STATUS_PAPER_PROBLEM     5
150 #define PORT_STATUS_NO_TONER          6
151 #define PORT_STATUS_DOOR_OPEN         7
152 #define PORT_STATUS_USER_INTERVENTION 8
153 #define PORT_STATUS_OUT_OF_MEMORY     9
154 #define PORT_STATUS_TONER_LOW         10
155 #define PORT_STATUS_WARMING_UP        11
156 #define PORT_STATUS_POWER_SAVE        12
157
158 #define PRINTER_NOTIFY_TYPE 0
159 #define JOB_NOTIFY_TYPE     1
160
161 #define PRINTER_NOTIFY_FIELD_SERVER_NAME     0x00
162 #define PRINTER_NOTIFY_FIELD_PRINTER_NAME    0x01
163 #define PRINTER_NOTIFY_FIELD_SHARE_NAME      0x02
164 #define PRINTER_NOTIFY_FIELD_PORT_NAME       0x03
165 #define PRINTER_NOTIFY_FIELD_DRIVER_NAME     0x04
166 #define PRINTER_NOTIFY_FIELD_COMMENT         0x05
167 #define PRINTER_NOTIFY_FIELD_LOCATION        0x06
168 #define PRINTER_NOTIFY_FIELD_DEVMODE         0x07
169 #define PRINTER_NOTIFY_FIELD_SEPFILE         0x08
170 #define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
171 #define PRINTER_NOTIFY_FIELD_PARAMETERS      0x0a
172 #define PRINTER_NOTIFY_FIELD_DATATYPE        0x0b
173 #define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
174 #define PRINTER_NOTIFY_FIELD_ATTRIBUTES      0x0d
175 #define PRINTER_NOTIFY_FIELD_PRIORITY        0x0e
176 #define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0f
177 #define PRINTER_NOTIFY_FIELD_START_TIME      0x10
178 #define PRINTER_NOTIFY_FIELD_UNTIL_TIME      0x11
179 #define PRINTER_NOTIFY_FIELD_STATUS          0x12
180 #define PRINTER_NOTIFY_FIELD_STATUS_STRING   0x13
181 #define PRINTER_NOTIFY_FIELD_CJOBS           0x14
182 #define PRINTER_NOTIFY_FIELD_AVERAGE_PPM     0x15
183 #define PRINTER_NOTIFY_FIELD_TOTAL_PAGES     0x16
184 #define PRINTER_NOTIFY_FIELD_PAGES_PRINTED   0x17
185 #define PRINTER_NOTIFY_FIELD_TOTAL_BYTES     0x18
186 #define PRINTER_NOTIFY_FIELD_BYTES_PRINTED   0x19
187
188 #define JOB_NOTIFY_FIELD_PRINTER_NAME    0x00
189 #define JOB_NOTIFY_FIELD_MACHINE_NAME    0x01
190 #define JOB_NOTIFY_FIELD_PORT_NAME       0x02
191 #define JOB_NOTIFY_FIELD_USER_NAME       0x03
192 #define JOB_NOTIFY_FIELD_NOTIFY_NAME     0x04
193 #define JOB_NOTIFY_FIELD_DATATYPE        0x05
194 #define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
195 #define JOB_NOTIFY_FIELD_PARAMETERS      0x07
196 #define JOB_NOTIFY_FIELD_DRIVER_NAME     0x08
197 #define JOB_NOTIFY_FIELD_DEVMODE         0x09
198 #define JOB_NOTIFY_FIELD_STATUS          0x0a
199 #define JOB_NOTIFY_FIELD_STATUS_STRING   0x0b
200 #define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0c
201 #define JOB_NOTIFY_FIELD_DOCUMENT        0x0d
202 #define JOB_NOTIFY_FIELD_PRIORITY        0x0e
203 #define JOB_NOTIFY_FIELD_POSITION        0x0f
204 #define JOB_NOTIFY_FIELD_SUBMITTED       0x10
205 #define JOB_NOTIFY_FIELD_START_TIME      0x11
206 #define JOB_NOTIFY_FIELD_UNTIL_TIME      0x12
207 #define JOB_NOTIFY_FIELD_TIME            0x13
208 #define JOB_NOTIFY_FIELD_TOTAL_PAGES     0x14
209 #define JOB_NOTIFY_FIELD_PAGES_PRINTED   0x15
210 #define JOB_NOTIFY_FIELD_TOTAL_BYTES     0x16
211 #define JOB_NOTIFY_FIELD_BYTES_PRINTED   0x17
212
213 #define PRINTER_NOTIFY_OPTIONS_REFRESH   1
214 #define PRINTER_NOTIFY_INFO_DISCARDED    1
215
216 #define PRINTER_CHANGE_ADD_PRINTER               0x00000001
217 #define PRINTER_CHANGE_SET_PRINTER               0x00000002
218 #define PRINTER_CHANGE_DELETE_PRINTER            0x00000004
219 #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
220 #define PRINTER_CHANGE_PRINTER                   0x000000ff
221 #define PRINTER_CHANGE_ADD_JOB                   0x00000100
222 #define PRINTER_CHANGE_SET_JOB                   0x00000200
223 #define PRINTER_CHANGE_DELETE_JOB                0x00000400
224 #define PRINTER_CHANGE_WRITE_JOB                 0x00000800
225 #define PRINTER_CHANGE_JOB                       0x0000ff00
226 #define PRINTER_CHANGE_ADD_FORM                  0x00010000
227 #define PRINTER_CHANGE_SET_FORM                  0x00020000
228 #define PRINTER_CHANGE_DELETE_FORM               0x00040000
229 #define PRINTER_CHANGE_FORM                      0x00070000
230 #define PRINTER_CHANGE_ADD_PORT                  0x00100000
231 #define PRINTER_CHANGE_CONFIGURE_PORT            0x00200000
232 #define PRINTER_CHANGE_DELETE_PORT               0x00400000
233 #define PRINTER_CHANGE_PORT                      0x00700000
234 #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR       0x01000000
235 #define PRINTER_CHANGE_DELETE_PRINTER_PROCESSOR  0x04000000
236 #define PRINTER_CHANGE_PRINT_PROCESSOR           0x07000000
237 #define PRINTER_CHANGE_ADD_PRINTER_DRIVER        0x10000000
238 #define PRINTER_CHANGE_SET_PRINTER_DRIVER        0x20000000
239 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER     0x40000000
240 #define PRINTER_CHANGE_PRINTER_DRIVER            0x70000000
241 #define PRINTER_CHANGE_TIMEOUT                   0x80000000
242 #define PRINTER_CHANGE_ALL                       0x7777ffff
243
244 #define PRINTER_ERROR_INFORMATION   0x80000000
245 #define PRINTER_ERROR_WARNING       0x40000000
246 #define PRINTER_ERROR_SEVERE        0x20000000
247
248 #define PRINTER_ERROR_OUTODPAPER    0x00000001
249 #define PRINTER_ERROR_JAM           0x00000002
250 #define PRINTER_ERROR_OUTOFTONER    0x00000004
251
252 /* Access Rights for Printserver, Printers and Printjobs */
253 #define SERVER_ACCESS_ADMINISTER    0x00000001
254 #define SERVER_ACCESS_ENUMERATE     0x00000002
255 #define SERVER_READ        (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE)
256 #define SERVER_WRITE       (STANDARD_RIGHTS_WRITE | \
257                             SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
258 #define SERVER_EXECUTE     (STANDARD_RIGHTS_EXECUTE |  SERVER_ACCESS_ENUMERATE)
259 #define SERVER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
260                             SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
261
262 #define PRINTER_ACCESS_ADMINISTER   0x00000004
263 #define PRINTER_ACCESS_USE          0x00000008
264 #define PRINTER_READ        (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE)
265 #define PRINTER_WRITE       (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE)
266 #define PRINTER_EXECUTE     (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE)
267 #define PRINTER_ALL_ACCESS  (STANDARD_RIGHTS_REQUIRED | \
268                              PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE)
269
270 #define JOB_ACCESS_ADMINISTER       0x00000010
271 #define JOB_READ            (STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER)
272 #define JOB_WRITE           (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER)
273 #define JOB_EXECUTE         (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER)
274 #define JOB_ALL_ACCESS      (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER)
275
276 /* TYPES */
277 typedef struct _PRINTER_DEFAULTSA {
278   LPSTR        pDatatype;
279   LPDEVMODEA pDevMode;
280   ACCESS_MASK  DesiredAccess;
281 } PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
282
283 typedef struct _PRINTER_DEFAULTSW {
284   LPWSTR       pDatatype;
285   LPDEVMODEW pDevMode;
286   ACCESS_MASK  DesiredAccess;
287 } PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
288
289 DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
290 DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
291
292 typedef struct _DRIVER_INFO_1A {
293   LPSTR     pName;
294 } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
295
296 typedef struct _DRIVER_INFO_1W {
297   LPWSTR    pName;
298 } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
299
300 DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
301 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
302 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
303
304 typedef struct _DRIVER_INFO_2A {
305   DWORD     cVersion;
306   LPSTR     pName;
307   LPSTR     pEnvironment;
308   LPSTR     pDriverPath;
309   LPSTR     pDataFile;
310   LPSTR     pConfigFile;
311 } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
312
313 typedef struct _DRIVER_INFO_2W {
314   DWORD     cVersion;
315   LPWSTR    pName;
316   LPWSTR    pEnvironment;
317   LPWSTR    pDriverPath;
318   LPWSTR    pDataFile;
319   LPWSTR    pConfigFile;
320 } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
321
322 DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
323 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
324 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
325
326 typedef struct _DRIVER_INFO_3A {
327   DWORD cVersion;
328   LPSTR pName;
329   LPSTR pEnvironment;
330   LPSTR pDriverPath;
331   LPSTR pDataFile;
332   LPSTR pConfigFile;
333   LPSTR pHelpFile;
334   LPSTR pDependentFiles;
335   LPSTR pMonitorName;
336   LPSTR pDefaultDataType;
337 } DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
338
339 typedef struct _DRIVER_INFO_3W {
340   DWORD cVersion;
341   LPWSTR pName;
342   LPWSTR pEnvironment;
343   LPWSTR pDriverPath;
344   LPWSTR pDataFile;
345   LPWSTR pConfigFile;
346   LPWSTR pHelpFile;
347   LPWSTR pDependentFiles;
348   LPWSTR pMonitorName;
349   LPWSTR pDefaultDataType;
350 } DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
351
352 DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
353 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
354 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
355
356 typedef struct _DRIVER_INFO_4A {
357   DWORD cVersion;
358   LPSTR pName;
359   LPSTR pEnvironment;
360   LPSTR pDriverPath;
361   LPSTR pDataFile;
362   LPSTR pConfigFile;
363   LPSTR pHelpFile;
364   LPSTR pDependentFiles;
365   LPSTR pMonitorName;
366   LPSTR pDefaultDataType;
367   LPSTR pszzPreviousNames;
368 } DRIVER_INFO_4A, *PDRIVER_INFO_4A, *LPDRIVER_INFO_4A;
369
370 typedef struct _DRIVER_INFO_4W {
371   DWORD cVersion;
372   LPWSTR pName;
373   LPWSTR pEnvironment;
374   LPWSTR pDriverPath;
375   LPWSTR pDataFile;
376   LPWSTR pConfigFile;
377   LPWSTR pHelpFile;
378   LPWSTR pDependentFiles;
379   LPWSTR pMonitorName;
380   LPWSTR pDefaultDataType;
381   LPWSTR pszzPreviousNames;
382 } DRIVER_INFO_4W, *PDRIVER_INFO_4W, *LPDRIVER_INFO_4W;
383
384 DECL_WINELIB_TYPE_AW(DRIVER_INFO_4)
385 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_4)
386 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_4)
387
388
389 typedef struct _DRIVER_INFO_5A {
390   DWORD cVersion;
391   LPSTR pName;
392   LPSTR pEnvironment;
393   LPSTR pDriverPath;
394   LPSTR pDataFile;
395   LPSTR pConfigFile;
396   DWORD dwDriverAttributes;
397   DWORD dwConfigVersion;
398   DWORD dwDriverVersion;
399 } DRIVER_INFO_5A, *PDRIVER_INFO_5A, *LPDRIVER_INFO_5A;
400
401 typedef struct _DRIVER_INFO_5W {
402   DWORD  cVersion;
403   LPWSTR pName;
404   LPWSTR pEnvironment;
405   LPWSTR pDriverPath;
406   LPWSTR pDataFile;
407   LPWSTR pConfigFile;
408   DWORD  dwDriverAttributes;
409   DWORD  dwConfigVersion;
410   DWORD  dwDriverVersion;
411 } DRIVER_INFO_5W, *PDRIVER_INFO_5W, *LPDRIVER_INFO_5W;
412
413 DECL_WINELIB_TYPE_AW(DRIVER_INFO_5)
414 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_5)
415 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_5)
416
417 typedef struct _DRIVER_INFO_6A {
418   DWORD     cVersion;
419   LPSTR     pName;
420   LPSTR     pEnvironment;
421   LPSTR     pDriverPath;
422   LPSTR     pDataFile;
423   LPSTR     pConfigFile;
424   LPSTR     pHelpFile;
425   LPSTR     pDependentFiles;
426   LPSTR     pMonitorName;
427   LPSTR     pDefaultDataType;
428   LPSTR     pszzPreviousNames;
429   FILETIME  ftDriverDate;
430   DWORDLONG dwlDriverVersion;
431   LPSTR     pszMfgName;
432   LPSTR     pszOEMUrl;
433   LPSTR     pszHardwareID;
434   LPSTR     pszProvider;
435 } DRIVER_INFO_6A, *PDRIVER_INFO_6A, *LPDRIVER_INFO_6A;
436
437 typedef struct _DRIVER_INFO_6W {
438   DWORD     cVersion;
439   LPWSTR    pName;
440   LPWSTR    pEnvironment;
441   LPWSTR    pDriverPath;
442   LPWSTR    pDataFile;
443   LPWSTR    pConfigFile;
444   LPWSTR    pHelpFile;
445   LPWSTR    pDependentFiles;
446   LPWSTR    pMonitorName;
447   LPWSTR    pDefaultDataType;
448   LPWSTR    pszzPreviousNames;
449   FILETIME  ftDriverDate;
450   DWORDLONG dwlDriverVersion;
451   LPWSTR    pszMfgName;
452   LPWSTR    pszOEMUrl;
453   LPWSTR    pszHardwareID;
454   LPWSTR    pszProvider;
455 } DRIVER_INFO_6W, *PDRIVER_INFO_6W, *LPDRIVER_INFO_6W;
456
457 DECL_WINELIB_TYPE_AW(DRIVER_INFO_6)
458 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_6)
459 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_6)
460
461
462 typedef struct _PRINTER_INFO_1A {
463   DWORD   Flags;
464   LPSTR   pDescription;
465   LPSTR   pName;
466   LPSTR   pComment;
467 } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
468
469 typedef struct _PRINTER_INFO_1W {
470   DWORD   Flags;
471   LPWSTR  pDescription;
472   LPWSTR  pName;
473   LPWSTR  pComment;
474 } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
475
476 DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
477 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
478 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
479
480 /* FIXME: winspool.h declares some structure members with the name Status.
481  * unfortunately <X11/ICE/ICElib.h> #defines Status to the type 'int'
482  * therefore the following hack */
483 #ifndef Status
484
485 typedef struct _PRINTER_INFO_2A {
486   LPSTR     pServerName;
487   LPSTR     pPrinterName;
488   LPSTR     pShareName;
489   LPSTR     pPortName;
490   LPSTR     pDriverName;
491   LPSTR     pComment;
492   LPSTR     pLocation;
493   LPDEVMODEA pDevMode;
494   LPSTR     pSepFile;
495   LPSTR     pPrintProcessor;
496   LPSTR     pDatatype;
497   LPSTR     pParameters;
498   PSECURITY_DESCRIPTOR pSecurityDescriptor;
499   DWORD   Attributes;
500   DWORD   Priority;
501   DWORD   DefaultPriority;
502   DWORD   StartTime;
503   DWORD   UntilTime;
504   DWORD   Status;
505   DWORD   cJobs;
506   DWORD   AveragePPM;
507 } PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
508
509 typedef struct _PRINTER_INFO_2W {
510   LPWSTR    pServerName;
511   LPWSTR    pPrinterName;
512   LPWSTR    pShareName;
513   LPWSTR    pPortName;
514   LPWSTR    pDriverName;
515   LPWSTR    pComment;
516   LPWSTR    pLocation;
517   LPDEVMODEW pDevMode;
518   LPWSTR    pSepFile;
519   LPWSTR    pPrintProcessor;
520   LPWSTR    pDatatype;
521   LPWSTR    pParameters;
522   PSECURITY_DESCRIPTOR pSecurityDescriptor;
523   DWORD   Attributes;
524   DWORD   Priority;
525   DWORD   DefaultPriority;
526   DWORD   StartTime;
527   DWORD   UntilTime;
528   DWORD   Status;
529   DWORD   cJobs;
530   DWORD   AveragePPM;
531 } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
532
533 DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
534 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
535 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
536
537 typedef struct _PRINTER_INFO_3 {
538   PSECURITY_DESCRIPTOR pSecurityDescriptor;
539 } PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
540
541 typedef struct _PRINTER_INFO_4A {
542   LPSTR     pPrinterName;
543   LPSTR     pServerName;
544   DWORD     Attributes;
545 } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
546
547 typedef struct _PRINTER_INFO_4W {
548   LPWSTR     pPrinterName;
549   LPWSTR     pServerName;
550   DWORD     Attributes;
551 } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
552
553 DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
554 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
555 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
556
557 typedef struct _PRINTER_INFO_5A {
558   LPSTR     pPrinterName;
559   LPSTR     pPortName;
560   DWORD     Attributes;
561   DWORD     DeviceNotSelectedTimeout;
562   DWORD     TransmissionRetryTimeout;
563 } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
564
565 typedef struct _PRINTER_INFO_5W {
566   LPWSTR    pPrinterName;
567   LPWSTR    pPortName;
568   DWORD     Attributes;
569   DWORD     DeviceNotSelectedTimeout;
570   DWORD     TransmissionRetryTimeout;
571 } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
572
573 DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
574 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
575 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
576
577 typedef struct _PRINTER_INFO_6 {
578   DWORD dwStatus;
579 } PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
580
581 typedef struct _PRINTER_INFO_7A {
582   LPSTR     pszObjectGUID;
583   DWORD     dwAction;
584 } PRINTER_INFO_7A, *PPRINTER_INFO_7A, *LPPRINTER_INFO_7A;
585
586 typedef struct _PRINTER_INFO_7W {
587   LPWSTR    pszObjectGUID;
588   DWORD     dwAction;
589 } PRINTER_INFO_7W, *PPRINTER_INFO_7W, *LPPRINTER_INFO_7W;
590
591 DECL_WINELIB_TYPE_AW(PRINTER_INFO_7)
592 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_7)
593 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_7)
594
595 typedef struct _PRINTER_INFO_8A {
596   LPDEVMODEA pDevMode;
597 } PRINTER_INFO_8A, *PPRINTER_INFO_8A, *LPPRINTER_INFO_8A;
598
599 typedef struct _PRINTER_INFO_8W {
600   LPDEVMODEW pDevMode;
601 } PRINTER_INFO_8W, *PPRINTER_INFO_8W, *LPPRINTER_INFO_8W;
602
603 DECL_WINELIB_TYPE_AW(PRINTER_INFO_8)
604 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_8)
605 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_8)
606
607 typedef struct _PRINTER_INFO_9A {
608   LPDEVMODEA pDevMode;
609 } PRINTER_INFO_9A, *PPRINTER_INFO_9A, *LPPRINTER_INFO_9A;
610
611 typedef struct _PRINTER_INFO_9W {
612   LPDEVMODEW pDevMode;
613 } PRINTER_INFO_9W, *PPRINTER_INFO_9W, *LPPRINTER_INFO_9W;
614
615 DECL_WINELIB_TYPE_AW(PRINTER_INFO_9)
616 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_9)
617 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_9)
618
619
620 typedef struct _JOB_INFO_1A {
621   DWORD JobId;
622   LPSTR pPrinterName;
623   LPSTR pMachineName;
624   LPSTR pUserName;
625   LPSTR pDocument;
626   LPSTR pDatatype;
627   LPSTR pStatus;
628   DWORD Status;
629   DWORD Priority;
630   DWORD Position;
631   DWORD TotalPages;
632   DWORD PagesPrinted;
633   SYSTEMTIME Submitted;
634 } JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
635
636 typedef struct _JOB_INFO_1W {
637   DWORD JobId;
638   LPWSTR pPrinterName;
639   LPWSTR pMachineName;
640   LPWSTR pUserName;
641   LPWSTR pDocument;
642   LPWSTR pDatatype;
643   LPWSTR pStatus;
644   DWORD Status;
645   DWORD Priority;
646   DWORD Position;
647   DWORD TotalPages;
648   DWORD PagesPrinted;
649   SYSTEMTIME Submitted;
650 } JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
651
652 DECL_WINELIB_TYPE_AW(JOB_INFO_1)
653 DECL_WINELIB_TYPE_AW(PJOB_INFO_1)
654 DECL_WINELIB_TYPE_AW(LPJOB_INFO_1)
655
656 typedef struct _JOB_INFO_2A {
657   DWORD JobId;
658   LPSTR pPrinterName;
659   LPSTR pMachineName;
660   LPSTR pUserName;
661   LPSTR pDocument;
662   LPSTR pNotifyName;
663   LPSTR pDatatype;
664   LPSTR pPrintProcessor;
665   LPSTR pParameters;
666   LPSTR pDriverName;
667   LPDEVMODEA pDevMode;
668   LPSTR pStatus;
669   PSECURITY_DESCRIPTOR pSecurityDescriptor;
670   DWORD Status;
671   DWORD Priority;
672   DWORD Position;
673   DWORD StartTime;
674   DWORD UntilTime;
675   DWORD TotalPages;
676   DWORD Size;
677   SYSTEMTIME Submitted;
678   DWORD Time;
679   DWORD PagesPrinted;
680 } JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
681
682 typedef struct _JOB_INFO_2W {
683   DWORD JobId;
684   LPWSTR pPrinterName;
685   LPWSTR pMachineName;
686   LPWSTR pUserName;
687   LPWSTR pDocument;
688   LPWSTR pNotifyName;
689   LPWSTR pDatatype;
690   LPWSTR pPrintProcessor;
691   LPWSTR pParameters;
692   LPWSTR pDriverName;
693   LPDEVMODEW pDevMode;
694   LPWSTR pStatus;
695   PSECURITY_DESCRIPTOR pSecurityDescriptor;
696   DWORD Status;
697   DWORD Priority;
698   DWORD Position;
699   DWORD StartTime;
700   DWORD UntilTime;
701   DWORD TotalPages;
702   DWORD Size;
703   SYSTEMTIME Submitted;
704   DWORD Time;
705   DWORD PagesPrinted;
706 } JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
707
708 DECL_WINELIB_TYPE_AW(JOB_INFO_2)
709 DECL_WINELIB_TYPE_AW(PJOB_INFO_2)
710 DECL_WINELIB_TYPE_AW(LPJOB_INFO_2)
711
712 typedef struct _JOB_INFO_3 {
713   DWORD JobId;
714   DWORD NextJobId;
715   DWORD Reserved;
716 } JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
717
718 typedef struct _ADDJOB_INFO_1A {
719   LPSTR Path;
720   DWORD JobId;
721 } ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
722
723 typedef struct _ADDJOB_INFO_1W {
724   LPWSTR Path;
725   DWORD  JobId;
726 } ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
727
728 DECL_WINELIB_TYPE_AW(ADDJOB_INFO_1)
729 DECL_WINELIB_TYPE_AW(PADDJOB_INFO_1)
730 DECL_WINELIB_TYPE_AW(LPADDJOB_INFO_1)
731
732 typedef struct _DOC_INFO_1A {
733   LPSTR pDocName;
734   LPSTR pOutputFile;
735   LPSTR pDatatype;
736 } DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
737
738 typedef struct _DOC_INFO_1W {
739   LPWSTR pDocName;
740   LPWSTR pOutputFile;
741   LPWSTR pDatatype;
742 } DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
743
744 DECL_WINELIB_TYPE_AW(DOC_INFO_1)
745 DECL_WINELIB_TYPE_AW(PDOC_INFO_1)
746 DECL_WINELIB_TYPE_AW(LPDOC_INFO_1)
747
748 typedef struct _DOC_INFO_2A {
749   LPSTR pDocName;
750   LPSTR pOutputFile;
751   LPSTR pDatatype;
752   DWORD dwMode;
753   DWORD JobId;
754 } DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
755
756 typedef struct _DOC_INFO_2W {
757   LPWSTR pDocName;
758   LPWSTR pOutputFile;
759   LPWSTR pDatatype;
760   DWORD dwMode;
761   DWORD JobId;
762 } DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
763
764 DECL_WINELIB_TYPE_AW(DOC_INFO_2)
765 DECL_WINELIB_TYPE_AW(PDOC_INFO_2)
766 DECL_WINELIB_TYPE_AW(LPDOC_INFO_2)
767
768 typedef struct _FORM_INFO_1A {
769   DWORD Flags;
770   LPSTR pName;
771   SIZEL Size;
772   RECTL ImageableArea;
773 } FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
774
775 typedef struct _FORM_INFO_1W {
776   DWORD Flags;
777   LPWSTR pName;
778   SIZEL Size;
779   RECTL ImageableArea;
780 } FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
781
782 DECL_WINELIB_TYPE_AW(FORM_INFO_1)
783 DECL_WINELIB_TYPE_AW(PFORM_INFO_1)
784 DECL_WINELIB_TYPE_AW(LPFORM_INFO_1)
785
786 typedef struct _PRINTPROCESSOR_INFO_1A {
787   LPSTR pName;
788 } PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A,
789   *LPPRINTPROCESSOR_INFO_1A;
790
791 typedef struct _PRINTPROCESSOR_INFO_1W {
792   LPWSTR pName;
793 } PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W,
794   *LPPRINTPROCESSOR_INFO_1W;
795
796 DECL_WINELIB_TYPE_AW(PRINTPROCESSOR_INFO_1)
797 DECL_WINELIB_TYPE_AW(PPRINTPROCESSOR_INFO_1)
798 DECL_WINELIB_TYPE_AW(LPPRINTPROCESSOR_INFO_1)
799
800 typedef struct _PORT_INFO_1A {
801   LPSTR pName;
802 } PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
803
804 typedef struct _PORT_INFO_1W {
805   LPWSTR pName;
806 } PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
807
808 DECL_WINELIB_TYPE_AW(PORT_INFO_1)
809 DECL_WINELIB_TYPE_AW(PPORT_INFO_1)
810 DECL_WINELIB_TYPE_AW(LPPORT_INFO_1)
811
812 typedef struct _PORT_INFO_2A {
813   LPSTR pPortName;
814   LPSTR pMonitorName;
815   LPSTR pDescription;
816   DWORD fPortType;
817   DWORD Reserved;
818 } PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
819
820 typedef struct _PORT_INFO_2W {
821   LPWSTR pPortName;
822   LPWSTR pMonitorName;
823   LPWSTR pDescription;
824   DWORD  fPortType;
825   DWORD  Reserved;
826 } PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
827
828 DECL_WINELIB_TYPE_AW(PORT_INFO_2)
829 DECL_WINELIB_TYPE_AW(PPORT_INFO_2)
830 DECL_WINELIB_TYPE_AW(LPPORT_INFO_2)
831
832 typedef struct _PORT_INFO_3A {
833   DWORD dwStatus;
834   LPSTR pszStatus;
835   DWORD dwSeverity;
836 } PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
837
838 typedef struct _PORT_INFO_3W {
839   DWORD  dwStatus;
840   LPWSTR pszStatus;
841   DWORD  dwSeverity;
842 } PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
843
844 DECL_WINELIB_TYPE_AW(PORT_INFO_3)
845 DECL_WINELIB_TYPE_AW(PPORT_INFO_3)
846 DECL_WINELIB_TYPE_AW(LPPORT_INFO_3)
847
848 typedef struct _MONITOR_INFO_1A {
849   LPSTR pName;
850 } MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
851
852 typedef struct _MONITOR_INFO_1W {
853   LPWSTR pName;
854 } MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
855
856 DECL_WINELIB_TYPE_AW(MONITOR_INFO_1)
857 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_1)
858 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_1)
859
860 #endif /* Status */
861
862
863 typedef struct _MONITOR_INFO_2A {
864   LPSTR pName;
865   LPSTR pEnvironment;
866   LPSTR pDLLName;
867 } MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
868
869 typedef struct _MONITOR_INFO_2W {
870   LPWSTR pName;
871   LPWSTR pEnvironment;
872   LPWSTR pDLLName;
873 } MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
874
875 DECL_WINELIB_TYPE_AW(MONITOR_INFO_2)
876 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_2)
877 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_2)
878
879 typedef struct _DATATYPES_INFO_1A {
880   LPSTR pName;
881 } DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
882
883 typedef struct _DATATYPES_INFO_1W {
884   LPWSTR pName;
885 } DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
886
887 DECL_WINELIB_TYPE_AW(DATATYPES_INFO_1)
888 DECL_WINELIB_TYPE_AW(PDATATYPES_INFO_1)
889 DECL_WINELIB_TYPE_AW(LPDATATYPES_INFO_1)
890
891 typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
892   WORD  Type;
893   WORD  Reserved0;
894   DWORD Reserved1;
895   DWORD Reserved2;
896   DWORD Count;
897   PWORD pFields;
898 } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE,
899 *LPPRINTER_NOTIFY_OPTIONS_TYPE;
900
901 typedef struct _PRINTER_NOTIFY_OPTIONS {
902   DWORD Version;
903   DWORD Flags;
904   DWORD Count;
905   PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
906 } PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
907
908 typedef struct _PRINTER_NOTIFY_INFO_DATA {
909   WORD Type;
910   WORD Field;
911   DWORD Reserved;
912   DWORD Id;
913   union {
914     DWORD adwData[2];
915     struct {
916       DWORD cbBuf;
917       LPVOID pBuf;
918     } Data;
919   } NotifyData;
920 } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA,
921 *LPPRINTER_NOTIFY_INFO_DATA;
922
923 typedef struct _PRINTER_NOTIFY_INFO {
924   DWORD Version;
925   DWORD Flags;
926   DWORD Count;
927   PRINTER_NOTIFY_INFO_DATA aData[1];
928 } PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
929
930 typedef struct _PROVIDOR_INFO_1A {
931   LPSTR pName;
932   LPSTR pEnvironment;
933   LPSTR pDLLName;
934 } PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
935
936 typedef struct _PROVIDOR_INFO_1W {
937   LPWSTR pName;
938   LPWSTR pEnvironment;
939   LPWSTR pDLLName;
940 } PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
941
942 DECL_WINELIB_TYPE_AW(PROVIDOR_INFO_1)
943 DECL_WINELIB_TYPE_AW(PPROVIDOR_INFO_1)
944 DECL_WINELIB_TYPE_AW(LPPROVIDOR_INFO_1)
945
946 typedef struct _PRINTER_ENUM_VALUESA {
947   LPSTR  pValueName;
948   DWORD  cbValueName;
949   DWORD  dwType;
950   LPBYTE pData;
951   DWORD  cbData;
952 } PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA;
953
954 typedef struct _PRINTER_ENUM_VALUESW {
955   LPWSTR pValueName;
956   DWORD  cbValueName;
957   DWORD  dwType;
958   LPBYTE pData;
959   DWORD  cbData;
960 } PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW;
961
962 DECL_WINELIB_TYPE_AW(PRINTER_ENUM_VALUES)
963 DECL_WINELIB_TYPE_AW(PPRINTER_ENUM_VALUES)
964
965 typedef enum {
966  BIDI_NULL = 0,
967  BIDI_INT,
968  BIDI_FLOAT,
969  BIDI_BOOL,
970  BIDI_STRING,
971  BIDI_TEXT,
972  BIDI_ENUM,
973  BIDI_BLOB
974 } BIDI_TYPE;
975
976 typedef struct _BINARY_CONTAINER {
977  DWORD  cbBuf;
978  LPBYTE pData;
979 } BINARY_CONTAINER, *PBINARY_CONTAINER;
980
981 typedef struct _BIDI_DATA {
982  DWORD  dwBidiType;
983  union
984  {
985    BOOL             bData;
986    INT              iData;
987    LPWSTR           sData;
988    FLOAT            fData;
989    BINARY_CONTAINER biData;
990  } u;
991 } BIDI_DATA, *LPBIDI_DATA, *PBIDI_DATA;
992
993 typedef struct _BIDI_REQUEST_DATA {
994  DWORD      dwReqNumber;
995  LPWSTR     pSchema;
996  BIDI_DATA  data;
997 } BIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA;
998
999 typedef struct _BIDI_REQUEST_CONTAINER {
1000  DWORD              Version;
1001  DWORD              Flags;
1002  DWORD              Count;
1003  BIDI_REQUEST_DATA  aData[1];
1004 } BIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER;
1005
1006 typedef struct _BIDI_RESPONSE_DATA {
1007  DWORD      dwResult;
1008  DWORD      dwReqNumber;
1009  LPWSTR     pSchema;
1010  BIDI_DATA  data;
1011 } BIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA;
1012
1013 typedef struct _BIDI_RESPONSE_CONTAINER {
1014  DWORD              Version;
1015  DWORD              Flags;
1016  DWORD              Count;
1017  BIDI_RESPONSE_DATA aData[1];
1018 } BIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER;
1019
1020 /* DECLARATIONS */
1021 INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
1022                                LPSTR pOutput, LPDEVMODEA pDevMode);
1023 INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
1024                                WORD fwCapability, LPWSTR pOutput,
1025                                const DEVMODEW *pDevMode);
1026
1027 #define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
1028
1029 LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
1030                                 LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
1031                                 LPDEVMODEA pDevModeInput,DWORD fMode );
1032 LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
1033                                 LPWSTR pDeviceName,
1034                                 LPDEVMODEW pDevModeOutput,
1035                                 LPDEVMODEW pDevModeInput, DWORD fMode);
1036
1037 #define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
1038
1039 BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
1040                              LPPRINTER_DEFAULTSA pDefault);
1041 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
1042                              LPPRINTER_DEFAULTSW pDefault);
1043
1044 #define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
1045
1046 BOOL WINAPI ResetPrinterA(HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault);
1047 BOOL WINAPI ResetPrinterW(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
1048 #define ResetPrinter WINELIB_NAME_AW(ResetPrinter)
1049
1050 BOOL WINAPI ClosePrinter (HANDLE phPrinter);
1051
1052 BOOL WINAPI EnumJobsA(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
1053                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
1054                       LPDWORD pcReturned);
1055 BOOL WINAPI EnumJobsW(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
1056                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
1057                       LPDWORD pcReturned);
1058 #define EnumJobs WINELIB_NAME_AW(EnumJobs)
1059
1060 BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
1061                                DWORD dwLevel, LPBYTE lpbPrinters,
1062                                DWORD cbBuf, LPDWORD lpdwNeeded,
1063                                LPDWORD lpdwReturned);
1064 BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
1065                                DWORD dwLevel, LPBYTE lpbPrinters,
1066                                DWORD cbBuf, LPDWORD lpdwNeeded,
1067                                LPDWORD lpdwReturned);
1068 #define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
1069
1070 BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
1071
1072 BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
1073 BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
1074 #define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
1075
1076 BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
1077                               DWORD Level, LPBYTE pDriverInfo,
1078                               DWORD cbBuf, LPDWORD pcbNeeded);
1079 BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
1080                               DWORD Level, LPBYTE pDriverInfo,
1081                               DWORD cbBuf, LPDWORD pcbNeeded);
1082 #define GetPrinterDriver WINELIB_NAME_AW(GetPrinterDriver)
1083
1084 BOOL WINAPI SetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1085                     DWORD Command);
1086 BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1087                     DWORD Command);
1088 #define SetJob WINELIB_NAME_AW(SetJob)
1089
1090 BOOL WINAPI GetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1091                     DWORD cbBuf, LPDWORD pcbNeeded);
1092 BOOL WINAPI GetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1093                     DWORD cbBuf, LPDWORD pcbNeeded);
1094 #define GetJob WINELIB_NAME_AW(GetJob)
1095
1096 HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter);
1097 HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
1098 #define AddPrinter WINELIB_NAME_AW(AddPrinter)
1099
1100 BOOL WINAPI DeletePrinter(HANDLE hPrinter);
1101
1102 BOOL WINAPI SetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1103                         DWORD Command);
1104 BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1105                         DWORD Command);
1106 #define SetPrinter WINELIB_NAME_AW(SetPrinter)
1107
1108 BOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1109                         DWORD cbBuf, LPDWORD pcbNeeded);
1110 BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1111                         DWORD cbBuf, LPDWORD pcbNeeded);
1112 #define GetPrinter WINELIB_NAME_AW(GetPrinter)
1113
1114 BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo);
1115 BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
1116 #define AddPrinterDriver WINELIB_NAME_AW(AddPrinterDriver)
1117
1118 BOOL WINAPI AddPrinterDriverExA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo,
1119                                 DWORD dwFileCopyFlags);
1120 BOOL WINAPI AddPrinterDriverExW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo,
1121                                 DWORD dwFileCopyFlags);
1122 #define AddPrinterDriverEx WINELIB_NAME_AW(AddPrinterDriverEx)
1123
1124 BOOL WINAPI EnumPrinterDriversA(LPSTR pName, LPSTR pEnvironment, DWORD Level,
1125                                 LPBYTE pDriverInfo, DWORD cbBuf,
1126                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
1127 BOOL WINAPI EnumPrinterDriversW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level,
1128                                 LPBYTE pDriverInfo, DWORD cbBuf,
1129                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
1130 #define EnumPrinterDrivers WINELIB_NAME_AW(EnumPrinterDrivers)
1131
1132 BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
1133 BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
1134 #define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
1135
1136 BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
1137                                  LPSTR pDriverName);
1138 BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,
1139                                  LPWSTR pDriverName);
1140 #define DeletePrinterDriver WINELIB_NAME_AW(DeletePrinterDriver)
1141
1142 BOOL WINAPI DeletePrinterDriverExA(LPSTR pName, LPSTR pEnvironment,
1143                                    LPSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
1144 BOOL WINAPI DeletePrinterDriverExW(LPWSTR pName, LPWSTR pEnvironment,
1145                                    LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
1146 #define DeletePrinterDriverEx WINELIB_NAME_AW(DeletePrinterDriverEx)
1147
1148 BOOL WINAPI AddPrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1149                                LPSTR pPathName, LPSTR pPrintProcessorName);
1150 BOOL WINAPI AddPrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1151                                LPWSTR pPathName, LPWSTR pPrintProcessorName);
1152 #define AddPrintProcessor WINELIB_NAME_AW(AddPrintProcessor)
1153
1154 BOOL WINAPI EnumPrintProcessorsA(LPSTR pName, LPSTR pEnvironment,
1155                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1156                                  DWORD cbBuf, LPDWORD pcbNeeded,
1157                                  LPDWORD pcbReturned);
1158 BOOL WINAPI EnumPrintProcessorsW(LPWSTR pName, LPWSTR pEnvironment,
1159                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1160                                  DWORD cbBuf, LPDWORD pcbNeeded,
1161                                  LPDWORD pcbReturned);
1162 #define EnumPrintProcessors WINELIB_NAME_AW(EnumPrintProcessors)
1163
1164 BOOL WINAPI GetPrintProcessorDirectoryA(LPSTR pName, LPSTR pEnvironment,
1165                                         DWORD Level,
1166                                         LPBYTE pPrintProcessorInfo,
1167                                         DWORD cbBuf, LPDWORD pcbNeeded);
1168
1169 BOOL WINAPI GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
1170                                         DWORD Level,
1171                                         LPBYTE pPrintProcessorInfo,
1172                                         DWORD cbBuf, LPDWORD pcbNeeded);
1173 #define GetPrintProcessorDirectory WINELIB_NAME_AW(GetPrintProcessorDirectory)
1174
1175 BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR pName,
1176                                          LPSTR pPrintProcessorName,
1177                                          DWORD Level, LPBYTE pDatatypes,
1178                                          DWORD cbBuf, LPDWORD pcbNeeded,
1179                                          LPDWORD pcbReturned);
1180 BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR pName,
1181                                          LPWSTR pPrintProcessorName,
1182                                          DWORD Level, LPBYTE pDatatypes,
1183                                          DWORD cbBuf, LPDWORD pcbNeeded,
1184                                          LPDWORD pcbReturned);
1185 #define EnumPrintProcessorDatatypes WINELIB_NAME_AW(EnumPrintProcessorDatatypes)
1186
1187 BOOL WINAPI DeletePrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1188                                   LPSTR pPrintProcessorName);
1189 BOOL WINAPI DeletePrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1190                                   LPWSTR pPrintProcessorName);
1191 #define DeletePrintProcessor WINELIB_NAME_AW(DeletePrintProcessor)
1192
1193 DWORD WINAPI StartDocPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1194 DWORD WINAPI StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1195 #define StartDocPrinter WINELIB_NAME_AW(StartDocPrinter)
1196
1197 BOOL WINAPI StartPagePrinter(HANDLE hPrinter);
1198 BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1199                          LPDWORD pcWritten);
1200 BOOL WINAPI EndPagePrinter(HANDLE hPrinter);
1201 BOOL WINAPI AbortPrinter(HANDLE hPrinter);
1202 BOOL WINAPI ReadPrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1203                         LPDWORD pNoBytesRead);
1204 BOOL WINAPI EndDocPrinter(HANDLE hPrinter);
1205
1206 BOOL WINAPI AddJobA(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1207                     LPDWORD pcbNeeded);
1208 BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1209                     LPDWORD pcbNeeded);
1210 #define AddJob WINELIB_NAME_AW(AddJob)
1211
1212 BOOL WINAPI ScheduleJob(HANDLE hPrinter, DWORD JobID);
1213
1214 LONG WINAPI AdvancedDocumentPropertiesA(HWND hWnd, HANDLE hPrinter,
1215                                         LPSTR pDeviceName,
1216                                         PDEVMODEA pDevModeOutput,
1217                                         PDEVMODEA pDevModeInput);
1218 LONG WINAPI AdvancedDocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
1219                                         LPWSTR pDeviceName,
1220                                         PDEVMODEW pDevModeOutput,
1221                                         PDEVMODEW pDevModeInput);
1222 #define AdvancedDocumentProperties WINELIB_NAME_AW(AdvancedDocumentProperties)
1223
1224 DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
1225                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1226 DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
1227                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1228 #define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
1229
1230 DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1231                                LPCSTR pValueName, LPDWORD pType,
1232                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1233 DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1234                                LPCWSTR pValueName, LPDWORD pType,
1235                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1236 #define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
1237
1238 DWORD WINAPI DeletePrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1239                                   LPCSTR pValueName);
1240 DWORD WINAPI DeletePrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1241                                   LPCWSTR pValueName);
1242 #define DeletePrinterDataEx WINELIB_NAME_AW(DeletePrinterDataEx)
1243
1244 DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
1245                              LPBYTE pData, DWORD cbData);
1246 DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
1247                              LPBYTE pData, DWORD cbData);
1248 #define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
1249
1250 DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1251                                LPCSTR pValueName, DWORD Type,
1252                                LPBYTE pData, DWORD cbData);
1253 DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1254                                LPCWSTR pValueName, DWORD Type,
1255                                LPBYTE pData, DWORD cbData);
1256 #define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
1257
1258 DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
1259 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
1260                                                  DWORD fdwFlags,
1261                                                  DWORD fdwOptions,
1262                                                  LPVOID pPrinterNotifyOptions);
1263 BOOL WINAPI FindNextPrinterChangeNotification(HANDLE hChange,
1264                                               PDWORD pdwChange,
1265                                               LPVOID pvReserved,
1266                                               LPVOID *ppPrinterNotifyInfo);
1267 BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
1268 BOOL WINAPI FindClosePrinterChangeNotification(HANDLE hChange);
1269
1270 DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter, DWORD Error, HWND hWnd,
1271                                 LPSTR pText, LPSTR pCaption, DWORD dwType);
1272 DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter, DWORD Error, HWND hWnd,
1273                                 LPWSTR pText, LPWSTR pCaption, DWORD dwType);
1274 #define PrinterMessageBox WINELIB_NAME_AW(PrinterMessageBox)
1275
1276 BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1277 BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1278 #define AddForm WINELIB_NAME_AW(AddForm)
1279
1280 BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName);
1281 BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName);
1282 #define DeleteForm WINELIB_NAME_AW(DeleteForm)
1283
1284 BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1285                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1286 BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1287                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1288 #define GetForm WINELIB_NAME_AW(GetForm)
1289
1290 BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1291                      LPBYTE pForm);
1292 BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1293                      LPBYTE pForm);
1294 #define SetForm WINELIB_NAME_AW(SetForm)
1295
1296 BOOL WINAPI EnumFormsA(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1297                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1298 BOOL WINAPI EnumFormsW(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1299                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1300 #define EnumForms WINELIB_NAME_AW(EnumForms)
1301
1302 BOOL WINAPI EnumMonitorsA(LPSTR pName, DWORD Level, LPBYTE pMonitors,
1303                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1304 BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
1305                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1306 #define EnumMonitors WINELIB_NAME_AW(EnumMonitors)
1307
1308 DWORD WINAPI EnumPrinterDataA( HANDLE hPrinter, DWORD dwIndex, LPSTR pValueName,
1309     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1310     DWORD cbData, LPDWORD pcbData );
1311 DWORD WINAPI EnumPrinterDataW( HANDLE hPrinter, DWORD dwIndex, LPWSTR pValueName,
1312     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1313     DWORD cbData, LPDWORD pcbData );
1314 #define EnumPrinterData WINELIB_NAME_AW(EnumPrinterData)
1315
1316 BOOL WINAPI AddMonitorA(LPSTR pName, DWORD Level, LPBYTE pMonitors);
1317 BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
1318 #define AddMonitor WINELIB_NAME_AW(AddMonitor)
1319
1320 BOOL WINAPI DeleteMonitorA(LPSTR pName, LPSTR pEnvironment,
1321                            LPSTR pMonitorName);
1322 BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment,
1323                            LPWSTR pMonitorName);
1324 #define DeleteMonitor WINELIB_NAME_AW(DeleteMonitor)
1325
1326 BOOL WINAPI EnumPortsA(LPSTR pName, DWORD Level, LPBYTE pPorts,
1327                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1328 BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts,
1329                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1330 #define EnumPorts WINELIB_NAME_AW(EnumPorts)
1331
1332 BOOL WINAPI AddPortA(LPSTR pName, HWND hWnd, LPSTR pMonitorName);
1333 BOOL WINAPI AddPortW(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
1334 #define AddPort WINELIB_NAME_AW(AddPort)
1335
1336 BOOL WINAPI AddPortExA(HANDLE hMonitor, LPSTR pName, DWORD Level,
1337                        LPBYTE lpBuffer, LPSTR lpMonitorName);
1338 BOOL WINAPI AddPortExW(HANDLE hMonitor, LPWSTR pName, DWORD Level,
1339                        LPBYTE lpBuffer, LPWSTR lpMonitorName);
1340 #define AddPortEx WINELIB_NAME_AW(AddPortEx)
1341
1342 BOOL WINAPI ConfigurePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1343 BOOL WINAPI ConfigurePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1344 #define ConfigurePort WINELIB_NAME_AW(ConfigurePort)
1345
1346 BOOL WINAPI DeletePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1347 BOOL WINAPI DeletePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1348 #define DeletePort WINELIB_NAME_AW(DeletePort)
1349
1350 BOOL WINAPI SetPortA(LPSTR pName, LPSTR pPortName, DWORD dwLevel,
1351                      LPBYTE pPortInfo);
1352 BOOL WINAPI SetPortW(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
1353                      LPBYTE pPortInfo);
1354 #define SetPort WINELIB_NAME_AW(SetPort)
1355
1356 BOOL WINAPI AddPrinterConnectionA(LPSTR pName);
1357 BOOL WINAPI AddPrinterConnectionW(LPWSTR pName);
1358 #define AddPrinterConnection WINELIB_NAME_AW(AddPrinterConnection)
1359
1360 BOOL WINAPI DeletePrinterConnectionA(LPSTR pName);
1361 BOOL WINAPI DeletePrinterConnectionW(LPWSTR pName);
1362 #define DeletePrinterConnection WINELIB_NAME_AW(DeletePrinterConnection)
1363
1364 HANDLE WINAPI ConnectToPrinterDlg(HWND hwnd, DWORD Flags);
1365
1366 BOOL WINAPI AddPrintProvidorA(LPSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1367 BOOL WINAPI AddPrintProvidorW(LPWSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1368 #define AddPrintProvidor WINELIB_NAME_AW(AddPrintProvidor)
1369
1370 BOOL WINAPI DeletePrintProvidorA(LPSTR pName, LPSTR pEnvironment,
1371                                  LPSTR pPrintProvidorName);
1372 BOOL WINAPI DeletePrintProvidorW(LPWSTR pName, LPWSTR pEnvironment,
1373                                  LPWSTR pPrintProvidorName);
1374 #define DeletePrintProvidor WINELIB_NAME_AW(DeletePrintProvidor)
1375
1376 DWORD WINAPI EnumPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1377                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1378                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1379 DWORD WINAPI EnumPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1380                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1381                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1382 #define EnumPrinterDataEx WINELIB_NAME_AW(EnumPrinterDataEx)
1383
1384 LONG WINAPI ExtDeviceMode( HWND hWnd, HANDLE hInst, LPDEVMODEA pDevModeOutput,
1385     LPSTR pDeviceName, LPSTR pPort, LPDEVMODEA pDevModeInput, LPSTR pProfile,
1386     DWORD fMode);
1387
1388 LPSTR WINAPI StartDocDlgA(HANDLE hPrinter, DOCINFOA *doc);
1389 LPWSTR WINAPI StartDocDlgW(HANDLE hPrinter, DOCINFOW *doc);
1390 #define StartDocDlg WINELIB_NAME_AW(StartDocDlg)
1391
1392 #ifdef __cplusplus
1393 } /* extern "C" */
1394 #endif
1395
1396 #endif  /* __WINE_WINSPOOL_H */