r5505: make usage of bitmap's :-)
[samba.git] / source4 / librpc / idl / spoolss.idl
1 #include "idl_types.h"
2
3 /*
4   spoolss interface definitions
5 */
6
7 [ uuid("12345678-1234-abcd-ef00-0123456789ab"),
8   version(1.0),
9   endpoint("ncacn_np:[\\pipe\\spoolss]"),
10   pointer_default(unique),
11   helpstring("Spooler SubSystem"),
12   depends(security)
13 ] interface spoolss
14 {
15         typedef struct {
16                 uint16 year;
17                 uint16 month;
18                 uint16 day_of_week;
19                 uint16 day;
20                 uint16 hour;
21                 uint16 minute;
22                 uint16 second;
23                 uint16 millisecond;
24         } spoolss_Time;
25
26         typedef struct {
27                 [relative] nstring *printername;
28                 [relative] nstring *servername;
29                 uint32 cjobs;
30                 uint32 total_jobs;
31                 uint32 total_bytes;
32                 spoolss_Time time;              
33                 uint32 global_counter;
34                 uint32 total_pages;
35                 uint32 version;
36                 uint32 unknown10;
37                 uint32 unknown11;
38                 uint32 unknown12;
39                 uint32 session_counter;
40                 uint32 unknown14;
41                 uint32 printer_errors;
42                 uint32 unknown16;
43                 uint32 unknown17;
44                 uint32 unknown18;
45                 uint32 unknown19;
46                 uint32 change_id;
47                 uint32 unknown21;
48                 uint32 status;
49                 uint32 unknown23;
50                 uint32 c_setprinter;
51                 uint16 unknown25;
52                 uint16 unknown26;
53                 uint32 unknown27;
54                 uint32 unknown28;
55                 uint32 unknown29;
56         } spoolss_PrinterInfo0;
57
58         typedef struct {
59                 string32 devicename;
60                 uint16 specversion;
61                 uint16 driverversion;
62                 uint16 size;
63                 uint16 driverextra;
64                 uint32 fields;
65                 uint16 orientation;
66                 uint16 papersize;
67                 uint16 paperlength;
68                 uint16 paperwidth;
69                 uint16 scale;
70                 uint16 copies;
71                 uint16 defaultsource;
72                 uint16 printquality;
73                 uint16 color;
74                 uint16 duplex;
75                 uint16 yresolution;
76                 uint16 ttoption;
77                 uint16 collate;
78                 string32 formname;
79                 uint16 logpixels;
80                 uint32 bitsperpel;
81                 uint32 pelswidth;
82                 uint32 pelsheight;
83                 uint32 displayflags;
84                 uint32 displayfrequency;
85                 uint32 icmmethod;
86                 uint32 icmintent;
87                 uint32 mediatype;
88                 uint32 dithertype;
89                 uint32 reserved1;
90                 uint32 reserved2;
91                 uint32 panningwidth;
92                 uint32 panningheight;
93                 uint8  private[driverextra];
94         } spoolss_DeviceMode;
95
96         typedef [public] struct {
97                 uint32 flags;
98                 [relative] nstring *name;
99                 [relative] nstring *description;
100                 [relative] nstring *comment;
101         } spoolss_PrinterInfo1;
102
103         typedef [public] struct {
104                 [relative] nstring *servername;
105                 [relative] nstring *printername;
106                 [relative] nstring *sharename;
107                 [relative] nstring *portname;
108                 [relative] nstring *drivername;
109                 [relative] nstring *comment;
110                 [relative] nstring *location;
111                 [relative] spoolss_DeviceMode *devmode;
112                 [relative] nstring *sepfile;
113                 [relative] nstring *printprocessor;
114                 [relative] nstring *datatype;
115                 [relative] nstring *parameters;
116                 [relative,subcontext(0)] security_descriptor *secdesc;
117                 uint32 attributes;
118                 uint32 priority;
119                 uint32 defaultpriority;
120                 uint32 starttime;
121                 uint32 untiltime;
122                 uint32 status;
123                 uint32 cjobs;
124                 uint32 averageppm;
125         } spoolss_PrinterInfo2;
126
127         typedef struct {
128                 uint32 flags;
129                 [subcontext(0)] security_descriptor secdesc;
130         } spoolss_PrinterInfo3;
131
132         typedef struct {
133                 [relative] nstring *printername;
134                 [relative] nstring *servername;
135                 uint32 attributes;
136         } spoolss_PrinterInfo4;
137
138         typedef [public] struct {
139                 [relative] nstring *printername;
140                 [relative] nstring *portname;
141                 uint32 attributes;
142                 uint32 device_not_selected_timeout;
143                 uint32 transmission_retry_timeout;
144         } spoolss_PrinterInfo5;
145
146         typedef struct {
147                 uint32 unknown;
148         } spoolss_PrinterInfo6;
149
150         typedef struct {
151                 [relative] nstring *guid; /* text form of printer guid */
152                 uint32 action;
153         } spoolss_PrinterInfo7;
154
155         typedef [nodiscriminant,public] union {
156                 [case(0)] spoolss_PrinterInfo0 info0;
157                 [case(1)] spoolss_PrinterInfo1 info1;
158                 [case(2)] spoolss_PrinterInfo2 info2;
159                 [case(3)] spoolss_PrinterInfo3 info3;
160                 [case(4)] spoolss_PrinterInfo4 info4;
161                 [case(5)] spoolss_PrinterInfo5 info5;
162                 [case(6)] spoolss_PrinterInfo6 info6;
163                 [case(7)] spoolss_PrinterInfo7 info7;
164         } spoolss_PrinterInfo;
165
166         const int PRINTER_ENUM_DEFAULT     = 0x00000001;
167         const int PRINTER_ENUM_LOCAL       = 0x00000002;
168         const int PRINTER_ENUM_CONNECTIONS = 0x00000004;
169         const int PRINTER_ENUM_FAVORITE    = 0x00000004;
170         const int PRINTER_ENUM_NAME        = 0x00000008;
171         const int PRINTER_ENUM_REMOTE      = 0x00000010;
172         const int PRINTER_ENUM_SHARED      = 0x00000020;
173         const int PRINTER_ENUM_NETWORK     = 0x00000040;
174
175         /******************/
176         /* Function: 0x00 */
177         [noprint,nopull,nopush] WERROR spoolss_EnumPrinters(
178                 [in] uint32 flags,
179                 [in] unistr *server,
180                 [in] uint32 level,
181                 [in] DATA_BLOB *buffer,
182                 /* [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info[count],*/
183                 [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo **info,
184                 [in,out,ref] uint32 *buf_size,
185                 [out] uint32 count
186         );
187
188         /******************/
189         /* Function: 0x01 */
190         typedef struct {
191                 uint32 foo;
192         } spoolss_Devmode;
193
194         typedef struct {
195                 uint32 size;
196                 spoolss_Devmode *devmode;
197         } spoolss_DevmodeContainer;
198
199         WERROR spoolss_OpenPrinter(
200                 [in] unistr *printername,
201                 [in] unistr *datatype,
202                 [in] spoolss_DevmodeContainer devmode_ctr,
203                 [in] uint32 access_mask,
204                 [out,ref] policy_handle *handle
205         );
206
207         /******************/
208         /* Function: 0x02 */
209         WERROR spoolss_SetJob(
210                 [in,ref] policy_handle *handle,
211                 [in] uint32 job_id,
212                 [in] uint32 level,
213                 [in] uint32 command
214         );
215
216         /******************/
217         /* Function: 0x03 */
218         WERROR spoolss_GetJob(
219                 [in,ref] policy_handle *handle,
220                 [in] uint32 job_id,
221                 [in] uint32 level,
222                 [in] DATA_BLOB *buffer,
223                 [out,subcontext(4),switch_is(level)] spoolss_JobInfo *info,
224                 [in,out,ref] uint32 *buf_size
225         );
226
227         typedef struct {
228                 uint32 job_id;
229                 [relative] nstring *printer_name;
230                 [relative] nstring *server_name;
231                 [relative] nstring *user_name;
232                 [relative] nstring *document_name;
233                 [relative] nstring *data_type;
234                 [relative] nstring *text_status;
235                 uint32 status;
236                 uint32 priority;
237                 uint32 position;
238                 uint32 total_pages;
239                 uint32 pages_printed;
240                 spoolss_Time time;
241         } spoolss_JobInfo1;
242
243         typedef [nodiscriminant,public] union {
244                 [case(1)] spoolss_JobInfo1 info1;
245         } spoolss_JobInfo;
246
247         /******************/
248         /* Function: 0x04 */
249         [noprint,nopull,nopush] WERROR spoolss_EnumJobs(
250                 [in,ref] policy_handle *handle,
251                 [in]     uint32 firstjob,
252                 [in]     uint32 numjobs,
253                 [in]     uint32 level,
254                 [in]     DATA_BLOB *buffer,
255                 /* [out,subcontext(4),switch_is(level)] spoolss_JobInfo *info[count],*/
256                 [out,subcontext(4),switch_is(level)] spoolss_JobInfo **info,
257                 [in,out,ref] uint32 *buf_size,
258                 [out]    uint32 count
259         );
260
261         /******************/
262         /* Function: 0x05 */
263         WERROR spoolss_AddPrinter(
264                 /* This function is not implemented in Samba 3 as no
265                    clients have been observed using it. */
266         );
267
268         /******************/
269         /* Function: 0x06 */
270         WERROR spoolss_DeletePrinter(
271         );
272
273         /******************/
274         /* Function: 0x07 */
275         WERROR spoolss_SetPrinter(
276         );
277
278         /******************/
279         /* Function: 0x08 */
280         WERROR spoolss_GetPrinter(
281                 [in,ref]     policy_handle *handle,
282                 [in]         uint32 level,
283                 [in]         DATA_BLOB *buffer,
284                 [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info,
285                 [in,out,ref] uint32 *buf_size
286         );
287
288         /******************/
289         /* Function: 0x09 */
290         WERROR spoolss_AddPrinterDriver(
291         );
292
293         typedef struct {
294                 [relative] nstring *driver_name;
295         } spoolss_DriverInfo1;
296
297         typedef struct {
298                 uint32 version;
299                 [relative] nstring *driver_name;
300                 [relative] nstring *architecture;
301                 [relative] nstring *driver_path;
302                 [relative] nstring *data_file;
303                 [relative] nstring *config_file;
304         } spoolss_DriverInfo2;
305
306         typedef struct {
307                 uint32 version;
308                 [relative] nstring *driver_name;
309                 [relative] nstring *architecture;
310                 [relative] nstring *driver_path;
311                 [relative] nstring *data_file;
312                 [relative] nstring *config_file;
313                 [relative] nstring *help_file;
314                 [relative] nstring *dependent_files; /* array */
315                 [relative] nstring *monitor_name;
316                 [relative] nstring *default_datatype;
317         } spoolss_DriverInfo3;
318
319         typedef [nodiscriminant,public] union {
320                 [case(1)] spoolss_DriverInfo1 info1;
321                 [case(2)] spoolss_DriverInfo2 info2;
322                 [case(3)] spoolss_DriverInfo3 info3;
323         } spoolss_DriverInfo;
324
325         /******************/
326         /* Function: 0x0a */
327         [noprint,nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
328                 [in] unistr *server,
329                 [in] unistr *environment,
330                 [in] uint32 level,
331                 [in] DATA_BLOB *buffer,
332                 /* [out,subcontext(4),switch_is(level)] spoolss_DriverInfo *info[count],*/
333                 [out,subcontext(4),switch_is(level)] spoolss_DriverInfo **info,
334                 [in,out,ref] uint32 *buf_size,
335                 [out] uint32 count
336         );
337
338         /******************/
339         /* Function: 0x0b */
340         WERROR spoolss_GetPrinterDriver(
341         );
342
343         /******************/
344         /* Function: 0x0c */
345         WERROR spoolss_GetPrinterDriverDirectory(
346         );
347
348         /******************/
349         /* Function: 0x0d */
350         WERROR spoolss_DeletePrinterDriver(
351                 [in,ref] policy_handle *handle,
352                 [in] unistr *server,
353                 [in] unistr architecture,
354                 [in] unistr driver
355         );
356
357         /******************/
358         /* Function: 0x0e */
359         WERROR spoolss_AddPrintProcessor(
360         );
361
362         /******************/
363         /* Function: 0x0f */
364         WERROR spoolss_EnumPrintProcessors(
365         );
366
367         /******************/
368         /* Function: 0x10 */
369         WERROR spoolss_GetPrintProcessorDirectory(
370         );
371
372         /******************/
373         /* Function: 0x11 */
374         WERROR spoolss_StartDocPrinter(
375         );
376
377         /******************/
378         /* Function: 0x12 */
379         WERROR spoolss_StartPagePrinter(
380                 [in,ref] policy_handle *handle          
381         );
382
383         /******************/
384         /* Function: 0x13 */
385         WERROR spoolss_WritePrinter(
386         );
387
388         /******************/
389         /* Function: 0x14 */
390         WERROR spoolss_EndPagePrinter(
391                 [in,ref] policy_handle *handle          
392         );
393
394         /******************/
395         /* Function: 0x15 */
396         WERROR spoolss_AbortPrinter(
397         );
398
399         /******************/
400         /* Function: 0x16 */
401         WERROR spoolss_ReadPrinter(
402         );
403
404         /******************/
405         /* Function: 0x17 */
406         WERROR spoolss_EndDocPrinter(
407         );
408
409         /******************/
410         /* Function: 0x18 */
411         WERROR spoolss_AddJob(
412         );
413
414         /******************/
415         /* Function: 0x19 */
416         WERROR spoolss_ScheduleJob(
417         );
418
419         /******************/
420         /* Function: 0x1a */
421         WERROR spoolss_GetPrinterData(
422                 [in,ref] policy_handle *handle,
423                 [in] unistr value_name,
424                 [out] uint32 type,
425                 [out] DATA_BLOB buffer,
426                 [in,out,ref] uint32 *buf_size
427         );
428
429         /******************/
430         /* Function: 0x1b */
431         WERROR spoolss_SetPrinterData(  
432                 [in,ref] policy_handle *handle,
433                 [in] unistr value_name,
434                 [in] uint32 type,
435                 [in] DATA_BLOB buffer,
436                 [in] uint32 real_len
437         );
438
439         /******************/
440         /* Function: 0x1c */
441         WERROR spoolss_WaitForPrinterChange(
442         );
443
444         /******************/
445         /* Function: 0x1d */
446         WERROR spoolss_ClosePrinter(
447                 [in,out,ref]     policy_handle *handle
448         );
449
450         typedef struct {
451                 uint32 flags;
452                 [relative] unistr *formname;
453                 uint32 width;
454                 uint32 length;
455                 uint32 left;
456                 uint32 top;
457                 uint32 right;
458                 uint32 bottom;
459         } spoolss_AddFormInfo1;
460
461         typedef union {
462                 [case(1)] spoolss_AddFormInfo1 *info1;
463         } spoolss_AddFormInfo;
464
465         /******************/
466         /* Function: 0x1e */
467         WERROR spoolss_AddForm(
468                 [in,ref] policy_handle *handle,
469                 [in] uint32 level,
470                 [in,switch_is(level)] spoolss_AddFormInfo info
471         );
472
473         /******************/
474         /* Function: 0x1f */
475         WERROR spoolss_DeleteForm(
476                 [in,ref] policy_handle *handle,
477                 [in] unistr formname
478         );
479
480         /******************/
481         /* Function: 0x20 */
482         typedef struct {
483                 uint32 flags;
484                 [relative] nstring *formname;
485                 uint32 width;
486                 uint32 length;
487                 uint32 left;
488                 uint32 top;
489                 uint32 right;
490                 uint32 bottom;
491         } spoolss_FormInfo1;
492
493         WERROR spoolss_GetForm(
494                 [in,ref] policy_handle *handle,
495                 [in] unistr formname,
496                 [in] uint32 level,
497                 [in] DATA_BLOB *buffer,
498                 [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info,
499                 [in,out,ref] uint32 *buf_size
500         );
501
502         typedef struct {
503                 uint32 flags;
504                 unistr *formname;
505                 uint32 width;
506                 uint32 length;
507                 uint32 left;
508                 uint32 top;
509                 uint32 right;
510                 uint32 bottom;
511         } spoolss_SetFormInfo1;
512
513         typedef union {
514                 [case(1)] spoolss_AddFormInfo1 *info1;
515         } spoolss_SetFormInfo;
516
517         /******************/
518         /* Function: 0x21 */
519         WERROR spoolss_SetForm(
520                 [in,ref] policy_handle *handle,
521                 [in] unistr formname,
522                 [in] uint32 level,
523                 [in,switch_is(level)] spoolss_SetFormInfo info
524         );
525
526         typedef [nodiscriminant,public] union {
527                 [case(1)] spoolss_FormInfo1 info1;
528         } spoolss_FormInfo;
529
530         /******************/
531         /* Function: 0x22 */
532         [noprint,nopull,nopush] WERROR spoolss_EnumForms(
533                 [in,ref] policy_handle *handle,
534                 [in] uint32 level,
535                 [in] DATA_BLOB *buffer,
536                 /* [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info[count],*/
537                 [out,subcontext(4),switch_is(level)] spoolss_FormInfo **info,
538                 [in,out,ref] uint32 *buf_size,
539                 [out] uint32 count
540         );
541
542         typedef [flag(RELATIVE_CURRENT)] struct {
543                 [relative] nstring *port_name;
544         } spoolss_PortInfo1;
545
546         typedef bitmap {
547                 SPOOLSS_PORT_TYPE_WRITE         = 0x00000001,
548                 SPOOLSS_PORT_TYPE_READ          = 0x00000002,
549                 SPOOLSS_PORT_TYPE_REDIRECTED    = 0x00000004,
550                 SPOOLSS_PORT_TYPE_NET_ATTACHED  = 0x00000008
551         } spoolss_PortType;
552
553         typedef struct {
554                 [relative] nstring *port_name;
555                 [relative] nstring *monitor_name;
556                 [relative] nstring *description;
557                 spoolss_PortType port_type;
558                 uint32 reserved;
559         } spoolss_PortInfo2;
560
561         typedef [nondiscriminant,public] union {
562                 [case(1)] spoolss_PortInfo1 info1;
563                 [case(2)] spoolss_PortInfo2 info2;
564         } spoolss_PortInfo;
565
566         /******************/
567         /* Function: 0x23 */
568         [noprint,nopull,nopush] WERROR spoolss_EnumPorts(
569                 [in] unistr *servername,
570                 [in] uint32 level,
571                 [in] DATA_BLOB *buffer,
572                 /* [out,subcontext(4),switch_is(level)] spoolss_PortInfo *info[count], */
573                 [out,subcontext(4),switch_is(level)] spoolss_PortInfo **info,
574                 [in,out,ref] uint32 *buf_size,
575                 [out] uint32 count
576         );
577
578         /******************/
579         /* Function: 0x24 */
580         WERROR spoolss_EnumMonitors(
581         );
582
583         /******************/
584         /* Function: 0x25 */
585         WERROR spoolss_AddPort(
586         );
587
588         /******************/
589         /* Function: 0x26 */
590         WERROR spoolss_ConfigurePort(
591         );
592
593         /******************/
594         /* Function: 0x27 */
595         WERROR spoolss_DeletePort(
596         );
597
598         /******************/
599         /* Function: 0x28 */
600         WERROR spoolss_CreatePrinterIC(
601         );
602
603         /******************/
604         /* Function: 0x29 */
605         WERROR spoolss_PlayGDIScriptOnPrinterIC(
606         );
607
608         /******************/
609         /* Function: 0x2a */
610         WERROR spoolss_DeletePrinterIC(
611         );
612
613         /******************/
614         /* Function: 0x2b */
615         WERROR spoolss_AddPrinterConnection(
616         );
617
618         /******************/
619         /* Function: 0x2c */
620         WERROR spoolss_DeletePrinterConnection(
621         );
622
623         /******************/
624         /* Function: 0x2d */
625         WERROR spoolss_PrinterMessageBox(
626                 /* Marked as obsolete in MSDN.  "Not necessary and has
627                    no effect". */
628         );
629
630         /******************/
631         /* Function: 0x2e */
632         WERROR spoolss_AddMonitor(
633         );
634
635         /******************/
636         /* Function: 0x2f */
637         WERROR spoolss_DeleteMonitor(
638         );
639
640         /******************/
641         /* Function: 0x30 */
642         WERROR spoolss_DeletePrintProcessor(
643         );
644
645         /******************/
646         /* Function: 0x31 */
647         WERROR spoolss_AddPrintProvidor(
648         );
649
650         /******************/
651         /* Function: 0x32 */
652         WERROR spoolss_DeletePrintProvidor(
653         );
654
655         /******************/
656         /* Function: 0x33 */
657         WERROR spoolss_EnumPrintProcDataTypes(
658         );
659
660         /******************/
661         /* Function: 0x34 */
662         WERROR spoolss_ResetPrinter(
663         );
664
665         /******************/
666         /* Function: 0x35 */
667         WERROR spoolss_GetPrinterDriver2(
668                 [in,ref] policy_handle *handle,
669                 [in] unistr *architecture,
670                 [in] uint32 level,
671                 [in,out] DATA_BLOB *buffer,
672                 [in,out,ref] uint32 *buf_size,
673                 [in] uint32 client_major_version,
674                 [in] uint32 client_minor_version,
675                 [out] uint32 server_major_version,
676                 [out] uint32 server_minor_version
677         );
678
679         /******************/
680         /* Function: 0x36 */
681         WERROR spoolss_FindFirstPrinterChangeNotification(
682         );
683
684         /******************/
685         /* Function: 0x37 */
686         WERROR spoolss_FindNextPrinterChangeNotification(
687         );
688
689         /******************/
690         /* Function: 0x38 */
691         WERROR spoolss_FindClosePrinterNotify(
692         );
693
694         /******************/
695         /* Function: 0x39 */
696         WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
697         );
698
699         /******************/
700         /* Function: 0x3a */
701         WERROR spoolss_ReplyOpenPrinter(
702         );
703
704         /******************/
705         /* Function: 0x3b */
706         WERROR spoolss_RouterReplyPrinter(
707         );
708
709         /******************/
710         /* Function: 0x3c */
711         WERROR spoolss_ReplyClosePrinter(
712         );
713
714         /******************/
715         /* Function: 0x3d */
716         WERROR spoolss_AddPortEx(
717         );
718
719         /******************/
720         /* Function: 0x3e */
721         WERROR spoolss_RouterFindFirstPrinterChangeNotification(
722         );
723
724         /******************/
725         /* Function: 0x3f */
726         WERROR spoolss_SpoolerInit(
727         );
728
729         /******************/
730         /* Function: 0x40 */
731         WERROR spoolss_ResetPrinterEx(
732         );
733
734         /******************/
735         /* Function: 0x41 */
736         WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(
737         );
738
739         /******************/
740         /* Function: 0x42 */
741         WERROR spoolss_RouterRefreshPrinterChangeNotification(
742         );
743
744         /******************/
745         /* Function: 0x43 */
746         WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(
747         );
748
749         /******************/
750         /* Function: 0x44 */
751         WERROR spoolss_44(
752         );
753
754         typedef struct {
755                 uint32 size;
756                 unistr *client;
757                 unistr *user;
758                 uint32 build;
759                 uint32 major;
760                 uint32 minor;
761                 uint32 processor;
762         } spoolss_UserLevel1;
763
764         typedef union {
765                 [case(1)]  spoolss_UserLevel1 *level1;
766         } spoolss_UserLevel;
767
768         /******************/
769         /* Function: 0x45 */
770         WERROR spoolss_OpenPrinterEx(
771                 [in]                  unistr *printername,
772                 [in]                  unistr *datatype,
773                 [in]                  spoolss_DevmodeContainer devmode_ctr,
774                 [in]                  uint32 access_mask,
775                 [in]                  uint32 level,
776                 [in,switch_is(level)] spoolss_UserLevel userlevel,
777                 [out,ref]             policy_handle *handle
778         );
779
780         /******************/
781         /* Function: 0x46 */
782         WERROR spoolss_AddPrinterEx(
783                 [in] unistr *server,
784                 [in] uint32 level,
785                 [in,switch_is(level)] spoolss_PrinterInfo *info,
786                 [in] spoolss_DevmodeContainer devmode_ctr,
787                 [in] security_descriptor *secdesc,
788                 [in] uint32 ulevel,
789                 [in,switch_is(ulevel)] spoolss_UserLevel userlevel
790         );
791
792         /******************/
793         /* Function: 0x47 */
794         WERROR spoolss_47(
795         );
796
797         /******************/
798         /* Function: 0x48 */
799         WERROR spoolss_EnumPrinterData(
800                 [in,ref] policy_handle *handle,
801                 [in]     uint32 enum_index,
802                 [in]     uint32 value_offered,
803                 [out]    lstring value_name,
804                 [out]    uint32 value_needed,
805                 [out]    uint32 printerdata_type,
806                 [out]    DATA_BLOB buffer,
807                 [in,out,ref] uint32 *data_size
808         );
809
810         /******************/
811         /* Function: 0x49 */
812         WERROR spoolss_DeletePrinterData(
813                 [in,ref] policy_handle *handle,
814                 [in] unistr value_name
815         );
816
817         /******************/
818         /* Function: 0x4a */
819         WERROR spoolss_4a(
820         );
821
822         /******************/
823         /* Function: 0x4b */
824         WERROR spoolss_4b(
825         );
826
827         /******************/
828         /* Function: 0x4c */
829         WERROR spoolss_4c(
830         );
831
832         /******************/
833         /* Function: 0x4d */
834         WERROR spoolss_SetPrinterDataEx(
835                 [in,ref] policy_handle *handle,
836                 [in] unistr key_name,
837                 [in] unistr value_name,
838                 [in] uint32 type,
839                 [in] DATA_BLOB buffer,
840                 [in,out,ref] uint32 *buf_size
841         );
842
843         /******************/
844         /* Function: 0x4e */
845         WERROR spoolss_GetPrinterDataEx(
846                 [in,ref] policy_handle *handle,
847                 [in] unistr key_name,
848                 [in] unistr value_name,
849                 [out] uint32 type,
850                 [out] DATA_BLOB buffer,
851                 [in,out,ref] uint32 *buf_size
852         );
853
854         /******************/
855         /* Function: 0x4f */
856         WERROR spoolss_EnumPrinterDataEx(
857                 [in,ref] policy_handle *handle,
858                 [in] unistr key_name,
859                 [out] DATA_BLOB buffer,
860                 [in,out] uint32 buf_size,
861                 [out] uint32 count
862         );
863
864         /******************/
865         /* Function: 0x50 */
866         WERROR spoolss_EnumPrinterKey(
867         );
868
869         /******************/
870         /* Function: 0x51 */
871         WERROR spoolss_DeletePrinterDataEx(
872                 [in,ref] policy_handle *handle,
873                 [in] unistr key_name,
874                 [in] unistr value_name
875         );
876
877         /******************/
878         /* Function: 0x52 */
879         WERROR spoolss_DeletePrinterKey(
880         );
881
882         /******************/
883         /* Function: 0x53 */
884         WERROR spoolss_53(
885         );
886
887         /******************/
888         /* Function: 0x54 */
889         WERROR spoolss_DeletePrinterDriverEx(
890         );
891
892         /******************/
893         /* Function: 0x55 */
894         WERROR spoolss_55(
895         );
896
897         /******************/
898         /* Function: 0x56 */
899         WERROR spoolss_56(
900         );
901
902         /******************/
903         /* Function: 0x57 */
904         WERROR spoolss_57(
905         );
906
907         /******************/
908         /* Function: 0x58 */
909         WERROR spoolss_58(
910         );
911
912         /******************/
913         /* Function: 0x59 */
914         WERROR spoolss_AddPrinterDriverEx(
915         );
916
917         /******************/
918         /* Function: 0x5a */
919         WERROR spoolss_5a(
920         );
921
922         /******************/
923         /* Function: 0x5b */
924         WERROR spoolss_5b(
925         );
926
927         /******************/
928         /* Function: 0x5c */
929         WERROR spoolss_5c(
930         );
931
932         /******************/
933         /* Function: 0x5d */
934         WERROR spoolss_5d(
935         );
936
937         /******************/
938         /* Function: 0x5e */
939         WERROR spoolss_5e(
940         );
941
942         /******************/
943         /* Function: 0x5f */
944         WERROR spoolss_5f(
945         );
946 }