1 module win32.winspool;
2
3 // Translated from Microsoft Platform SDK August 2001 Edition
4 // by Y.Tomino
5
6 import win32.windef;
7 import win32.winbase;
8 import win32.wingdi;
9
10 // #ifndef _WINSPOOL_
11 // #define _WINSPOOL_
12
13 // #ifdef _WINUSER_
14 // #...
15 // #endif
16
17 // #ifdef __cplusplus
18 // extern "C" {
19 // #endif
20
21 struct _PRINTER_INFO_1A {
22 DWORD Flags;
23 LPSTR pDescription;
24 LPSTR pName;
25 LPSTR pComment;
26 }
27 alias _PRINTER_INFO_1A PRINTER_INFO_1A;
28 alias _PRINTER_INFO_1A* PPRINTER_INFO_1A;
29 alias _PRINTER_INFO_1A* LPPRINTER_INFO_1A;
30
31 struct _PRINTER_INFO_1W {
32 DWORD Flags;
33 LPWSTR pDescription;
34 LPWSTR pName;
35 LPWSTR pComment;
36 }
37 alias _PRINTER_INFO_1W PRINTER_INFO_1W;
38 alias _PRINTER_INFO_1W* PPRINTER_INFO_1W;
39 alias _PRINTER_INFO_1W* LPPRINTER_INFO_1W;
40
41 // #ifdef UNICODE
42 alias PRINTER_INFO_1W PRINTER_INFO_1;
43 alias PPRINTER_INFO_1W PPRINTER_INFO_1;
44 alias LPPRINTER_INFO_1W LPPRINTER_INFO_1;
45 // #else
46 // ...
47 // #endif // UNICODE
48
49 struct _PRINTER_INFO_2A {
50 LPSTR pServerName;
51 LPSTR pPrinterName;
52 LPSTR pShareName;
53 LPSTR pPortName;
54 LPSTR pDriverName;
55 LPSTR pComment;
56 LPSTR pLocation;
57 LPDEVMODEA pDevMode;
58 LPSTR pSepFile;
59 LPSTR pPrintProcessor;
60 LPSTR pDatatype;
61 LPSTR pParameters;
62 PSECURITY_DESCRIPTOR pSecurityDescriptor;
63 DWORD Attributes;
64 DWORD Priority;
65 DWORD DefaultPriority;
66 DWORD StartTime;
67 DWORD UntilTime;
68 DWORD Status;
69 DWORD cJobs;
70 DWORD AveragePPM;
71 }
72 alias _PRINTER_INFO_2A PRINTER_INFO_2A;
73 alias _PRINTER_INFO_2A* PPRINTER_INFO_2A;
74 alias _PRINTER_INFO_2A* LPPRINTER_INFO_2A;
75
76 struct _PRINTER_INFO_2W {
77 LPWSTR pServerName;
78 LPWSTR pPrinterName;
79 LPWSTR pShareName;
80 LPWSTR pPortName;
81 LPWSTR pDriverName;
82 LPWSTR pComment;
83 LPWSTR pLocation;
84 LPDEVMODEW pDevMode;
85 LPWSTR pSepFile;
86 LPWSTR pPrintProcessor;
87 LPWSTR pDatatype;
88 LPWSTR pParameters;
89 PSECURITY_DESCRIPTOR pSecurityDescriptor;
90 DWORD Attributes;
91 DWORD Priority;
92 DWORD DefaultPriority;
93 DWORD StartTime;
94 DWORD UntilTime;
95 DWORD Status;
96 DWORD cJobs;
97 DWORD AveragePPM;
98 }
99 alias _PRINTER_INFO_2W PRINTER_INFO_2W;
100 alias _PRINTER_INFO_2W* PPRINTER_INFO_2W;
101 alias _PRINTER_INFO_2W* LPPRINTER_INFO_2W;
102
103 // #ifdef UNICODE
104 alias PRINTER_INFO_2W PRINTER_INFO_2;
105 alias PPRINTER_INFO_2W PPRINTER_INFO_2;
106 alias LPPRINTER_INFO_2W LPPRINTER_INFO_2;
107 // #else
108 // ...
109 // #endif // UNICODE
110
111 struct _PRINTER_INFO_3 {
112 PSECURITY_DESCRIPTOR pSecurityDescriptor;
113 }
114 alias _PRINTER_INFO_3 PRINTER_INFO_3;
115 alias _PRINTER_INFO_3* PPRINTER_INFO_3;
116 alias _PRINTER_INFO_3* LPPRINTER_INFO_3;
117
118 struct _PRINTER_INFO_4A {
119 LPSTR pPrinterName;
120 LPSTR pServerName;
121 DWORD Attributes;
122 }
123 alias _PRINTER_INFO_4A PRINTER_INFO_4A;
124 alias _PRINTER_INFO_4A* PPRINTER_INFO_4A;
125 alias _PRINTER_INFO_4A* LPPRINTER_INFO_4A;
126
127 struct _PRINTER_INFO_4W {
128 LPWSTR pPrinterName;
129 LPWSTR pServerName;
130 DWORD Attributes;
131 }
132 alias _PRINTER_INFO_4W PRINTER_INFO_4W;
133 alias _PRINTER_INFO_4W* PPRINTER_INFO_4W;
134 alias _PRINTER_INFO_4W* LPPRINTER_INFO_4W;
135
136 // #ifdef UNICODE
137 alias PRINTER_INFO_4W PRINTER_INFO_4;
138 alias PPRINTER_INFO_4W PPRINTER_INFO_4;
139 alias LPPRINTER_INFO_4W LPPRINTER_INFO_4;
140 // #else
141 // ...
142 // #endif // UNICODE
143
144 struct _PRINTER_INFO_5A {
145 LPSTR pPrinterName;
146 LPSTR pPortName;
147 DWORD Attributes;
148 DWORD DeviceNotSelectedTimeout;
149 DWORD TransmissionRetryTimeout;
150 }
151 alias _PRINTER_INFO_5A PRINTER_INFO_5A;
152 alias _PRINTER_INFO_5A* PPRINTER_INFO_5A;
153 alias _PRINTER_INFO_5A* LPPRINTER_INFO_5A;
154
155 struct _PRINTER_INFO_5W {
156 LPWSTR pPrinterName;
157 LPWSTR pPortName;
158 DWORD Attributes;
159 DWORD DeviceNotSelectedTimeout;
160 DWORD TransmissionRetryTimeout;
161 }
162 alias _PRINTER_INFO_5W PRINTER_INFO_5W;
163 alias _PRINTER_INFO_5W* PPRINTER_INFO_5W;
164 alias _PRINTER_INFO_5W* LPPRINTER_INFO_5W;
165
166 // #ifdef UNICODE
167 alias PRINTER_INFO_5W PRINTER_INFO_5;
168 alias PPRINTER_INFO_5W PPRINTER_INFO_5;
169 alias LPPRINTER_INFO_5W LPPRINTER_INFO_5;
170 // #else
171 // ...
172 // #endif // UNICODE
173
174 struct _PRINTER_INFO_6 {
175 DWORD dwStatus;
176 }
177 alias _PRINTER_INFO_6 PRINTER_INFO_6;
178 alias _PRINTER_INFO_6* PPRINTER_INFO_6;
179 alias _PRINTER_INFO_6* LPPRINTER_INFO_6;
180
181 struct _PRINTER_INFO_7A {
182 LPSTR pszObjectGUID;
183 DWORD dwAction;
184 }
185 alias _PRINTER_INFO_7A PRINTER_INFO_7A;
186 alias _PRINTER_INFO_7A* PPRINTER_INFO_7A;
187 alias _PRINTER_INFO_7A* LPPRINTER_INFO_7A;
188
189 struct _PRINTER_INFO_7W {
190 LPWSTR pszObjectGUID;
191 DWORD dwAction;
192 }
193 alias _PRINTER_INFO_7W PRINTER_INFO_7W;
194 alias _PRINTER_INFO_7W* PPRINTER_INFO_7W;
195 alias _PRINTER_INFO_7W* LPPRINTER_INFO_7W;
196
197 // #ifdef UNICODE
198 alias PRINTER_INFO_7W PRINTER_INFO_7;
199 alias PPRINTER_INFO_7W PPRINTER_INFO_7;
200 alias LPPRINTER_INFO_7W LPPRINTER_INFO_7;
201 // #else
202 // ...
203 // #endif // UNICODE
204
205 enum : uint { DSPRINT_PUBLISH = 0x00000001 }
206 enum : uint { DSPRINT_UPDATE = 0x00000002 }
207 enum : uint { DSPRINT_UNPUBLISH = 0x00000004 }
208 enum : uint { DSPRINT_REPUBLISH = 0x00000008 }
209 enum : uint { DSPRINT_PENDING = 0x80000000 }
210
211 struct _PRINTER_INFO_8A {
212 LPDEVMODEA pDevMode;
213 }
214 alias _PRINTER_INFO_8A PRINTER_INFO_8A;
215 alias _PRINTER_INFO_8A* PPRINTER_INFO_8A;
216 alias _PRINTER_INFO_8A* LPPRINTER_INFO_8A;
217
218 struct _PRINTER_INFO_8W {
219 LPDEVMODEW pDevMode;
220 }
221 alias _PRINTER_INFO_8W PRINTER_INFO_8W;
222 alias _PRINTER_INFO_8W* PPRINTER_INFO_8W;
223 alias _PRINTER_INFO_8W* LPPRINTER_INFO_8W;
224
225 // #ifdef UNICODE
226 alias PRINTER_INFO_8W PRINTER_INFO_8;
227 alias PPRINTER_INFO_8W PPRINTER_INFO_8;
228 alias LPPRINTER_INFO_8W LPPRINTER_INFO_8;
229 // #else
230 // ...
231 // #endif // UNICODE
232
233 struct _PRINTER_INFO_9A {
234 LPDEVMODEA pDevMode;
235 }
236 alias _PRINTER_INFO_9A PRINTER_INFO_9A;
237 alias _PRINTER_INFO_9A* PPRINTER_INFO_9A;
238 alias _PRINTER_INFO_9A* LPPRINTER_INFO_9A;
239
240 struct _PRINTER_INFO_9W {
241 LPDEVMODEW pDevMode;
242 }
243 alias _PRINTER_INFO_9W PRINTER_INFO_9W;
244 alias _PRINTER_INFO_9W* PPRINTER_INFO_9W;
245 alias _PRINTER_INFO_9W* LPPRINTER_INFO_9W;
246
247 // #ifdef UNICODE
248 alias PRINTER_INFO_9W PRINTER_INFO_9;
249 alias PPRINTER_INFO_9W PPRINTER_INFO_9;
250 alias LPPRINTER_INFO_9W LPPRINTER_INFO_9;
251 // #else
252 // ...
253 // #endif // UNICODE
254
255 enum : uint { PRINTER_CONTROL_PAUSE = 1 }
256 enum : uint { PRINTER_CONTROL_RESUME = 2 }
257 enum : uint { PRINTER_CONTROL_PURGE = 3 }
258 enum : uint { PRINTER_CONTROL_SET_STATUS = 4 }
259
260 enum : uint { PRINTER_STATUS_PAUSED = 0x00000001 }
261 enum : uint { PRINTER_STATUS_ERROR = 0x00000002 }
262 enum : uint { PRINTER_STATUS_PENDING_DELETION = 0x00000004 }
263 enum : uint { PRINTER_STATUS_PAPER_JAM = 0x00000008 }
264 enum : uint { PRINTER_STATUS_PAPER_OUT = 0x00000010 }
265 enum : uint { PRINTER_STATUS_MANUAL_FEED = 0x00000020 }
266 enum : uint { PRINTER_STATUS_PAPER_PROBLEM = 0x00000040 }
267 enum : uint { PRINTER_STATUS_OFFLINE = 0x00000080 }
268 enum : uint { PRINTER_STATUS_IO_ACTIVE = 0x00000100 }
269 enum : uint { PRINTER_STATUS_BUSY = 0x00000200 }
270 enum : uint { PRINTER_STATUS_PRINTING = 0x00000400 }
271 enum : uint { PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800 }
272 enum : uint { PRINTER_STATUS_NOT_AVAILABLE = 0x00001000 }
273 enum : uint { PRINTER_STATUS_WAITING = 0x00002000 }
274 enum : uint { PRINTER_STATUS_PROCESSING = 0x00004000 }
275 enum : uint { PRINTER_STATUS_INITIALIZING = 0x00008000 }
276 enum : uint { PRINTER_STATUS_WARMING_UP = 0x00010000 }
277 enum : uint { PRINTER_STATUS_TONER_LOW = 0x00020000 }
278 enum : uint { PRINTER_STATUS_NO_TONER = 0x00040000 }
279 enum : uint { PRINTER_STATUS_PAGE_PUNT = 0x00080000 }
280 enum : uint { PRINTER_STATUS_USER_INTERVENTION = 0x00100000 }
281 enum : uint { PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000 }
282 enum : uint { PRINTER_STATUS_DOOR_OPEN = 0x00400000 }
283 enum : uint { PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000 }
284 enum : uint { PRINTER_STATUS_POWER_SAVE = 0x01000000 }
285
286 enum : uint { PRINTER_ATTRIBUTE_QUEUED = 0x00000001 }
287 enum : uint { PRINTER_ATTRIBUTE_DIRECT = 0x00000002 }
288 enum : uint { PRINTER_ATTRIBUTE_DEFAULT = 0x00000004 }
289 enum : uint { PRINTER_ATTRIBUTE_SHARED = 0x00000008 }
290 enum : uint { PRINTER_ATTRIBUTE_NETWORK = 0x00000010 }
291 enum : uint { PRINTER_ATTRIBUTE_HIDDEN = 0x00000020 }
292 enum : uint { PRINTER_ATTRIBUTE_LOCAL = 0x00000040 }
293
294 enum : uint { PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080 }
295 enum : uint { PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100 }
296 enum : uint { PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200 }
297
298 enum : uint { PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400 }
299 enum : uint { PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800 }
300 enum : uint { PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000 }
301 enum : uint { PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000 }
302 enum : uint { PRINTER_ATTRIBUTE_FAX = 0x00004000 }
303
304 enum : uint { NO_PRIORITY = 0 }
305 enum : uint { MAX_PRIORITY = 99 }
306 enum : uint { MIN_PRIORITY = 1 }
307 enum : uint { DEF_PRIORITY = 1 }
308
309 struct _JOB_INFO_1A {
310 DWORD JobId;
311 LPSTR pPrinterName;
312 LPSTR pMachineName;
313 LPSTR pUserName;
314 LPSTR pDocument;
315 LPSTR pDatatype;
316 LPSTR pStatus;
317 DWORD Status;
318 DWORD Priority;
319 DWORD Position;
320 DWORD TotalPages;
321 DWORD PagesPrinted;
322 SYSTEMTIME Submitted;
323 }
324 alias _JOB_INFO_1A JOB_INFO_1A;
325 alias _JOB_INFO_1A* PJOB_INFO_1A;
326 alias _JOB_INFO_1A* LPJOB_INFO_1A;
327
328 struct _JOB_INFO_1W {
329 DWORD JobId;
330 LPWSTR pPrinterName;
331 LPWSTR pMachineName;
332 LPWSTR pUserName;
333 LPWSTR pDocument;
334 LPWSTR pDatatype;
335 LPWSTR pStatus;
336 DWORD Status;
337 DWORD Priority;
338 DWORD Position;
339 DWORD TotalPages;
340 DWORD PagesPrinted;
341 SYSTEMTIME Submitted;
342 }
343 alias _JOB_INFO_1W JOB_INFO_1W;
344 alias _JOB_INFO_1W* PJOB_INFO_1W;
345 alias _JOB_INFO_1W* LPJOB_INFO_1W;
346
347 // #ifdef UNICODE
348 alias JOB_INFO_1W JOB_INFO_1;
349 alias PJOB_INFO_1W PJOB_INFO_1;
350 alias LPJOB_INFO_1W LPJOB_INFO_1;
351 // #else
352 // ...
353 // #endif // UNICODE
354
355 struct _JOB_INFO_2A {
356 DWORD JobId;
357 LPSTR pPrinterName;
358 LPSTR pMachineName;
359 LPSTR pUserName;
360 LPSTR pDocument;
361 LPSTR pNotifyName;
362 LPSTR pDatatype;
363 LPSTR pPrintProcessor;
364 LPSTR pParameters;
365 LPSTR pDriverName;
366 LPDEVMODEA pDevMode;
367 LPSTR pStatus;
368 PSECURITY_DESCRIPTOR pSecurityDescriptor;
369 DWORD Status;
370 DWORD Priority;
371 DWORD Position;
372 DWORD StartTime;
373 DWORD UntilTime;
374 DWORD TotalPages;
375 DWORD Size;
376 SYSTEMTIME Submitted;
377 DWORD Time;
378 DWORD PagesPrinted;
379 }
380 alias _JOB_INFO_2A JOB_INFO_2A;
381 alias _JOB_INFO_2A* PJOB_INFO_2A;
382 alias _JOB_INFO_2A* LPJOB_INFO_2A;
383
384 struct _JOB_INFO_2W {
385 DWORD JobId;
386 LPWSTR pPrinterName;
387 LPWSTR pMachineName;
388 LPWSTR pUserName;
389 LPWSTR pDocument;
390 LPWSTR pNotifyName;
391 LPWSTR pDatatype;
392 LPWSTR pPrintProcessor;
393 LPWSTR pParameters;
394 LPWSTR pDriverName;
395 LPDEVMODEW pDevMode;
396 LPWSTR pStatus;
397 PSECURITY_DESCRIPTOR pSecurityDescriptor;
398 DWORD Status;
399 DWORD Priority;
400 DWORD Position;
401 DWORD StartTime;
402 DWORD UntilTime;
403 DWORD TotalPages;
404 DWORD Size;
405 SYSTEMTIME Submitted;
406 DWORD Time;
407 DWORD PagesPrinted;
408 }
409 alias _JOB_INFO_2W JOB_INFO_2W;
410 alias _JOB_INFO_2W* PJOB_INFO_2W;
411 alias _JOB_INFO_2W* LPJOB_INFO_2W;
412
413 // #ifdef UNICODE
414 alias JOB_INFO_2W JOB_INFO_2;
415 alias PJOB_INFO_2W PJOB_INFO_2;
416 alias LPJOB_INFO_2W LPJOB_INFO_2;
417 // #else
418 // ...
419 // #endif // UNICODE
420
421 struct _JOB_INFO_3 {
422 DWORD JobId;
423 DWORD NextJobId;
424 DWORD Reserved;
425 }
426 alias _JOB_INFO_3 JOB_INFO_3;
427 alias _JOB_INFO_3* PJOB_INFO_3;
428 alias _JOB_INFO_3* LPJOB_INFO_3;
429
430 enum : uint { JOB_CONTROL_PAUSE = 1 }
431 enum : uint { JOB_CONTROL_RESUME = 2 }
432 enum : uint { JOB_CONTROL_CANCEL = 3 }
433 enum : uint { JOB_CONTROL_RESTART = 4 }
434 enum : uint { JOB_CONTROL_DELETE = 5 }
435 enum : uint { JOB_CONTROL_SENT_TO_PRINTER = 6 }
436 enum : uint { JOB_CONTROL_LAST_PAGE_EJECTED = 7 }
437
438 enum : uint { JOB_STATUS_PAUSED = 0x00000001 }
439 enum : uint { JOB_STATUS_ERROR = 0x00000002 }
440 enum : uint { JOB_STATUS_DELETING = 0x00000004 }
441 enum : uint { JOB_STATUS_SPOOLING = 0x00000008 }
442 enum : uint { JOB_STATUS_PRINTING = 0x00000010 }
443 enum : uint { JOB_STATUS_OFFLINE = 0x00000020 }
444 enum : uint { JOB_STATUS_PAPEROUT = 0x00000040 }
445 enum : uint { JOB_STATUS_PRINTED = 0x00000080 }
446 enum : uint { JOB_STATUS_DELETED = 0x00000100 }
447 enum : uint { JOB_STATUS_BLOCKED_DEVQ = 0x00000200 }
448 enum : uint { JOB_STATUS_USER_INTERVENTION = 0x00000400 }
449 enum : uint { JOB_STATUS_RESTART = 0x00000800 }
450 enum : uint { JOB_STATUS_COMPLETE = 0x00001000 }
451
452 enum : uint { JOB_POSITION_UNSPECIFIED = 0 }
453
454 struct _ADDJOB_INFO_1A {
455 LPSTR Path;
456 DWORD JobId;
457 }
458 alias _ADDJOB_INFO_1A ADDJOB_INFO_1A;
459 alias _ADDJOB_INFO_1A* PADDJOB_INFO_1A;
460 alias _ADDJOB_INFO_1A* LPADDJOB_INFO_1A;
461
462 struct _ADDJOB_INFO_1W {
463 LPWSTR Path;
464 DWORD JobId;
465 }
466 alias _ADDJOB_INFO_1W ADDJOB_INFO_1W;
467 alias _ADDJOB_INFO_1W* PADDJOB_INFO_1W;
468 alias _ADDJOB_INFO_1W* LPADDJOB_INFO_1W;
469
470 // #ifdef UNICODE
471 alias ADDJOB_INFO_1W ADDJOB_INFO_1;
472 alias PADDJOB_INFO_1W PADDJOB_INFO_1;
473 alias LPADDJOB_INFO_1W LPADDJOB_INFO_1;
474 // #else
475 // ...
476 // #endif // UNICODE
477
478 struct _DRIVER_INFO_1A {
479 LPSTR pName;
480 }
481 alias _DRIVER_INFO_1A DRIVER_INFO_1A;
482 alias _DRIVER_INFO_1A* PDRIVER_INFO_1A;
483 alias _DRIVER_INFO_1A* LPDRIVER_INFO_1A;
484
485 struct _DRIVER_INFO_1W {
486 LPWSTR pName;
487 }
488 alias _DRIVER_INFO_1W DRIVER_INFO_1W;
489 alias _DRIVER_INFO_1W* PDRIVER_INFO_1W;
490 alias _DRIVER_INFO_1W* LPDRIVER_INFO_1W;
491
492 // #ifdef UNICODE
493 alias DRIVER_INFO_1W DRIVER_INFO_1;
494 alias PDRIVER_INFO_1W PDRIVER_INFO_1;
495 alias LPDRIVER_INFO_1W LPDRIVER_INFO_1;
496 // #else
497 // ...
498 // #endif // UNICODE
499
500 struct _DRIVER_INFO_2A {
501 DWORD cVersion;
502 LPSTR pName;
503 LPSTR pEnvironment;
504 LPSTR pDriverPath;
505 LPSTR pDataFile;
506 LPSTR pConfigFile;
507 }
508 alias _DRIVER_INFO_2A DRIVER_INFO_2A;
509 alias _DRIVER_INFO_2A* PDRIVER_INFO_2A;
510 alias _DRIVER_INFO_2A* LPDRIVER_INFO_2A;
511
512 struct _DRIVER_INFO_2W {
513 DWORD cVersion;
514 LPWSTR pName;
515 LPWSTR pEnvironment;
516 LPWSTR pDriverPath;
517 LPWSTR pDataFile;
518 LPWSTR pConfigFile;
519 }
520 alias _DRIVER_INFO_2W DRIVER_INFO_2W;
521 alias _DRIVER_INFO_2W* PDRIVER_INFO_2W;
522 alias _DRIVER_INFO_2W* LPDRIVER_INFO_2W;
523
524 // #ifdef UNICODE
525 alias DRIVER_INFO_2W DRIVER_INFO_2;
526 alias PDRIVER_INFO_2W PDRIVER_INFO_2;
527 alias LPDRIVER_INFO_2W LPDRIVER_INFO_2;
528 // #else
529 // ...
530 // #endif // UNICODE
531
532 struct _DRIVER_INFO_3A {
533 DWORD cVersion;
534 LPSTR pName;
535 LPSTR pEnvironment;
536 LPSTR pDriverPath;
537 LPSTR pDataFile;
538 LPSTR pConfigFile;
539 LPSTR pHelpFile;
540 LPSTR pDependentFiles;
541 LPSTR pMonitorName;
542 LPSTR pDefaultDataType;
543 }
544 alias _DRIVER_INFO_3A DRIVER_INFO_3A;
545 alias _DRIVER_INFO_3A* PDRIVER_INFO_3A;
546 alias _DRIVER_INFO_3A* LPDRIVER_INFO_3A;
547
548 struct _DRIVER_INFO_3W {
549 DWORD cVersion;
550 LPWSTR pName;
551 LPWSTR pEnvironment;
552 LPWSTR pDriverPath;
553 LPWSTR pDataFile;
554 LPWSTR pConfigFile;
555 LPWSTR pHelpFile;
556 LPWSTR pDependentFiles;
557 LPWSTR pMonitorName;
558 LPWSTR pDefaultDataType;
559 }
560 alias _DRIVER_INFO_3W DRIVER_INFO_3W;
561 alias _DRIVER_INFO_3W* PDRIVER_INFO_3W;
562 alias _DRIVER_INFO_3W* LPDRIVER_INFO_3W;
563
564 // #ifdef UNICODE
565 alias DRIVER_INFO_3W DRIVER_INFO_3;
566 alias PDRIVER_INFO_3W PDRIVER_INFO_3;
567 alias LPDRIVER_INFO_3W LPDRIVER_INFO_3;
568 // #else
569 // ...
570 // #endif // UNICODE
571
572 struct _DRIVER_INFO_4A {
573 DWORD cVersion;
574 LPSTR pName;
575 LPSTR pEnvironment;
576 LPSTR pDriverPath;
577 LPSTR pDataFile;
578 LPSTR pConfigFile;
579 LPSTR pHelpFile;
580 LPSTR pDependentFiles;
581 LPSTR pMonitorName;
582 LPSTR pDefaultDataType;
583 LPSTR pszzPreviousNames;
584 }
585 alias _DRIVER_INFO_4A DRIVER_INFO_4A;
586 alias _DRIVER_INFO_4A* PDRIVER_INFO_4A;
587 alias _DRIVER_INFO_4A* LPDRIVER_INFO_4A;
588
589 struct _DRIVER_INFO_4W {
590 DWORD cVersion;
591 LPWSTR pName;
592 LPWSTR pEnvironment;
593 LPWSTR pDriverPath;
594 LPWSTR pDataFile;
595 LPWSTR pConfigFile;
596 LPWSTR pHelpFile;
597 LPWSTR pDependentFiles;
598 LPWSTR pMonitorName;
599 LPWSTR pDefaultDataType;
600 LPWSTR pszzPreviousNames;
601 }
602 alias _DRIVER_INFO_4W DRIVER_INFO_4W;
603 alias _DRIVER_INFO_4W* PDRIVER_INFO_4W;
604 alias _DRIVER_INFO_4W* LPDRIVER_INFO_4W;
605
606 // #ifdef UNICODE
607 alias DRIVER_INFO_4W DRIVER_INFO_4;
608 alias PDRIVER_INFO_4W PDRIVER_INFO_4;
609 alias LPDRIVER_INFO_4W LPDRIVER_INFO_4;
610 // #else
611 // ...
612 // #endif // UNICODE
613
614 struct _DRIVER_INFO_5A {
615 DWORD cVersion;
616 LPSTR pName;
617 LPSTR pEnvironment;
618 LPSTR pDriverPath;
619 LPSTR pDataFile;
620 LPSTR pConfigFile;
621 DWORD dwDriverAttributes;
622 DWORD dwConfigVersion;
623 DWORD dwDriverVersion;
624 }
625 alias _DRIVER_INFO_5A DRIVER_INFO_5A;
626 alias _DRIVER_INFO_5A* PDRIVER_INFO_5A;
627 alias _DRIVER_INFO_5A* LPDRIVER_INFO_5A;
628
629 struct _DRIVER_INFO_5W {
630 DWORD cVersion;
631 LPWSTR pName;
632 LPWSTR pEnvironment;
633 LPWSTR pDriverPath;
634 LPWSTR pDataFile;
635 LPWSTR pConfigFile;
636 DWORD dwDriverAttributes;
637 DWORD dwConfigVersion;
638 DWORD dwDriverVersion;
639 }
640 alias _DRIVER_INFO_5W DRIVER_INFO_5W;
641 alias _DRIVER_INFO_5W* PDRIVER_INFO_5W;
642 alias _DRIVER_INFO_5W* LPDRIVER_INFO_5W;
643
644 // #ifdef UNICODE
645 alias DRIVER_INFO_5W DRIVER_INFO_5;
646 alias PDRIVER_INFO_5W PDRIVER_INFO_5;
647 alias LPDRIVER_INFO_5W LPDRIVER_INFO_5;
648 // #else
649 // ...
650 // #endif // UNICODE
651
652 struct _DRIVER_INFO_6A {
653 DWORD cVersion;
654 LPSTR pName;
655 LPSTR pEnvironment;
656 LPSTR pDriverPath;
657 LPSTR pDataFile;
658 LPSTR pConfigFile;
659 LPSTR pHelpFile;
660 LPSTR pDependentFiles;
661 LPSTR pMonitorName;
662 LPSTR pDefaultDataType;
663 LPSTR pszzPreviousNames;
664 FILETIME ftDriverDate;
665 DWORDLONG dwlDriverVersion;
666 LPSTR pszMfgName;
667 LPSTR pszOEMUrl;
668 LPSTR pszHardwareID;
669 LPSTR pszProvider;
670 }
671 alias _DRIVER_INFO_6A DRIVER_INFO_6A;
672 alias _DRIVER_INFO_6A* PDRIVER_INFO_6A;
673 alias _DRIVER_INFO_6A* LPDRIVER_INFO_6A;
674
675 struct _DRIVER_INFO_6W {
676 DWORD cVersion;
677 LPWSTR pName;
678 LPWSTR pEnvironment;
679 LPWSTR pDriverPath;
680 LPWSTR pDataFile;
681 LPWSTR pConfigFile;
682 LPWSTR pHelpFile;
683 LPWSTR pDependentFiles;
684 LPWSTR pMonitorName;
685 LPWSTR pDefaultDataType;
686 LPWSTR pszzPreviousNames;
687 FILETIME ftDriverDate;
688 DWORDLONG dwlDriverVersion;
689 LPWSTR pszMfgName;
690 LPWSTR pszOEMUrl;
691 LPWSTR pszHardwareID;
692 LPWSTR pszProvider;
693 }
694 alias _DRIVER_INFO_6W DRIVER_INFO_6W;
695 alias _DRIVER_INFO_6W* PDRIVER_INFO_6W;
696 alias _DRIVER_INFO_6W* LPDRIVER_INFO_6W;
697
698 // #ifdef UNICODE
699 alias DRIVER_INFO_6W DRIVER_INFO_6;
700 alias PDRIVER_INFO_6W PDRIVER_INFO_6;
701 alias LPDRIVER_INFO_6W LPDRIVER_INFO_6;
702 // #else
703 // ...
704 // #endif // UNICODE
705
706 enum : uint { DRIVER_KERNELMODE = 0x00000001 }
707 enum : uint { DRIVER_USERMODE = 0x00000002 }
708
709 enum : uint { DPD_DELETE_UNUSED_FILES = 0x00000001 }
710 enum : uint { DPD_DELETE_SPECIFIC_VERSION = 0x00000002 }
711 enum : uint { DPD_DELETE_ALL_FILES = 0x00000004 }
712
713 enum : uint { APD_STRICT_UPGRADE = 0x00000001 }
714 enum : uint { APD_STRICT_DOWNGRADE = 0x00000002 }
715 enum : uint { APD_COPY_ALL_FILES = 0x00000004 }
716 enum : uint { APD_COPY_NEW_FILES = 0x00000008 }
717 enum : uint { APD_COPY_FROM_DIRECTORY = 0x00000010 }
718
719 struct _DOC_INFO_1A {
720 LPSTR pDocName;
721 LPSTR pOutputFile;
722 LPSTR pDatatype;
723 }
724 alias _DOC_INFO_1A DOC_INFO_1A;
725 alias _DOC_INFO_1A* PDOC_INFO_1A;
726 alias _DOC_INFO_1A* LPDOC_INFO_1A;
727
728 struct _DOC_INFO_1W {
729 LPWSTR pDocName;
730 LPWSTR pOutputFile;
731 LPWSTR pDatatype;
732 }
733 alias _DOC_INFO_1W DOC_INFO_1W;
734 alias _DOC_INFO_1W* PDOC_INFO_1W;
735 alias _DOC_INFO_1W* LPDOC_INFO_1W;
736
737 // #ifdef UNICODE
738 alias DOC_INFO_1W DOC_INFO_1;
739 alias PDOC_INFO_1W PDOC_INFO_1;
740 alias LPDOC_INFO_1W LPDOC_INFO_1;
741 // #else
742 // ...
743 // #endif // UNICODE
744
745 struct _FORM_INFO_1A {
746 DWORD Flags;
747 LPSTR pName;
748 SIZEL Size;
749 RECTL ImageableArea;
750 }
751 alias _FORM_INFO_1A FORM_INFO_1A;
752 alias _FORM_INFO_1A* PFORM_INFO_1A;
753 alias _FORM_INFO_1A* LPFORM_INFO_1A;
754
755 struct _FORM_INFO_1W {
756 DWORD Flags;
757 LPWSTR pName;
758 SIZEL Size;
759 RECTL ImageableArea;
760 }
761 alias _FORM_INFO_1W FORM_INFO_1W;
762 alias _FORM_INFO_1W* PFORM_INFO_1W;
763 alias _FORM_INFO_1W* LPFORM_INFO_1W;
764
765 // #ifdef UNICODE
766 alias FORM_INFO_1W FORM_INFO_1;
767 alias PFORM_INFO_1W PFORM_INFO_1;
768 alias LPFORM_INFO_1W LPFORM_INFO_1;
769 // #else
770 // ...
771 // #endif // UNICODE
772
773 struct _DOC_INFO_2A {
774 LPSTR pDocName;
775 LPSTR pOutputFile;
776 LPSTR pDatatype;
777 DWORD dwMode;
778 DWORD JobId;
779 }
780 alias _DOC_INFO_2A DOC_INFO_2A;
781 alias _DOC_INFO_2A* PDOC_INFO_2A;
782 alias _DOC_INFO_2A* LPDOC_INFO_2A;
783
784 struct _DOC_INFO_2W {
785 LPWSTR pDocName;
786 LPWSTR pOutputFile;
787 LPWSTR pDatatype;
788 DWORD dwMode;
789 DWORD JobId;
790 }
791 alias _DOC_INFO_2W DOC_INFO_2W;
792 alias _DOC_INFO_2W* PDOC_INFO_2W;
793 alias _DOC_INFO_2W* LPDOC_INFO_2W;
794
795 // #ifdef UNICODE
796 alias DOC_INFO_2W DOC_INFO_2;
797 alias PDOC_INFO_2W PDOC_INFO_2;
798 alias LPDOC_INFO_2W LPDOC_INFO_2;
799 // #else
800 // ...
801 // #endif // UNICODE
802
803 enum : uint { DI_CHANNEL = 1 }
804
805 enum : uint { DI_READ_SPOOL_JOB = 3 }
806
807 struct _DOC_INFO_3A {
808 LPSTR pDocName;
809 LPSTR pOutputFile;
810 LPSTR pDatatype;
811 DWORD dwFlags;
812 }
813 alias _DOC_INFO_3A DOC_INFO_3A;
814 alias _DOC_INFO_3A* PDOC_INFO_3A;
815 alias _DOC_INFO_3A* LPDOC_INFO_3A;
816
817 struct _DOC_INFO_3W {
818 LPWSTR pDocName;
819 LPWSTR pOutputFile;
820 LPWSTR pDatatype;
821 DWORD dwFlags;
822 }
823 alias _DOC_INFO_3W DOC_INFO_3W;
824 alias _DOC_INFO_3W* PDOC_INFO_3W;
825 alias _DOC_INFO_3W* LPDOC_INFO_3W;
826
827 // #ifdef UNICODE
828 alias DOC_INFO_3W DOC_INFO_3;
829 alias PDOC_INFO_3W PDOC_INFO_3;
830 alias LPDOC_INFO_3W LPDOC_INFO_3;
831 // #else
832 // ...
833 // #endif // UNICODE
834
835 enum : uint { DI_MEMORYMAP_WRITE = 0x00000001 }
836
837 enum : uint { FORM_USER = 0x00000000 }
838 enum : uint { FORM_BUILTIN = 0x00000001 }
839 enum : uint { FORM_PRINTER = 0x00000002 }
840
841 struct _PRINTPROCESSOR_INFO_1A {
842 LPSTR pName;
843 }
844 alias _PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1A;
845 alias _PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A;
846 alias _PRINTPROCESSOR_INFO_1A* LPPRINTPROCESSOR_INFO_1A;
847
848 struct _PRINTPROCESSOR_INFO_1W {
849 LPWSTR pName;
850 }
851 alias _PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1W;
852 alias _PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W;
853 alias _PRINTPROCESSOR_INFO_1W* LPPRINTPROCESSOR_INFO_1W;
854
855 // #ifdef UNICODE
856 alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
857 alias PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1;
858 alias LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1;
859 // #else
860 // ...
861 // #endif // UNICODE
862
863 struct _PRINTPROCESSOR_CAPS_1 {
864 DWORD dwLevel;
865 DWORD dwNupOptions;
866 DWORD dwPageOrderFlags;
867 DWORD dwNumberOfCopies;
868 }
869 alias _PRINTPROCESSOR_CAPS_1 PRINTPROCESSOR_CAPS_1;
870 alias _PRINTPROCESSOR_CAPS_1* PPRINTPROCESSOR_CAPS_1;
871
872 enum : uint { NORMAL_PRINT = 0x00000000 }
873 enum : uint { REVERSE_PRINT = 0x00000001 }
874
875 struct _PORT_INFO_1A {
876 LPSTR pName;
877 }
878 alias _PORT_INFO_1A PORT_INFO_1A;
879 alias _PORT_INFO_1A* PPORT_INFO_1A;
880 alias _PORT_INFO_1A* LPPORT_INFO_1A;
881
882 struct _PORT_INFO_1W {
883 LPWSTR pName;
884 }
885 alias _PORT_INFO_1W PORT_INFO_1W;
886 alias _PORT_INFO_1W* PPORT_INFO_1W;
887 alias _PORT_INFO_1W* LPPORT_INFO_1W;
888
889 // #ifdef UNICODE
890 alias PORT_INFO_1W PORT_INFO_1;
891 alias PPORT_INFO_1W PPORT_INFO_1;
892 alias LPPORT_INFO_1W LPPORT_INFO_1;
893 // #else
894 // ...
895 // #endif // UNICODE
896
897 struct _PORT_INFO_2A {
898 LPSTR pPortName;
899 LPSTR pMonitorName;
900 LPSTR pDescription;
901 DWORD fPortType;
902 DWORD Reserved;
903 }
904 alias _PORT_INFO_2A PORT_INFO_2A;
905 alias _PORT_INFO_2A* PPORT_INFO_2A;
906 alias _PORT_INFO_2A* LPPORT_INFO_2A;
907
908 struct _PORT_INFO_2W {
909 LPWSTR pPortName;
910 LPWSTR pMonitorName;
911 LPWSTR pDescription;
912 DWORD fPortType;
913 DWORD Reserved;
914 }
915 alias _PORT_INFO_2W PORT_INFO_2W;
916 alias _PORT_INFO_2W* PPORT_INFO_2W;
917 alias _PORT_INFO_2W* LPPORT_INFO_2W;
918
919 // #ifdef UNICODE
920 alias PORT_INFO_2W PORT_INFO_2;
921 alias PPORT_INFO_2W PPORT_INFO_2;
922 alias LPPORT_INFO_2W LPPORT_INFO_2;
923 // #else
924 // ...
925 // #endif // UNICODE
926
927 enum : uint { PORT_TYPE_WRITE = 0x0001 }
928 enum : uint { PORT_TYPE_READ = 0x0002 }
929 enum : uint { PORT_TYPE_REDIRECTED = 0x0004 }
930 enum : uint { PORT_TYPE_NET_ATTACHED = 0x0008 }
931
932 struct _PORT_INFO_3A {
933 DWORD dwStatus;
934 LPSTR pszStatus;
935 DWORD dwSeverity;
936 }
937 alias _PORT_INFO_3A PORT_INFO_3A;
938 alias _PORT_INFO_3A* PPORT_INFO_3A;
939 alias _PORT_INFO_3A* LPPORT_INFO_3A;
940
941 struct _PORT_INFO_3W {
942 DWORD dwStatus;
943 LPWSTR pszStatus;
944 DWORD dwSeverity;
945 }
946 alias _PORT_INFO_3W PORT_INFO_3W;
947 alias _PORT_INFO_3W* PPORT_INFO_3W;
948 alias _PORT_INFO_3W* LPPORT_INFO_3W;
949
950 // #ifdef UNICODE
951 alias PORT_INFO_3W PORT_INFO_3;
952 alias PPORT_INFO_3W PPORT_INFO_3;
953 alias LPPORT_INFO_3W LPPORT_INFO_3;
954 // #else
955 // ...
956 // #endif // UNICODE
957
958 enum : uint { PORT_STATUS_TYPE_ERROR = 1 }
959 enum : uint { PORT_STATUS_TYPE_WARNING = 2 }
960 enum : uint { PORT_STATUS_TYPE_INFO = 3 }
961
962 enum : uint { PORT_STATUS_OFFLINE = 1 }
963 enum : uint { PORT_STATUS_PAPER_JAM = 2 }
964 enum : uint { PORT_STATUS_PAPER_OUT = 3 }
965 enum : uint { PORT_STATUS_OUTPUT_BIN_FULL = 4 }
966 enum : uint { PORT_STATUS_PAPER_PROBLEM = 5 }
967 enum : uint { PORT_STATUS_NO_TONER = 6 }
968 enum : uint { PORT_STATUS_DOOR_OPEN = 7 }
969 enum : uint { PORT_STATUS_USER_INTERVENTION = 8 }
970 enum : uint { PORT_STATUS_OUT_OF_MEMORY = 9 }
971
972 enum : uint { PORT_STATUS_TONER_LOW = 10 }
973
974 enum : uint { PORT_STATUS_WARMING_UP = 11 }
975 enum : uint { PORT_STATUS_POWER_SAVE = 12 }
976
977 struct _MONITOR_INFO_1A {
978 LPSTR pName;
979 }
980 alias _MONITOR_INFO_1A MONITOR_INFO_1A;
981 alias _MONITOR_INFO_1A* PMONITOR_INFO_1A;
982 alias _MONITOR_INFO_1A* LPMONITOR_INFO_1A;
983
984 struct _MONITOR_INFO_1W {
985 LPWSTR pName;
986 }
987 alias _MONITOR_INFO_1W MONITOR_INFO_1W;
988 alias _MONITOR_INFO_1W* PMONITOR_INFO_1W;
989 alias _MONITOR_INFO_1W* LPMONITOR_INFO_1W;
990
991 // #ifdef UNICODE
992 alias MONITOR_INFO_1W MONITOR_INFO_1;
993 alias PMONITOR_INFO_1W PMONITOR_INFO_1;
994 alias LPMONITOR_INFO_1W LPMONITOR_INFO_1;
995 // #else
996 // ...
997 // #endif // UNICODE
998
999 struct _MONITOR_INFO_2A {
1000 LPSTR pName;
1001 LPSTR pEnvironment;
1002 LPSTR pDLLName;
1003 }
1004 alias _MONITOR_INFO_2A MONITOR_INFO_2A;
1005 alias _MONITOR_INFO_2A* PMONITOR_INFO_2A;
1006 alias _MONITOR_INFO_2A* LPMONITOR_INFO_2A;
1007
1008 struct _MONITOR_INFO_2W {
1009 LPWSTR pName;
1010 LPWSTR pEnvironment;
1011 LPWSTR pDLLName;
1012 }
1013 alias _MONITOR_INFO_2W MONITOR_INFO_2W;
1014 alias _MONITOR_INFO_2W* PMONITOR_INFO_2W;
1015 alias _MONITOR_INFO_2W* LPMONITOR_INFO_2W;
1016
1017 // #ifdef UNICODE
1018 alias MONITOR_INFO_2W MONITOR_INFO_2;
1019 alias PMONITOR_INFO_2W PMONITOR_INFO_2;
1020 alias LPMONITOR_INFO_2W LPMONITOR_INFO_2;
1021 // #else
1022 // ...
1023 // #endif // UNICODE
1024
1025 struct _DATATYPES_INFO_1A {
1026 LPSTR pName;
1027 }
1028 alias _DATATYPES_INFO_1A DATATYPES_INFO_1A;
1029 alias _DATATYPES_INFO_1A* PDATATYPES_INFO_1A;
1030 alias _DATATYPES_INFO_1A* LPDATATYPES_INFO_1A;
1031
1032 struct _DATATYPES_INFO_1W {
1033 LPWSTR pName;
1034 }
1035 alias _DATATYPES_INFO_1W DATATYPES_INFO_1W;
1036 alias _DATATYPES_INFO_1W* PDATATYPES_INFO_1W;
1037 alias _DATATYPES_INFO_1W* LPDATATYPES_INFO_1W;
1038
1039 // #ifdef UNICODE
1040 alias DATATYPES_INFO_1W DATATYPES_INFO_1;
1041 alias PDATATYPES_INFO_1W PDATATYPES_INFO_1;
1042 alias LPDATATYPES_INFO_1W LPDATATYPES_INFO_1;
1043 // #else
1044 // ...
1045 // #endif // UNICODE
1046
1047 struct _PRINTER_DEFAULTSA {
1048 LPSTR pDatatype;
1049 LPDEVMODEA pDevMode;
1050 ACCESS_MASK DesiredAccess;
1051 }
1052 alias _PRINTER_DEFAULTSA PRINTER_DEFAULTSA;
1053 alias _PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA;
1054 alias _PRINTER_DEFAULTSA* LPPRINTER_DEFAULTSA;
1055
1056 struct _PRINTER_DEFAULTSW {
1057 LPWSTR pDatatype;
1058 LPDEVMODEW pDevMode;
1059 ACCESS_MASK DesiredAccess;
1060 }
1061 alias _PRINTER_DEFAULTSW PRINTER_DEFAULTSW;
1062 alias _PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW;
1063 alias _PRINTER_DEFAULTSW* LPPRINTER_DEFAULTSW;
1064
1065 // #ifdef UNICODE
1066 alias PRINTER_DEFAULTSW PRINTER_DEFAULTS;
1067 alias PPRINTER_DEFAULTSW PPRINTER_DEFAULTS;
1068 alias LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS;
1069 // #else
1070 // ...
1071 // #endif // UNICODE
1072
1073 struct _PRINTER_ENUM_VALUESA {
1074 LPSTR pValueName;
1075 DWORD cbValueName;
1076 DWORD dwType;
1077 LPBYTE pData;
1078 DWORD cbData;
1079 }
1080 alias _PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUESA;
1081 alias _PRINTER_ENUM_VALUESA* PPRINTER_ENUM_VALUESA;
1082 alias _PRINTER_ENUM_VALUESA* LPPRINTER_ENUM_VALUESA;
1083
1084 struct _PRINTER_ENUM_VALUESW {
1085 LPWSTR pValueName;
1086 DWORD cbValueName;
1087 DWORD dwType;
1088 LPBYTE pData;
1089 DWORD cbData;
1090 }
1091 alias _PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUESW;
1092 alias _PRINTER_ENUM_VALUESW* PPRINTER_ENUM_VALUESW;
1093 alias _PRINTER_ENUM_VALUESW* LPPRINTER_ENUM_VALUESW;
1094
1095 // #ifdef UNICODE
1096 alias PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES;
1097 alias PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES;
1098 alias LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES;
1099 // #else
1100 // ...
1101 // #endif // UNICODE
1102
1103 extern(Windows) export BOOL EnumPrintersA(
1104 DWORD Flags,
1105 LPSTR Name,
1106 DWORD Level,
1107 LPBYTE pPrinterEnum,
1108 DWORD cbBuf,
1109 LPDWORD pcbNeeded,
1110 LPDWORD pcReturned
1111 );
1112 extern(Windows) export BOOL EnumPrintersW(
1113 DWORD Flags,
1114 LPWSTR Name,
1115 DWORD Level,
1116 LPBYTE pPrinterEnum,
1117 DWORD cbBuf,
1118 LPDWORD pcbNeeded,
1119 LPDWORD pcReturned
1120 );
1121 // #ifdef UNICODE
1122 alias EnumPrintersW EnumPrinters;
1123 // #else
1124 // #...
1125 // #endif // !UNICODE
1126
1127 enum : uint { PRINTER_ENUM_DEFAULT = 0x00000001 }
1128 enum : uint { PRINTER_ENUM_LOCAL = 0x00000002 }
1129 enum : uint { PRINTER_ENUM_CONNECTIONS = 0x00000004 }
1130 enum : uint { PRINTER_ENUM_FAVORITE = 0x00000004 }
1131 enum : uint { PRINTER_ENUM_NAME = 0x00000008 }
1132 enum : uint { PRINTER_ENUM_REMOTE = 0x00000010 }
1133 enum : uint { PRINTER_ENUM_SHARED = 0x00000020 }
1134 enum : uint { PRINTER_ENUM_NETWORK = 0x00000040 }
1135
1136 enum : uint { PRINTER_ENUM_EXPAND = 0x00004000 }
1137 enum : uint { PRINTER_ENUM_CONTAINER = 0x00008000 }
1138
1139 enum : uint { PRINTER_ENUM_ICONMASK = 0x00ff0000 }
1140 enum : uint { PRINTER_ENUM_ICON1 = 0x00010000 }
1141 enum : uint { PRINTER_ENUM_ICON2 = 0x00020000 }
1142 enum : uint { PRINTER_ENUM_ICON3 = 0x00040000 }
1143 enum : uint { PRINTER_ENUM_ICON4 = 0x00080000 }
1144 enum : uint { PRINTER_ENUM_ICON5 = 0x00100000 }
1145 enum : uint { PRINTER_ENUM_ICON6 = 0x00200000 }
1146 enum : uint { PRINTER_ENUM_ICON7 = 0x00400000 }
1147 enum : uint { PRINTER_ENUM_ICON8 = 0x00800000 }
1148 enum : uint { PRINTER_ENUM_HIDE = 0x01000000 }
1149
1150 enum : uint { SPOOL_FILE_PERSISTENT = 0x00000001 }
1151 enum : uint { SPOOL_FILE_TEMPORARY = 0x00000002 }
1152
1153 extern(Windows) export BOOL OpenPrinterA(
1154 LPSTR pPrinterName,
1155 LPHANDLE phPrinter,
1156 LPPRINTER_DEFAULTSA pDefault
1157 );
1158 extern(Windows) export BOOL OpenPrinterW(
1159 LPWSTR pPrinterName,
1160 LPHANDLE phPrinter,
1161 LPPRINTER_DEFAULTSW pDefault
1162 );
1163 // #ifdef UNICODE
1164 alias OpenPrinterW OpenPrinter;
1165 // #else
1166 // #...
1167 // #endif // !UNICODE
1168
1169 extern(Windows) export BOOL ResetPrinterA(
1170 HANDLE hPrinter,
1171 LPPRINTER_DEFAULTSA pDefault
1172 );
1173 extern(Windows) export BOOL ResetPrinterW(
1174 HANDLE hPrinter,
1175 LPPRINTER_DEFAULTSW pDefault
1176 );
1177 // #ifdef UNICODE
1178 alias ResetPrinterW ResetPrinter;
1179 // #else
1180 // #...
1181 // #endif // !UNICODE
1182
1183 extern(Windows) export BOOL SetJobA(
1184 HANDLE hPrinter,
1185 DWORD JobId,
1186 DWORD Level,
1187 LPBYTE pJob,
1188 DWORD Command
1189 );
1190 extern(Windows) export BOOL SetJobW(
1191 HANDLE hPrinter,
1192 DWORD JobId,
1193 DWORD Level,
1194 LPBYTE pJob,
1195 DWORD Command
1196 );
1197 // #ifdef UNICODE
1198 alias SetJobW SetJob;
1199 // #else
1200 // #...
1201 // #endif // !UNICODE
1202
1203 extern(Windows) export BOOL GetJobA(
1204 HANDLE hPrinter,
1205 DWORD JobId,
1206 DWORD Level,
1207 LPBYTE pJob,
1208 DWORD cbBuf,
1209 LPDWORD pcbNeeded
1210 );
1211 extern(Windows) export BOOL GetJobW(
1212 HANDLE hPrinter,
1213 DWORD JobId,
1214 DWORD Level,
1215 LPBYTE pJob,
1216 DWORD cbBuf,
1217 LPDWORD pcbNeeded
1218 );
1219 // #ifdef UNICODE
1220 alias GetJobW GetJob;
1221 // #else
1222 // #...
1223 // #endif // !UNICODE
1224
1225 extern(Windows) export BOOL EnumJobsA(
1226 HANDLE hPrinter,
1227 DWORD FirstJob,
1228 DWORD NoJobs,
1229 DWORD Level,
1230 LPBYTE pJob,
1231 DWORD cbBuf,
1232 LPDWORD pcbNeeded,
1233 LPDWORD pcReturned
1234 );
1235 extern(Windows) export BOOL EnumJobsW(
1236 HANDLE hPrinter,
1237 DWORD FirstJob,
1238 DWORD NoJobs,
1239 DWORD Level,
1240 LPBYTE pJob,
1241 DWORD cbBuf,
1242 LPDWORD pcbNeeded,
1243 LPDWORD pcReturned
1244 );
1245 // #ifdef UNICODE
1246 alias EnumJobsW EnumJobs;
1247 // #else
1248 // #...
1249 // #endif // !UNICODE
1250
1251 extern(Windows) export HANDLE AddPrinterA(
1252 LPSTR pName,
1253 DWORD Level,
1254 LPBYTE pPrinter
1255 );
1256 extern(Windows) export HANDLE AddPrinterW(
1257 LPWSTR pName,
1258 DWORD Level,
1259 LPBYTE pPrinter
1260 );
1261 // #ifdef UNICODE
1262 alias AddPrinterW AddPrinter;
1263 // #else
1264 // #...
1265 // #endif // !UNICODE
1266
1267 extern(Windows) export BOOL DeletePrinter(
1268 HANDLE hPrinter
1269 );
1270
1271 extern(Windows) export BOOL SetPrinterA(
1272 HANDLE hPrinter,
1273 DWORD Level,
1274 LPBYTE pPrinter,
1275 DWORD Command
1276 );
1277 extern(Windows) export BOOL SetPrinterW(
1278 HANDLE hPrinter,
1279 DWORD Level,
1280 LPBYTE pPrinter,
1281 DWORD Command
1282 );
1283 // #ifdef UNICODE
1284 alias SetPrinterW SetPrinter;
1285 // #else
1286 // #...
1287 // #endif // !UNICODE
1288
1289 extern(Windows) export BOOL GetPrinterA(
1290 HANDLE hPrinter,
1291 DWORD Level,
1292 LPBYTE pPrinter,
1293 DWORD cbBuf,
1294 LPDWORD pcbNeeded
1295 );
1296 extern(Windows) export BOOL GetPrinterW(
1297 HANDLE hPrinter,
1298 DWORD Level,
1299 LPBYTE pPrinter,
1300 DWORD cbBuf,
1301 LPDWORD pcbNeeded
1302 );
1303 // #ifdef UNICODE
1304 alias GetPrinterW GetPrinter;
1305 // #else
1306 // #...
1307 // #endif // !UNICODE
1308
1309 extern(Windows) export BOOL AddPrinterDriverA(
1310 LPSTR pName,
1311 DWORD Level,
1312 LPBYTE pDriverInfo
1313 );
1314 extern(Windows) export BOOL AddPrinterDriverW(
1315 LPWSTR pName,
1316 DWORD Level,
1317 LPBYTE pDriverInfo
1318 );
1319 // #ifdef UNICODE
1320 alias AddPrinterDriverW AddPrinterDriver;
1321 // #else
1322 // #...
1323 // #endif // !UNICODE
1324
1325 extern(Windows) export BOOL AddPrinterDriverExA(
1326 LPSTR pName,
1327 DWORD Level,
1328 LPBYTE pDriverInfo,
1329 DWORD dwFileCopyFlags
1330 );
1331 extern(Windows) export BOOL AddPrinterDriverExW(
1332 LPWSTR pName,
1333 DWORD Level,
1334 LPBYTE pDriverInfo,
1335 DWORD dwFileCopyFlags
1336 );
1337 // #ifdef UNICODE
1338 alias AddPrinterDriverExW AddPrinterDriverEx;
1339 // #else
1340 // #...
1341 // #endif // !UNICODE
1342
1343 extern(Windows) export BOOL EnumPrinterDriversA(
1344 LPSTR pName,
1345 LPSTR pEnvironment,
1346 DWORD Level,
1347 LPBYTE pDriverInfo,
1348 DWORD cbBuf,
1349 LPDWORD pcbNeeded,
1350 LPDWORD pcReturned
1351 );
1352 extern(Windows) export BOOL EnumPrinterDriversW(
1353 LPWSTR pName,
1354 LPWSTR pEnvironment,
1355 DWORD Level,
1356 LPBYTE pDriverInfo,
1357 DWORD cbBuf,
1358 LPDWORD pcbNeeded,
1359 LPDWORD pcReturned
1360 );
1361 // #ifdef UNICODE
1362 alias EnumPrinterDriversW EnumPrinterDrivers;
1363 // #else
1364 // #...
1365 // #endif // !UNICODE
1366
1367 extern(Windows) export BOOL GetPrinterDriverA(
1368 HANDLE hPrinter,
1369 LPSTR pEnvironment,
1370 DWORD Level,
1371 LPBYTE pDriverInfo,
1372 DWORD cbBuf,
1373 LPDWORD pcbNeeded
1374 );
1375 extern(Windows) export BOOL GetPrinterDriverW(
1376 HANDLE hPrinter,
1377 LPWSTR pEnvironment,
1378 DWORD Level,
1379 LPBYTE pDriverInfo,
1380 DWORD cbBuf,
1381 LPDWORD pcbNeeded
1382 );
1383 // #ifdef UNICODE
1384 alias GetPrinterDriverW GetPrinterDriver;
1385 // #else
1386 // #...
1387 // #endif // !UNICODE
1388
1389 extern(Windows) export BOOL GetPrinterDriverDirectoryA(
1390 LPSTR pName,
1391 LPSTR pEnvironment,
1392 DWORD Level,
1393 LPBYTE pDriverDirectory,
1394 DWORD cbBuf,
1395 LPDWORD pcbNeeded
1396 );
1397 extern(Windows) export BOOL GetPrinterDriverDirectoryW(
1398 LPWSTR pName,
1399 LPWSTR pEnvironment,
1400 DWORD Level,
1401 LPBYTE pDriverDirectory,
1402 DWORD cbBuf,
1403 LPDWORD pcbNeeded
1404 );
1405 // #ifdef UNICODE
1406 alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory;
1407 // #else
1408 // #...
1409 // #endif // !UNICODE
1410
1411 extern(Windows) export BOOL DeletePrinterDriverA(
1412 LPSTR pName,
1413 LPSTR pEnvironment,
1414 LPSTR pDriverName
1415 );
1416 extern(Windows) export BOOL DeletePrinterDriverW(
1417 LPWSTR pName,
1418 LPWSTR pEnvironment,
1419 LPWSTR pDriverName
1420 );
1421 // #ifdef UNICODE
1422 alias DeletePrinterDriverW DeletePrinterDriver;
1423 // #else
1424 // #...
1425 // #endif // !UNICODE
1426
1427 extern(Windows) export BOOL DeletePrinterDriverExA(
1428 LPSTR pName,
1429 LPSTR pEnvironment,
1430 LPSTR pDriverName,
1431 DWORD dwDeleteFlag,
1432 DWORD dwVersionFlag
1433 );
1434 extern(Windows) export BOOL DeletePrinterDriverExW(
1435 LPWSTR pName,
1436 LPWSTR pEnvironment,
1437 LPWSTR pDriverName,
1438 DWORD dwDeleteFlag,
1439 DWORD dwVersionFlag
1440 );
1441 // #ifdef UNICODE
1442 alias DeletePrinterDriverExW DeletePrinterDriverEx;
1443 // #else
1444 // #...
1445 // #endif // !UNICODE
1446
1447 extern(Windows) export BOOL AddPrintProcessorA(
1448 LPSTR pName,
1449 LPSTR pEnvironment,
1450 LPSTR pPathName,
1451 LPSTR pPrintProcessorName
1452 );
1453 extern(Windows) export BOOL AddPrintProcessorW(
1454 LPWSTR pName,
1455 LPWSTR pEnvironment,
1456 LPWSTR pPathName,
1457 LPWSTR pPrintProcessorName
1458 );
1459 // #ifdef UNICODE
1460 alias AddPrintProcessorW AddPrintProcessor;
1461 // #else
1462 // #...
1463 // #endif // !UNICODE
1464
1465 extern(Windows) export BOOL EnumPrintProcessorsA(
1466 LPSTR pName,
1467 LPSTR pEnvironment,
1468 DWORD Level,
1469 LPBYTE pPrintProcessorInfo,
1470 DWORD cbBuf,
1471 LPDWORD pcbNeeded,
1472 LPDWORD pcReturned
1473 );
1474 extern(Windows) export BOOL EnumPrintProcessorsW(
1475 LPWSTR pName,
1476 LPWSTR pEnvironment,
1477 DWORD Level,
1478 LPBYTE pPrintProcessorInfo,
1479 DWORD cbBuf,
1480 LPDWORD pcbNeeded,
1481 LPDWORD pcReturned
1482 );
1483 // #ifdef UNICODE
1484 alias EnumPrintProcessorsW EnumPrintProcessors;
1485 // #else
1486 // #...
1487 // #endif // !UNICODE
1488
1489 extern(Windows) export BOOL GetPrintProcessorDirectoryA(
1490 LPSTR pName,
1491 LPSTR pEnvironment,
1492 DWORD Level,
1493 LPBYTE pPrintProcessorInfo,
1494 DWORD cbBuf,
1495 LPDWORD pcbNeeded
1496 );
1497 extern(Windows) export BOOL GetPrintProcessorDirectoryW(
1498 LPWSTR pName,
1499 LPWSTR pEnvironment,
1500 DWORD Level,
1501 LPBYTE pPrintProcessorInfo,
1502 DWORD cbBuf,
1503 LPDWORD pcbNeeded
1504 );
1505 // #ifdef UNICODE
1506 alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory;
1507 // #else
1508 // #...
1509 // #endif // !UNICODE
1510
1511 extern(Windows) export BOOL EnumPrintProcessorDatatypesA(
1512 LPSTR pName,
1513 LPSTR pPrintProcessorName,
1514 DWORD Level,
1515 LPBYTE pDatatypes,
1516 DWORD cbBuf,
1517 LPDWORD pcbNeeded,
1518 LPDWORD pcReturned
1519 );
1520 extern(Windows) export BOOL EnumPrintProcessorDatatypesW(
1521 LPWSTR pName,
1522 LPWSTR pPrintProcessorName,
1523 DWORD Level,
1524 LPBYTE pDatatypes,
1525 DWORD cbBuf,
1526 LPDWORD pcbNeeded,
1527 LPDWORD pcReturned
1528 );
1529 // #ifdef UNICODE
1530 alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes;
1531 // #else
1532 // #...
1533 // #endif // !UNICODE
1534
1535 extern(Windows) export BOOL DeletePrintProcessorA(
1536 LPSTR pName,
1537 LPSTR pEnvironment,
1538 LPSTR pPrintProcessorName
1539 );
1540 extern(Windows) export BOOL DeletePrintProcessorW(
1541 LPWSTR pName,
1542 LPWSTR pEnvironment,
1543 LPWSTR pPrintProcessorName
1544 );
1545 // #ifdef UNICODE
1546 alias DeletePrintProcessorW DeletePrintProcessor;
1547 // #else
1548 // #...
1549 // #endif // !UNICODE
1550
1551 extern(Windows) export DWORD StartDocPrinterA(
1552 HANDLE hPrinter,
1553 DWORD Level,
1554 LPBYTE pDocInfo
1555 );
1556 extern(Windows) export DWORD StartDocPrinterW(
1557 HANDLE hPrinter,
1558 DWORD Level,
1559 LPBYTE pDocInfo
1560 );
1561 // #ifdef UNICODE
1562 alias StartDocPrinterW StartDocPrinter;
1563 // #else
1564 // #...
1565 // #endif // !UNICODE
1566
1567 extern(Windows) export BOOL StartPagePrinter(
1568 HANDLE hPrinter
1569 );
1570
1571 extern(Windows) export BOOL WritePrinter(
1572 HANDLE hPrinter,
1573 LPVOID pBuf,
1574 DWORD cbBuf,
1575 LPDWORD pcWritten
1576 );
1577
1578 extern(Windows) export BOOL FlushPrinter(
1579 HANDLE hPrinter,
1580 LPVOID pBuf,
1581 DWORD cbBuf,
1582 LPDWORD pcWritten,
1583 DWORD cSleep
1584 );
1585
1586 extern(Windows) export BOOL EndPagePrinter(
1587 HANDLE hPrinter
1588 );
1589
1590 extern(Windows) export BOOL AbortPrinter(
1591 HANDLE hPrinter
1592 );
1593
1594 extern(Windows) export BOOL ReadPrinter(
1595 HANDLE hPrinter,
1596 LPVOID pBuf,
1597 DWORD cbBuf,
1598 LPDWORD pNoBytesRead
1599 );
1600
1601 extern(Windows) export BOOL EndDocPrinter(
1602 HANDLE hPrinter
1603 );
1604
1605 extern(Windows) export BOOL AddJobA(
1606 HANDLE hPrinter,
1607 DWORD Level,
1608 LPBYTE pData,
1609 DWORD cbBuf,
1610 LPDWORD pcbNeeded
1611 );
1612 extern(Windows) export BOOL AddJobW(
1613 HANDLE hPrinter,
1614 DWORD Level,
1615 LPBYTE pData,
1616 DWORD cbBuf,
1617 LPDWORD pcbNeeded
1618 );
1619 // #ifdef UNICODE
1620 alias AddJobW AddJob;
1621 // #else
1622 // #...
1623 // #endif // !UNICODE
1624
1625 extern(Windows) export BOOL ScheduleJob(
1626 HANDLE hPrinter,
1627 DWORD JobId
1628 );
1629
1630 extern(Windows) export BOOL PrinterProperties(
1631 HWND hWnd,
1632 HANDLE hPrinter
1633 );
1634
1635 extern(Windows) export LONG DocumentPropertiesA(
1636 HWND hWnd,
1637 HANDLE hPrinter,
1638 LPSTR pDeviceName,
1639 PDEVMODEA pDevModeOutput,
1640 PDEVMODEA pDevModeInput,
1641 DWORD fMode
1642 );
1643 extern(Windows) export LONG DocumentPropertiesW(
1644 HWND hWnd,
1645 HANDLE hPrinter,
1646 LPWSTR pDeviceName,
1647 PDEVMODEW pDevModeOutput,
1648 PDEVMODEW pDevModeInput,
1649 DWORD fMode
1650 );
1651 // #ifdef UNICODE
1652 alias DocumentPropertiesW DocumentProperties;
1653 // #else
1654 // #...
1655 // #endif // !UNICODE
1656
1657 extern(Windows) export LONG AdvancedDocumentPropertiesA(
1658 HWND hWnd,
1659 HANDLE hPrinter,
1660 LPSTR pDeviceName,
1661 PDEVMODEA pDevModeOutput,
1662 PDEVMODEA pDevModeInput
1663 );
1664 extern(Windows) export LONG AdvancedDocumentPropertiesW(
1665 HWND hWnd,
1666 HANDLE hPrinter,
1667 LPWSTR pDeviceName,
1668 PDEVMODEW pDevModeOutput,
1669 PDEVMODEW pDevModeInput
1670 );
1671 // #ifdef UNICODE
1672 alias AdvancedDocumentPropertiesW AdvancedDocumentProperties;
1673 // #else
1674 // #...
1675 // #endif // !UNICODE
1676
1677 extern(Windows) export DWORD GetPrinterDataA(
1678 HANDLE hPrinter,
1679 LPSTR pValueName,
1680 LPDWORD pType,
1681 LPBYTE pData,
1682 DWORD nSize,
1683 LPDWORD pcbNeeded
1684 );
1685 extern(Windows) export DWORD GetPrinterDataW(
1686 HANDLE hPrinter,
1687 LPWSTR pValueName,
1688 LPDWORD pType,
1689 LPBYTE pData,
1690 DWORD nSize,
1691 LPDWORD pcbNeeded
1692 );
1693 // #ifdef UNICODE
1694 alias GetPrinterDataW GetPrinterData;
1695 // #else
1696 // #...
1697 // #endif // !UNICODE
1698
1699 extern(Windows) export DWORD GetPrinterDataExA(
1700 HANDLE hPrinter,
1701 LPCSTR pKeyName,
1702 LPCSTR pValueName,
1703 LPDWORD pType,
1704 LPBYTE pData,
1705 DWORD nSize,
1706 LPDWORD pcbNeeded
1707 );
1708 extern(Windows) export DWORD GetPrinterDataExW(
1709 HANDLE hPrinter,
1710 LPCWSTR pKeyName,
1711 LPCWSTR pValueName,
1712 LPDWORD pType,
1713 LPBYTE pData,
1714 DWORD nSize,
1715 LPDWORD pcbNeeded
1716 );
1717 // #ifdef UNICODE
1718 alias GetPrinterDataExW GetPrinterDataEx;
1719 // #else
1720 // #...
1721 // #endif // !UNICODE
1722
1723 extern(Windows) export DWORD EnumPrinterDataA(
1724 HANDLE hPrinter,
1725 DWORD dwIndex,
1726 LPSTR pValueName,
1727 DWORD cbValueName,
1728 LPDWORD pcbValueName,
1729 LPDWORD pType,
1730 LPBYTE pData,
1731 DWORD cbData,
1732 LPDWORD pcbData
1733 );
1734 extern(Windows) export DWORD EnumPrinterDataW(
1735 HANDLE hPrinter,
1736 DWORD dwIndex,
1737 LPWSTR pValueName,
1738 DWORD cbValueName,
1739 LPDWORD pcbValueName,
1740 LPDWORD pType,
1741 LPBYTE pData,
1742 DWORD cbData,
1743 LPDWORD pcbData
1744 );
1745 // #ifdef UNICODE
1746 alias EnumPrinterDataW EnumPrinterData;
1747 // #else
1748 // #...
1749 // #endif // !UNICODE
1750
1751 extern(Windows) export DWORD EnumPrinterDataExA(
1752 HANDLE hPrinter,
1753 LPCSTR pKeyName,
1754 LPBYTE pEnumValues,
1755 DWORD cbEnumValues,
1756 LPDWORD pcbEnumValues,
1757 LPDWORD pnEnumValues
1758 );
1759 extern(Windows) export DWORD EnumPrinterDataExW(
1760 HANDLE hPrinter,
1761 LPCWSTR pKeyName,
1762 LPBYTE pEnumValues,
1763 DWORD cbEnumValues,
1764 LPDWORD pcbEnumValues,
1765 LPDWORD pnEnumValues
1766 );
1767 // #ifdef UNICODE
1768 alias EnumPrinterDataExW EnumPrinterDataEx;
1769 // #else
1770 // #...
1771 // #endif // !UNICODE
1772
1773 extern(Windows) export DWORD EnumPrinterKeyA(
1774 HANDLE hPrinter,
1775 LPCSTR pKeyName,
1776 LPSTR pSubkey,
1777 DWORD cbSubkey,
1778 LPDWORD pcbSubkey
1779 );
1780 extern(Windows) export DWORD EnumPrinterKeyW(
1781 HANDLE hPrinter,
1782 LPCWSTR pKeyName,
1783 LPWSTR pSubkey,
1784 DWORD cbSubkey,
1785 LPDWORD pcbSubkey
1786 );
1787 // #ifdef UNICODE
1788 alias EnumPrinterKeyW EnumPrinterKey;
1789 // #else
1790 // #...
1791 // #endif // !UNICODE
1792
1793 extern(Windows) export DWORD SetPrinterDataA(
1794 HANDLE hPrinter,
1795 LPSTR pValueName,
1796 DWORD Type,
1797 LPBYTE pData,
1798 DWORD cbData
1799 );
1800 extern(Windows) export DWORD SetPrinterDataW(
1801 HANDLE hPrinter,
1802 LPWSTR pValueName,
1803 DWORD Type,
1804 LPBYTE pData,
1805 DWORD cbData
1806 );
1807 // #ifdef UNICODE
1808 alias SetPrinterDataW SetPrinterData;
1809 // #else
1810 // #...
1811 // #endif // !UNICODE
1812
1813 extern(Windows) export DWORD SetPrinterDataExA(
1814 HANDLE hPrinter,
1815 LPCSTR pKeyName,
1816 LPCSTR pValueName,
1817 DWORD Type,
1818 LPBYTE pData,
1819 DWORD cbData
1820 );
1821 extern(Windows) export DWORD SetPrinterDataExW(
1822 HANDLE hPrinter,
1823 LPCWSTR pKeyName,
1824 LPCWSTR pValueName,
1825 DWORD Type,
1826 LPBYTE pData,
1827 DWORD cbData
1828 );
1829 // #ifdef UNICODE
1830 alias SetPrinterDataExW SetPrinterDataEx;
1831 // #else
1832 // #...
1833 // #endif // !UNICODE
1834
1835 extern(Windows) export DWORD DeletePrinterDataA(
1836 HANDLE hPrinter,
1837 LPSTR pValueName
1838 );
1839 extern(Windows) export DWORD DeletePrinterDataW(
1840 HANDLE hPrinter,
1841 LPWSTR pValueName
1842 );
1843 // #ifdef UNICODE
1844 alias DeletePrinterDataW DeletePrinterData;
1845 // #else
1846 // #...
1847 // #endif // !UNICODE
1848
1849 extern(Windows) export DWORD DeletePrinterDataExA(
1850 HANDLE hPrinter,
1851 LPCSTR pKeyName,
1852 LPCSTR pValueName
1853 );
1854 extern(Windows) export DWORD DeletePrinterDataExW(
1855 HANDLE hPrinter,
1856 LPCWSTR pKeyName,
1857 LPCWSTR pValueName
1858 );
1859 // #ifdef UNICODE
1860 alias DeletePrinterDataExW DeletePrinterDataEx;
1861 // #else
1862 // #...
1863 // #endif // !UNICODE
1864
1865 extern(Windows) export DWORD DeletePrinterKeyA(
1866 HANDLE hPrinter,
1867 LPCSTR pKeyName
1868 );
1869 extern(Windows) export DWORD DeletePrinterKeyW(
1870 HANDLE hPrinter,
1871 LPCWSTR pKeyName
1872 );
1873 // #ifdef UNICODE
1874 alias DeletePrinterKeyW DeletePrinterKey;
1875 // #else
1876 // #...
1877 // #endif // !UNICODE
1878
1879 enum : uint { PRINTER_NOTIFY_TYPE = 0x00 }
1880 enum : uint { JOB_NOTIFY_TYPE = 0x01 }
1881
1882 enum : uint { PRINTER_NOTIFY_FIELD_SERVER_NAME = 0x00 }
1883 enum : uint { PRINTER_NOTIFY_FIELD_PRINTER_NAME = 0x01 }
1884 enum : uint { PRINTER_NOTIFY_FIELD_SHARE_NAME = 0x02 }
1885 enum : uint { PRINTER_NOTIFY_FIELD_PORT_NAME = 0x03 }
1886 enum : uint { PRINTER_NOTIFY_FIELD_DRIVER_NAME = 0x04 }
1887 enum : uint { PRINTER_NOTIFY_FIELD_COMMENT = 0x05 }
1888 enum : uint { PRINTER_NOTIFY_FIELD_LOCATION = 0x06 }
1889 enum : uint { PRINTER_NOTIFY_FIELD_DEVMODE = 0x07 }
1890 enum : uint { PRINTER_NOTIFY_FIELD_SEPFILE = 0x08 }
1891 enum : uint { PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR = 0x09 }
1892 enum : uint { PRINTER_NOTIFY_FIELD_PARAMETERS = 0x0A }
1893 enum : uint { PRINTER_NOTIFY_FIELD_DATATYPE = 0x0B }
1894 enum : uint { PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C }
1895 enum : uint { PRINTER_NOTIFY_FIELD_ATTRIBUTES = 0x0D }
1896 enum : uint { PRINTER_NOTIFY_FIELD_PRIORITY = 0x0E }
1897 enum : uint { PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY = 0x0F }
1898 enum : uint { PRINTER_NOTIFY_FIELD_START_TIME = 0x10 }
1899 enum : uint { PRINTER_NOTIFY_FIELD_UNTIL_TIME = 0x11 }
1900 enum : uint { PRINTER_NOTIFY_FIELD_STATUS = 0x12 }
1901 enum : uint { PRINTER_NOTIFY_FIELD_STATUS_STRING = 0x13 }
1902 enum : uint { PRINTER_NOTIFY_FIELD_CJOBS = 0x14 }
1903 enum : uint { PRINTER_NOTIFY_FIELD_AVERAGE_PPM = 0x15 }
1904 enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_PAGES = 0x16 }
1905 enum : uint { PRINTER_NOTIFY_FIELD_PAGES_PRINTED = 0x17 }
1906 enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_BYTES = 0x18 }
1907 enum : uint { PRINTER_NOTIFY_FIELD_BYTES_PRINTED = 0x19 }
1908 enum : uint { PRINTER_NOTIFY_FIELD_OBJECT_GUID = 0x1A }
1909
1910 enum : uint { JOB_NOTIFY_FIELD_PRINTER_NAME = 0x00 }
1911 enum : uint { JOB_NOTIFY_FIELD_MACHINE_NAME = 0x01 }
1912 enum : uint { JOB_NOTIFY_FIELD_PORT_NAME = 0x02 }
1913 enum : uint { JOB_NOTIFY_FIELD_USER_NAME = 0x03 }
1914 enum : uint { JOB_NOTIFY_FIELD_NOTIFY_NAME = 0x04 }
1915 enum : uint { JOB_NOTIFY_FIELD_DATATYPE = 0x05 }
1916 enum : uint { JOB_NOTIFY_FIELD_PRINT_PROCESSOR = 0x06 }
1917 enum : uint { JOB_NOTIFY_FIELD_PARAMETERS = 0x07 }
1918 enum : uint { JOB_NOTIFY_FIELD_DRIVER_NAME = 0x08 }
1919 enum : uint { JOB_NOTIFY_FIELD_DEVMODE = 0x09 }
1920 enum : uint { JOB_NOTIFY_FIELD_STATUS = 0x0A }
1921 enum : uint { JOB_NOTIFY_FIELD_STATUS_STRING = 0x0B }
1922 enum : uint { JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C }
1923 enum : uint { JOB_NOTIFY_FIELD_DOCUMENT = 0x0D }
1924 enum : uint { JOB_NOTIFY_FIELD_PRIORITY = 0x0E }
1925 enum : uint { JOB_NOTIFY_FIELD_POSITION = 0x0F }
1926 enum : uint { JOB_NOTIFY_FIELD_SUBMITTED = 0x10 }
1927 enum : uint { JOB_NOTIFY_FIELD_START_TIME = 0x11 }
1928 enum : uint { JOB_NOTIFY_FIELD_UNTIL_TIME = 0x12 }
1929 enum : uint { JOB_NOTIFY_FIELD_TIME = 0x13 }
1930 enum : uint { JOB_NOTIFY_FIELD_TOTAL_PAGES = 0x14 }
1931 enum : uint { JOB_NOTIFY_FIELD_PAGES_PRINTED = 0x15 }
1932 enum : uint { JOB_NOTIFY_FIELD_TOTAL_BYTES = 0x16 }
1933 enum : uint { JOB_NOTIFY_FIELD_BYTES_PRINTED = 0x17 }
1934
1935 struct _PRINTER_NOTIFY_OPTIONS_TYPE {
1936 WORD Type;
1937 WORD Reserved0;
1938 DWORD Reserved1;
1939 DWORD Reserved2;
1940 DWORD Count;
1941 PWORD pFields;
1942 }
1943 alias _PRINTER_NOTIFY_OPTIONS_TYPE PRINTER_NOTIFY_OPTIONS_TYPE;
1944 alias _PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE;
1945 alias _PRINTER_NOTIFY_OPTIONS_TYPE* LPPRINTER_NOTIFY_OPTIONS_TYPE;
1946
1947 enum : uint { PRINTER_NOTIFY_OPTIONS_REFRESH = 0x01 }
1948
1949 struct _PRINTER_NOTIFY_OPTIONS {
1950 DWORD Version;
1951 DWORD Flags;
1952 DWORD Count;
1953 PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
1954 }
1955 alias _PRINTER_NOTIFY_OPTIONS PRINTER_NOTIFY_OPTIONS;
1956 alias _PRINTER_NOTIFY_OPTIONS* PPRINTER_NOTIFY_OPTIONS;
1957 alias _PRINTER_NOTIFY_OPTIONS* LPPRINTER_NOTIFY_OPTIONS;
1958
1959 enum : uint { PRINTER_NOTIFY_INFO_DISCARDED = 0x01 }
1960
1961 struct _PRINTER_NOTIFY_INFO_DATA {
1962 WORD Type;
1963 WORD Field;
1964 DWORD Reserved;
1965 DWORD Id;
1966 union {
1967 DWORD adwData[2];
1968 struct {
1969 DWORD cbBuf;
1970 LPVOID pBuf;
1971 }
1972
1973 }
1974
1975 }
1976 alias _PRINTER_NOTIFY_INFO_DATA PRINTER_NOTIFY_INFO_DATA;
1977 alias _PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA;
1978 alias _PRINTER_NOTIFY_INFO_DATA* LPPRINTER_NOTIFY_INFO_DATA;
1979
1980 struct _PRINTER_NOTIFY_INFO {
1981 DWORD Version;
1982 DWORD Flags;
1983 DWORD Count;
1984 PRINTER_NOTIFY_INFO_DATA aData[1];
1985 }
1986 alias _PRINTER_NOTIFY_INFO PRINTER_NOTIFY_INFO;
1987 alias _PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO;
1988 alias _PRINTER_NOTIFY_INFO* LPPRINTER_NOTIFY_INFO;
1989
1990 struct _BINARY_CONTAINER {
1991 DWORD cbBuf;
1992 LPBYTE pData;
1993 }
1994 alias _BINARY_CONTAINER BINARY_CONTAINER;
1995 alias _BINARY_CONTAINER* PBINARY_CONTAINER;
1996
1997 struct _BIDI_DATA {
1998 DWORD dwBidiType;
1999 union {
2000 BOOL bData;
2001 LONG iData;
2002 LPWSTR sData;
2003 FLOAT fData;
2004 BINARY_CONTAINER biData;
2005 }
2006
2007 }
2008 alias _BIDI_DATA BIDI_DATA;
2009 alias _BIDI_DATA* PBIDI_DATA;
2010 alias _BIDI_DATA* LPBIDI_DATA;
2011
2012 struct _BIDI_REQUEST_DATA {
2013 DWORD dwReqNumber;
2014 LPWSTR pSchema;
2015 BIDI_DATA data;
2016 }
2017 alias _BIDI_REQUEST_DATA BIDI_REQUEST_DATA;
2018 alias _BIDI_REQUEST_DATA* PBIDI_REQUEST_DATA;
2019 alias _BIDI_REQUEST_DATA* LPBIDI_REQUEST_DATA;
2020
2021 struct _BIDI_REQUEST_CONTAINER {
2022 DWORD Version;
2023 DWORD Flags;
2024 DWORD Count;
2025 BIDI_REQUEST_DATA aData[ 1 ];
2026 }
2027 alias _BIDI_REQUEST_CONTAINER BIDI_REQUEST_CONTAINER;
2028 alias _BIDI_REQUEST_CONTAINER* PBIDI_REQUEST_CONTAINER;
2029 alias _BIDI_REQUEST_CONTAINER* LPBIDI_REQUEST_CONTAINER;
2030
2031 struct _BIDI_RESPONSE_DATA {
2032 DWORD dwResult;
2033 DWORD dwReqNumber;
2034 LPWSTR pSchema;
2035 BIDI_DATA data;
2036 }
2037 alias _BIDI_RESPONSE_DATA BIDI_RESPONSE_DATA;
2038 alias _BIDI_RESPONSE_DATA* PBIDI_RESPONSE_DATA;
2039 alias _BIDI_RESPONSE_DATA* LPBIDI_RESPONSE_DATA;
2040
2041 struct _BIDI_RESPONSE_CONTAINER {
2042 DWORD Version;
2043 DWORD Flags;
2044 DWORD Count;
2045 BIDI_RESPONSE_DATA aData[ 1 ];
2046 }
2047 alias _BIDI_RESPONSE_CONTAINER BIDI_RESPONSE_CONTAINER;
2048 alias _BIDI_RESPONSE_CONTAINER* PBIDI_RESPONSE_CONTAINER;
2049 alias _BIDI_RESPONSE_CONTAINER* LPBIDI_RESPONSE_CONTAINER;
2050
2051 const wchar[] BIDI_ACTION_ENUM_SCHEMA = "EnumSchema";
2052 const wchar[] BIDI_ACTION_GET = "Get";
2053 const wchar[] BIDI_ACTION_SET = "Set";
2054 const wchar[] BIDI_ACTION_GET_ALL = "GetAll";
2055
2056 enum _0 {
2057 BIDI_NULL = 0,
2058 BIDI_INT = 1,
2059 BIDI_FLOAT = 2,
2060 BIDI_BOOL = 3,
2061 BIDI_STRING = 4,
2062 BIDI_TEXT = 5,
2063 BIDI_ENUM = 6,
2064 BIDI_BLOB = 7,
2065 }
2066 alias _0 BIDI_TYPE;
2067
2068 enum : uint { BIDI_ACCESS_ADMINISTRATOR = 0x1 }
2069 enum : uint { BIDI_ACCESS_USER = 0x2 }
2070
2071 enum : uint { ERROR_BIDI_STATUS_OK = 0 }
2072 alias ERROR_NOT_SUPPORTED ERROR_BIDI_NOT_SUPPORTED;
2073
2074 enum : uint { ERROR_BIDI_ERROR_BASE = 13000 }
2075 const uint ERROR_BIDI_STATUS_WARNING = ERROR_BIDI_ERROR_BASE + 1;
2076 const uint ERROR_BIDI_SCHEMA_READ_ONLY = ERROR_BIDI_ERROR_BASE + 2;
2077 const uint ERROR_BIDI_SERVER_OFFLINE = ERROR_BIDI_ERROR_BASE + 3;
2078 const uint ERROR_BIDI_DEVICE_OFFLINE = ERROR_BIDI_ERROR_BASE + 4;
2079 const uint ERROR_BIDI_SCHEMA_NOT_SUPPORTED = ERROR_BIDI_ERROR_BASE + 5;
2080
2081 extern(Windows) export DWORD WaitForPrinterChange(
2082 HANDLE hPrinter,
2083 DWORD Flags
2084 );
2085
2086 extern(Windows) export HANDLE FindFirstPrinterChangeNotification(
2087 HANDLE hPrinter,
2088 DWORD fdwFlags,
2089 DWORD fdwOptions,
2090 LPVOID pPrinterNotifyOptions
2091 );
2092
2093 extern(Windows) export BOOL FindNextPrinterChangeNotification(
2094 HANDLE hChange,
2095 PDWORD pdwChange,
2096 LPVOID pvReserved,
2097 LPVOID *ppPrinterNotifyInfo
2098 );
2099
2100 extern(Windows) export BOOL FreePrinterNotifyInfo(
2101 PPRINTER_NOTIFY_INFO pPrinterNotifyInfo
2102 );
2103
2104 extern(Windows) export BOOL FindClosePrinterChangeNotification(
2105 HANDLE hChange
2106 );
2107
2108 enum : uint { PRINTER_CHANGE_ADD_PRINTER = 0x00000001 }
2109 enum : uint { PRINTER_CHANGE_SET_PRINTER = 0x00000002 }
2110 enum : uint { PRINTER_CHANGE_DELETE_PRINTER = 0x00000004 }
2111 enum : uint { PRINTER_CHANGE_FAILED_CONNECTION_PRINTER = 0x00000008 }
2112 enum : uint { PRINTER_CHANGE_PRINTER = 0x000000FF }
2113 enum : uint { PRINTER_CHANGE_ADD_JOB = 0x00000100 }
2114 enum : uint { PRINTER_CHANGE_SET_JOB = 0x00000200 }
2115 enum : uint { PRINTER_CHANGE_DELETE_JOB = 0x00000400 }
2116 enum : uint { PRINTER_CHANGE_WRITE_JOB = 0x00000800 }
2117 enum : uint { PRINTER_CHANGE_JOB = 0x0000FF00 }
2118 enum : uint { PRINTER_CHANGE_ADD_FORM = 0x00010000 }
2119 enum : uint { PRINTER_CHANGE_SET_FORM = 0x00020000 }
2120 enum : uint { PRINTER_CHANGE_DELETE_FORM = 0x00040000 }
2121 enum : uint { PRINTER_CHANGE_FORM = 0x00070000 }
2122 enum : uint { PRINTER_CHANGE_ADD_PORT = 0x00100000 }
2123 enum : uint { PRINTER_CHANGE_CONFIGURE_PORT = 0x00200000 }
2124 enum : uint { PRINTER_CHANGE_DELETE_PORT = 0x00400000 }
2125 enum : uint { PRINTER_CHANGE_PORT = 0x00700000 }
2126 enum : uint { PRINTER_CHANGE_ADD_PRINT_PROCESSOR = 0x01000000 }
2127 enum : uint { PRINTER_CHANGE_DELETE_PRINT_PROCESSOR = 0x04000000 }
2128 enum : uint { PRINTER_CHANGE_PRINT_PROCESSOR = 0x07000000 }
2129 enum : uint { PRINTER_CHANGE_ADD_PRINTER_DRIVER = 0x10000000 }
2130 enum : uint { PRINTER_CHANGE_SET_PRINTER_DRIVER = 0x20000000 }
2131 enum : uint { PRINTER_CHANGE_DELETE_PRINTER_DRIVER = 0x40000000 }
2132 enum : uint { PRINTER_CHANGE_PRINTER_DRIVER = 0x70000000 }
2133 enum : uint { PRINTER_CHANGE_TIMEOUT = 0x80000000 }
2134 enum : uint { PRINTER_CHANGE_ALL = 0x7777FFFF }
2135
2136 extern(Windows) export DWORD PrinterMessageBoxA(
2137 HANDLE hPrinter,
2138 DWORD Error,
2139 HWND hWnd,
2140 LPSTR pText,
2141 LPSTR pCaption,
2142 DWORD dwType
2143 );
2144 extern(Windows) export DWORD PrinterMessageBoxW(
2145 HANDLE hPrinter,
2146 DWORD Error,
2147 HWND hWnd,
2148 LPWSTR pText,
2149 LPWSTR pCaption,
2150 DWORD dwType
2151 );
2152 // #ifdef UNICODE
2153 alias PrinterMessageBoxW PrinterMessageBox;
2154 // #else
2155 // #...
2156 // #endif // !UNICODE
2157
2158 enum : uint { PRINTER_ERROR_INFORMATION = 0x80000000 }
2159 enum : uint { PRINTER_ERROR_WARNING = 0x40000000 }
2160 enum : uint { PRINTER_ERROR_SEVERE = 0x20000000 }
2161
2162 enum : uint { PRINTER_ERROR_OUTOFPAPER = 0x00000001 }
2163 enum : uint { PRINTER_ERROR_JAM = 0x00000002 }
2164 enum : uint { PRINTER_ERROR_OUTOFTONER = 0x00000004 }
2165
2166 extern(Windows) export BOOL ClosePrinter(
2167 HANDLE hPrinter
2168 );
2169
2170 extern(Windows) export BOOL AddFormA(
2171 HANDLE hPrinter,
2172 DWORD Level,
2173 LPBYTE pForm
2174 );
2175 extern(Windows) export BOOL AddFormW(
2176 HANDLE hPrinter,
2177 DWORD Level,
2178 LPBYTE pForm
2179 );
2180 // #ifdef UNICODE
2181 alias AddFormW AddForm;
2182 // #else
2183 // #...
2184 // #endif // !UNICODE
2185
2186 extern(Windows) export BOOL DeleteFormA(
2187 HANDLE hPrinter,
2188 LPSTR pFormName
2189 );
2190 extern(Windows) export BOOL DeleteFormW(
2191 HANDLE hPrinter,
2192 LPWSTR pFormName
2193 );
2194 // #ifdef UNICODE
2195 alias DeleteFormW DeleteForm;
2196 // #else
2197 // #...
2198 // #endif // !UNICODE
2199
2200 extern(Windows) export BOOL GetFormA(
2201 HANDLE hPrinter,
2202 LPSTR pFormName,
2203 DWORD Level,
2204 LPBYTE pForm,
2205 DWORD cbBuf,
2206 LPDWORD pcbNeeded
2207 );
2208 extern(Windows) export BOOL GetFormW(
2209 HANDLE hPrinter,
2210 LPWSTR pFormName,
2211 DWORD Level,
2212 LPBYTE pForm,
2213 DWORD cbBuf,
2214 LPDWORD pcbNeeded
2215 );
2216 // #ifdef UNICODE
2217 alias GetFormW GetForm;
2218 // #else
2219 // #...
2220 // #endif // !UNICODE
2221
2222 extern(Windows) export BOOL SetFormA(
2223 HANDLE hPrinter,
2224 LPSTR pFormName,
2225 DWORD Level,
2226 LPBYTE pForm
2227 );
2228 extern(Windows) export BOOL SetFormW(
2229 HANDLE hPrinter,
2230 LPWSTR pFormName,
2231 DWORD Level,
2232 LPBYTE pForm
2233 );
2234 // #ifdef UNICODE
2235 alias SetFormW SetForm;
2236 // #else
2237 // #...
2238 // #endif // !UNICODE
2239
2240 extern(Windows) export BOOL EnumFormsA(
2241 HANDLE hPrinter,
2242 DWORD Level,
2243 LPBYTE pForm,
2244 DWORD cbBuf,
2245 LPDWORD pcbNeeded,
2246 LPDWORD pcReturned
2247 );
2248 extern(Windows) export BOOL EnumFormsW(
2249 HANDLE hPrinter,
2250 DWORD Level,
2251 LPBYTE pForm,
2252 DWORD cbBuf,
2253 LPDWORD pcbNeeded,
2254 LPDWORD pcReturned
2255 );
2256 // #ifdef UNICODE
2257 alias EnumFormsW EnumForms;
2258 // #else
2259 // #...
2260 // #endif // !UNICODE
2261
2262 extern(Windows) export BOOL EnumMonitorsA(
2263 LPSTR pName,
2264 DWORD Level,
2265 LPBYTE pMonitors,
2266 DWORD cbBuf,
2267 LPDWORD pcbNeeded,
2268 LPDWORD pcReturned
2269 );
2270 extern(Windows) export BOOL EnumMonitorsW(
2271 LPWSTR pName,
2272 DWORD Level,
2273 LPBYTE pMonitors,
2274 DWORD cbBuf,
2275 LPDWORD pcbNeeded,
2276 LPDWORD pcReturned
2277 );
2278 // #ifdef UNICODE
2279 alias EnumMonitorsW EnumMonitors;
2280 // #else
2281 // #...
2282 // #endif // !UNICODE
2283
2284 extern(Windows) export BOOL AddMonitorA(
2285 LPSTR pName,
2286 DWORD Level,
2287 LPBYTE pMonitors
2288 );
2289 extern(Windows) export BOOL AddMonitorW(
2290 LPWSTR pName,
2291 DWORD Level,
2292 LPBYTE pMonitors
2293 );
2294 // #ifdef UNICODE
2295 alias AddMonitorW AddMonitor;
2296 // #else
2297 // #...
2298 // #endif // !UNICODE
2299
2300 extern(Windows) export BOOL DeleteMonitorA(
2301 LPSTR pName,
2302 LPSTR pEnvironment,
2303 LPSTR pMonitorName
2304 );
2305 extern(Windows) export BOOL DeleteMonitorW(
2306 LPWSTR pName,
2307 LPWSTR pEnvironment,
2308 LPWSTR pMonitorName
2309 );
2310 // #ifdef UNICODE
2311 alias DeleteMonitorW DeleteMonitor;
2312 // #else
2313 // #...
2314 // #endif // !UNICODE
2315
2316 extern(Windows) export BOOL EnumPortsA(
2317 LPSTR pName,
2318 DWORD Level,
2319 LPBYTE pPorts,
2320 DWORD cbBuf,
2321 LPDWORD pcbNeeded,
2322 LPDWORD pcReturned
2323 );
2324 extern(Windows) export BOOL EnumPortsW(
2325 LPWSTR pName,
2326 DWORD Level,
2327 LPBYTE pPorts,
2328 DWORD cbBuf,
2329 LPDWORD pcbNeeded,
2330 LPDWORD pcReturned
2331 );
2332 // #ifdef UNICODE
2333 alias EnumPortsW EnumPorts;
2334 // #else
2335 // #...
2336 // #endif // !UNICODE
2337
2338 extern(Windows) export BOOL AddPortA(
2339 LPSTR pName,
2340 HWND hWnd,
2341 LPSTR pMonitorName
2342 );
2343 extern(Windows) export BOOL AddPortW(
2344 LPWSTR pName,
2345 HWND hWnd,
2346 LPWSTR pMonitorName
2347 );
2348 // #ifdef UNICODE
2349 alias AddPortW AddPort;
2350 // #else
2351 // #...
2352 // #endif // !UNICODE
2353
2354 extern(Windows) export BOOL ConfigurePortA(
2355 LPSTR pName,
2356 HWND hWnd,
2357 LPSTR pPortName
2358 );
2359 extern(Windows) export BOOL ConfigurePortW(
2360 LPWSTR pName,
2361 HWND hWnd,
2362 LPWSTR pPortName
2363 );
2364 // #ifdef UNICODE
2365 alias ConfigurePortW ConfigurePort;
2366 // #else
2367 // #...
2368 // #endif // !UNICODE
2369
2370 extern(Windows) export BOOL DeletePortA(
2371 LPSTR pName,
2372 HWND hWnd,
2373 LPSTR pPortName
2374 );
2375 extern(Windows) export BOOL DeletePortW(
2376 LPWSTR pName,
2377 HWND hWnd,
2378 LPWSTR pPortName
2379 );
2380 // #ifdef UNICODE
2381 alias DeletePortW DeletePort;
2382 // #else
2383 // #...
2384 // #endif // !UNICODE
2385
2386 extern(Windows) export BOOL XcvDataW(
2387 HANDLE hXcv,
2388 PCWSTR pszDataName,
2389 PBYTE pInputData,
2390 DWORD cbInputData,
2391 PBYTE pOutputData,
2392 DWORD cbOutputData,
2393 PDWORD pcbOutputNeeded,
2394 PDWORD pdwStatus
2395 );
2396 alias XcvDataW XcvData;
2397
2398 extern(Windows) export BOOL GetDefaultPrinterA(
2399 LPSTR pszBuffer,
2400 LPDWORD pcchBuffer
2401 );
2402 extern(Windows) export BOOL GetDefaultPrinterW(
2403 LPWSTR pszBuffer,
2404 LPDWORD pcchBuffer
2405 );
2406 // #ifdef UNICODE
2407 alias GetDefaultPrinterW GetDefaultPrinter;
2408 // #else
2409 // #...
2410 // #endif // !UNICODE
2411
2412 extern(Windows) export BOOL SetDefaultPrinterA(
2413 LPCSTR pszPrinter
2414 );
2415 extern(Windows) export BOOL SetDefaultPrinterW(
2416 LPCWSTR pszPrinter
2417 );
2418 // #ifdef UNICODE
2419 alias SetDefaultPrinterW SetDefaultPrinter;
2420 // #else
2421 // #...
2422 // #endif // !UNICODE
2423
2424 extern(Windows) export BOOL SetPortA(
2425 LPSTR pName,
2426 LPSTR pPortName,
2427 DWORD dwLevel,
2428 LPBYTE pPortInfo
2429 );
2430 extern(Windows) export BOOL SetPortW(
2431 LPWSTR pName,
2432 LPWSTR pPortName,
2433 DWORD dwLevel,
2434 LPBYTE pPortInfo
2435 );
2436 // #ifdef UNICODE
2437 alias SetPortW SetPort;
2438 // #else
2439 // #...
2440 // #endif // !UNICODE
2441
2442 extern(Windows) export BOOL AddPrinterConnectionA(
2443 LPSTR pName
2444 );
2445 extern(Windows) export BOOL AddPrinterConnectionW(
2446 LPWSTR pName
2447 );
2448 // #ifdef UNICODE
2449 alias AddPrinterConnectionW AddPrinterConnection;
2450 // #else
2451 // #...
2452 // #endif // !UNICODE
2453
2454 extern(Windows) export BOOL DeletePrinterConnectionA(
2455 LPSTR pName
2456 );
2457 extern(Windows) export BOOL DeletePrinterConnectionW(
2458 LPWSTR pName
2459 );
2460 // #ifdef UNICODE
2461 alias DeletePrinterConnectionW DeletePrinterConnection;
2462 // #else
2463 // #...
2464 // #endif // !UNICODE
2465
2466 extern(Windows) export HANDLE ConnectToPrinterDlg(
2467 HWND hwnd,
2468 DWORD Flags
2469 );
2470
2471 struct _PROVIDOR_INFO_1A {
2472 LPSTR pName;
2473 LPSTR pEnvironment;
2474 LPSTR pDLLName;
2475 }
2476 alias _PROVIDOR_INFO_1A PROVIDOR_INFO_1A;
2477 alias _PROVIDOR_INFO_1A* PPROVIDOR_INFO_1A;
2478 alias _PROVIDOR_INFO_1A* LPPROVIDOR_INFO_1A;
2479
2480 struct _PROVIDOR_INFO_1W {
2481 LPWSTR pName;
2482 LPWSTR pEnvironment;
2483 LPWSTR pDLLName;
2484 }
2485 alias _PROVIDOR_INFO_1W PROVIDOR_INFO_1W;
2486 alias _PROVIDOR_INFO_1W* PPROVIDOR_INFO_1W;
2487 alias _PROVIDOR_INFO_1W* LPPROVIDOR_INFO_1W;
2488
2489 // #ifdef UNICODE
2490 alias PROVIDOR_INFO_1W PROVIDOR_INFO_1;
2491 alias PPROVIDOR_INFO_1W PPROVIDOR_INFO_1;
2492 alias LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1;
2493 // #else
2494 // ...
2495 // #endif // UNICODE
2496
2497 struct _PROVIDOR_INFO_2A {
2498 LPSTR pOrder;
2499 }
2500 alias _PROVIDOR_INFO_2A PROVIDOR_INFO_2A;
2501 alias _PROVIDOR_INFO_2A* PPROVIDOR_INFO_2A;
2502 alias _PROVIDOR_INFO_2A* LPPROVIDOR_INFO_2A;
2503
2504 struct _PROVIDOR_INFO_2W {
2505 LPWSTR pOrder;
2506 }
2507 alias _PROVIDOR_INFO_2W PROVIDOR_INFO_2W;
2508 alias _PROVIDOR_INFO_2W* PPROVIDOR_INFO_2W;
2509 alias _PROVIDOR_INFO_2W* LPPROVIDOR_INFO_2W;
2510
2511 // #ifdef UNICODE
2512 alias PROVIDOR_INFO_2W PROVIDOR_INFO_2;
2513 alias PPROVIDOR_INFO_2W PPROVIDOR_INFO_2;
2514 alias LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2;
2515 // #else
2516 // ...
2517 // #endif // UNICODE
2518
2519 extern(Windows) export BOOL AddPrintProvidorA(
2520 LPSTR pName,
2521 DWORD level,
2522 LPBYTE pProvidorInfo
2523 );
2524 extern(Windows) export BOOL AddPrintProvidorW(
2525 LPWSTR pName,
2526 DWORD level,
2527 LPBYTE pProvidorInfo
2528 );
2529 // #ifdef UNICODE
2530 alias AddPrintProvidorW AddPrintProvidor;
2531 // #else
2532 // #...
2533 // #endif // !UNICODE
2534
2535 extern(Windows) export BOOL DeletePrintProvidorA(
2536 LPSTR pName,
2537 LPSTR pEnvironment,
2538 LPSTR pPrintProvidorName
2539 );
2540 extern(Windows) export BOOL DeletePrintProvidorW(
2541 LPWSTR pName,
2542 LPWSTR pEnvironment,
2543 LPWSTR pPrintProvidorName
2544 );
2545 // #ifdef UNICODE
2546 alias DeletePrintProvidorW DeletePrintProvidor;
2547 // #else
2548 // #...
2549 // #endif // !UNICODE
2550
2551 const TCHAR[] SPLREG_DEFAULT_SPOOL_DIRECTORY = "DefaultSpoolDirectory";
2552 const TCHAR[] SPLREG_PORT_THREAD_PRIORITY_DEFAULT = "PortThreadPriorityDefault";
2553 const TCHAR[] SPLREG_PORT_THREAD_PRIORITY = "PortThreadPriority";
2554 const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT = "SchedulerThreadPriorityDefault";
2555 const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY = "SchedulerThreadPriority";
2556 const TCHAR[] SPLREG_BEEP_ENABLED = "BeepEnabled";
2557 const TCHAR[] SPLREG_NET_POPUP = "NetPopup";
2558 const TCHAR[] SPLREG_RETRY_POPUP = "RetryPopup";
2559 const TCHAR[] SPLREG_NET_POPUP_TO_COMPUTER = "NetPopupToComputer";
2560 const TCHAR[] SPLREG_EVENT_LOG = "EventLog";
2561 const TCHAR[] SPLREG_MAJOR_VERSION = "MajorVersion";
2562 const TCHAR[] SPLREG_MINOR_VERSION = "MinorVersion";
2563 const TCHAR[] SPLREG_ARCHITECTURE = "Architecture";
2564 const TCHAR[] SPLREG_OS_VERSION = "OSVersion";
2565 const TCHAR[] SPLREG_OS_VERSIONEX = "OSVersionEx";
2566 const TCHAR[] SPLREG_DS_PRESENT = "DsPresent";
2567 const TCHAR[] SPLREG_DS_PRESENT_FOR_USER = "DsPresentForUser";
2568 const TCHAR[] SPLREG_REMOTE_FAX = "RemoteFax";
2569 const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ERROR = "RestartJobOnPoolError";
2570 const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ENABLED = "RestartJobOnPoolEnabled";
2571 const TCHAR[] SPLREG_DNS_MACHINE_NAME = "DNSMachineName";
2572
2573 enum : uint { SERVER_ACCESS_ADMINISTER = 0x00000001 }
2574 enum : uint { SERVER_ACCESS_ENUMERATE = 0x00000002 }
2575
2576 enum : uint { PRINTER_ACCESS_ADMINISTER = 0x00000004 }
2577 enum : uint { PRINTER_ACCESS_USE = 0x00000008 }
2578
2579 enum : uint { JOB_ACCESS_ADMINISTER = 0x00000010 }
2580
2581 const uint SERVER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE;
2582
2583 const uint SERVER_READ = STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE;
2584
2585 const uint SERVER_WRITE = STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE;
2586
2587 const uint SERVER_EXECUTE = STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE;
2588
2589 const uint PRINTER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE;
2590
2591 const uint PRINTER_READ = STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE;
2592
2593 const uint PRINTER_WRITE = STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE;
2594
2595 const uint PRINTER_EXECUTE = STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE;
2596
2597 const uint JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER;
2598
2599 const uint JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER;
2600
2601 const uint JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER;
2602
2603 const uint JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER;
2604
2605 const TCHAR[] SPLDS_SPOOLER_KEY = "DsSpooler";
2606 const TCHAR[] SPLDS_DRIVER_KEY = "DsDriver";
2607 const TCHAR[] SPLDS_USER_KEY = "DsUser";
2608
2609 const TCHAR[] SPLDS_ASSET_NUMBER = "assetNumber";
2610 const TCHAR[] SPLDS_BYTES_PER_MINUTE = "bytesPerMinute";
2611 const TCHAR[] SPLDS_DESCRIPTION = "description";
2612 const TCHAR[] SPLDS_DRIVER_NAME = "driverName";
2613 const TCHAR[] SPLDS_DRIVER_VERSION = "driverVersion";
2614 const TCHAR[] SPLDS_LOCATION = "location";
2615 const TCHAR[] SPLDS_PORT_NAME = "portName";
2616 const TCHAR[] SPLDS_PRINT_ATTRIBUTES = "printAttributes";
2617 const TCHAR[] SPLDS_PRINT_BIN_NAMES = "printBinNames";
2618 const TCHAR[] SPLDS_PRINT_COLLATE = "printCollate";
2619 const TCHAR[] SPLDS_PRINT_COLOR = "printColor";
2620 const TCHAR[] SPLDS_PRINT_DUPLEX_SUPPORTED = "printDuplexSupported";
2621 const TCHAR[] SPLDS_PRINT_END_TIME = "printEndTime";
2622 const TCHAR[] SPLDS_PRINTER_CLASS = "printQueue";
2623 const TCHAR[] SPLDS_PRINTER_NAME = "printerName";
2624 const TCHAR[] SPLDS_PRINT_KEEP_PRINTED_JOBS = "printKeepPrintedJobs";
2625 const TCHAR[] SPLDS_PRINT_LANGUAGE = "printLanguage";
2626 const TCHAR[] SPLDS_PRINT_MAC_ADDRESS = "printMACAddress";
2627 const TCHAR[] SPLDS_PRINT_MAX_X_EXTENT = "printMaxXExtent";
2628 const TCHAR[] SPLDS_PRINT_MAX_Y_EXTENT = "printMaxYExtent";
2629 const TCHAR[] SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED = "printMaxResolutionSupported";
2630 const TCHAR[] SPLDS_PRINT_MEDIA_READY = "printMediaReady";
2631 const TCHAR[] SPLDS_PRINT_MEDIA_SUPPORTED = "printMediaSupported";
2632 const TCHAR[] SPLDS_PRINT_MEMORY = "printMemory";
2633 const TCHAR[] SPLDS_PRINT_MIN_X_EXTENT = "printMinXExtent";
2634 const TCHAR[] SPLDS_PRINT_MIN_Y_EXTENT = "printMinYExtent";
2635 const TCHAR[] SPLDS_PRINT_NETWORK_ADDRESS = "printNetworkAddress";
2636 const TCHAR[] SPLDS_PRINT_NOTIFY = "printNotify";
2637 const TCHAR[] SPLDS_PRINT_NUMBER_UP = "printNumberUp";
2638 const TCHAR[] SPLDS_PRINT_ORIENTATIONS_SUPPORTED = "printOrientationsSupported";
2639 const TCHAR[] SPLDS_PRINT_OWNER = "printOwner";
2640 const TCHAR[] SPLDS_PRINT_PAGES_PER_MINUTE = "printPagesPerMinute";
2641 const TCHAR[] SPLDS_PRINT_RATE = "printRate";
2642 const TCHAR[] SPLDS_PRINT_RATE_UNIT = "printRateUnit";
2643 const TCHAR[] SPLDS_PRINT_SEPARATOR_FILE = "printSeparatorFile";
2644 const TCHAR[] SPLDS_PRINT_SHARE_NAME = "printShareName";
2645 const TCHAR[] SPLDS_PRINT_SPOOLING = "printSpooling";
2646 const TCHAR[] SPLDS_PRINT_STAPLING_SUPPORTED = "printStaplingSupported";
2647 const TCHAR[] SPLDS_PRINT_START_TIME = "printStartTime";
2648 const TCHAR[] SPLDS_PRINT_STATUS = "printStatus";
2649 const TCHAR[] SPLDS_PRIORITY = "priority";
2650 const TCHAR[] SPLDS_SERVER_NAME = "serverName";
2651 const TCHAR[] SPLDS_SHORT_SERVER_NAME = "shortServerName";
2652 const TCHAR[] SPLDS_UNC_NAME = "uNCName";
2653 const TCHAR[] SPLDS_URL = "url";
2654 const TCHAR[] SPLDS_FLAGS = "flags";
2655 const TCHAR[] SPLDS_VERSION_NUMBER = "versionNumber";
2656
2657 const TCHAR[] SPLDS_PRINTER_NAME_ALIASES = "printerNameAliases";
2658 const TCHAR[] SPLDS_PRINTER_LOCATIONS = "printerLocations";
2659 const TCHAR[] SPLDS_PRINTER_MODEL = "printerModel";
2660
2661 // #ifdef __cplusplus
2662 // }
2663 // #endif
2664
2665 // #endif // _WINSPOOL_