1 /**
2  * @file winspool.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _WINSPOOL_H
25 #define _WINSPOOL_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #define DI_CHANNEL 1
34 #define DI_CHANNEL_WRITE 2
35 #define DI_READ_SPOOL_JOB 3
36 #define	DI_MEMORYMAP_WRITE	0x1
37 #define	FORM_USER	0x0
38 #define	FORM_BUILTIN	0x1
39 #define	FORM_PRINTER	0x2
40 
41 #define	JOB_CONTROL_PAUSE		1
42 #define	JOB_CONTROL_RESUME		2
43 #define	JOB_CONTROL_CANCEL		3
44 #define	JOB_CONTROL_RESTART		4
45 #define	JOB_CONTROL_DELETE		5
46 #define	JOB_CONTROL_SENT_TO_PRINTER	6
47 #define	JOB_CONTROL_LAST_PAGE_EJECTED	7
48 #define	JOB_STATUS_PAUSED		0x1
49 #define	JOB_STATUS_ERROR		0x2
50 #define	JOB_STATUS_DELETING		0x4
51 #define	JOB_STATUS_SPOOLING		0x8
52 #define	JOB_STATUS_PRINTING		0x10
53 #define	JOB_STATUS_OFFLINE		0x20
54 #define	JOB_STATUS_PAPEROUT		0x40
55 #define	JOB_STATUS_PRINTED		0x80
56 #define	JOB_STATUS_DELETED		0x100
57 #define	JOB_STATUS_BLOCKED_DEVQ		0x200
58 #define	JOB_STATUS_USER_INTERVENTION	0x400
59 #define	JOB_STATUS_RESTART		0x800
60 #define	JOB_STATUS_COMPLETE		0x1000
61 #define	JOB_POSITION_UNSPECIFIED	0
62 #define	JOB_NOTIFY_TYPE	1
63 #define	JOB_NOTIFY_FIELD_PRINTER_NAME	0
64 #define	JOB_NOTIFY_FIELD_MACHINE_NAME	1
65 #define	JOB_NOTIFY_FIELD_PORT_NAME	2
66 #define	JOB_NOTIFY_FIELD_USER_NAME	3
67 #define	JOB_NOTIFY_FIELD_NOTIFY_NAME	4
68 #define	JOB_NOTIFY_FIELD_DATATYPE	5
69 #define	JOB_NOTIFY_FIELD_PRINT_PROCESSOR	6
70 #define	JOB_NOTIFY_FIELD_PARAMETERS	7
71 #define	JOB_NOTIFY_FIELD_DRIVER_NAME	8
72 #define	JOB_NOTIFY_FIELD_DEVMODE	9
73 #define	JOB_NOTIFY_FIELD_STATUS	10
74 #define	JOB_NOTIFY_FIELD_STATUS_STRING	11
75 #define	JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
76 #define	JOB_NOTIFY_FIELD_DOCUMENT	13
77 #define	JOB_NOTIFY_FIELD_PRIORITY	14
78 #define	JOB_NOTIFY_FIELD_POSITION	15
79 #define	JOB_NOTIFY_FIELD_SUBMITTED	16
80 #define	JOB_NOTIFY_FIELD_START_TIME	17
81 #define	JOB_NOTIFY_FIELD_UNTIL_TIME	18
82 #define	JOB_NOTIFY_FIELD_TIME	19
83 #define	JOB_NOTIFY_FIELD_TOTAL_PAGES	20
84 #define	JOB_NOTIFY_FIELD_PAGES_PRINTED	21
85 #define	JOB_NOTIFY_FIELD_TOTAL_BYTES	22
86 #define	JOB_NOTIFY_FIELD_BYTES_PRINTED	23
87 #define	JOB_ACCESS_ADMINISTER	16
88 #define	JOB_ALL_ACCESS	(STANDARD_RIGHTS_REQUIRED|JOB_ACCESS_ADMINISTER)
89 #define	JOB_READ	(STANDARD_RIGHTS_READ|	JOB_ACCESS_ADMINISTER)
90 #define	JOB_WRITE	(STANDARD_RIGHTS_WRITE|JOB_ACCESS_ADMINISTER)
91 #define	JOB_EXECUTE	(STANDARD_RIGHTS_EXECUTE|JOB_ACCESS_ADMINISTER)
92 #define	PRINTER_NOTIFY_OPTIONS_REFRESH	1
93 #define	PRINTER_ACCESS_ADMINISTER	4
94 #define	PRINTER_ACCESS_USE	8
95 #define	PRINTER_ERROR_INFORMATION	0x80000000
96 #define	PRINTER_ERROR_WARNING	0x40000000
97 #define	PRINTER_ERROR_SEVERE	0x20000000
98 #define	PRINTER_ERROR_OUTOFPAPER	1
99 #define	PRINTER_ERROR_JAM	2
100 #define	PRINTER_ERROR_OUTOFTONER	4
101 #define	PRINTER_CONTROL_PAUSE	1
102 #define	PRINTER_CONTROL_RESUME	2
103 #define	PRINTER_CONTROL_PURGE	3
104 #define	PRINTER_CONTROL_SET_STATUS	4
105 #define	PRINTER_STATUS_PAUSED	1
106 #define	PRINTER_STATUS_ERROR	2
107 #define	PRINTER_STATUS_PENDING_DELETION	4
108 #define	PRINTER_STATUS_PAPER_JAM	8
109 #define	PRINTER_STATUS_PAPER_OUT	0x10
110 #define	PRINTER_STATUS_MANUAL_FEED	0x20
111 #define	PRINTER_STATUS_PAPER_PROBLEM	0x40
112 #define	PRINTER_STATUS_OFFLINE	0x80
113 #define	PRINTER_STATUS_IO_ACTIVE	0x100
114 #define	PRINTER_STATUS_BUSY	0x200
115 #define	PRINTER_STATUS_PRINTING	0x400
116 #define	PRINTER_STATUS_OUTPUT_BIN_FULL	0x800
117 #define	PRINTER_STATUS_NOT_AVAILABLE	0x1000
118 #define	PRINTER_STATUS_WAITING	0x2000
119 #define	PRINTER_STATUS_PROCESSING	0x4000
120 #define	PRINTER_STATUS_INITIALIZING	0x8000
121 #define	PRINTER_STATUS_WARMING_UP	0x10000
122 #define	PRINTER_STATUS_TONER_LOW	0x20000
123 #define	PRINTER_STATUS_NO_TONER	0x40000
124 #define	PRINTER_STATUS_PAGE_PUNT	0x80000
125 #define	PRINTER_STATUS_USER_INTERVENTION	0x100000
126 #define	PRINTER_STATUS_OUT_OF_MEMORY	0x200000
127 #define	PRINTER_STATUS_DOOR_OPEN	0x400000
128 #define	PRINTER_STATUS_SERVER_UNKNOWN	0x800000
129 #define	PRINTER_STATUS_POWER_SAVE	0x1000000
130 #define	PRINTER_ATTRIBUTE_QUEUED	1
131 #define	PRINTER_ATTRIBUTE_DIRECT	2
132 #define	PRINTER_ATTRIBUTE_DEFAULT	4
133 #define	PRINTER_ATTRIBUTE_SHARED	8
134 #define	PRINTER_ATTRIBUTE_NETWORK	0x10
135 #define	PRINTER_ATTRIBUTE_HIDDEN	0x20
136 #define	PRINTER_ATTRIBUTE_LOCAL	0x40
137 #define	PRINTER_ATTRIBUTE_ENABLE_DEVQ	0x80
138 #define	PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS	0x100
139 #define	PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST	0x200
140 #define	PRINTER_ATTRIBUTE_WORK_OFFLINE	0x400
141 #define	PRINTER_ATTRIBUTE_ENABLE_BIDI	0x800
142 #define	PRINTER_ATTRIBUTE_RAW_ONLY	0x1000
143 #define	PRINTER_ATTRIBUTE_PUBLISHED	0x2000
144 #define	PRINTER_ENUM_DEFAULT	1
145 #define	PRINTER_ENUM_LOCAL	2
146 #define	PRINTER_ENUM_CONNECTIONS	4
147 #define	PRINTER_ENUM_FAVORITE	4
148 #define	PRINTER_ENUM_NAME	8
149 #define	PRINTER_ENUM_REMOTE	16
150 #define	PRINTER_ENUM_SHARED	32
151 #define	PRINTER_ENUM_NETWORK	0x40
152 #define	PRINTER_ENUM_EXPAND	0x4000
153 #define	PRINTER_ENUM_CONTAINER	0x8000
154 #define	PRINTER_ENUM_ICONMASK	0xff0000
155 #define	PRINTER_ENUM_ICON1	0x10000
156 #define	PRINTER_ENUM_ICON2	0x20000
157 #define	PRINTER_ENUM_ICON3	0x40000
158 #define	PRINTER_ENUM_ICON4	0x80000
159 #define	PRINTER_ENUM_ICON5	0x100000
160 #define	PRINTER_ENUM_ICON6	0x200000
161 #define	PRINTER_ENUM_ICON7	0x400000
162 #define	PRINTER_ENUM_ICON8	0x800000
163 #define PRINTER_NOTIFY_TYPE	0
164 #define PRINTER_NOTIFY_FIELD_SERVER_NAME	0
165 #define PRINTER_NOTIFY_FIELD_PRINTER_NAME	1
166 #define PRINTER_NOTIFY_FIELD_SHARE_NAME	2
167 #define PRINTER_NOTIFY_FIELD_PORT_NAME	3
168 #define PRINTER_NOTIFY_FIELD_DRIVER_NAME	4
169 #define PRINTER_NOTIFY_FIELD_COMMENT	5
170 #define PRINTER_NOTIFY_FIELD_LOCATION	6
171 #define PRINTER_NOTIFY_FIELD_DEVMODE	7
172 #define PRINTER_NOTIFY_FIELD_SEPFILE	8
173 #define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR	9
174 #define PRINTER_NOTIFY_FIELD_PARAMETERS	10
175 #define PRINTER_NOTIFY_FIELD_DATATYPE	11
176 #define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
177 #define PRINTER_NOTIFY_FIELD_ATTRIBUTES	13
178 #define PRINTER_NOTIFY_FIELD_PRIORITY	14
179 #define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY	15
180 #define PRINTER_NOTIFY_FIELD_START_TIME	16
181 #define PRINTER_NOTIFY_FIELD_UNTIL_TIME	17
182 #define PRINTER_NOTIFY_FIELD_STATUS	18
183 #define PRINTER_NOTIFY_FIELD_STATUS_STRING	19
184 #define PRINTER_NOTIFY_FIELD_CJOBS	20
185 #define PRINTER_NOTIFY_FIELD_AVERAGE_PPM	21
186 #define PRINTER_NOTIFY_FIELD_TOTAL_PAGES	22
187 #define PRINTER_NOTIFY_FIELD_PAGES_PRINTED	23
188 #define PRINTER_NOTIFY_FIELD_TOTAL_BYTES	24
189 #define PRINTER_NOTIFY_FIELD_BYTES_PRINTED	25
190 #define PRINTER_CHANGE_ADD_PRINTER	1
191 #define PRINTER_CHANGE_SET_PRINTER	2
192 #define PRINTER_CHANGE_DELETE_PRINTER	4
193 #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER	8
194 #define PRINTER_CHANGE_PRINTER	0xFF
195 #define PRINTER_CHANGE_ADD_JOB	0x100
196 #define PRINTER_CHANGE_SET_JOB	0x200
197 #define PRINTER_CHANGE_DELETE_JOB	0x400
198 #define PRINTER_CHANGE_WRITE_JOB	0x800
199 #define PRINTER_CHANGE_JOB	0xFF00
200 #define PRINTER_CHANGE_ADD_FORM	0x10000
201 #define PRINTER_CHANGE_SET_FORM	0x20000
202 #define PRINTER_CHANGE_DELETE_FORM	0x40000
203 #define PRINTER_CHANGE_FORM	0x70000
204 #define PRINTER_CHANGE_ADD_PORT	0x100000
205 #define PRINTER_CHANGE_CONFIGURE_PORT	0x200000
206 #define PRINTER_CHANGE_DELETE_PORT	0x400000
207 #define PRINTER_CHANGE_PORT	0x700000
208 #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR	0x1000000
209 #define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR	0x4000000
210 #define PRINTER_CHANGE_PRINT_PROCESSOR	0x7000000
211 #define PRINTER_CHANGE_ADD_PRINTER_DRIVER	0x10000000
212 #define PRINTER_CHANGE_SET_PRINTER_DRIVER	0x20000000
213 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER	0x40000000
214 #define PRINTER_CHANGE_PRINTER_DRIVER	0x70000000
215 #define PRINTER_CHANGE_TIMEOUT	0x80000000
216 #define PRINTER_CHANGE_ALL	0x7777FFFF
217 #define PRINTER_NOTIFY_INFO_DISCARDED	1
218 #define PRINTER_ALL_ACCESS	(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE)
219 #define PRINTER_READ	(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE)
220 #define PRINTER_WRITE	(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE)
221 #define PRINTER_EXECUTE	(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE)
222 #define NO_PRIORITY	0
223 #define MAX_PRIORITY	99
224 #define MIN_PRIORITY	1
225 #define DEF_PRIORITY	1
226 #define PORT_TYPE_WRITE	1
227 #define PORT_TYPE_READ	2
228 #define PORT_TYPE_REDIRECTED	4
229 #define PORT_TYPE_NET_ATTACHED	8
230 #define SERVER_ACCESS_ADMINISTER	1
231 #define SERVER_ACCESS_ENUMERATE	2
232 #define SERVER_ALL_ACCESS	(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE)
233 #define SERVER_READ	(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE)
234 #define SERVER_WRITE	(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE)
235 #define SERVER_EXECUTE	(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE)
236 #define PORT_STATUS_TYPE_ERROR	1
237 #define PORT_STATUS_TYPE_WARNING	2
238 #define PORT_STATUS_TYPE_INFO	3
239 #define PORT_STATUS_OFFLINE	1
240 #define PORT_STATUS_PAPER_JAM	2
241 #define PORT_STATUS_PAPER_OUT	3
242 #define PORT_STATUS_OUTPUT_BIN_FULL	4
243 #define PORT_STATUS_PAPER_PROBLEM	5
244 #define PORT_STATUS_NO_TONER	6
245 #define PORT_STATUS_DOOR_OPEN	7
246 #define PORT_STATUS_USER_INTERVENTION	8
247 #define PORT_STATUS_OUT_OF_MEMORY	9
248 #define PORT_STATUS_TONER_LOW	10
249 #define PORT_STATUS_WARMING_UP	11
250 #define PORT_STATUS_POWER_SAVE	12
251 
252 #ifndef RC_INVOKED
253 typedef struct _ADDJOB_INFO_1A {
254 	LPSTR Path;
255 	DWORD JobId;
256 } ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A;
257 typedef struct _ADDJOB_INFO_1W {
258 	LPWSTR Path;
259 	DWORD JobId;
260 } ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W;
261 typedef struct _DATATYPES_INFO_1A{LPSTR pName;} DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A;
262 typedef struct _DATATYPES_INFO_1W{LPWSTR pName;} DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W;
263 typedef struct _JOB_INFO_1A {
264 	DWORD JobId;
265 	LPSTR pPrinterName;
266 	LPSTR pMachineName;
267 	LPSTR pUserName;
268 	LPSTR pDocument;
269 	LPSTR pDatatype;
270 	LPSTR pStatus;
271 	DWORD Status;
272 	DWORD Priority;
273 	DWORD Position;
274 	DWORD TotalPages;
275 	DWORD PagesPrinted;
276 	SYSTEMTIME Submitted;
277 } JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A;
278 typedef struct _JOB_INFO_1W {
279 	DWORD JobId;
280 	LPWSTR pPrinterName;
281 	LPWSTR pMachineName;
282 	LPWSTR pUserName;
283 	LPWSTR pDocument;
284 	LPWSTR pDatatype;
285 	LPWSTR pStatus;
286 	DWORD Status;
287 	DWORD Priority;
288 	DWORD Position;
289 	DWORD TotalPages;
290 	DWORD PagesPrinted;
291 	SYSTEMTIME Submitted;
292 } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W;
293 typedef struct _JOB_INFO_2A {
294 	DWORD JobId;
295 	LPSTR pPrinterName;
296 	LPSTR pMachineName;
297 	LPSTR pUserName;
298 	LPSTR pDocument;
299 	LPSTR pNotifyName;
300 	LPSTR pDatatype;
301 	LPSTR pPrintProcessor;
302 	LPSTR pParameters;
303 	LPSTR pDriverName;
304 	LPDEVMODEA pDevMode;
305 	LPSTR pStatus;
306 	PSECURITY_DESCRIPTOR pSecurityDescriptor;
307 	DWORD Status;
308 	DWORD Priority;
309 	DWORD Position;
310 	DWORD StartTime;
311 	DWORD UntilTime;
312 	DWORD TotalPages;
313 	DWORD Size;
314 	SYSTEMTIME Submitted;
315 	DWORD Time;
316 	DWORD PagesPrinted;
317 } JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A;
318 typedef struct _JOB_INFO_2W {
319 	DWORD JobId;
320 	LPWSTR pPrinterName;
321 	LPWSTR pMachineName;
322 	LPWSTR pUserName;
323 	LPWSTR pDocument;
324 	LPWSTR pNotifyName;
325 	LPWSTR pDatatype;
326 	LPWSTR pPrintProcessor;
327 	LPWSTR pParameters;
328 	LPWSTR pDriverName;
329 	LPDEVMODEW pDevMode;
330 	LPWSTR pStatus;
331 	PSECURITY_DESCRIPTOR pSecurityDescriptor;
332 	DWORD Status;
333 	DWORD Priority;
334 	DWORD Position;
335 	DWORD StartTime;
336 	DWORD UntilTime;
337 	DWORD TotalPages;
338 	DWORD Size;
339 	SYSTEMTIME Submitted;
340 	DWORD Time;
341 	DWORD PagesPrinted;
342 } JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
343 typedef struct _JOB_INFO_3 {
344 	DWORD JobId;
345 	DWORD NextJobId;
346 	DWORD Reserved;
347 } JOB_INFO_3,*PJOB_INFO_3,*LPJOB_INFO_3;
348 typedef struct _DOC_INFO_1A {
349 	LPSTR pDocName;
350 	LPSTR pOutputFile;
351 	LPSTR pDatatype;
352 } DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A;
353 typedef struct _DOC_INFO_1W {
354 	LPWSTR pDocName;
355 	LPWSTR pOutputFile;
356 	LPWSTR pDatatype;
357 } DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W;
358 typedef struct _DOC_INFO_2A {
359 	LPSTR pDocName;
360 	LPSTR pOutputFile;
361 	LPSTR pDatatype;
362 	DWORD dwMode;
363 	DWORD JobId;
364 } DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A;
365 typedef struct _DOC_INFO_2W {
366 	LPWSTR pDocName;
367 	LPWSTR pOutputFile;
368 	LPWSTR pDatatype;
369 	DWORD dwMode;
370 	DWORD JobId;
371 } DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W;
372 typedef	struct	_DRIVER_INFO_1A	{LPSTR	pName;} DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A;
373 typedef	struct	_DRIVER_INFO_1W	{LPWSTR	pName;} DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
374 typedef	struct	_DRIVER_INFO_2A	{
375 	DWORD cVersion;
376 	LPSTR pName;
377 	LPSTR pEnvironment;
378 	LPSTR pDriverPath;
379 	LPSTR pDataFile;
380 	LPSTR pConfigFile;
381 } DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A;
382 typedef	struct	_DRIVER_INFO_2W	{
383 	DWORD cVersion;
384 	LPWSTR pName;
385 	LPWSTR pEnvironment;
386 	LPWSTR pDriverPath;
387 	LPWSTR pDataFile;
388 	LPWSTR pConfigFile;
389 }	DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
390 typedef	struct	_DRIVER_INFO_3A	{
391 	DWORD cVersion;
392 	LPSTR pName;
393 	LPSTR pEnvironment;
394 	LPSTR pDriverPath;
395 	LPSTR pDataFile;
396 	LPSTR pConfigFile;
397 	LPSTR pHelpFile;
398 	LPSTR pDependentFiles;
399 	LPSTR pMonitorName;
400 	LPSTR pDefaultDataType;
401 } DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A;
402 typedef	struct	_DRIVER_INFO_3W	{
403 	DWORD cVersion;
404 	LPWSTR pName;
405 	LPWSTR pEnvironment;
406 	LPWSTR pDriverPath;
407 	LPWSTR pDataFile;
408 	LPWSTR pConfigFile;
409 	LPWSTR pHelpFile;
410 	LPWSTR pDependentFiles;
411 	LPWSTR pMonitorName;
412 	LPWSTR pDefaultDataType;
413 } DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
414 
415 typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
416 typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
417 typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
418 typedef struct _PORT_INFO_1W {LPWSTR pName;} PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W;
419 typedef struct _MONITOR_INFO_2A{
420 	LPSTR pName;
421 	LPSTR pEnvironment;
422 	LPSTR pDLLName;
423 } MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A;
424 typedef struct _MONITOR_INFO_2W{
425 	LPWSTR pName;
426 	LPWSTR pEnvironment;
427 	LPWSTR pDLLName;
428 } MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W;
429 typedef struct _PORT_INFO_2A {
430 	LPSTR pPortName;
431 	LPSTR pMonitorName;
432 	LPSTR pDescription;
433 	DWORD fPortType;
434 	DWORD Reserved;
435 } PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A;
436 typedef struct _PORT_INFO_2W {
437 	LPWSTR pPortName;
438 	LPWSTR pMonitorName;
439 	LPWSTR pDescription;
440 	DWORD fPortType;
441 	DWORD Reserved;
442 } PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W;
443 typedef struct _PORT_INFO_3A {
444 	DWORD dwStatus;
445 	LPSTR pszStatus;
446 	DWORD dwSeverity;
447 } PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A;
448 typedef struct _PORT_INFO_3W {
449 	DWORD dwStatus;
450 	LPWSTR pszStatus;
451 	DWORD dwSeverity;
452 } PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W;
453 
454 typedef	struct _PRINTER_INFO_1A {
455 	DWORD Flags;
456 	LPSTR pDescription;
457 	LPSTR pName;
458 	LPSTR pComment;
459 } PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A;
460 typedef	struct _PRINTER_INFO_1W	{
461 	DWORD Flags;
462 	LPWSTR pDescription;
463 	LPWSTR pName;
464 	LPWSTR pComment;
465 } PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W;
466 typedef	struct _PRINTER_INFO_2A {
467 	LPSTR pServerName;
468 	LPSTR pPrinterName;
469 	LPSTR pShareName;
470 	LPSTR pPortName;
471 	LPSTR pDriverName;
472 	LPSTR pComment;
473 	LPSTR pLocation;
474 	LPDEVMODEA pDevMode;
475 	LPSTR pSepFile;
476 	LPSTR pPrintProcessor;
477 	LPSTR pDatatype;
478 	LPSTR pParameters;
479 	PSECURITY_DESCRIPTOR pSecurityDescriptor;
480 	DWORD Attributes;
481 	DWORD Priority;
482 	DWORD DefaultPriority;
483 	DWORD StartTime;
484 	DWORD UntilTime;
485 	DWORD Status;
486 	DWORD cJobs;
487 	DWORD AveragePPM;
488 } PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A;
489 typedef	struct _PRINTER_INFO_2W {
490 	LPWSTR pServerName;
491 	LPWSTR pPrinterName;
492 	LPWSTR pShareName;
493 	LPWSTR pPortName;
494 	LPWSTR pDriverName;
495 	LPWSTR pComment;
496 	LPWSTR pLocation;
497 	LPDEVMODEW pDevMode;
498 	LPWSTR pSepFile;
499 	LPWSTR pPrintProcessor;
500 	LPWSTR pDatatype;
501 	LPWSTR pParameters;
502 	PSECURITY_DESCRIPTOR pSecurityDescriptor;
503 	DWORD Attributes;
504 	DWORD Priority;
505 	DWORD DefaultPriority;
506 	DWORD StartTime;
507 	DWORD UntilTime;
508 	DWORD Status;
509 	DWORD cJobs;
510 	DWORD AveragePPM;
511 } PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W;
512 typedef	struct _PRINTER_INFO_3	{
513 	PSECURITY_DESCRIPTOR pSecurityDescriptor;
514 } PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3;
515 typedef	struct _PRINTER_INFO_4A {
516 	LPSTR pPrinterName;
517 	LPSTR pServerName;
518 	DWORD Attributes;
519 } PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A;
520 typedef	struct _PRINTER_INFO_4W	{
521 	LPWSTR pPrinterName;
522 	LPWSTR pServerName;
523 	DWORD Attributes;
524 } PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W;
525 typedef	struct _PRINTER_INFO_5A	{
526 	LPSTR pPrinterName;
527 	LPSTR pPortName;
528 	DWORD Attributes;
529 	DWORD DeviceNotSelectedTimeout;
530 	DWORD TransmissionRetryTimeout;
531 } PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A;
532 typedef	struct _PRINTER_INFO_5W	{
533 	LPWSTR pPrinterName;
534 	LPWSTR pPortName;
535 	DWORD Attributes;
536 	DWORD DeviceNotSelectedTimeout;
537 	DWORD TransmissionRetryTimeout;
538 } PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W;
539 typedef struct _PRINTER_INFO_6 {
540 	DWORD	dwStatus;
541 } PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6;
542 
543 typedef	struct _PRINTPROCESSOR_INFO_1A {LPSTR pName;} PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A;
544 typedef	struct _PRINTPROCESSOR_INFO_1W {LPWSTR pName;} PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W;
545 typedef	struct	_PRINTER_NOTIFY_INFO_DATA {
546 	WORD Type;
547 	WORD Field;
548 	DWORD Reserved;
549 	DWORD Id;
550 	union {
551 		DWORD adwData[2];
552 		struct {
553 			DWORD cbBuf;
554 			PVOID pBuf;
555 		} Data;
556 	} NotifyData;
557 } PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA;
558 typedef	struct	_PRINTER_NOTIFY_INFO {
559 	DWORD Version;
560 	DWORD Flags;
561 	DWORD Count;
562 	PRINTER_NOTIFY_INFO_DATA aData[1];
563 } PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO;
564 typedef	struct _FORM_INFO_1A {
565 	DWORD	Flags;
566 	LPSTR	pName;
567 	SIZEL	Size;
568 	RECTL	ImageableArea;
569 } FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A;
570 typedef	struct _FORM_INFO_1W {
571 	DWORD	Flags;
572 	LPWSTR	pName;
573 	SIZEL	Size;
574 	RECTL	ImageableArea;
575 } FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W;
576 typedef	struct _PRINTER_DEFAULTSA {
577 	LPSTR pDatatype;
578 	LPDEVMODE pDevMode;
579 	ACCESS_MASK	DesiredAccess;
580 } PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
581 typedef	struct _PRINTER_DEFAULTSW {
582 	LPWSTR pDatatype;
583 	LPDEVMODE pDevMode;
584 	ACCESS_MASK DesiredAccess;
585 } PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
586 
587 typedef	struct _PROVIDOR_INFO_1A {
588 	LPSTR pName;
589 	LPSTR pEnvironment;
590 	LPSTR pDLLName;
591 } PROVIDOR_INFO_1A,*PPROVIDOR_INFO_1A,*LPPROVIDOR_INFO_1A;
592 typedef	struct _PROVIDOR_INFO_1W {
593 	LPWSTR pName;
594 	LPWSTR pEnvironment;
595 	LPWSTR pDLLName;
596 } PROVIDOR_INFO_1W,*PPROVIDOR_INFO_1W,*LPPROVIDOR_INFO_1W;
597 typedef	struct _PROVIDOR_INFO_2A {
598 	LPSTR pOrder;
599 } PROVIDOR_INFO_2A,*PPROVIDOR_INFO_2A,*LPROVIDOR_INFO_2A;
600 typedef	struct _PROVIDOR_INFO_2W {
601 	LPWSTR pOrder;
602 } PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPROVIDOR_INFO_2W;
603 
604 BOOL WINAPI AbortPrinter(HANDLE);
605 BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE);
606 BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE);
607 BOOL WINAPI AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
608 BOOL WINAPI AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
609 BOOL WINAPI AddMonitorA(LPSTR,DWORD,PBYTE);
610 BOOL WINAPI AddMonitorW(LPWSTR,DWORD,PBYTE);
611 BOOL WINAPI AddPortA(LPSTR,HWND,LPSTR);
612 BOOL WINAPI AddPortW(LPWSTR,HWND,LPWSTR);
613 HANDLE WINAPI AddPrinterA(LPSTR,DWORD,PBYTE);
614 HANDLE WINAPI AddPrinterW(LPWSTR,DWORD,PBYTE);
615 BOOL WINAPI AddPrinterConnectionA(LPSTR);
616 BOOL WINAPI AddPrinterConnectionW(LPWSTR);
617 BOOL WINAPI AddPrinterDriverA(LPSTR,DWORD,PBYTE);
618 BOOL WINAPI AddPrinterDriverW(LPWSTR,DWORD,PBYTE);
619 BOOL WINAPI AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR);
620 BOOL WINAPI AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
621 BOOL WINAPI AddPrintProvidorA(LPSTR,DWORD,PBYTE);
622 BOOL WINAPI AddPrintProvidorW(LPWSTR,DWORD,PBYTE);
623 LONG WINAPI AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA);
624 LONG WINAPI AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW);
625 BOOL WINAPI ClosePrinter(HANDLE);
626 BOOL WINAPI ConfigurePortA(LPSTR,HWND,LPSTR);
627 BOOL WINAPI ConfigurePortW(LPWSTR,HWND,LPWSTR);
628 HANDLE WINAPI ConnectToPrinterDlg(HWND,DWORD);
629 BOOL WINAPI DeleteFormA(HANDLE,LPSTR);
630 BOOL WINAPI DeleteFormW(HANDLE,LPWSTR);
631 BOOL WINAPI DeleteMonitorA(LPSTR,LPSTR,LPSTR);
632 BOOL WINAPI DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR);
633 BOOL WINAPI DeletePortA(LPSTR,HWND,LPSTR);
634 BOOL WINAPI DeletePortW(LPWSTR,HWND,LPWSTR);
635 BOOL WINAPI DeletePrinter(HANDLE);
636 BOOL WINAPI DeletePrinterConnectionA(LPSTR);
637 BOOL WINAPI DeletePrinterConnectionW(LPWSTR);
638 DWORD WINAPI DeletePrinterDataA(HANDLE,LPSTR);
639 DWORD WINAPI DeletePrinterDataW(HANDLE,LPWSTR);
640 BOOL WINAPI DeletePrinterDriverA(LPSTR,LPSTR,LPSTR);
641 BOOL WINAPI DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR);
642 BOOL WINAPI DeletePrintProcessorA(LPSTR,LPSTR,LPSTR);
643 BOOL WINAPI DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR);
644 BOOL WINAPI DeletePrintProvidorA(LPSTR,LPSTR,LPSTR);
645 BOOL WINAPI DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR);
646 LONG WINAPI DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD);
647 LONG WINAPI DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEW,PDEVMODEW,DWORD);
648 BOOL WINAPI EndDocPrinter(HANDLE);
649 BOOL WINAPI EndPagePrinter(HANDLE);
650 BOOL WINAPI EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
651 BOOL WINAPI EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
652 BOOL WINAPI EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
653 BOOL WINAPI EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
654 BOOL WINAPI EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
655 BOOL WINAPI EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
656 BOOL WINAPI EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
657 BOOL WINAPI EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
658 DWORD WINAPI EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
659 DWORD WINAPI EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
660 BOOL WINAPI EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
661 BOOL WINAPI EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
662 BOOL WINAPI EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
663 BOOL WINAPI EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
664 BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
665 BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
666 BOOL WINAPI EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
667 BOOL WINAPI EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
668 BOOL WINAPI FindClosePrinterChangeNotification(HANDLE);
669 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID);
670 HANDLE WINAPI FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*);
671 BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
672 
673 BOOL WINAPI GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
674 BOOL WINAPI GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
675 BOOL WINAPI GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
676 BOOL WINAPI GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
677 BOOL WINAPI GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
678 BOOL WINAPI GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
679 DWORD WINAPI GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD);
680 DWORD WINAPI GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD);
681 DWORD WINAPI GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
682 DWORD WINAPI GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
683 DWORD WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
684 DWORD WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
685 DWORD WINAPI GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
686 DWORD WINAPI GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
687 BOOL WINAPI OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA);
688 BOOL WINAPI OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
689 DWORD WINAPI PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD);
690 DWORD WINAPI PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD);
691 BOOL WINAPI PrinterProperties(HWND,HANDLE);
692 BOOL WINAPI ReadPrinter(HANDLE,PVOID,DWORD,PDWORD);
693 BOOL WINAPI ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA);
694 BOOL WINAPI ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW);
695 BOOL WINAPI ScheduleJob(HANDLE,DWORD);
696 BOOL WINAPI SetFormA(HANDLE,LPSTR,DWORD,PBYTE);
697 BOOL WINAPI SetFormW(HANDLE,LPWSTR,DWORD,PBYTE);
698 BOOL WINAPI SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD);
699 BOOL WINAPI SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD);
700 BOOL WINAPI SetPrinterA(HANDLE,DWORD,PBYTE,DWORD);
701 BOOL WINAPI SetPrinterW(HANDLE,DWORD,PBYTE,DWORD);
702 BOOL WINAPI SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD);
703 BOOL WINAPI SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD);
704 DWORD WINAPI StartDocPrinterA(HANDLE,DWORD,PBYTE);
705 DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE);
706 BOOL WINAPI StartPagePrinter(HANDLE);
707 DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD);
708 BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD);
709 
710 typedef __AW(JOB_INFO_1) JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
711 typedef __AW(JOB_INFO_2) JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
712 typedef __AW(ADDJOB_INFO_1) ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
713 typedef __AW(DATATYPES_INFO_1) DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
714 typedef __AW(MONITOR_INFO_1) MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
715 typedef __AW(MONITOR_INFO_2) MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
716 typedef __AW(DOC_INFO_1) DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
717 typedef __AW(DOC_INFO_2) DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
718 typedef __AW(PORT_INFO_1) PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
719 typedef __AW(PORT_INFO_2) PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
720 typedef __AW(PORT_INFO_3) PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
721 typedef __AW(DRIVER_INFO_1) DRIVER_INFO_1,*PDRIVER_INFO_1,*LPDRIVER_INFO_1;
722 typedef __AW(DRIVER_INFO_2) DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
723 typedef __AW(DRIVER_INFO_3) DRIVER_INFO_3,*PDRIVER_INFO_3,*LPDRIVER_INFO_3;
724 
725 typedef __AW(PRINTER_INFO_1) PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
726 typedef __AW(PRINTER_INFO_2) PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
727 typedef __AW(PRINTER_INFO_4) PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
728 typedef __AW(PRINTER_INFO_5) PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
729 
730 typedef __AW(PRINTPROCESSOR_INFO_1) PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
731 typedef __AW(FORM_INFO_1) FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
732 typedef __AW(PRINTER_DEFAULTS) PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
733 typedef __AW(PROVIDOR_INFO_1) PROVIDOR_INFO_1,*PPROVIDOR_INFO_1,*LPROVIDOR_INFO_1;
734 typedef __AW(PROVIDOR_INFO_2) PROVIDOR_INFO_2,*PPROVIDOR_INFO_2,*LPROVIDOR_INFO_2;
735 #define AddForm __AW(AddForm)
736 #define AddJob __AW(AddJob)
737 #define AddMonitor __AW(AddMonitor)
738 #define AddPort __AW(AddPort)
739 #define AddPrinter __AW(AddPrinter)
740 #define AddPrinterConnection __AW(AddPrinterConnection)
741 #define AddPrinterDriver __AW(AddPrinterDriver)
742 #define AddPrintProcessor __AW(AddPrintProcessor)
743 #define AddPrintProvidor __AW(AddPrintProvidor)
744 #define AdvancedDocumentProperties __AW(AdvancedDocumentProperties)
745 #define ConfigurePort __AW(ConfigurePort)
746 #define DeleteForm __AW(DeleteForm)
747 #define DeleteMonitor __AW(DeleteMonitor)
748 #define DeletePort __AW(DeletePort)
749 #define DeletePrinterConnection __AW(DeletePrinterConnection)
750 #define DeletePrinterData __AW(DeletePrinterData)
751 #define DeletePrinterDriver __AW(DeletePrinterDriver)
752 #define DeletePrintProcessor __AW(DeletePrinterProcessor)
753 #define DeletePrintProvidor __AW(DeletePrinterProvidor)
754 #define DocumentProperties __AW(DocumentProperties)
755 #define EnumForms __AW(EnumForms)
756 #define EnumJobs __AW(EnumJobs)
757 #define EnumMonitors __AW(EnumMonitors)
758 #define EnumPorts __AW(EnumPorts)
759 #define EnumPrinterData __AW(EnumPrinterData)
760 #define EnumPrinterDrivers __AW(EnumPrinterDrivers)
761 #define EnumPrinters __AW(EnumPrinters)
762 #define EnumPrintProcessorDatatypes __AW(EnumPrintProcessorDatatypes)
763 #define EnumPrintProcessors __AW(EnumPrintProcessors)
764 #define GetDefaultPrinter __AW(GetDefaultPrinter)
765 #define	GetForm	__AW(GetForm)
766 #define GetJob __AW(GetJob)
767 #define GetPrinter __AW(GetPrinter)
768 #define GetPrinterData __AW(GetPrinterData)
769 #define GetPrinterDriver __AW(GetPrinterDriver)
770 #define GetPrinterDriverDirectory __AW(GetPrinterDriverDirectory)
771 #define GetPrintProcessorDirectory __AW(GetPrintProcessorDirectory)
772 #define OpenPrinter __AW(OpenPrinter)
773 #define PrinterMessageBox __AW(PrinterMessageBox)
774 #define ResetPrinter __AW(ResetPrinter)
775 #define SetForm __AW(SetForm)
776 #define SetJob __AW(SetJob)
777 #define SetPrinter __AW(SetPrinter)
778 #define SetPrinterData __AW(SetPrinterData)
779 #define StartDocPrinter __AW(StartDocPrinter)
780 #endif /* RC_INVOKED */
781 
782 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
783 #define DRIVER_KERNELMODE	0x00000001
784 #define DRIVER_USERMODE		0x00000002
785 #define	DSPRINT_PUBLISH		0x00000001
786 #define	DSPRINT_UPDATE		0x00000002
787 #define	DSPRINT_UNPUBLISH	0x00000004
788 #define	DSPRINT_REPUBLISH	0x00000008
789 #define	DSPRINT_PENDING		0x80000000
790 
791 #ifndef RC_INVOKED
792 typedef	struct	_DRIVER_INFO_4A {
793 	DWORD cVersion;
794 	LPSTR pName;
795 	LPSTR pEnvironment;
796 	LPSTR pDriverPath;
797 	LPSTR pDataFile;
798 	LPSTR pConfigFile;
799 	LPSTR pHelpFile;
800 	LPSTR pDependentFiles;
801 	LPSTR pMonitorName;
802 	LPSTR pDefaultDataType;
803 	LPSTR pszzPreviousNames;
804 } DRIVER_INFO_4A,*PDRIVER_INFO_4A,*LPDRIVER_INFO_4A;
805 typedef	struct	_DRIVER_INFO_4W {
806 	DWORD cVersion;
807 	LPWSTR pName;
808 	LPWSTR pEnvironment;
809 	LPWSTR pDriverPath;
810 	LPWSTR pDataFile;
811 	LPWSTR pConfigFile;
812 	LPWSTR pHelpFile;
813 	LPWSTR pDependentFiles;
814 	LPWSTR pMonitorName;
815 	LPWSTR pDefaultDataType;
816 	LPWSTR pszzPreviousNames;
817 } DRIVER_INFO_4W,*PDRIVER_INFO_4W,*LPDRIVER_INFO_4W;
818 typedef	struct	_DRIVER_INFO_5A {
819 	DWORD cVersion;
820 	LPSTR pName;
821 	LPSTR pEnvironment;
822 	LPSTR pDriverPath;
823 	LPSTR pDataFile;
824 	LPSTR pConfigFile;
825 	DWORD dwDriverAttributes;
826 	DWORD dwConfigVersion;
827 	DWORD dwDriverVersion;
828 } DRIVER_INFO_5A,*PDRIVER_INFO_5A,*LPDRIVER_INFO_5A;
829 typedef	struct	_DRIVER_INFO_5W {
830 	DWORD cVersion;
831 	LPWSTR pName;
832 	LPWSTR pEnvironment;
833 	LPWSTR pDriverPath;
834 	LPWSTR pDataFile;
835 	LPWSTR pConfigFile;
836 	DWORD dwDriverAttributes;
837 	DWORD dwConfigVersion;
838 	DWORD dwDriverVersion;
839 } DRIVER_INFO_5W,*PDRIVER_INFO_5W,*LPDRIVER_INFO_5W;
840 typedef	struct	_DRIVER_INFO_6A {
841 	DWORD cVersion;
842 	LPSTR pName;
843 	LPSTR pEnvironment;
844 	LPSTR pDriverPath;
845 	LPSTR pDataFile;
846 	LPSTR pConfigFile;
847 	LPSTR pHelpFile;
848 	LPSTR pDependentFiles;
849 	LPSTR pMonitorName;
850 	LPSTR pDefaultDataType;
851 	LPSTR pszzPreviousNames;
852 	FILETIME ftDriverDate;
853 	DWORDLONG dwlDriverVersion;
854 	LPSTR pszMfgName;
855 	LPSTR pszOEMUrl;
856 	LPSTR pszHardwareID;
857 	LPSTR pszProvider;
858 } DRIVER_INFO_6A,*PDRIVER_INFO_6A,*LPDRIVER_INFO_6A;
859 typedef	struct	_DRIVER_INFO_6W {
860 	DWORD cVersion;
861 	LPWSTR pName;
862 	LPWSTR pEnvironment;
863 	LPWSTR pDriverPath;
864 	LPWSTR pDataFile;
865 	LPWSTR pConfigFile;
866 	LPWSTR pHelpFile;
867 	LPWSTR pDependentFiles;
868 	LPWSTR pMonitorName;
869 	LPWSTR pDefaultDataType;
870 	LPWSTR pszzPreviousNames;
871 	FILETIME ftDriverDate;
872 	DWORDLONG dwlDriverVersion;
873 	LPWSTR pszMfgName;
874 	LPWSTR pszOEMUrl;
875 	LPWSTR pszHardwareID;
876 	LPWSTR pszProvider;
877 } DRIVER_INFO_6W,*PDRIVER_INFO_6W,*LPDRIVER_INFO_6W;
878 typedef struct _PRINTER_ENUM_VALUESA {
879 	LPSTR pValueName;
880 	DWORD cbValueName;
881 	DWORD dwType;
882 	LPBYTE pData;
883 	DWORD cbData;
884 } PRINTER_ENUM_VALUESA,*PPRINTER_ENUM_VALUESA,*LPRINTER_ENUM_VALUESA;
885 typedef struct _PRINTER_ENUM_VALUESW {
886 	LPWSTR pValueName;
887 	DWORD cbValueName;
888 	DWORD dwType;
889 	LPBYTE pData;
890 	DWORD cbData;
891 } PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPRINTER_ENUM_VALUESW;
892 typedef struct _PRINTER_INFO_7A {
893 	LPWSTR pszObjectGUID;
894 	DWORD dwAction;
895 } PRINTER_INFO_7A,*PPRINTER_INFO_7A,*LPPRINTER_INFO_7A;
896 typedef struct _PRINTER_INFO_7W {
897 	LPWSTR pszObjectGUID;
898 	DWORD dwAction;
899 } PRINTER_INFO_7W,*PPRINTER_INFO_7W,*LPPRINTER_INFO_7W;
900 typedef struct _PRINTER_INFO_8 {
901 	LPDEVMODE pDevMode;
902 } PRINTER_INFO_8,*PPRINTER_INFO_8,*LPPRINTER_INFO_8;
903 typedef struct _PRINTER_INFO_9 {
904 	LPDEVMODE pDevMode;
905 } PRINTER_INFO_9,*PPRINTER_INFO_9,*LPPRINTER_INFO_9;
906 typedef	struct _PRINTPROCESSOR_CAPS_1 {
907 	DWORD dwLevel;
908 	DWORD dwNupOptions;
909 	DWORD dwPageOrderFlags;
910 	DWORD dwNumberOfCopies;
911 } PRINTPROCESSOR_CAPS_1,*PPRINTPROCESSOR_CAPS_1,*LPPRINTPROCESSOR_CAPS_1;
912 BOOL WINAPI GetDefaultPrinterA(LPSTR,LPDWORD);
913 BOOL WINAPI GetDefaultPrinterW(LPWSTR,LPDWORD);
914 typedef __AW(DRIVER_INFO_4) DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
915 typedef __AW(DRIVER_INFO_5) DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
916 typedef __AW(DRIVER_INFO_6) DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
917 typedef __AW(PRINTER_ENUM_VALUES) PRINTER_ENUM_VALUES,*PPRINTER_ENUM_VALUES,*LPRINTER_ENUM_VALUES;
918 typedef __AW(PRINTER_INFO_7) PRINTER_INFO_7,*PPRINTER_INFO_7,*LPPRINTER_INFO_7;
919 #endif /* ! RC_INVOKED */
920 
921 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN2K) */
922 
923 #ifdef __cplusplus
924 }
925 #endif
926 
927 #endif
928