include: The magic HKEY_* handles should be sign-extended on 64-bit.
[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
277 /* Flags for printer drivers */
278 #define DRIVER_KERNELMODE       0x00000001
279 #define DRIVER_USERMODE         0x00000002
280
281 #define APD_STRICT_UPGRADE      0x00000001
282 #define APD_STRICT_DOWNGRADE    0x00000002
283 #define APD_COPY_ALL_FILES      0x00000004
284 #define APD_COPY_NEW_FILES      0x00000008
285 #define APD_COPY_FROM_DIRECTORY 0x00000010
286
287 #define DPD_DELETE_UNUSED_FILES     0x00000001
288 #define DPD_DELETE_SPECIFIC_VERSION 0x00000002
289 #define DPD_DELETE_ALL_FILES        0x00000004
290
291 /* dwAction for PRINTER_INFO_7 */
292 #define DSPRINT_PUBLISH     0x00000001
293 #define DSPRINT_UPDATE      0x00000002
294 #define DSPRINT_UNPUBLISH   0x00000004
295 #define DSPRINT_REPUBLISH   0x00000008
296 #define DSPRINT_PENDING     0x80000000
297
298 /* ##################################### */
299
300 /* TYPES */
301 typedef struct _PRINTER_DEFAULTSA {
302   LPSTR        pDatatype;
303   LPDEVMODEA pDevMode;
304   ACCESS_MASK  DesiredAccess;
305 } PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
306
307 typedef struct _PRINTER_DEFAULTSW {
308   LPWSTR       pDatatype;
309   LPDEVMODEW pDevMode;
310   ACCESS_MASK  DesiredAccess;
311 } PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
312
313 DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
314 DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
315
316 typedef struct _DRIVER_INFO_1A {
317   LPSTR     pName;
318 } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
319
320 typedef struct _DRIVER_INFO_1W {
321   LPWSTR    pName;
322 } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
323
324 DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
325 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
326 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
327
328 typedef struct _DRIVER_INFO_2A {
329   DWORD     cVersion;
330   LPSTR     pName;
331   LPSTR     pEnvironment;
332   LPSTR     pDriverPath;
333   LPSTR     pDataFile;
334   LPSTR     pConfigFile;
335 } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
336
337 typedef struct _DRIVER_INFO_2W {
338   DWORD     cVersion;
339   LPWSTR    pName;
340   LPWSTR    pEnvironment;
341   LPWSTR    pDriverPath;
342   LPWSTR    pDataFile;
343   LPWSTR    pConfigFile;
344 } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
345
346 DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
347 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
348 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
349
350 typedef struct _DRIVER_INFO_3A {
351   DWORD cVersion;
352   LPSTR pName;
353   LPSTR pEnvironment;
354   LPSTR pDriverPath;
355   LPSTR pDataFile;
356   LPSTR pConfigFile;
357   LPSTR pHelpFile;
358   LPSTR pDependentFiles;
359   LPSTR pMonitorName;
360   LPSTR pDefaultDataType;
361 } DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
362
363 typedef struct _DRIVER_INFO_3W {
364   DWORD cVersion;
365   LPWSTR pName;
366   LPWSTR pEnvironment;
367   LPWSTR pDriverPath;
368   LPWSTR pDataFile;
369   LPWSTR pConfigFile;
370   LPWSTR pHelpFile;
371   LPWSTR pDependentFiles;
372   LPWSTR pMonitorName;
373   LPWSTR pDefaultDataType;
374 } DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
375
376 DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
377 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
378 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
379
380 typedef struct _DRIVER_INFO_4A {
381   DWORD cVersion;
382   LPSTR pName;
383   LPSTR pEnvironment;
384   LPSTR pDriverPath;
385   LPSTR pDataFile;
386   LPSTR pConfigFile;
387   LPSTR pHelpFile;
388   LPSTR pDependentFiles;
389   LPSTR pMonitorName;
390   LPSTR pDefaultDataType;
391   LPSTR pszzPreviousNames;
392 } DRIVER_INFO_4A, *PDRIVER_INFO_4A, *LPDRIVER_INFO_4A;
393
394 typedef struct _DRIVER_INFO_4W {
395   DWORD cVersion;
396   LPWSTR pName;
397   LPWSTR pEnvironment;
398   LPWSTR pDriverPath;
399   LPWSTR pDataFile;
400   LPWSTR pConfigFile;
401   LPWSTR pHelpFile;
402   LPWSTR pDependentFiles;
403   LPWSTR pMonitorName;
404   LPWSTR pDefaultDataType;
405   LPWSTR pszzPreviousNames;
406 } DRIVER_INFO_4W, *PDRIVER_INFO_4W, *LPDRIVER_INFO_4W;
407
408 DECL_WINELIB_TYPE_AW(DRIVER_INFO_4)
409 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_4)
410 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_4)
411
412
413 typedef struct _DRIVER_INFO_5A {
414   DWORD cVersion;
415   LPSTR pName;
416   LPSTR pEnvironment;
417   LPSTR pDriverPath;
418   LPSTR pDataFile;
419   LPSTR pConfigFile;
420   DWORD dwDriverAttributes;
421   DWORD dwConfigVersion;
422   DWORD dwDriverVersion;
423 } DRIVER_INFO_5A, *PDRIVER_INFO_5A, *LPDRIVER_INFO_5A;
424
425 typedef struct _DRIVER_INFO_5W {
426   DWORD  cVersion;
427   LPWSTR pName;
428   LPWSTR pEnvironment;
429   LPWSTR pDriverPath;
430   LPWSTR pDataFile;
431   LPWSTR pConfigFile;
432   DWORD  dwDriverAttributes;
433   DWORD  dwConfigVersion;
434   DWORD  dwDriverVersion;
435 } DRIVER_INFO_5W, *PDRIVER_INFO_5W, *LPDRIVER_INFO_5W;
436
437 DECL_WINELIB_TYPE_AW(DRIVER_INFO_5)
438 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_5)
439 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_5)
440
441 typedef struct _DRIVER_INFO_6A {
442   DWORD     cVersion;
443   LPSTR     pName;
444   LPSTR     pEnvironment;
445   LPSTR     pDriverPath;
446   LPSTR     pDataFile;
447   LPSTR     pConfigFile;
448   LPSTR     pHelpFile;
449   LPSTR     pDependentFiles;
450   LPSTR     pMonitorName;
451   LPSTR     pDefaultDataType;
452   LPSTR     pszzPreviousNames;
453   FILETIME  ftDriverDate;
454   DWORDLONG dwlDriverVersion;
455   LPSTR     pszMfgName;
456   LPSTR     pszOEMUrl;
457   LPSTR     pszHardwareID;
458   LPSTR     pszProvider;
459 } DRIVER_INFO_6A, *PDRIVER_INFO_6A, *LPDRIVER_INFO_6A;
460
461 typedef struct _DRIVER_INFO_6W {
462   DWORD     cVersion;
463   LPWSTR    pName;
464   LPWSTR    pEnvironment;
465   LPWSTR    pDriverPath;
466   LPWSTR    pDataFile;
467   LPWSTR    pConfigFile;
468   LPWSTR    pHelpFile;
469   LPWSTR    pDependentFiles;
470   LPWSTR    pMonitorName;
471   LPWSTR    pDefaultDataType;
472   LPWSTR    pszzPreviousNames;
473   FILETIME  ftDriverDate;
474   DWORDLONG dwlDriverVersion;
475   LPWSTR    pszMfgName;
476   LPWSTR    pszOEMUrl;
477   LPWSTR    pszHardwareID;
478   LPWSTR    pszProvider;
479 } DRIVER_INFO_6W, *PDRIVER_INFO_6W, *LPDRIVER_INFO_6W;
480
481 DECL_WINELIB_TYPE_AW(DRIVER_INFO_6)
482 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_6)
483 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_6)
484
485 /* DRIVER_INFO_7 is not defined in native winspool.h and not found in the www */
486
487 typedef struct _DRIVER_INFO_8A {
488   DWORD     cVersion;
489   LPSTR     pName;
490   LPSTR     pEnvironment;
491   LPSTR     pDriverPath;
492   LPSTR     pDataFile;
493   LPSTR     pConfigFile;
494   LPSTR     pHelpFile;
495   LPSTR     pDependentFiles;
496   LPSTR     pMonitorName;
497   LPSTR     pDefaultDataType;
498   LPSTR     pszzPreviousNames;
499   FILETIME  ftDriverDate;
500   DWORDLONG dwlDriverVersion;
501   LPSTR     pszMfgName;
502   LPSTR     pszOEMUrl;
503   LPSTR     pszHardwareID;
504   LPSTR     pszProvider;
505   LPSTR     pszPrintProcessor;
506   LPSTR     pszVendorSetup;
507   LPSTR     pszzColorProfiles;
508   LPSTR     pszInfPath;
509   DWORD     dwPrinterDriverAttributes;
510   LPSTR     pszzCoreDriverDependencies;
511   FILETIME  ftMinInboxDriverVerDate;
512   DWORDLONG dwlMinInboxDriverVerVersion;
513 } DRIVER_INFO_8A, *PDRIVER_INFO_8A, *LPDRIVER_INFO_8A;
514
515 typedef struct _DRIVER_INFO_8W {
516   DWORD     cVersion;
517   LPWSTR    pName;
518   LPWSTR    pEnvironment;
519   LPWSTR    pDriverPath;
520   LPWSTR    pDataFile;
521   LPWSTR    pConfigFile;
522   LPWSTR    pHelpFile;
523   LPWSTR    pDependentFiles;
524   LPWSTR    pMonitorName;
525   LPWSTR    pDefaultDataType;
526   LPWSTR    pszzPreviousNames;
527   FILETIME  ftDriverDate;
528   DWORDLONG dwlDriverVersion;
529   LPWSTR    pszMfgName;
530   LPWSTR    pszOEMUrl;
531   LPWSTR    pszHardwareID;
532   LPWSTR    pszProvider;
533   LPWSTR    pszPrintProcessor;
534   LPWSTR    pszVendorSetup;
535   LPWSTR    pszzColorProfiles;
536   LPWSTR    pszInfPath;
537   DWORD     dwPrinterDriverAttributes;
538   LPWSTR    pszzCoreDriverDependencies;
539   FILETIME  ftMinInboxDriverVerDate;
540   DWORDLONG dwlMinInboxDriverVerVersion;
541 } DRIVER_INFO_8W, *PDRIVER_INFO_8W, *LPDRIVER_INFO_8W;
542
543 DECL_WINELIB_TYPE_AW(DRIVER_INFO_8)
544 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_8)
545 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_8)
546
547
548 typedef struct _PRINTER_INFO_1A {
549   DWORD   Flags;
550   LPSTR   pDescription;
551   LPSTR   pName;
552   LPSTR   pComment;
553 } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
554
555 typedef struct _PRINTER_INFO_1W {
556   DWORD   Flags;
557   LPWSTR  pDescription;
558   LPWSTR  pName;
559   LPWSTR  pComment;
560 } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
561
562 DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
563 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
564 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
565
566 /* FIXME: winspool.h declares some structure members with the name Status.
567  * unfortunately <X11/ICE/ICElib.h> #defines Status to the type 'int'
568  * therefore the following hack */
569 #ifndef Status
570
571 typedef struct _PRINTER_INFO_2A {
572   LPSTR     pServerName;
573   LPSTR     pPrinterName;
574   LPSTR     pShareName;
575   LPSTR     pPortName;
576   LPSTR     pDriverName;
577   LPSTR     pComment;
578   LPSTR     pLocation;
579   LPDEVMODEA pDevMode;
580   LPSTR     pSepFile;
581   LPSTR     pPrintProcessor;
582   LPSTR     pDatatype;
583   LPSTR     pParameters;
584   PSECURITY_DESCRIPTOR pSecurityDescriptor;
585   DWORD   Attributes;
586   DWORD   Priority;
587   DWORD   DefaultPriority;
588   DWORD   StartTime;
589   DWORD   UntilTime;
590   DWORD   Status;
591   DWORD   cJobs;
592   DWORD   AveragePPM;
593 } PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
594
595 typedef struct _PRINTER_INFO_2W {
596   LPWSTR    pServerName;
597   LPWSTR    pPrinterName;
598   LPWSTR    pShareName;
599   LPWSTR    pPortName;
600   LPWSTR    pDriverName;
601   LPWSTR    pComment;
602   LPWSTR    pLocation;
603   LPDEVMODEW pDevMode;
604   LPWSTR    pSepFile;
605   LPWSTR    pPrintProcessor;
606   LPWSTR    pDatatype;
607   LPWSTR    pParameters;
608   PSECURITY_DESCRIPTOR pSecurityDescriptor;
609   DWORD   Attributes;
610   DWORD   Priority;
611   DWORD   DefaultPriority;
612   DWORD   StartTime;
613   DWORD   UntilTime;
614   DWORD   Status;
615   DWORD   cJobs;
616   DWORD   AveragePPM;
617 } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
618
619 DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
620 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
621 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
622
623 typedef struct _PRINTER_INFO_3 {
624   PSECURITY_DESCRIPTOR pSecurityDescriptor;
625 } PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
626
627 typedef struct _PRINTER_INFO_4A {
628   LPSTR     pPrinterName;
629   LPSTR     pServerName;
630   DWORD     Attributes;
631 } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
632
633 typedef struct _PRINTER_INFO_4W {
634   LPWSTR     pPrinterName;
635   LPWSTR     pServerName;
636   DWORD     Attributes;
637 } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
638
639 DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
640 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
641 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
642
643 typedef struct _PRINTER_INFO_5A {
644   LPSTR     pPrinterName;
645   LPSTR     pPortName;
646   DWORD     Attributes;
647   DWORD     DeviceNotSelectedTimeout;
648   DWORD     TransmissionRetryTimeout;
649 } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
650
651 typedef struct _PRINTER_INFO_5W {
652   LPWSTR    pPrinterName;
653   LPWSTR    pPortName;
654   DWORD     Attributes;
655   DWORD     DeviceNotSelectedTimeout;
656   DWORD     TransmissionRetryTimeout;
657 } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
658
659 DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
660 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
661 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
662
663 typedef struct _PRINTER_INFO_6 {
664   DWORD dwStatus;
665 } PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
666
667 typedef struct _PRINTER_INFO_7A {
668   LPSTR     pszObjectGUID;
669   DWORD     dwAction;
670 } PRINTER_INFO_7A, *PPRINTER_INFO_7A, *LPPRINTER_INFO_7A;
671
672 typedef struct _PRINTER_INFO_7W {
673   LPWSTR    pszObjectGUID;
674   DWORD     dwAction;
675 } PRINTER_INFO_7W, *PPRINTER_INFO_7W, *LPPRINTER_INFO_7W;
676
677 DECL_WINELIB_TYPE_AW(PRINTER_INFO_7)
678 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_7)
679 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_7)
680
681 typedef struct _PRINTER_INFO_8A {
682   LPDEVMODEA pDevMode;
683 } PRINTER_INFO_8A, *PPRINTER_INFO_8A, *LPPRINTER_INFO_8A;
684
685 typedef struct _PRINTER_INFO_8W {
686   LPDEVMODEW pDevMode;
687 } PRINTER_INFO_8W, *PPRINTER_INFO_8W, *LPPRINTER_INFO_8W;
688
689 DECL_WINELIB_TYPE_AW(PRINTER_INFO_8)
690 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_8)
691 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_8)
692
693 typedef struct _PRINTER_INFO_9A {
694   LPDEVMODEA pDevMode;
695 } PRINTER_INFO_9A, *PPRINTER_INFO_9A, *LPPRINTER_INFO_9A;
696
697 typedef struct _PRINTER_INFO_9W {
698   LPDEVMODEW pDevMode;
699 } PRINTER_INFO_9W, *PPRINTER_INFO_9W, *LPPRINTER_INFO_9W;
700
701 DECL_WINELIB_TYPE_AW(PRINTER_INFO_9)
702 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_9)
703 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_9)
704
705
706 typedef struct _JOB_INFO_1A {
707   DWORD JobId;
708   LPSTR pPrinterName;
709   LPSTR pMachineName;
710   LPSTR pUserName;
711   LPSTR pDocument;
712   LPSTR pDatatype;
713   LPSTR pStatus;
714   DWORD Status;
715   DWORD Priority;
716   DWORD Position;
717   DWORD TotalPages;
718   DWORD PagesPrinted;
719   SYSTEMTIME Submitted;
720 } JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
721
722 typedef struct _JOB_INFO_1W {
723   DWORD JobId;
724   LPWSTR pPrinterName;
725   LPWSTR pMachineName;
726   LPWSTR pUserName;
727   LPWSTR pDocument;
728   LPWSTR pDatatype;
729   LPWSTR pStatus;
730   DWORD Status;
731   DWORD Priority;
732   DWORD Position;
733   DWORD TotalPages;
734   DWORD PagesPrinted;
735   SYSTEMTIME Submitted;
736 } JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
737
738 DECL_WINELIB_TYPE_AW(JOB_INFO_1)
739 DECL_WINELIB_TYPE_AW(PJOB_INFO_1)
740 DECL_WINELIB_TYPE_AW(LPJOB_INFO_1)
741
742 typedef struct _JOB_INFO_2A {
743   DWORD JobId;
744   LPSTR pPrinterName;
745   LPSTR pMachineName;
746   LPSTR pUserName;
747   LPSTR pDocument;
748   LPSTR pNotifyName;
749   LPSTR pDatatype;
750   LPSTR pPrintProcessor;
751   LPSTR pParameters;
752   LPSTR pDriverName;
753   LPDEVMODEA pDevMode;
754   LPSTR pStatus;
755   PSECURITY_DESCRIPTOR pSecurityDescriptor;
756   DWORD Status;
757   DWORD Priority;
758   DWORD Position;
759   DWORD StartTime;
760   DWORD UntilTime;
761   DWORD TotalPages;
762   DWORD Size;
763   SYSTEMTIME Submitted;
764   DWORD Time;
765   DWORD PagesPrinted;
766 } JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
767
768 typedef struct _JOB_INFO_2W {
769   DWORD JobId;
770   LPWSTR pPrinterName;
771   LPWSTR pMachineName;
772   LPWSTR pUserName;
773   LPWSTR pDocument;
774   LPWSTR pNotifyName;
775   LPWSTR pDatatype;
776   LPWSTR pPrintProcessor;
777   LPWSTR pParameters;
778   LPWSTR pDriverName;
779   LPDEVMODEW pDevMode;
780   LPWSTR pStatus;
781   PSECURITY_DESCRIPTOR pSecurityDescriptor;
782   DWORD Status;
783   DWORD Priority;
784   DWORD Position;
785   DWORD StartTime;
786   DWORD UntilTime;
787   DWORD TotalPages;
788   DWORD Size;
789   SYSTEMTIME Submitted;
790   DWORD Time;
791   DWORD PagesPrinted;
792 } JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
793
794 DECL_WINELIB_TYPE_AW(JOB_INFO_2)
795 DECL_WINELIB_TYPE_AW(PJOB_INFO_2)
796 DECL_WINELIB_TYPE_AW(LPJOB_INFO_2)
797
798 typedef struct _JOB_INFO_3 {
799   DWORD JobId;
800   DWORD NextJobId;
801   DWORD Reserved;
802 } JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
803
804 typedef struct _ADDJOB_INFO_1A {
805   LPSTR Path;
806   DWORD JobId;
807 } ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
808
809 typedef struct _ADDJOB_INFO_1W {
810   LPWSTR Path;
811   DWORD  JobId;
812 } ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
813
814 DECL_WINELIB_TYPE_AW(ADDJOB_INFO_1)
815 DECL_WINELIB_TYPE_AW(PADDJOB_INFO_1)
816 DECL_WINELIB_TYPE_AW(LPADDJOB_INFO_1)
817
818 typedef struct _DOC_INFO_1A {
819   LPSTR pDocName;
820   LPSTR pOutputFile;
821   LPSTR pDatatype;
822 } DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
823
824 typedef struct _DOC_INFO_1W {
825   LPWSTR pDocName;
826   LPWSTR pOutputFile;
827   LPWSTR pDatatype;
828 } DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
829
830 DECL_WINELIB_TYPE_AW(DOC_INFO_1)
831 DECL_WINELIB_TYPE_AW(PDOC_INFO_1)
832 DECL_WINELIB_TYPE_AW(LPDOC_INFO_1)
833
834 typedef struct _DOC_INFO_2A {
835   LPSTR pDocName;
836   LPSTR pOutputFile;
837   LPSTR pDatatype;
838   DWORD dwMode;
839   DWORD JobId;
840 } DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
841
842 typedef struct _DOC_INFO_2W {
843   LPWSTR pDocName;
844   LPWSTR pOutputFile;
845   LPWSTR pDatatype;
846   DWORD dwMode;
847   DWORD JobId;
848 } DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
849
850 DECL_WINELIB_TYPE_AW(DOC_INFO_2)
851 DECL_WINELIB_TYPE_AW(PDOC_INFO_2)
852 DECL_WINELIB_TYPE_AW(LPDOC_INFO_2)
853
854 typedef struct _FORM_INFO_1A {
855   DWORD Flags;
856   LPSTR pName;
857   SIZEL Size;
858   RECTL ImageableArea;
859 } FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
860
861 typedef struct _FORM_INFO_1W {
862   DWORD Flags;
863   LPWSTR pName;
864   SIZEL Size;
865   RECTL ImageableArea;
866 } FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
867
868 DECL_WINELIB_TYPE_AW(FORM_INFO_1)
869 DECL_WINELIB_TYPE_AW(PFORM_INFO_1)
870 DECL_WINELIB_TYPE_AW(LPFORM_INFO_1)
871
872 typedef struct _FORM_INFO_2A {
873   DWORD  Flags;
874   LPSTR  pName;
875   SIZEL  Size;
876   RECTL  ImageableArea;
877   LPCSTR pKeyword;
878   DWORD  StringType;
879   LPSTR  pMuiDll;
880   DWORD  dwResourceId;
881   LPSTR  pDisplayName;
882   LANGID wLangId;
883 } FORM_INFO_2A, *PFORM_INFO_2A, *LPFORM_INFO_2A;
884
885 typedef struct _FORM_INFO_2W {
886   DWORD  Flags;
887   LPWSTR pName;
888   SIZEL  Size;
889   RECTL  ImageableArea;
890   LPCSTR pKeyword;
891   DWORD  StringType;
892   LPWSTR pMuiDll;
893   DWORD  dwResourceId;
894   LPWSTR pDisplayName;
895   LANGID wLangId;
896 } FORM_INFO_2W, *PFORM_INFO_2W, *LPFORM_INFO_2W;
897
898 DECL_WINELIB_TYPE_AW(FORM_INFO_2)
899 DECL_WINELIB_TYPE_AW(PFORM_INFO_2)
900 DECL_WINELIB_TYPE_AW(LPFORM_INFO_2)
901
902 typedef struct _PRINTPROCESSOR_INFO_1A {
903   LPSTR pName;
904 } PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A,
905   *LPPRINTPROCESSOR_INFO_1A;
906
907 typedef struct _PRINTPROCESSOR_INFO_1W {
908   LPWSTR pName;
909 } PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W,
910   *LPPRINTPROCESSOR_INFO_1W;
911
912 DECL_WINELIB_TYPE_AW(PRINTPROCESSOR_INFO_1)
913 DECL_WINELIB_TYPE_AW(PPRINTPROCESSOR_INFO_1)
914 DECL_WINELIB_TYPE_AW(LPPRINTPROCESSOR_INFO_1)
915
916 typedef struct _PORT_INFO_1A {
917   LPSTR pName;
918 } PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
919
920 typedef struct _PORT_INFO_1W {
921   LPWSTR pName;
922 } PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
923
924 DECL_WINELIB_TYPE_AW(PORT_INFO_1)
925 DECL_WINELIB_TYPE_AW(PPORT_INFO_1)
926 DECL_WINELIB_TYPE_AW(LPPORT_INFO_1)
927
928 typedef struct _PORT_INFO_2A {
929   LPSTR pPortName;
930   LPSTR pMonitorName;
931   LPSTR pDescription;
932   DWORD fPortType;
933   DWORD Reserved;
934 } PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
935
936 typedef struct _PORT_INFO_2W {
937   LPWSTR pPortName;
938   LPWSTR pMonitorName;
939   LPWSTR pDescription;
940   DWORD  fPortType;
941   DWORD  Reserved;
942 } PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
943
944 DECL_WINELIB_TYPE_AW(PORT_INFO_2)
945 DECL_WINELIB_TYPE_AW(PPORT_INFO_2)
946 DECL_WINELIB_TYPE_AW(LPPORT_INFO_2)
947
948 typedef struct _PORT_INFO_3A {
949   DWORD dwStatus;
950   LPSTR pszStatus;
951   DWORD dwSeverity;
952 } PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
953
954 typedef struct _PORT_INFO_3W {
955   DWORD  dwStatus;
956   LPWSTR pszStatus;
957   DWORD  dwSeverity;
958 } PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
959
960 DECL_WINELIB_TYPE_AW(PORT_INFO_3)
961 DECL_WINELIB_TYPE_AW(PPORT_INFO_3)
962 DECL_WINELIB_TYPE_AW(LPPORT_INFO_3)
963
964 typedef struct _MONITOR_INFO_1A {
965   LPSTR pName;
966 } MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
967
968 typedef struct _MONITOR_INFO_1W {
969   LPWSTR pName;
970 } MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
971
972 DECL_WINELIB_TYPE_AW(MONITOR_INFO_1)
973 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_1)
974 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_1)
975
976 #endif /* Status */
977
978
979 typedef struct _MONITOR_INFO_2A {
980   LPSTR pName;
981   LPSTR pEnvironment;
982   LPSTR pDLLName;
983 } MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
984
985 typedef struct _MONITOR_INFO_2W {
986   LPWSTR pName;
987   LPWSTR pEnvironment;
988   LPWSTR pDLLName;
989 } MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
990
991 DECL_WINELIB_TYPE_AW(MONITOR_INFO_2)
992 DECL_WINELIB_TYPE_AW(PMONITOR_INFO_2)
993 DECL_WINELIB_TYPE_AW(LPMONITOR_INFO_2)
994
995 typedef struct _DATATYPES_INFO_1A {
996   LPSTR pName;
997 } DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
998
999 typedef struct _DATATYPES_INFO_1W {
1000   LPWSTR pName;
1001 } DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
1002
1003 DECL_WINELIB_TYPE_AW(DATATYPES_INFO_1)
1004 DECL_WINELIB_TYPE_AW(PDATATYPES_INFO_1)
1005 DECL_WINELIB_TYPE_AW(LPDATATYPES_INFO_1)
1006
1007 typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
1008   WORD  Type;
1009   WORD  Reserved0;
1010   DWORD Reserved1;
1011   DWORD Reserved2;
1012   DWORD Count;
1013   PWORD pFields;
1014 } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE,
1015 *LPPRINTER_NOTIFY_OPTIONS_TYPE;
1016
1017 typedef struct _PRINTER_NOTIFY_OPTIONS {
1018   DWORD Version;
1019   DWORD Flags;
1020   DWORD Count;
1021   PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
1022 } PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
1023
1024 typedef struct _PRINTER_NOTIFY_INFO_DATA {
1025   WORD Type;
1026   WORD Field;
1027   DWORD Reserved;
1028   DWORD Id;
1029   union {
1030     DWORD adwData[2];
1031     struct {
1032       DWORD cbBuf;
1033       LPVOID pBuf;
1034     } Data;
1035   } NotifyData;
1036 } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA,
1037 *LPPRINTER_NOTIFY_INFO_DATA;
1038
1039 typedef struct _PRINTER_NOTIFY_INFO {
1040   DWORD Version;
1041   DWORD Flags;
1042   DWORD Count;
1043   PRINTER_NOTIFY_INFO_DATA aData[1];
1044 } PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
1045
1046 typedef struct _PROVIDOR_INFO_1A {
1047   LPSTR pName;
1048   LPSTR pEnvironment;
1049   LPSTR pDLLName;
1050 } PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
1051
1052 typedef struct _PROVIDOR_INFO_1W {
1053   LPWSTR pName;
1054   LPWSTR pEnvironment;
1055   LPWSTR pDLLName;
1056 } PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
1057
1058 DECL_WINELIB_TYPE_AW(PROVIDOR_INFO_1)
1059 DECL_WINELIB_TYPE_AW(PPROVIDOR_INFO_1)
1060 DECL_WINELIB_TYPE_AW(LPPROVIDOR_INFO_1)
1061
1062 typedef struct _PRINTER_ENUM_VALUESA {
1063   LPSTR  pValueName;
1064   DWORD  cbValueName;
1065   DWORD  dwType;
1066   LPBYTE pData;
1067   DWORD  cbData;
1068 } PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA;
1069
1070 typedef struct _PRINTER_ENUM_VALUESW {
1071   LPWSTR pValueName;
1072   DWORD  cbValueName;
1073   DWORD  dwType;
1074   LPBYTE pData;
1075   DWORD  cbData;
1076 } PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW;
1077
1078 DECL_WINELIB_TYPE_AW(PRINTER_ENUM_VALUES)
1079 DECL_WINELIB_TYPE_AW(PPRINTER_ENUM_VALUES)
1080
1081 typedef enum {
1082  BIDI_NULL = 0,
1083  BIDI_INT,
1084  BIDI_FLOAT,
1085  BIDI_BOOL,
1086  BIDI_STRING,
1087  BIDI_TEXT,
1088  BIDI_ENUM,
1089  BIDI_BLOB
1090 } BIDI_TYPE;
1091
1092 typedef struct _BINARY_CONTAINER {
1093  DWORD  cbBuf;
1094  LPBYTE pData;
1095 } BINARY_CONTAINER, *PBINARY_CONTAINER;
1096
1097 typedef struct _BIDI_DATA {
1098  DWORD  dwBidiType;
1099  union
1100  {
1101    BOOL             bData;
1102    INT              iData;
1103    LPWSTR           sData;
1104    FLOAT            fData;
1105    BINARY_CONTAINER biData;
1106  } u;
1107 } BIDI_DATA, *LPBIDI_DATA, *PBIDI_DATA;
1108
1109 typedef struct _BIDI_REQUEST_DATA {
1110  DWORD      dwReqNumber;
1111  LPWSTR     pSchema;
1112  BIDI_DATA  data;
1113 } BIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA;
1114
1115 typedef struct _BIDI_REQUEST_CONTAINER {
1116  DWORD              Version;
1117  DWORD              Flags;
1118  DWORD              Count;
1119  BIDI_REQUEST_DATA  aData[1];
1120 } BIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER;
1121
1122 typedef struct _BIDI_RESPONSE_DATA {
1123  DWORD      dwResult;
1124  DWORD      dwReqNumber;
1125  LPWSTR     pSchema;
1126  BIDI_DATA  data;
1127 } BIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA;
1128
1129 typedef struct _BIDI_RESPONSE_CONTAINER {
1130  DWORD              Version;
1131  DWORD              Flags;
1132  DWORD              Count;
1133  BIDI_RESPONSE_DATA aData[1];
1134 } BIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER;
1135
1136 /* DECLARATIONS */
1137 INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
1138                                LPSTR pOutput, LPDEVMODEA pDevMode);
1139 INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
1140                                WORD fwCapability, LPWSTR pOutput,
1141                                const DEVMODEW *pDevMode);
1142
1143 #define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
1144
1145 LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
1146                                 LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
1147                                 LPDEVMODEA pDevModeInput,DWORD fMode );
1148 LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
1149                                 LPWSTR pDeviceName,
1150                                 LPDEVMODEW pDevModeOutput,
1151                                 LPDEVMODEW pDevModeInput, DWORD fMode);
1152
1153 #define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
1154
1155 BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
1156                              LPPRINTER_DEFAULTSA pDefault);
1157 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
1158                              LPPRINTER_DEFAULTSW pDefault);
1159
1160 #define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
1161
1162 BOOL WINAPI ResetPrinterA(HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault);
1163 BOOL WINAPI ResetPrinterW(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
1164 #define ResetPrinter WINELIB_NAME_AW(ResetPrinter)
1165
1166 BOOL WINAPI ClosePrinter (HANDLE phPrinter);
1167
1168 BOOL WINAPI EnumJobsA(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
1169                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
1170                       LPDWORD pcReturned);
1171 BOOL WINAPI EnumJobsW(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
1172                       DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
1173                       LPDWORD pcReturned);
1174 #define EnumJobs WINELIB_NAME_AW(EnumJobs)
1175
1176 BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
1177                                DWORD dwLevel, LPBYTE lpbPrinters,
1178                                DWORD cbBuf, LPDWORD lpdwNeeded,
1179                                LPDWORD lpdwReturned);
1180 BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
1181                                DWORD dwLevel, LPBYTE lpbPrinters,
1182                                DWORD cbBuf, LPDWORD lpdwNeeded,
1183                                LPDWORD lpdwReturned);
1184 #define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
1185
1186 BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
1187
1188 BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
1189 BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
1190 #define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
1191
1192 BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
1193                               DWORD Level, LPBYTE pDriverInfo,
1194                               DWORD cbBuf, LPDWORD pcbNeeded);
1195 BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
1196                               DWORD Level, LPBYTE pDriverInfo,
1197                               DWORD cbBuf, LPDWORD pcbNeeded);
1198 #define GetPrinterDriver WINELIB_NAME_AW(GetPrinterDriver)
1199
1200 BOOL WINAPI SetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1201                     DWORD Command);
1202 BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1203                     DWORD Command);
1204 #define SetJob WINELIB_NAME_AW(SetJob)
1205
1206 BOOL WINAPI GetJobA(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1207                     DWORD cbBuf, LPDWORD pcbNeeded);
1208 BOOL WINAPI GetJobW(HANDLE hPrinter, DWORD JobID, DWORD Level, LPBYTE pJob,
1209                     DWORD cbBuf, LPDWORD pcbNeeded);
1210 #define GetJob WINELIB_NAME_AW(GetJob)
1211
1212 HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter);
1213 HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
1214 #define AddPrinter WINELIB_NAME_AW(AddPrinter)
1215
1216 BOOL WINAPI DeletePrinter(HANDLE hPrinter);
1217
1218 BOOL WINAPI SetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1219                         DWORD Command);
1220 BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1221                         DWORD Command);
1222 #define SetPrinter WINELIB_NAME_AW(SetPrinter)
1223
1224 BOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1225                         DWORD cbBuf, LPDWORD pcbNeeded);
1226 BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
1227                         DWORD cbBuf, LPDWORD pcbNeeded);
1228 #define GetPrinter WINELIB_NAME_AW(GetPrinter)
1229
1230 BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo);
1231 BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
1232 #define AddPrinterDriver WINELIB_NAME_AW(AddPrinterDriver)
1233
1234 BOOL WINAPI AddPrinterDriverExA(LPSTR pName, DWORD Level, LPBYTE pDriverInfo,
1235                                 DWORD dwFileCopyFlags);
1236 BOOL WINAPI AddPrinterDriverExW(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo,
1237                                 DWORD dwFileCopyFlags);
1238 #define AddPrinterDriverEx WINELIB_NAME_AW(AddPrinterDriverEx)
1239
1240 BOOL WINAPI EnumPrinterDriversA(LPSTR pName, LPSTR pEnvironment, DWORD Level,
1241                                 LPBYTE pDriverInfo, DWORD cbBuf,
1242                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
1243 BOOL WINAPI EnumPrinterDriversW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level,
1244                                 LPBYTE pDriverInfo, DWORD cbBuf,
1245                                 LPDWORD pcbNeeded, LPDWORD pcbReturned);
1246 #define EnumPrinterDrivers WINELIB_NAME_AW(EnumPrinterDrivers)
1247
1248 BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
1249 BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
1250 #define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
1251
1252 BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
1253                                  LPSTR pDriverName);
1254 BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,
1255                                  LPWSTR pDriverName);
1256 #define DeletePrinterDriver WINELIB_NAME_AW(DeletePrinterDriver)
1257
1258 BOOL WINAPI DeletePrinterDriverExA(LPSTR pName, LPSTR pEnvironment,
1259                                    LPSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
1260 BOOL WINAPI DeletePrinterDriverExW(LPWSTR pName, LPWSTR pEnvironment,
1261                                    LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag);
1262 #define DeletePrinterDriverEx WINELIB_NAME_AW(DeletePrinterDriverEx)
1263
1264 BOOL WINAPI AddPrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1265                                LPSTR pPathName, LPSTR pPrintProcessorName);
1266 BOOL WINAPI AddPrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1267                                LPWSTR pPathName, LPWSTR pPrintProcessorName);
1268 #define AddPrintProcessor WINELIB_NAME_AW(AddPrintProcessor)
1269
1270 BOOL WINAPI EnumPrintProcessorsA(LPSTR pName, LPSTR pEnvironment,
1271                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1272                                  DWORD cbBuf, LPDWORD pcbNeeded,
1273                                  LPDWORD pcbReturned);
1274 BOOL WINAPI EnumPrintProcessorsW(LPWSTR pName, LPWSTR pEnvironment,
1275                                  DWORD Level, LPBYTE pPrintProcessorInfo,
1276                                  DWORD cbBuf, LPDWORD pcbNeeded,
1277                                  LPDWORD pcbReturned);
1278 #define EnumPrintProcessors WINELIB_NAME_AW(EnumPrintProcessors)
1279
1280 BOOL WINAPI GetPrintProcessorDirectoryA(LPSTR pName, LPSTR pEnvironment,
1281                                         DWORD Level,
1282                                         LPBYTE pPrintProcessorInfo,
1283                                         DWORD cbBuf, LPDWORD pcbNeeded);
1284
1285 BOOL WINAPI GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
1286                                         DWORD Level,
1287                                         LPBYTE pPrintProcessorInfo,
1288                                         DWORD cbBuf, LPDWORD pcbNeeded);
1289 #define GetPrintProcessorDirectory WINELIB_NAME_AW(GetPrintProcessorDirectory)
1290
1291 BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR pName,
1292                                          LPSTR pPrintProcessorName,
1293                                          DWORD Level, LPBYTE pDatatypes,
1294                                          DWORD cbBuf, LPDWORD pcbNeeded,
1295                                          LPDWORD pcbReturned);
1296 BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR pName,
1297                                          LPWSTR pPrintProcessorName,
1298                                          DWORD Level, LPBYTE pDatatypes,
1299                                          DWORD cbBuf, LPDWORD pcbNeeded,
1300                                          LPDWORD pcbReturned);
1301 #define EnumPrintProcessorDatatypes WINELIB_NAME_AW(EnumPrintProcessorDatatypes)
1302
1303 BOOL WINAPI DeletePrintProcessorA(LPSTR pName, LPSTR pEnvironment,
1304                                   LPSTR pPrintProcessorName);
1305 BOOL WINAPI DeletePrintProcessorW(LPWSTR pName, LPWSTR pEnvironment,
1306                                   LPWSTR pPrintProcessorName);
1307 #define DeletePrintProcessor WINELIB_NAME_AW(DeletePrintProcessor)
1308
1309 DWORD WINAPI StartDocPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1310 DWORD WINAPI StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
1311 #define StartDocPrinter WINELIB_NAME_AW(StartDocPrinter)
1312
1313 BOOL WINAPI StartPagePrinter(HANDLE hPrinter);
1314 BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1315                          LPDWORD pcWritten);
1316 BOOL WINAPI EndPagePrinter(HANDLE hPrinter);
1317 BOOL WINAPI AbortPrinter(HANDLE hPrinter);
1318 BOOL WINAPI ReadPrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
1319                         LPDWORD pNoBytesRead);
1320 BOOL WINAPI EndDocPrinter(HANDLE hPrinter);
1321
1322 BOOL WINAPI AddJobA(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1323                     LPDWORD pcbNeeded);
1324 BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
1325                     LPDWORD pcbNeeded);
1326 #define AddJob WINELIB_NAME_AW(AddJob)
1327
1328 BOOL WINAPI ScheduleJob(HANDLE hPrinter, DWORD JobID);
1329
1330 LONG WINAPI AdvancedDocumentPropertiesA(HWND hWnd, HANDLE hPrinter,
1331                                         LPSTR pDeviceName,
1332                                         PDEVMODEA pDevModeOutput,
1333                                         PDEVMODEA pDevModeInput);
1334 LONG WINAPI AdvancedDocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
1335                                         LPWSTR pDeviceName,
1336                                         PDEVMODEW pDevModeOutput,
1337                                         PDEVMODEW pDevModeInput);
1338 #define AdvancedDocumentProperties WINELIB_NAME_AW(AdvancedDocumentProperties)
1339
1340 DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
1341                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1342 DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
1343                              LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1344 #define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
1345
1346 DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1347                                LPCSTR pValueName, LPDWORD pType,
1348                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1349 DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1350                                LPCWSTR pValueName, LPDWORD pType,
1351                                LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
1352 #define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
1353
1354 DWORD WINAPI DeletePrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1355                                   LPCSTR pValueName);
1356 DWORD WINAPI DeletePrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1357                                   LPCWSTR pValueName);
1358 #define DeletePrinterDataEx WINELIB_NAME_AW(DeletePrinterDataEx)
1359
1360 DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
1361                              LPBYTE pData, DWORD cbData);
1362 DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
1363                              LPBYTE pData, DWORD cbData);
1364 #define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
1365
1366 DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1367                                LPCSTR pValueName, DWORD Type,
1368                                LPBYTE pData, DWORD cbData);
1369 DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1370                                LPCWSTR pValueName, DWORD Type,
1371                                LPBYTE pData, DWORD cbData);
1372 #define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
1373
1374 DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
1375 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
1376                                                  DWORD fdwFlags,
1377                                                  DWORD fdwOptions,
1378                                                  LPVOID pPrinterNotifyOptions);
1379 BOOL WINAPI FindNextPrinterChangeNotification(HANDLE hChange,
1380                                               PDWORD pdwChange,
1381                                               LPVOID pvReserved,
1382                                               LPVOID *ppPrinterNotifyInfo);
1383 BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
1384 BOOL WINAPI FindClosePrinterChangeNotification(HANDLE hChange);
1385
1386 DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter, DWORD Error, HWND hWnd,
1387                                 LPSTR pText, LPSTR pCaption, DWORD dwType);
1388 DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter, DWORD Error, HWND hWnd,
1389                                 LPWSTR pText, LPWSTR pCaption, DWORD dwType);
1390 #define PrinterMessageBox WINELIB_NAME_AW(PrinterMessageBox)
1391
1392 BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1393 BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
1394 #define AddForm WINELIB_NAME_AW(AddForm)
1395
1396 BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName);
1397 BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName);
1398 #define DeleteForm WINELIB_NAME_AW(DeleteForm)
1399
1400 BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1401                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1402 BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1403                      LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
1404 #define GetForm WINELIB_NAME_AW(GetForm)
1405
1406 BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
1407                      LPBYTE pForm);
1408 BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
1409                      LPBYTE pForm);
1410 #define SetForm WINELIB_NAME_AW(SetForm)
1411
1412 BOOL WINAPI EnumFormsA(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1413                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1414 BOOL WINAPI EnumFormsW(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf,
1415                        LPDWORD pcbNeeded, LPDWORD pcReturned);
1416 #define EnumForms WINELIB_NAME_AW(EnumForms)
1417
1418 BOOL WINAPI EnumMonitorsA(LPSTR pName, DWORD Level, LPBYTE pMonitors,
1419                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1420 BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
1421                           DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1422 #define EnumMonitors WINELIB_NAME_AW(EnumMonitors)
1423
1424 DWORD WINAPI EnumPrinterDataA( HANDLE hPrinter, DWORD dwIndex, LPSTR pValueName,
1425     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1426     DWORD cbData, LPDWORD pcbData );
1427 DWORD WINAPI EnumPrinterDataW( HANDLE hPrinter, DWORD dwIndex, LPWSTR pValueName,
1428     DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData,
1429     DWORD cbData, LPDWORD pcbData );
1430 #define EnumPrinterData WINELIB_NAME_AW(EnumPrinterData)
1431
1432 BOOL WINAPI AddMonitorA(LPSTR pName, DWORD Level, LPBYTE pMonitors);
1433 BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
1434 #define AddMonitor WINELIB_NAME_AW(AddMonitor)
1435
1436 BOOL WINAPI DeleteMonitorA(LPSTR pName, LPSTR pEnvironment,
1437                            LPSTR pMonitorName);
1438 BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment,
1439                            LPWSTR pMonitorName);
1440 #define DeleteMonitor WINELIB_NAME_AW(DeleteMonitor)
1441
1442 BOOL WINAPI EnumPortsA(LPSTR pName, DWORD Level, LPBYTE pPorts,
1443                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1444 BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts,
1445                        DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
1446 #define EnumPorts WINELIB_NAME_AW(EnumPorts)
1447
1448 BOOL WINAPI AddPortA(LPSTR pName, HWND hWnd, LPSTR pMonitorName);
1449 BOOL WINAPI AddPortW(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
1450 #define AddPort WINELIB_NAME_AW(AddPort)
1451
1452 BOOL WINAPI AddPortExA(LPSTR, DWORD, LPBYTE, LPSTR);
1453 BOOL WINAPI AddPortExW(LPWSTR, DWORD, LPBYTE, LPWSTR);
1454 #define AddPortEx WINELIB_NAME_AW(AddPortEx)
1455
1456 BOOL WINAPI ConfigurePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1457 BOOL WINAPI ConfigurePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1458 #define ConfigurePort WINELIB_NAME_AW(ConfigurePort)
1459
1460 BOOL WINAPI DeletePortA(LPSTR pName, HWND hWnd, LPSTR pPortName);
1461 BOOL WINAPI DeletePortW(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
1462 #define DeletePort WINELIB_NAME_AW(DeletePort)
1463
1464 BOOL WINAPI SetPortA(LPSTR pName, LPSTR pPortName, DWORD dwLevel,
1465                      LPBYTE pPortInfo);
1466 BOOL WINAPI SetPortW(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
1467                      LPBYTE pPortInfo);
1468 #define SetPort WINELIB_NAME_AW(SetPort)
1469
1470 BOOL WINAPI AddPrinterConnectionA(LPSTR pName);
1471 BOOL WINAPI AddPrinterConnectionW(LPWSTR pName);
1472 #define AddPrinterConnection WINELIB_NAME_AW(AddPrinterConnection)
1473
1474 BOOL WINAPI DeletePrinterConnectionA(LPSTR pName);
1475 BOOL WINAPI DeletePrinterConnectionW(LPWSTR pName);
1476 #define DeletePrinterConnection WINELIB_NAME_AW(DeletePrinterConnection)
1477
1478 HANDLE WINAPI ConnectToPrinterDlg(HWND hwnd, DWORD Flags);
1479
1480 BOOL WINAPI AddPrintProvidorA(LPSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1481 BOOL WINAPI AddPrintProvidorW(LPWSTR pName, DWORD Level, LPBYTE pProvidorInfo);
1482 #define AddPrintProvidor WINELIB_NAME_AW(AddPrintProvidor)
1483
1484 BOOL WINAPI DeletePrintProvidorA(LPSTR pName, LPSTR pEnvironment,
1485                                  LPSTR pPrintProvidorName);
1486 BOOL WINAPI DeletePrintProvidorW(LPWSTR pName, LPWSTR pEnvironment,
1487                                  LPWSTR pPrintProvidorName);
1488 #define DeletePrintProvidor WINELIB_NAME_AW(DeletePrintProvidor)
1489
1490 DWORD WINAPI EnumPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName,
1491                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1492                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1493 DWORD WINAPI EnumPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName,
1494                                 LPBYTE pEnumValues, DWORD cbEnumValues,
1495                                 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
1496 #define EnumPrinterDataEx WINELIB_NAME_AW(EnumPrinterDataEx)
1497
1498 LONG WINAPI ExtDeviceMode( HWND hWnd, HANDLE hInst, LPDEVMODEA pDevModeOutput,
1499     LPSTR pDeviceName, LPSTR pPort, LPDEVMODEA pDevModeInput, LPSTR pProfile,
1500     DWORD fMode);
1501
1502 LPSTR WINAPI StartDocDlgA(HANDLE hPrinter, DOCINFOA *doc);
1503 LPWSTR WINAPI StartDocDlgW(HANDLE hPrinter, DOCINFOW *doc);
1504 #define StartDocDlg WINELIB_NAME_AW(StartDocDlg)
1505
1506 BOOL WINAPI XcvDataW(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
1507     DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
1508     PDWORD pcbOutputNeeded, PDWORD pdwStatus);
1509
1510 #ifdef __cplusplus
1511 } /* extern "C" */
1512 #endif
1513
1514 #endif  /* __WINE_WINSPOOL_H */