1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
23 */
24
25 #ifndef _SPOOLSS_NDL_
26 #define _SPOOLSS_NDL_
27
28 #include "ndrtypes.ndl"
29 #include "security.ndl"
30
31 #define TABLE_STRING 1
32 #define TABLE_DWORD 2
33 #define TABLE_TIME 3
34 #define TABLE_DEVMODE 4
35 #define TABLE_SECURITY_DESCRIPTOR 5
36
37 #define SPOOLSS_OPNUM_EnumPrinters 0x00
38 #define SPOOLSS_OPNUM_OpenPrinter 0x01
39 #define SPOOLSS_OPNUM_GetJob 0x03
40 #define SPOOLSS_OPNUM_EnumJobs 0x04
41 #define SPOOLSS_OPNUM_DeletePrinter 0x06
42 #define SPOOLSS_OPNUM_GetPrinter 0x08
43 #define SPOOLSS_OPNUM_GetPrinterDriver 0x0b
44 #define SPOOLSS_OPNUM_DeletePrinterDriver 0x0d
45 #define SPOOLSS_OPNUM_StartDocPrinter 0x11
46 #define SPOOLSS_OPNUM_StartPagePrinter 0x12
47 #define SPOOLSS_OPNUM_WritePrinter 0x13
48 #define SPOOLSS_OPNUM_EndPagePrinter 0x14
49 #define SPOOLSS_OPNUM_AbortPrinter 0x15
50 #define SPOOLSS_OPNUM_AddJob 0x18
51 #define SPOOLSS_OPNUM_ScheduleJob 0x19
52 #define SPOOLSS_OPNUM_GetPrinterData 0x1a
53 #define SPOOLSS_OPNUM_ClosePrinter 0x1d
54 #define SPOOLSS_OPNUM_AddForm 0x1e
55 #define SPOOLSS_OPNUM_DeleteForm 0x1f
56 #define SPOOLSS_OPNUM_EndDocPrinter 0x17
57 #define SPOOLSS_OPNUM_EnumForms 0x22
58 #define SPOOLSS_OPNUM_EnumPorts 0x23
59 #define SPOOLSS_OPNUM_EnumMonitor 0x24
60 #define SPOOLSS_OPNUM_DeletePort 0x27
61 #define SPOOLSS_OPNUM_CreatePrinterIC 0x28
62 #define SPOOLSS_OPNUM_AddMonitor 0x2e
63 #define SPOOLSS_OPNUM_DeleteMonitor 0x2f
64 #define SPOOLSS_OPNUM_ResetPrinter 0x34
65 #define SPOOLSS_OPNUM_GetPrinterDriver2 0x35
66 #define SPOOLSS_OPNUM_FCPN 0x38
67 #define SPOOLSS_OPNUM_ReplyOpenPrinter 0x3a
68 #define SPOOLSS_OPNUM_ReplyClosePrinter 0x3c
69 #define SPOOLSS_OPNUM_AddPortEx 0x3d
70 #define SPOOLSS_OPNUM_RFFPCNEX 0x41
71 #define SPOOLSS_OPNUM_RRPCN 0x42
72 #define SPOOLSS_OPNUM_RFNPCNEX 0x43
73 #define SPOOLSS_OPNUM_OpenPrinterEx 0x45
74 #define SPOOLSS_OPNUM_SetPort 0x47
75 #define SPOOLSS_OPNUM_EnumPrinterData 0x48
76 #define SPOOLSS_OPNUM_EnumPrinterDataEx 0x4f
77 #define SPOOLSS_OPNUM_EnumPrinterKey 0x50
78
79 CONTEXT_HANDLE(spoolss_handle) spoolss_handle_t;
80
81 struct spoolssDevmodeContainer {
82 BYTE DevContCount;
83 SIZE_IS(DevContCount)
84 BYTE *DevMode;
85 };
86
87
88 struct spoolss_DeviceMode {
89 BYTE devicename[64];
90 WORD specversion;
91 WORD driverversion;
92 WORD size;
93 WORD driverextra_length;
94 DWORD fields;
95 WORD orientation;
96 WORD papersize;
97 WORD paperlength;
98 WORD paperwidth;
99 WORD scale;
100 WORD copies;
101 WORD defaultsource;
102 WORD printquality;
103 WORD color;
104 WORD duplex;
105 WORD yresolution;
106 WORD ttoption;
107 WORD collate;
108 BYTE formname[64];
109 WORD logpixels;
110 DWORD bitsperpel;
111 DWORD pelswidth;
112 DWORD pelsheight;
113 DWORD displayflags;
114 DWORD displayfrequency;
115 DWORD icmmethod;
116 DWORD icmintent;
117 DWORD mediatype;
118 DWORD dithertype;
119 DWORD reserved1;
120 DWORD reserved2;
121 DWORD panningwidth;
122 DWORD panningheight;
123 struct spoolssDevmodeContainer driverextra_data;
124 };
125
126 OPERATION(SPOOLSS_OPNUM_CreatePrinterIC)
127 struct spoolss_CreatePrinterIC {
128 IN spoolss_handle_t handle;
129 OUT spoolss_handle_t gdi_handle;
130 IN struct spoolssDevmodeContainer dmodeContainer;
131 OUT DWORD status;
132 };
133
134 OPERATION(SPOOLSS_OPNUM_OpenPrinter)
135 struct spoolss_OpenPrinter {
136 IN LPTSTR printer_name;
137 OUT spoolss_handle_t handle;
138 IN LPTSTR data_type;
139 /* IN struct spoolssDevmodeContainer dmodeContainer; */
140 /* IN DWORD AccessRequired; */
141 OUT DWORD status;
142 };
143
144 OPERATION(SPOOLSS_OPNUM_EnumJobs)
145 struct spoolss_EnumJobs {
146 IN spoolss_handle_t handle;
147 IN DWORD FirstJob;
148 IN DWORD NoJobs;
149 IN DWORD level;
150 IN DWORD Buf2;
151 IN DWORD BufCount;
152 SIZE_IS(BufCount)
153 OUT BYTE *pJob;
154 OUT DWORD needed;
155 OUT DWORD needed2;
156 OUT DWORD status;
157 };
158
159 OPERATION(SPOOLSS_OPNUM_DeletePrinter)
160 struct spoolss_DeletePrinter {
161 IN DWORD dontcare;
162 OUT DWORD status;
163 };
164
165 #define SPOOLSS_ARCHITECTURE_NT_X86 ( "Windows NT x86" )
166 struct spoolss_Time {
167 WORD year;
168 WORD month;
169 WORD day_of_week;
170 WORD day;
171 WORD hour;
172 WORD minute;
173 WORD second;
174 WORD millisecond;
175 };
176
177 struct spoolss_GetPrinter0 {
178 DWORD printername;
179 DWORD servername;
180 DWORD cjobs;
181 DWORD total_jobs;
182 DWORD total_bytes;
183 DWORD time0;
184 DWORD time1;
185 DWORD time2;
186 DWORD time3;
187 DWORD global_counter;
188 DWORD total_pages;
189 DWORD version;
190 DWORD ffreebuild;
191 DWORD cspooling;
192 DWORD cmaxspooling;
193 DWORD session_counter;
194 DWORD out_of_paper;
195 DWORD not_ready;
196 DWORD job_error;
197 DWORD num_processors;
198 DWORD type_processor;
199 DWORD high_part_total_bytes;
200 DWORD change_id;
201 DWORD last_error;
202 DWORD status;
203 DWORD enum_network_printers;
204 DWORD c_setprinter;
205 WORD processor_arch;
206 WORD processor_level;
207 DWORD ref;
208 DWORD reserved2;
209 DWORD reserved3;
210 };
211
212 /* bitmap spoolss_EnumPrinterFlags */
213 #define PRINTER_ENUM_DEFAULT ( 0x00000001 )
214 #define PRINTER_ENUM_LOCAL ( 0x00000002 )
215 #define PRINTER_ENUM_CONNECTIONS ( 0x00000004 )
216 #define PRINTER_ENUM_FAVORITE ( 0x00000004 )
217 #define PRINTER_ENUM_NAME ( 0x00000008 )
218 #define PRINTER_ENUM_REMOTE ( 0x00000010 )
219 #define PRINTER_ENUM_SHARED ( 0x00000020 )
220 #define PRINTER_ENUM_NETWORK ( 0x00000040 )
221 #define PRINTER_ENUM_EXPAND ( 0x00004000 )
222 #define PRINTER_ENUM_CONTAINER ( 0x00008000 )
223 #define PRINTER_ENUM_ICON1 ( 0x00010000 )
224 #define PRINTER_ENUM_ICON2 ( 0x00020000 )
225 #define PRINTER_ENUM_ICON3 ( 0x00040000 )
226 #define PRINTER_ENUM_ICON4 ( 0x00080000 )
227 #define PRINTER_ENUM_ICON5 ( 0x00100000 )
228 #define PRINTER_ENUM_ICON6 ( 0x00200000 )
229 #define PRINTER_ENUM_ICON7 ( 0x00400000 )
230 #define PRINTER_ENUM_ICON8 ( 0x00800000 )
231 #define PRINTER_ENUM_HIDE ( 0x01000000 )
232
233 struct spoolss_GetPrinter1 {
234 DWORD flags;
235 DWORD name;
236 DWORD description;
237 DWORD comment;
238 };
239
240 /* bitmap spoolss_PrinterAttributes */
241 #define PRINTER_ATTRIBUTE_QUEUED ( 0x00000001 )
242 #define PRINTER_ATTRIBUTE_DIRECT ( 0x00000002 )
243 #define PRINTER_ATTRIBUTE_DEFAULT ( 0x00000004 )
244 #define PRINTER_ATTRIBUTE_SHARED ( 0x00000008 )
245 #define PRINTER_ATTRIBUTE_NETWORK ( 0x00000010 )
246 #define PRINTER_ATTRIBUTE_HIDDEN ( 0x00000020 )
247 #define PRINTER_ATTRIBUTE_LOCAL ( 0x00000040 )
248 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ ( 0x00000080 )
249 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS ( 0x00000100 )
250 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST ( 0x00000200 )
251 #define PRINTER_ATTRIBUTE_WORK_OFFLINE ( 0x00000400 )
252 #define PRINTER_ATTRIBUTE_ENABLE_BIDI ( 0x00000800 )
253 #define PRINTER_ATTRIBUTE_RAW_ONLY ( 0x00001000 )
254 #define PRINTER_ATTRIBUTE_PUBLISHED ( 0x00002000 )
255 #define PRINTER_ATTRIBUTE_FAX ( 0x00004000 )
256 #define PRINTER_ATTRIBUTE_TS ( 0x00008000 )
257
258 /* bitmap spoolss_PrinterStatus */
259 #define PRINTER_STATUS_PAUSED ( 0x00000001 )
260 #define PRINTER_STATUS_ERROR ( 0x00000002 )
261 #define PRINTER_STATUS_PENDING_DELETION ( 0x00000004 )
262 #define PRINTER_STATUS_PAPER_JAM ( 0x00000008 )
263 #define PRINTER_STATUS_PAPER_OUT ( 0x00000010 )
264 #define PRINTER_STATUS_MANUAL_FEED ( 0x00000020 )
265 #define PRINTER_STATUS_PAPER_PROBLEM ( 0x00000040 )
266 #define PRINTER_STATUS_OFFLINE ( 0x00000080 )
267 #define PRINTER_STATUS_IO_ACTIVE ( 0x00000100 )
268 #define PRINTER_STATUS_BUSY ( 0x00000200 )
269 #define PRINTER_STATUS_PRINTING ( 0x00000400 )
270 #define PRINTER_STATUS_OUTPUT_BIN_FULL ( 0x00000800 )
271 #define PRINTER_STATUS_NOT_AVAILABLE ( 0x00001000 )
272 #define PRINTER_STATUS_WAITING ( 0x00002000 )
273 #define PRINTER_STATUS_PROCESSING ( 0x00004000 )
274 #define PRINTER_STATUS_INITIALIZING ( 0x00008000 )
275 #define PRINTER_STATUS_WARMING_UP ( 0x00010000 )
276 #define PRINTER_STATUS_TONER_LOW ( 0x00020000 )
277 #define PRINTER_STATUS_NO_TONER ( 0x00040000 )
278 #define PRINTER_STATUS_PAGE_PUNT ( 0x00080000 )
279 #define PRINTER_STATUS_USER_INTERVENTION ( 0x00100000 )
280 #define PRINTER_STATUS_OUT_OF_MEMORY ( 0x00200000 )
281 #define PRINTER_STATUS_DOOR_OPEN ( 0x00400000 )
282 #define PRINTER_STATUS_SERVER_UNKNOWN ( 0x00800000 )
283 #define PRINTER_STATUS_POWER_SAVE ( 0x01000000 )
284
285 struct spoolss_GetPrinter2 {
286 DWORD servername;
287 DWORD printername;
288 DWORD sharename;
289 DWORD portname;
290 DWORD drivername;
291 DWORD comment;
292 DWORD location;
293 DWORD devmode;
294 DWORD sepfile;
295 DWORD printprocessor;
296 DWORD datatype;
297 DWORD parameters;
298 DWORD secdesc;
299 DWORD attributes;
300 DWORD priority;
301 DWORD defaultpriority;
302 DWORD starttime;
303 DWORD untiltime;
304 DWORD status;
305 DWORD cjobs;
306 DWORD averageppm;
307 };
308
309 typedef struct spoolss_GetPrinter2 spoolss_GetPrinter2_t;
310
311 struct spoolss_GetPrinter3 {
312 DWORD dummy;
313 };
314
315 struct spoolss_GetPrinter4 {
316 DWORD printername;
317 DWORD servername;
318 DWORD attributes;
319 };
320
321 struct spoolss_GetPrinter5 {
322 DWORD printername;
323 DWORD portname;
324 DWORD attributes;
325 DWORD device_not_selected_timeout;
326 DWORD transmission_retry_timeout;
327 };
328
329 struct spoolss_GetPrinter6 {
330 DWORD status;
331 };
332
333 /* bitmap spoolss_DsPrintAction */
334 #define DSPRINT_PUBLISH ( 0x00000001 )
335 #define DSPRINT_UPDATE ( 0x00000002 )
336 #define DSPRINT_UNPUBLISH ( 0x00000004 )
337 #define DSPRINT_REPUBLISH ( 0x00000008 )
338 #define DSPRINT_PENDING ( 0x80000000 )
339
340 struct spoolss_GetPrinter7 {
341 DWORD guid;
342 DWORD action;
343 };
344
345 struct spoolss_GetPrinter8 {
346 DWORD flags;
347 DWORD name;
348 DWORD description;
349 DWORD comment;
350 };
351
352 union spoolss_GetPrinter_result_u {
353 UNION_INFO_ENT(0, spoolss_GetPrinter);
354 UNION_INFO_ENT(1, spoolss_GetPrinter);
355 UNION_INFO_ENT(2, spoolss_GetPrinter);
356 UNION_INFO_ENT(3, spoolss_GetPrinter);
357 UNION_INFO_ENT(4, spoolss_GetPrinter);
358 UNION_INFO_ENT(5, spoolss_GetPrinter);
359 UNION_INFO_ENT(6, spoolss_GetPrinter);
360 UNION_INFO_ENT(7, spoolss_GetPrinter);
361 UNION_INFO_ENT(8, spoolss_GetPrinter);
362 DEFAULT char *nullptr;
363 };
364
365 struct spoolss_GetPrinter_result {
366 DWORD switch_value;
367 SWITCH(switch_value)
368 union spoolss_GetPrinter_result_u ru;
369 };
370
371 struct spoolss_RPC_V2_NOTIFY_OPTIONS_TYPE {
372 WORD type;
373 WORD reserved0;
374 DWORD reserved1;
375 DWORD reserved2;
376 DWORD count;
377 SIZE_IS(count)
378 WORD *pFields;
379 };
380
381 struct spoolss_RPC_V2_NOTIFY_OPTIONS {
382 DWORD version;
383 DWORD reserved;
384 DWORD count;
385 SIZE_IS(count)
386 struct spoolss_RPC_V2_NOTIFY_OPTIONS_TYPE *ptypes;
387 };
388
389 struct SYSTEMTIME {
390 WORD year;
391 WORD month;
392 WORD dayofweek;
393 WORD day;
394 WORD hour;
395 WORD minute;
396 WORD second;
397 WORD millisecs;
398 };
399
400 struct SECURITY_CONTAINER {
401 DWORD count;
402 SIZE_IS(count)
403 BYTE *psecurity;
404 };
405
406 struct SYSTEMTIME_CONTAINER {
407 DWORD count;
408 struct SYSTEMTIME *psystemtime;
409 };
410
411 struct STRING_CONTAINER {
412 DWORD count;
413 SIZE_IS(count / 2)
414 LPTSTR pstring;
415 };
416
417 union spoolss_RPC_V2_NOTIFY_INFO_DATA_DATA {
418 CASE(TABLE_STRING)
419 struct STRING_CONTAINER pcont;
420 CASE(TABLE_DWORD)
421 DWORD data[2];
422 CASE(TABLE_TIME)
423 struct SYSTEMTIME_CONTAINER system_time;
424 CASE(TABLE_DEVMODE)
425 struct spoolssDevmodeContainer devmode;
426 CASE(TABLE_SECURITY_DESCRIPTOR)
427 struct SECURITY_CONTAINER security_descriptor;
428 };
429
430 struct spoolss_RPC_V2_NOTIFY_INFO_DATA {
431 WORD Type;
432 WORD Field;
433 DWORD Reserved;
434 DWORD Id;
435 SWITCH(Reserved & 0x0000FFFF)
436 union spoolss_RPC_V2_NOTIFY_INFO_DATA_DATA data;
437 };
438
439 struct spoolss_RPC_V2_NOTIFY_INFO {
440 DWORD Version;
441 DWORD Flags;
442 DWORD Count;
443 SIZE_IS(Count)
444 struct spoolss_RPC_V2_NOTIFY_INFO_DATA *aData;
445 };
446
447 OPERATION(SPOOLSS_OPNUM_GetPrinter)
448 struct spoolss_GetPrinter {
449 IN spoolss_handle_t handle;
450 IN DWORD switch_value;
451 IN DWORD Buf2;
452 IN DWORD BufCount;
453 SIZE_IS(BufCount)
454 OUT BYTE *Buf;
455 OUT DWORD needed;
456 OUT DWORD status;
457 };
458
459 OPERATION(SPOOLSS_OPNUM_GetPrinterData)
460 struct spoolss_GetPrinterData {
461 IN spoolss_handle_t handle;
462 IN REFERENCE LPTSTR pValueName;
463 OUT DWORD pType;
464 SIZE_IS(Size)
465 OUT REFERENCE LPBYTE Buf;
466 IN DWORD Size;
467 OUT DWORD Needed;
468 OUT DWORD status;
469 };
470
471 OPERATION(SPOOLSS_OPNUM_GetPrinterDriver)
472 struct spoolss_GetPrinterDriver {
473 IN DWORD dontcare;
474 OUT DWORD status;
475 };
476
477 OPERATION(SPOOLSS_OPNUM_DeletePrinterDriver)
478 struct spoolss_DeletePrinterDriver {
479 IN DWORD dontcare;
480 OUT DWORD status;
481 };
482
483 struct spoolss_DocInfo {
484 LPTSTR doc_name;
485 LPTSTR printer_name;
486 LPTSTR type;
487 };
488 typedef struct spoolss_DocInfo spoolss_DocInfo_t;
489
490 struct spoolss_DocInfo_Container {
491 DWORD level;
492 DWORD switch_value;
493 spoolss_DocInfo_t *DocInfoContainer;
494 };
495 typedef struct spoolss_DocInfo_Container spoolss_DocInfo_Container_t;
496
497 OPERATION(SPOOLSS_OPNUM_StartDocPrinter)
498 struct spoolss_StartDocPrinter {
499 IN spoolss_handle_t handle;
500 IN spoolss_DocInfo_Container_t dinfo;
501 OUT DWORD JobId;
502 OUT DWORD status;
503 };
504
505 OPERATION(SPOOLSS_OPNUM_AbortPrinter)
506 struct spoolss_AbortPrinter {
507 IN spoolss_handle_t handle;
508 OUT DWORD status;
509 };
510
511 OPERATION(SPOOLSS_OPNUM_EnumPorts)
512 struct spoolss_EnumPorts {
513 IN LPTSTR name;
514 IN DWORD level;
515 OUT DWORD needed;
516 OUT DWORD returned;
517 OUT DWORD status;
518 };
519
520 OPERATION(SPOOLSS_OPNUM_DeletePort)
521 struct spoolss_DeletePort {
522 IN LPTSTR name;
523 OUT DWORD status;
524 };
525
526 OPERATION(SPOOLSS_OPNUM_AddPortEx)
527 struct spoolss_AddPortEx {
528 IN LPTSTR name;
529 OUT DWORD status;
530 };
531
532 OPERATION(SPOOLSS_OPNUM_SetPort)
533 struct spoolss_SetPort {
534 IN LPTSTR name;
535 OUT DWORD status;
536 };
537
538 OPERATION(SPOOLSS_OPNUM_EnumMonitor)
539 struct spoolss_EnumMonitor {
540 IN LPTSTR name;
541 IN DWORD level;
542 OUT DWORD needed;
543 OUT DWORD returned;
544 OUT DWORD status;
545 };
546
547 OPERATION(SPOOLSS_OPNUM_AddMonitor)
548 struct spoolss_AddMonitor {
549 IN LPTSTR name;
550 OUT DWORD status;
551 };
552
553 OPERATION(SPOOLSS_OPNUM_DeleteMonitor)
554 struct spoolss_DeleteMonitor {
555 IN LPTSTR name;
556 OUT DWORD status;
557 };
558
559 OPERATION(SPOOLSS_OPNUM_ResetPrinter)
560 struct spoolss_ResetPrinter {
561 IN spoolss_handle_t handle;
562 OUT DWORD status;
563 };
564
565 OPERATION(SPOOLSS_OPNUM_StartPagePrinter)
566 struct spoolss_StartPagePrinter {
567 IN spoolss_handle_t handle;
568 OUT DWORD status;
569 };
570
571 OPERATION(SPOOLSS_OPNUM_EndPagePrinter)
572 struct spoolss_EndPagePrinter {
573 IN spoolss_handle_t handle;
574 OUT DWORD status;
575 };
576
577 OPERATION(SPOOLSS_OPNUM_WritePrinter)
578 struct spoolss_WritePrinter {
579 IN spoolss_handle_t handle;
580 IN DWORD BufCount;
581 SIZE_IS(BufCount)
582 IN REFERENCE LPBYTE pBuf;
583 OUT DWORD written;
584 OUT DWORD status;
585 };
586
587 OPERATION(SPOOLSS_OPNUM_ScheduleJob)
588 struct spoolss_ScheduleJob {
589 IN spoolss_handle_t handle;
590 IN DWORD JobId;
591 OUT DWORD status;
592 };
593
594 OPERATION(SPOOLSS_OPNUM_GetJob)
595 struct spoolss_GetJob {
596 IN spoolss_handle_t handle;
597 IN DWORD JobId;
598 IN DWORD level;
599 SIZE_IS(BufCount)
600 INOUT BYTE *pJob;
601 IN DWORD BufCount;
602 OUT DWORD needed;
603 OUT DWORD status;
604 };
605
606 OPERATION(SPOOLSS_OPNUM_AddJob)
607 struct spoolss_AddJob {
608 IN spoolss_handle_t handle;
609 IN DWORD level;
610 IN DWORD Buf2;
611 IN DWORD BufCount;
612 SIZE_IS(BufCount)
613 OUT BYTE *pAddJob;
614 OUT DWORD needed;
615 OUT DWORD status;
616 };
617
618 OPERATION(SPOOLSS_OPNUM_ClosePrinter)
619 struct spoolss_ClosePrinter {
620 IN spoolss_handle_t handle;
621 OUT spoolss_handle_t result_handle;
622 OUT DWORD status;
623 };
624
625 OPERATION(SPOOLSS_OPNUM_EndDocPrinter)
626 struct spoolss_EndDocPrinter {
627 IN spoolss_handle_t handle;
628 OUT DWORD status;
629 };
630
631 OPERATION(SPOOLSS_OPNUM_AddForm)
632 struct spoolss_AddForm {
633 IN spoolss_handle_t handle;
634 /* FORM_CONTAINER *form_container; */
635 OUT DWORD status;
636 };
637
638 OPERATION(SPOOLSS_OPNUM_DeleteForm)
639 struct spoolss_DeleteForm {
640 IN spoolss_handle_t handle;
641 /* IN REFERENCE LPTSTR form_name; */
642 OUT DWORD status;
643 };
644
645 OPERATION(SPOOLSS_OPNUM_EnumForms)
646 struct spoolss_EnumForms {
647 IN spoolss_handle_t handle;
648 IN DWORD level;
649 IN DWORD BufCount;
650 SIZE_IS(BufCount)
651 INOUT BYTE *pEnumForms;
652 OUT DWORD needed;
653 OUT DWORD pcRet;
654 OUT DWORD status;
655 };
656
657 OPERATION(SPOOLSS_OPNUM_GetPrinterDriver2)
658 struct spoolss_GetPrinterDriver2 {
659 IN DWORD dontcare;
660 OUT DWORD status;
661 };
662
663 OPERATION(SPOOLSS_OPNUM_FCPN)
664 struct spoolss_FCPN {
665 IN DWORD dontcare;
666 OUT DWORD status;
667 };
668
669 OPERATION(SPOOLSS_OPNUM_ReplyOpenPrinter)
670 struct spoolss_ReplyOpenPrinter {
671 IN DWORD dontcare;
672 OUT DWORD status;
673 };
674
675 OPERATION(SPOOLSS_OPNUM_ReplyClosePrinter)
676 struct spoolss_ReplyClosePrinter {
677 IN DWORD dontcare;
678 OUT DWORD status;
679 };
680
681
682 OPERATION(SPOOLSS_OPNUM_RFFPCNEX)
683 struct spoolss_RFFPCNEX {
684 IN spoolss_handle_t handle;
685 OUT DWORD status;
686 };
687
688 struct spoolss_infores {
689 DWORD entriesread;
690 struct spoolss_RPC_V2_NOTIFY_INFO *pinfo;
691 };
692
693 OPERATION(SPOOLSS_OPNUM_RFNPCNEX)
694 struct spoolss_RFNPCNEX {
695 IN spoolss_handle_t handle;
696 IN DWORD color;
697 IN struct spoolss_RPC_V2_NOTIFY_OPTIONS *poptions;
698 OUT struct spoolss_infores *ppinfo;
699 OUT DWORD status;
700 };
701
702 OPERATION(SPOOLSS_OPNUM_RRPCN)
703 struct spoolss_RRPCN {
704 IN DWORD dontcare;
705 OUT DWORD status;
706 };
707
708 OPERATION(SPOOLSS_OPNUM_OpenPrinterEx)
709 struct spoolss_OpenPrinterEx {
710 IN LPTSTR printer_name;
711 OUT spoolss_handle_t handle;
712 IN LPTSTR data_type;
713 /* IN struct spoolssDevmodeContainer dmodeContainer; */
714 /* IN DWORD AccessRequired; */
715 /* IN CLIENT_CONTAINER client_info; */
716 OUT DWORD status;
717 };
718
719 OPERATION(SPOOLSS_OPNUM_EnumPrinterData)
720 struct spoolss_EnumPrinterData {
721 IN DWORD dontcare;
722 OUT DWORD status;
723 };
724
725 OPERATION(SPOOLSS_OPNUM_EnumPrinterDataEx)
726 struct spoolss_EnumPrinterDataEx {
727 IN DWORD dontcare;
728 OUT DWORD status;
729 };
730
731 OPERATION(SPOOLSS_OPNUM_EnumPrinterKey)
732 struct spoolss_EnumPrinterKey {
733 IN DWORD dontcare;
734 OUT DWORD status;
735 };
736
737 /*
738 ***********************************************************************
739 * The spoolss interface definition.
740 ***********************************************************************
741 */
742
743 INTERFACE(0)
744 union spoolss_interface {
745 CASE(SPOOLSS_OPNUM_OpenPrinter)
746 struct spoolss_OpenPrinter OpenPrinter;
747
748 CASE(SPOOLSS_OPNUM_DeletePrinter)
749 struct spoolss_DeletePrinter DeletePrinter;
750
751 CASE(SPOOLSS_OPNUM_GetPrinter)
752 struct spoolss_GetPrinter GetPrinter;
753
754 CASE(SPOOLSS_OPNUM_GetPrinterData)
755 struct spoolss_GetPrinterData GetPrinterData;
756
757 CASE(SPOOLSS_OPNUM_AbortPrinter)
758 struct spoolss_AbortPrinter AbortPrinter;
759
760 CASE(SPOOLSS_OPNUM_StartDocPrinter)
761 struct spoolss_StartDocPrinter StartDocPrinter;
762
763 CASE(SPOOLSS_OPNUM_EndDocPrinter)
764 struct spoolss_EndDocPrinter EndDocPrinter;
765
766 CASE(SPOOLSS_OPNUM_CreatePrinterIC)
767 struct spoolss_CreatePrinterIC CreatePrinterIC;
768
769 CASE(SPOOLSS_OPNUM_ResetPrinter)
770 struct spoolss_ResetPrinter ResetPrinter;
771
772 CASE(SPOOLSS_OPNUM_EnumMonitor)
773 struct spoolss_EnumMonitor EnumMonitor;
774
775 CASE(SPOOLSS_OPNUM_AddMonitor)
776 struct spoolss_AddMonitor AddMonitor;
777
778 CASE(SPOOLSS_OPNUM_DeleteMonitor)
779 struct spoolss_DeleteMonitor DeleteMonitor;
780
781 CASE(SPOOLSS_OPNUM_WritePrinter)
782 struct spoolss_WritePrinter WritePrinter;
783
784 CASE(SPOOLSS_OPNUM_StartPagePrinter)
785 struct spoolss_StartPagePrinter StartPagePrinter;
786
787 CASE(SPOOLSS_OPNUM_EndPagePrinter)
788 struct spoolss_EndPagePrinter EndPagePrinter;
789
790 CASE(SPOOLSS_OPNUM_ClosePrinter)
791 struct spoolss_ClosePrinter ClosePrinter;
792
793 CASE(SPOOLSS_OPNUM_OpenPrinterEx)
794 struct spoolss_OpenPrinterEx OpenPrinterEx;
795
796 CASE(SPOOLSS_OPNUM_AddJob)
797 struct spoolss_AddJob AddJob;
798
799 CASE(SPOOLSS_OPNUM_GetJob)
800 struct spoolss_GetJob GetJob;
801
802 CASE(SPOOLSS_OPNUM_ScheduleJob)
803 struct spoolss_ScheduleJob ScheduleJob;
804
805 CASE(SPOOLSS_OPNUM_AddForm)
806 struct spoolss_AddForm AddForm;
807
808 CASE(SPOOLSS_OPNUM_DeleteForm)
809 struct spoolss_DeleteForm DeleteForm;
810
811 CASE(SPOOLSS_OPNUM_EnumForms)
812 struct spoolss_EnumForms EnumForms;
813
814 CASE(SPOOLSS_OPNUM_EnumPorts)
815 struct spoolss_EnumPorts EnumPorts;
816
817 CASE(SPOOLSS_OPNUM_DeletePort)
818 struct spoolss_DeletePort DeletePort;
819
820 CASE(SPOOLSS_OPNUM_AddPortEx)
821 struct spoolss_AddPortEx AddPortEx;
822
823 CASE(SPOOLSS_OPNUM_SetPort)
824 struct spoolss_SetPort SetPort;
825
826 CASE(SPOOLSS_OPNUM_RFNPCNEX)
827 struct spoolss_RFNPCNEX RFNPCNEX;
828
829 };
830 typedef union spoolss_interface spoolss_interface_t;
831 EXTERNTYPEINFO(spoolss_interface)
832
833 #endif /* _SPOOLSS_NDL_ */