1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_winspool.d)
8  */
9 /// Automatically imported and edited from the druntime module
10 /// core.sys.windows.winspool for the auto-generated win32 package.
11 module win32.winspool;
12 //version (Windows):
13 @system:
14 
15 version (ANSI) {} else version = Unicode;
16 version (Win32_UseLib) pragma(lib, "winspool");
17 
18 import win32.w32api, win32.windef, win32.wingdi;
19 import win32.winbase; // for SYSTEMTIME
20 
21 // FIXME: clean up Windows version support
22 
23 enum DI_CHANNEL=1;
24 enum DI_CHANNEL_WRITE=2;
25 enum DI_READ_SPOOL_JOB=3;
26 
27 enum FORM_BUILTIN=1;
28 
29 enum JOB_CONTROL_PAUSE=1;
30 enum JOB_CONTROL_RESUME=2;
31 enum JOB_CONTROL_CANCEL=3;
32 enum JOB_CONTROL_RESTART=4;
33 enum JOB_CONTROL_DELETE=5;
34 enum JOB_STATUS_PAUSED=1;
35 enum JOB_STATUS_ERROR=2;
36 enum JOB_STATUS_DELETING=4;
37 enum JOB_STATUS_SPOOLING=8;
38 enum JOB_STATUS_PRINTING=16;
39 enum JOB_STATUS_OFFLINE=32;
40 enum JOB_STATUS_PAPEROUT=0x40;
41 enum JOB_STATUS_PRINTED=0x80;
42 enum JOB_STATUS_DELETED=0x100;
43 enum JOB_STATUS_BLOCKED_DEVQ=0x200;
44 enum JOB_STATUS_USER_INTERVENTION=0x400;
45 
46 enum JOB_POSITION_UNSPECIFIED=0;
47 
48 enum JOB_NOTIFY_TYPE=1;
49 
50 enum JOB_NOTIFY_FIELD_PRINTER_NAME=0;
51 enum JOB_NOTIFY_FIELD_MACHINE_NAME=1;
52 enum JOB_NOTIFY_FIELD_PORT_NAME=2;
53 enum JOB_NOTIFY_FIELD_USER_NAME=3;
54 enum JOB_NOTIFY_FIELD_NOTIFY_NAME=4;
55 enum JOB_NOTIFY_FIELD_DATATYPE=5;
56 enum JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6;
57 enum JOB_NOTIFY_FIELD_PARAMETERS=7;
58 enum JOB_NOTIFY_FIELD_DRIVER_NAME=8;
59 enum JOB_NOTIFY_FIELD_DEVMODE=9;
60 enum JOB_NOTIFY_FIELD_STATUS=10;
61 enum JOB_NOTIFY_FIELD_STATUS_STRING=11;
62 enum JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12;
63 enum JOB_NOTIFY_FIELD_DOCUMENT=13;
64 enum JOB_NOTIFY_FIELD_PRIORITY=14;
65 enum JOB_NOTIFY_FIELD_POSITION=15;
66 enum JOB_NOTIFY_FIELD_SUBMITTED=16;
67 enum JOB_NOTIFY_FIELD_START_TIME=17;
68 enum JOB_NOTIFY_FIELD_UNTIL_TIME=18;
69 enum JOB_NOTIFY_FIELD_TIME=19;
70 enum JOB_NOTIFY_FIELD_TOTAL_PAGES=20;
71 enum JOB_NOTIFY_FIELD_PAGES_PRINTED=21;
72 enum JOB_NOTIFY_FIELD_TOTAL_BYTES=22;
73 enum JOB_NOTIFY_FIELD_BYTES_PRINTED=23;
74 
75 enum JOB_ACCESS_ADMINISTER = 16;
76 enum JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER;
77 enum JOB_READ       = STANDARD_RIGHTS_READ     | JOB_ACCESS_ADMINISTER;
78 enum JOB_WRITE      = STANDARD_RIGHTS_WRITE    | JOB_ACCESS_ADMINISTER;
79 enum JOB_EXECUTE    = STANDARD_RIGHTS_EXECUTE  | JOB_ACCESS_ADMINISTER;
80 
81 enum PRINTER_NOTIFY_OPTIONS_REFRESH=1;
82 enum PRINTER_ACCESS_ADMINISTER=4;
83 enum PRINTER_ACCESS_USE=8;
84 
85 enum PRINTER_ERROR_INFORMATION=0x80000000;
86 enum PRINTER_ERROR_WARNING=0x40000000;
87 enum PRINTER_ERROR_SEVERE=0x20000000;
88 enum PRINTER_ERROR_OUTOFPAPER=1;
89 enum PRINTER_ERROR_JAM=2;
90 enum PRINTER_ERROR_OUTOFTONER=4;
91 
92 enum PRINTER_CONTROL_PAUSE=1;
93 enum PRINTER_CONTROL_RESUME=2;
94 enum PRINTER_CONTROL_PURGE=3;
95 enum PRINTER_CONTROL_SET_STATUS=4;
96 
97 enum PRINTER_STATUS_PAUSED = 1;
98 enum PRINTER_STATUS_ERROR = 2;
99 enum PRINTER_STATUS_PENDING_DELETION = 4;
100 enum PRINTER_STATUS_PAPER_JAM = 8;
101 enum PRINTER_STATUS_PAPER_OUT = 0x10;
102 enum PRINTER_STATUS_MANUAL_FEED = 0x20;
103 enum PRINTER_STATUS_PAPER_PROBLEM = 0x40;
104 enum PRINTER_STATUS_OFFLINE = 0x80;
105 enum PRINTER_STATUS_IO_ACTIVE = 0x100;
106 enum PRINTER_STATUS_BUSY = 0x200;
107 enum PRINTER_STATUS_PRINTING = 0x400;
108 enum PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800;
109 enum PRINTER_STATUS_NOT_AVAILABLE = 0x1000;
110 enum PRINTER_STATUS_WAITING = 0x2000;
111 enum PRINTER_STATUS_PROCESSING = 0x4000;
112 enum PRINTER_STATUS_INITIALIZING = 0x8000;
113 enum PRINTER_STATUS_WARMING_UP = 0x10000;
114 enum PRINTER_STATUS_TONER_LOW = 0x20000;
115 enum PRINTER_STATUS_NO_TONER = 0x40000;
116 enum PRINTER_STATUS_PAGE_PUNT = 0x80000;
117 enum PRINTER_STATUS_USER_INTERVENTION = 0x100000;
118 enum PRINTER_STATUS_OUT_OF_MEMORY = 0x200000;
119 enum PRINTER_STATUS_DOOR_OPEN = 0x400000;
120 enum PRINTER_STATUS_SERVER_UNKNOWN = 0x800000;
121 enum PRINTER_STATUS_POWER_SAVE = 0x1000000;
122 
123 enum PRINTER_ATTRIBUTE_QUEUED=1;
124 enum PRINTER_ATTRIBUTE_DIRECT=2;
125 enum PRINTER_ATTRIBUTE_DEFAULT=4;
126 enum PRINTER_ATTRIBUTE_SHARED=8;
127 enum PRINTER_ATTRIBUTE_NETWORK=0x10;
128 enum PRINTER_ATTRIBUTE_HIDDEN=0x20;
129 enum PRINTER_ATTRIBUTE_LOCAL=0x40;
130 enum PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80;
131 enum PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100;
132 enum PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200;
133 enum PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400;
134 enum PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800;
135 enum PRINTER_ATTRIBUTE_RAW_ONLY=0x1000;
136 enum PRINTER_ATTRIBUTE_PUBLISHED=0x2000;
137 
138 enum PRINTER_ENUM_DEFAULT=1;
139 enum PRINTER_ENUM_LOCAL=2;
140 enum PRINTER_ENUM_CONNECTIONS=4;
141 enum PRINTER_ENUM_FAVORITE=4;
142 enum PRINTER_ENUM_NAME=8;
143 enum PRINTER_ENUM_REMOTE=16;
144 enum PRINTER_ENUM_SHARED=32;
145 enum PRINTER_ENUM_NETWORK=0x40;
146 enum PRINTER_ENUM_EXPAND=0x4000;
147 enum PRINTER_ENUM_CONTAINER=0x8000;
148 enum PRINTER_ENUM_ICONMASK=0xff0000;
149 enum PRINTER_ENUM_ICON1=0x10000;
150 enum PRINTER_ENUM_ICON2=0x20000;
151 enum PRINTER_ENUM_ICON3=0x40000;
152 enum PRINTER_ENUM_ICON4=0x80000;
153 enum PRINTER_ENUM_ICON5=0x100000;
154 enum PRINTER_ENUM_ICON6=0x200000;
155 enum PRINTER_ENUM_ICON7=0x400000;
156 enum PRINTER_ENUM_ICON8=0x800000;
157 
158 enum PRINTER_NOTIFY_TYPE=0;
159 
160 enum PRINTER_NOTIFY_FIELD_SERVER_NAME=0;
161 enum PRINTER_NOTIFY_FIELD_PRINTER_NAME=1;
162 enum PRINTER_NOTIFY_FIELD_SHARE_NAME=2;
163 enum PRINTER_NOTIFY_FIELD_PORT_NAME=3;
164 enum PRINTER_NOTIFY_FIELD_DRIVER_NAME=4;
165 enum PRINTER_NOTIFY_FIELD_COMMENT=5;
166 enum PRINTER_NOTIFY_FIELD_LOCATION=6;
167 enum PRINTER_NOTIFY_FIELD_DEVMODE=7;
168 enum PRINTER_NOTIFY_FIELD_SEPFILE=8;
169 enum PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9;
170 enum PRINTER_NOTIFY_FIELD_PARAMETERS=10;
171 enum PRINTER_NOTIFY_FIELD_DATATYPE=11;
172 enum PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12;
173 enum PRINTER_NOTIFY_FIELD_ATTRIBUTES=13;
174 enum PRINTER_NOTIFY_FIELD_PRIORITY=14;
175 enum PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15;
176 enum PRINTER_NOTIFY_FIELD_START_TIME=16;
177 enum PRINTER_NOTIFY_FIELD_UNTIL_TIME=17;
178 enum PRINTER_NOTIFY_FIELD_STATUS=18;
179 enum PRINTER_NOTIFY_FIELD_STATUS_STRING=19;
180 enum PRINTER_NOTIFY_FIELD_CJOBS=20;
181 enum PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21;
182 enum PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22;
183 enum PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23;
184 enum PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24;
185 enum PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25;
186 
187 enum PRINTER_CHANGE_ADD_PRINTER=1;
188 enum PRINTER_CHANGE_SET_PRINTER=2;
189 enum PRINTER_CHANGE_DELETE_PRINTER=4;
190 enum PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8;
191 enum PRINTER_CHANGE_PRINTER=0xFF;
192 enum PRINTER_CHANGE_ADD_JOB=0x100;
193 enum PRINTER_CHANGE_SET_JOB=0x200;
194 enum PRINTER_CHANGE_DELETE_JOB=0x400;
195 enum PRINTER_CHANGE_WRITE_JOB=0x800;
196 enum PRINTER_CHANGE_JOB=0xFF00;
197 enum PRINTER_CHANGE_ADD_FORM=0x10000;
198 enum PRINTER_CHANGE_SET_FORM=0x20000;
199 enum PRINTER_CHANGE_DELETE_FORM=0x40000;
200 enum PRINTER_CHANGE_FORM=0x70000;
201 enum PRINTER_CHANGE_ADD_PORT=0x100000;
202 enum PRINTER_CHANGE_CONFIGURE_PORT=0x200000;
203 enum PRINTER_CHANGE_DELETE_PORT=0x400000;
204 enum PRINTER_CHANGE_PORT=0x700000;
205 enum PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000;
206 enum PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000;
207 enum PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000;
208 enum PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000;
209 enum PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000;
210 enum PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000;
211 enum PRINTER_CHANGE_PRINTER_DRIVER=0x70000000;
212 enum PRINTER_CHANGE_TIMEOUT=0x80000000;
213 enum PRINTER_CHANGE_ALL=0x7777FFFF;
214 
215 enum PRINTER_NOTIFY_INFO_DISCARDED=1;
216 enum PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE);
217 enum PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE);
218 enum PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE);
219 enum PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE);
220 enum NO_PRIORITY=0;
221 enum MAX_PRIORITY=99;
222 enum MIN_PRIORITY=1;
223 enum DEF_PRIORITY=1;
224 enum PORT_TYPE_WRITE=1;
225 enum PORT_TYPE_READ=2;
226 enum PORT_TYPE_REDIRECTED=4;
227 enum PORT_TYPE_NET_ATTACHED=8;
228 enum SERVER_ACCESS_ADMINISTER=1;
229 enum SERVER_ACCESS_ENUMERATE=2;
230 
231 enum SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE);
232 enum SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE);
233 enum SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE);
234 enum SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE);
235 
236 enum PORT_STATUS_TYPE_ERROR=1;
237 enum PORT_STATUS_TYPE_WARNING=2;
238 enum PORT_STATUS_TYPE_INFO=3;
239 
240 enum PORT_STATUS_OFFLINE=1;
241 enum PORT_STATUS_PAPER_JAM=2;
242 enum PORT_STATUS_PAPER_OUT=3;
243 enum PORT_STATUS_OUTPUT_BIN_FULL=4;
244 enum PORT_STATUS_PAPER_PROBLEM=5;
245 enum PORT_STATUS_NO_TONER=6;
246 enum PORT_STATUS_DOOR_OPEN=7;
247 enum PORT_STATUS_USER_INTERVENTION=8;
248 enum PORT_STATUS_OUT_OF_MEMORY=9;
249 enum PORT_STATUS_TONER_LOW=10;
250 enum PORT_STATUS_WARMING_UP=11;
251 enum PORT_STATUS_POWER_SAVE=12;
252 
253 struct ADDJOB_INFO_1A {
254     LPSTR Path;
255     DWORD JobId;
256 }
257 alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A;
258 
259 struct ADDJOB_INFO_1W {
260     LPWSTR Path;
261     DWORD JobId;
262 }
263 alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W;
264 
265 struct DATATYPES_INFO_1A {
266     LPSTR pName;
267 }
268 alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A;
269 
270 struct DATATYPES_INFO_1W {
271     LPWSTR pName;
272 }
273 alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W;
274 
275 struct JOB_INFO_1A {
276     DWORD JobId;
277     LPSTR pPrinterName;
278     LPSTR pMachineName;
279     LPSTR pUserName;
280     LPSTR pDocument;
281     LPSTR pDatatype;
282     LPSTR pStatus;
283     DWORD Status;
284     DWORD Priority;
285     DWORD Position;
286     DWORD TotalPages;
287     DWORD PagesPrinted;
288     SYSTEMTIME Submitted;
289 }
290 alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A;
291 
292 struct JOB_INFO_1W {
293     DWORD JobId;
294     LPWSTR pPrinterName;
295     LPWSTR pMachineName;
296     LPWSTR pUserName;
297     LPWSTR pDocument;
298     LPWSTR pDatatype;
299     LPWSTR pStatus;
300     DWORD Status;
301     DWORD Priority;
302     DWORD Position;
303     DWORD TotalPages;
304     DWORD PagesPrinted;
305     SYSTEMTIME Submitted;
306 }
307 alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W;
308 
309 struct JOB_INFO_2A {
310     DWORD JobId;
311     LPSTR pPrinterName;
312     LPSTR pMachineName;
313     LPSTR pUserName;
314     LPSTR pDocument;
315     LPSTR pNotifyName;
316     LPSTR pDatatype;
317     LPSTR pPrintProcessor;
318     LPSTR pParameters;
319     LPSTR pDriverName;
320     LPDEVMODEA pDevMode;
321     LPSTR pStatus;
322     PSECURITY_DESCRIPTOR pSecurityDescriptor;
323     DWORD Status;
324     DWORD Priority;
325     DWORD Position;
326     DWORD StartTime;
327     DWORD UntilTime;
328     DWORD TotalPages;
329     DWORD Size;
330     SYSTEMTIME Submitted;
331     DWORD Time;
332     DWORD PagesPrinted;
333 }
334 alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A;
335 
336 struct JOB_INFO_2W {
337     DWORD JobId;
338     LPWSTR pPrinterName;
339     LPWSTR pMachineName;
340     LPWSTR pUserName;
341     LPWSTR pDocument;
342     LPWSTR pNotifyName;
343     LPWSTR pDatatype;
344     LPWSTR pPrintProcessor;
345     LPWSTR pParameters;
346     LPWSTR pDriverName;
347     LPDEVMODEW pDevMode;
348     LPWSTR pStatus;
349     PSECURITY_DESCRIPTOR pSecurityDescriptor;
350     DWORD Status;
351     DWORD Priority;
352     DWORD Position;
353     DWORD StartTime;
354     DWORD UntilTime;
355     DWORD TotalPages;
356     DWORD Size;
357     SYSTEMTIME Submitted;
358     DWORD Time;
359     DWORD PagesPrinted;
360 }
361 alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W;
362 
363 struct DOC_INFO_1A {
364     LPSTR pDocName;
365     LPSTR pOutputFile;
366     LPSTR pDatatype;
367 }
368 alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A;
369 
370 struct DOC_INFO_1W {
371     LPWSTR pDocName;
372     LPWSTR pOutputFile;
373     LPWSTR pDatatype;
374 }
375 alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W;
376 
377 struct DOC_INFO_2A {
378     LPSTR pDocName;
379     LPSTR pOutputFile;
380     LPSTR pDatatype;
381     DWORD dwMode;
382     DWORD JobId;
383 }
384 alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A;
385 
386 struct DOC_INFO_2W {
387     LPWSTR pDocName;
388     LPWSTR pOutputFile;
389     LPWSTR pDatatype;
390     DWORD  dwMode;
391     DWORD  JobId;
392 }
393 alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W;
394 
395 struct DRIVER_INFO_1A {
396     LPSTR pName;
397 }
398 alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A;
399 
400 struct DRIVER_INFO_1W {
401     LPWSTR pName;
402 }
403 alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W;
404 
405 struct DRIVER_INFO_2A {
406     DWORD cVersion;
407     LPSTR pName;
408     LPSTR pEnvironment;
409     LPSTR pDriverPath;
410     LPSTR pDataFile;
411     LPSTR pConfigFile;
412 }
413 alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A;
414 
415 struct DRIVER_INFO_2W {
416     DWORD  cVersion;
417     LPWSTR pName;
418     LPWSTR pEnvironment;
419     LPWSTR pDriverPath;
420     LPWSTR pDataFile;
421     LPWSTR pConfigFile;
422 }
423 alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W;
424 
425 struct DRIVER_INFO_3A {
426     DWORD cVersion;
427     LPSTR pName;
428     LPSTR pEnvironment;
429     LPSTR pDriverPath;
430     LPSTR pDataFile;
431     LPSTR pConfigFile;
432     LPSTR pHelpFile;
433     LPSTR pDependentFiles;
434     LPSTR pMonitorName;
435     LPSTR pDefaultDataType;
436 }
437 alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A;
438 
439 struct DRIVER_INFO_3W {
440     DWORD  cVersion;
441     LPWSTR pName;
442     LPWSTR pEnvironment;
443     LPWSTR pDriverPath;
444     LPWSTR pDataFile;
445     LPWSTR pConfigFile;
446     LPWSTR pHelpFile;
447     LPWSTR pDependentFiles;
448     LPWSTR pMonitorName;
449     LPWSTR pDefaultDataType;
450 }
451 alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W;
452 
453 struct MONITOR_INFO_1A {
454     LPSTR pName;
455 }
456 alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A;
457 
458 struct MONITOR_INFO_1W {
459     LPWSTR pName;
460 }
461 alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W;
462 
463 struct PORT_INFO_1A {
464     LPSTR pName;
465 }
466 alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A;
467 
468 struct PORT_INFO_1W {
469     LPWSTR pName;
470 }
471 alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W;
472 
473 struct MONITOR_INFO_2A {
474     LPSTR pName;
475     LPSTR pEnvironment;
476     LPSTR pDLLName;
477 }
478 alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A;
479 
480 struct MONITOR_INFO_2W {
481     LPWSTR pName;
482     LPWSTR pEnvironment;
483     LPWSTR pDLLName;
484 }
485 alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W;
486 
487 struct PORT_INFO_2A {
488     LPSTR pPortName;
489     LPSTR pMonitorName;
490     LPSTR pDescription;
491     DWORD fPortType;
492     DWORD Reserved;
493 }
494 alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A;
495 
496 struct PORT_INFO_2W {
497     LPWSTR pPortName;
498     LPWSTR pMonitorName;
499     LPWSTR pDescription;
500     DWORD fPortType;
501     DWORD Reserved;
502 }
503 alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W;
504 
505 struct PORT_INFO_3A {
506     DWORD dwStatus;
507     LPSTR pszStatus;
508     DWORD dwSeverity;
509 }
510 alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A;
511 
512 struct PORT_INFO_3W {
513     DWORD dwStatus;
514     LPWSTR pszStatus;
515     DWORD dwSeverity;
516 }
517 alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W;
518 
519 struct PRINTER_INFO_1A {
520     DWORD Flags;
521     LPSTR pDescription;
522     LPSTR pName;
523     LPSTR pComment;
524 }
525 alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A;
526 
527 struct PRINTER_INFO_1W {
528     DWORD  Flags;
529     LPWSTR pDescription;
530     LPWSTR pName;
531     LPWSTR pComment;
532 }
533 alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W;
534 
535 struct PRINTER_INFO_2A {
536     LPSTR pServerName;
537     LPSTR pPrinterName;
538     LPSTR pShareName;
539     LPSTR pPortName;
540     LPSTR pDriverName;
541     LPSTR pComment;
542     LPSTR pLocation;
543     LPDEVMODEA pDevMode;
544     LPSTR pSepFile;
545     LPSTR pPrintProcessor;
546     LPSTR pDatatype;
547     LPSTR pParameters;
548     PSECURITY_DESCRIPTOR pSecurityDescriptor;
549     DWORD Attributes;
550     DWORD Priority;
551     DWORD DefaultPriority;
552     DWORD StartTime;
553     DWORD UntilTime;
554     DWORD Status;
555     DWORD cJobs;
556     DWORD AveragePPM;
557 }
558 alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A;
559 
560 struct PRINTER_INFO_2W {
561     LPWSTR pServerName;
562     LPWSTR pPrinterName;
563     LPWSTR pShareName;
564     LPWSTR pPortName;
565     LPWSTR pDriverName;
566     LPWSTR pComment;
567     LPWSTR pLocation;
568     LPDEVMODEW pDevMode;
569     LPWSTR pSepFile;
570     LPWSTR pPrintProcessor;
571     LPWSTR pDatatype;
572     LPWSTR pParameters;
573     PSECURITY_DESCRIPTOR pSecurityDescriptor;
574     DWORD Attributes;
575     DWORD Priority;
576     DWORD DefaultPriority;
577     DWORD StartTime;
578     DWORD UntilTime;
579     DWORD Status;
580     DWORD cJobs;
581     DWORD AveragePPM;
582 }
583 alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W;
584 
585 struct PRINTER_INFO_3 {
586     PSECURITY_DESCRIPTOR pSecurityDescriptor;
587 }
588 alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3;
589 
590 struct PRINTER_INFO_4A {
591     LPSTR pPrinterName;
592     LPSTR pServerName;
593     DWORD Attributes;
594 }
595 alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A;
596 
597 struct PRINTER_INFO_4W {
598     LPWSTR pPrinterName;
599     LPWSTR pServerName;
600     DWORD Attributes;
601 }
602 alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W;
603 
604 struct PRINTER_INFO_5A {
605     LPSTR pPrinterName;
606     LPSTR pPortName;
607     DWORD Attributes;
608     DWORD DeviceNotSelectedTimeout;
609     DWORD TransmissionRetryTimeout;
610 }
611 alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A;
612 
613 struct PRINTER_INFO_5W {
614     LPWSTR pPrinterName;
615     LPWSTR pPortName;
616     DWORD Attributes;
617     DWORD DeviceNotSelectedTimeout;
618     DWORD TransmissionRetryTimeout;
619 }
620 alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W;
621 
622 struct PRINTER_INFO_6 {
623     DWORD dwStatus;
624 }
625 alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6;
626 
627 struct PRINTPROCESSOR_INFO_1A {
628     LPSTR pName;
629 }
630 alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A;
631 
632 struct PRINTPROCESSOR_INFO_1W {
633     LPWSTR pName;
634 }
635 alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W;
636 
637 struct PRINTER_NOTIFY_INFO_DATA {
638     WORD  Type;
639     WORD  Field;
640     DWORD Reserved;
641     DWORD Id;
642     union _NotifyData {
643         DWORD[2] adwData;
644         struct _Data {
645             DWORD cbBuf;
646             PVOID pBuf;
647         }
648         _Data Data;
649     }
650     _NotifyData NotifyData;
651 }
652 alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA;
653 
654 struct PRINTER_NOTIFY_INFO {
655     DWORD Version;
656     DWORD Flags;
657     DWORD Count;
658     PRINTER_NOTIFY_INFO_DATA[1] aData;
659 }
660 alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO;
661 
662 struct FORM_INFO_1A {
663     DWORD Flags;
664     LPSTR pName;
665     SIZEL Size;
666     RECTL ImageableArea;
667 }
668 alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A;
669 
670 struct FORM_INFO_1W {
671     DWORD  Flags;
672     LPWSTR pName;
673     SIZEL  Size;
674     RECTL  ImageableArea;
675 }
676 alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W;
677 
678 struct PRINTER_DEFAULTSA {
679     LPSTR       pDatatype;
680     LPDEVMODE   pDevMode;
681     ACCESS_MASK DesiredAccess;
682 }
683 alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA;
684 
685 struct PRINTER_DEFAULTSW {
686     LPWSTR pDatatype;
687     LPDEVMODE pDevMode;
688     ACCESS_MASK DesiredAccess;
689 }
690 alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW;
691 
692 extern (Windows):
693 BOOL AbortPrinter(HANDLE);
694 BOOL AddFormA(HANDLE, DWORD, PBYTE);
695 BOOL AddFormW(HANDLE, DWORD, PBYTE);
696 BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
697 BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
698 BOOL AddMonitorA(LPSTR, DWORD, PBYTE);
699 BOOL AddMonitorW(LPWSTR, DWORD, PBYTE);
700 BOOL AddPortA(LPSTR, HWND, LPSTR);
701 BOOL AddPortW(LPWSTR, HWND, LPWSTR);
702 HANDLE AddPrinterA(LPSTR, DWORD, PBYTE);
703 HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE);
704 BOOL AddPrinterConnectionA(LPSTR);
705 BOOL AddPrinterConnectionW(LPWSTR);
706 BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE);
707 BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE);
708 BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR);
709 BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR);
710 BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE);
711 BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE);
712 LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA);
713 LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW);
714 BOOL ClosePrinter(HANDLE);
715 BOOL ConfigurePortA(LPSTR, HWND, LPSTR);
716 BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR);
717 HANDLE ConnectToPrinterDlg(HWND, DWORD);
718 BOOL DeleteFormA(HANDLE, LPSTR);
719 BOOL DeleteFormW(HANDLE, LPWSTR);
720 BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR);
721 BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR);
722 BOOL DeletePortA(LPSTR, HWND, LPSTR);
723 BOOL DeletePortW(LPWSTR, HWND, LPWSTR);
724 BOOL DeletePrinter(HANDLE);
725 BOOL DeletePrinterConnectionA(LPSTR);
726 BOOL DeletePrinterConnectionW(LPWSTR);
727 DWORD DeletePrinterDataA(HANDLE, LPSTR);
728 DWORD DeletePrinterDataW(HANDLE, LPWSTR);
729 BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR);
730 BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR);
731 BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR);
732 BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR);
733 BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR);
734 BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR);
735 LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD);
736 LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD);
737 BOOL EndDocPrinter(HANDLE);
738 BOOL EndPagePrinter(HANDLE);
739 BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
740 BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
741 BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
742 BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
743 BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
744 BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
745 BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
746 BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
747 DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD);
748 DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD);
749 BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
750 BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
751 BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
752 BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
753 BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
754 BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
755 BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
756 BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
757 BOOL FindClosePrinterChangeNotification(HANDLE);
758 HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID);
759 HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*);
760 BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
761 
762 static if (_WIN32_WINNT >= 0x500) {
763 BOOL GetDefaultPrinterA(LPSTR, LPDWORD);
764 BOOL GetDefaultPrinterW(LPWSTR, LPDWORD);
765 }
766 
767 BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
768 BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
769 BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD);
770 BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD);
771 BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
772 BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
773 DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD);
774 DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD);
775 DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
776 DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
777 DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
778 DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
779 DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
780 DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
781 BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA);
782 BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW);
783 DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD);
784 DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD);
785 BOOL PrinterProperties(HWND, HANDLE);
786 BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD);
787 BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA);
788 BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW);
789 BOOL ScheduleJob(HANDLE, DWORD);
790 BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE);
791 BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE);
792 BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD);
793 BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD);
794 BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD);
795 BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD);
796 BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD);
797 BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD);
798 DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE);
799 DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE);
800 BOOL StartPagePrinter(HANDLE);
801 DWORD WaitForPrinterChange(HANDLE, DWORD);
802 BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD);
803 
804 version (Unicode) {
805 
806 alias JOB_INFO_1W JOB_INFO_1;
807 alias JOB_INFO_2W JOB_INFO_2;
808 alias ADDJOB_INFO_1W ADDJOB_INFO_1;
809 alias DATATYPES_INFO_1W DATATYPES_INFO_1;
810 alias MONITOR_INFO_1W MONITOR_INFO_1;
811 alias MONITOR_INFO_2W MONITOR_INFO_2;
812 alias DOC_INFO_1W DOC_INFO_1;
813 alias DOC_INFO_2W DOC_INFO_2;
814 alias PORT_INFO_1W PORT_INFO_1;
815 alias PORT_INFO_2W PORT_INFO_2;
816 alias PORT_INFO_3W PORT_INFO_3;
817 alias DRIVER_INFO_2W DRIVER_INFO_2;
818 alias PRINTER_INFO_1W PRINTER_INFO_1;
819 alias PRINTER_INFO_2W PRINTER_INFO_2;
820 alias PRINTER_INFO_4W PRINTER_INFO_4;
821 alias PRINTER_INFO_5W PRINTER_INFO_5;
822 alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
823 alias FORM_INFO_1W FORM_INFO_1;
824 alias PRINTER_DEFAULTSW PRINTER_DEFAULTS;
825 
826 alias AddFormW AddForm;
827 alias AddJobW AddJob;
828 alias AddMonitorW AddMonitor;
829 alias AddPortW AddPort;
830 alias AddPrinterW AddPrinter;
831 alias AddPrinterConnectionW AddPrinterConnection;
832 alias AddPrinterDriverW AddPrinterDriver;
833 alias AddPrintProcessorW AddPrintProcessor;
834 alias AddPrintProvidorW AddPrintProvidor;
835 alias AdvancedDocumentPropertiesW AdvancedDocumentProperties;
836 alias ConfigurePortW ConfigurePort;
837 alias DeleteFormW DeleteForm;
838 alias DeleteMonitorW DeleteMonitor;
839 alias DeletePortW DeletePort;
840 alias DeletePrinterConnectionW DeletePrinterConnection;
841 alias DeletePrinterDataW DeletePrinterData;
842 alias DeletePrinterDriverW DeletePrinterDriver;
843 alias DeletePrintProcessorW DeletePrintProcessor;
844 alias DeletePrintProvidorW DeletePrintProvidor;
845 alias DocumentPropertiesW DocumentProperties;
846 alias EnumFormsW EnumForms;
847 alias EnumJobsW EnumJobs;
848 alias EnumMonitorsW EnumMonitors;
849 alias EnumPortsW EnumPorts;
850 alias EnumPrinterDataW EnumPrinterData;
851 alias EnumPrinterDriversW EnumPrinterDrivers;
852 alias EnumPrintersW EnumPrinters;
853 alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes;
854 alias EnumPrintProcessorsW EnumPrintProcessors;
855 
856 static if (_WIN32_WINNT >= 0x500) {
857 alias GetDefaultPrinterW GetDefaultPrinter;
858 }
859 
860 alias GetFormW GetForm;
861 alias GetJobW GetJob;
862 alias GetPrinterW GetPrinter;
863 alias GetPrinterDataW GetPrinterData;
864 alias GetPrinterDriverW GetPrinterDriver;
865 alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory;
866 alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory;
867 alias OpenPrinterW OpenPrinter;
868 alias PrinterMessageBoxW PrinterMessageBox;
869 alias ResetPrinterW ResetPrinter;
870 alias SetFormW SetForm;
871 alias SetJobW SetJob;
872 alias SetPrinterW SetPrinter;
873 alias SetPrinterDataW SetPrinterData;
874 alias StartDocPrinterW StartDocPrinter;
875 
876 } else {
877 
878 alias JOB_INFO_1A JOB_INFO_1;
879 alias JOB_INFO_2A JOB_INFO_2;
880 alias ADDJOB_INFO_1A ADDJOB_INFO_1;
881 alias DATATYPES_INFO_1A DATATYPES_INFO_1;
882 alias MONITOR_INFO_1A MONITOR_INFO_1;
883 alias MONITOR_INFO_2A MONITOR_INFO_2;
884 alias DOC_INFO_1A DOC_INFO_1;
885 alias DOC_INFO_2A DOC_INFO_2;
886 alias PORT_INFO_1A PORT_INFO_1;
887 alias PORT_INFO_2A PORT_INFO_2;
888 alias PORT_INFO_3A PORT_INFO_3;
889 alias DRIVER_INFO_2A DRIVER_INFO_2;
890 alias PRINTER_INFO_1A PRINTER_INFO_1;
891 alias PRINTER_INFO_2A PRINTER_INFO_2;
892 alias PRINTER_INFO_4A PRINTER_INFO_4;
893 alias PRINTER_INFO_5A PRINTER_INFO_5;
894 alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
895 alias FORM_INFO_1A FORM_INFO_1;
896 alias PRINTER_DEFAULTSA PRINTER_DEFAULTS;
897 
898 alias AddFormA AddForm;
899 alias AddJobA AddJob;
900 alias AddMonitorA AddMonitor;
901 alias AddPortA AddPort;
902 alias AddPrinterA AddPrinter;
903 alias AddPrinterConnectionA AddPrinterConnection;
904 alias AddPrinterDriverA AddPrinterDriver;
905 alias AddPrintProcessorA AddPrintProcessor;
906 alias AddPrintProvidorA AddPrintProvidor;
907 alias AdvancedDocumentPropertiesA AdvancedDocumentProperties;
908 alias ConfigurePortA ConfigurePort;
909 alias DeleteFormA DeleteForm;
910 alias DeleteMonitorA DeleteMonitor;
911 alias DeletePortA DeletePort;
912 alias DeletePrinterConnectionA DeletePrinterConnection;
913 alias DeletePrinterDataA DeletePrinterData;
914 alias DeletePrinterDriverA DeletePrinterDriver;
915 alias DeletePrintProcessorA DeletePrintProcessor;
916 alias DeletePrintProvidorA DeletePrintProvidor;
917 alias DocumentPropertiesA DocumentProperties;
918 alias EnumFormsA EnumForms;
919 alias EnumJobsA EnumJobs;
920 alias EnumMonitorsA EnumMonitors;
921 alias EnumPortsA EnumPorts;
922 alias EnumPrinterDataA EnumPrinterData;
923 alias EnumPrinterDriversA EnumPrinterDrivers;
924 alias EnumPrintersA EnumPrinters;
925 alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes;
926 alias EnumPrintProcessorsA EnumPrintProcessors;
927 
928 static if (_WIN32_WINNT >= 0x500) {
929 alias GetDefaultPrinterA GetDefaultPrinter;
930 }
931 
932 alias GetFormA GetForm;
933 alias GetJobA GetJob;
934 alias GetPrinterA GetPrinter;
935 alias GetPrinterDataA GetPrinterData;
936 alias GetPrinterDriverA GetPrinterDriver;
937 alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory;
938 alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory;
939 alias OpenPrinterA OpenPrinter;
940 alias PrinterMessageBoxA PrinterMessageBox;
941 alias ResetPrinterA ResetPrinter;
942 alias SetFormA SetForm;
943 alias SetJobA SetJob;
944 alias SetPrinterA SetPrinter;
945 alias SetPrinterDataA SetPrinterData;
946 alias StartDocPrinterA StartDocPrinter;
947 }
948 
949 alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1;
950 alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2;
951 alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1;
952 alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1;
953 alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1;
954 alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2;
955 alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1;
956 alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2;
957 alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1;
958 alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2;
959 alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3;
960 alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2;
961 alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1;
962 alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2;
963 alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4;
964 alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5;
965 alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1;
966 alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1;
967 alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS;