r7552: Use ParseExpr() for [value] attributes; allows
[jelmer/samba4-debian.git] / source / 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   pointer_default_top(unique),
12   helpstring("Spooler SubSystem"),
13   depends(security)
14 ] interface spoolss
15 {
16         typedef struct {
17                 uint16 year;
18                 uint16 month;
19                 uint16 day_of_week;
20                 uint16 day;
21                 uint16 hour;
22                 uint16 minute;
23                 uint16 second;
24                 uint16 millisecond;
25         } spoolss_Time;
26
27         typedef struct {
28                 [relative] nstring *printername;
29                 [relative] nstring *servername;
30                 uint32 cjobs;
31                 uint32 total_jobs;
32                 uint32 total_bytes;
33                 spoolss_Time time;              
34                 uint32 global_counter;
35                 uint32 total_pages;
36                 uint32 version;
37                 uint32 unknown10;
38                 uint32 unknown11;
39                 uint32 unknown12;
40                 uint32 session_counter;
41                 uint32 unknown14;
42                 uint32 printer_errors;
43                 uint32 unknown16;
44                 uint32 unknown17;
45                 uint32 unknown18;
46                 uint32 unknown19;
47                 uint32 change_id;
48                 uint32 unknown21;
49                 uint32 status;
50                 uint32 unknown23;
51                 uint32 c_setprinter;
52                 uint16 unknown25;
53                 uint16 unknown26;
54                 uint32 unknown27;
55                 uint32 unknown28;
56                 uint32 unknown29;
57         } spoolss_PrinterInfo0;
58
59         typedef struct {
60                 string32 devicename;
61                 uint16 specversion;
62                 uint16 driverversion;
63                 uint16 size;
64                 [value(r->driverextra_data.length)] uint16 __driverextra_length;
65                 uint32 fields;
66                 uint16 orientation;
67                 uint16 papersize;
68                 uint16 paperlength;
69                 uint16 paperwidth;
70                 uint16 scale;
71                 uint16 copies;
72                 uint16 defaultsource;
73                 uint16 printquality;
74                 uint16 color;
75                 uint16 duplex;
76                 uint16 yresolution;
77                 uint16 ttoption;
78                 uint16 collate;
79                 string32 formname;
80                 uint16 logpixels;
81                 uint32 bitsperpel;
82                 uint32 pelswidth;
83                 uint32 pelsheight;
84                 uint32 displayflags;
85                 uint32 displayfrequency;
86                 uint32 icmmethod;
87                 uint32 icmintent;
88                 uint32 mediatype;
89                 uint32 dithertype;
90                 uint32 reserved1;
91                 uint32 reserved2;
92                 uint32 panningwidth;
93                 uint32 panningheight;
94                 [subcontext_size(__driverextra_length),subcontext(0),flag(NDR_REMAINING)] DATA_BLOB driverextra_data;
95         } spoolss_DeviceMode;
96
97         typedef [public] bitmap {
98                 PRINTER_ENUM_DEFAULT     = 0x00000001,
99                 PRINTER_ENUM_LOCAL       = 0x00000002,
100                 PRINTER_ENUM_CONNECTIONS = 0x00000004,
101                 PRINTER_ENUM_FAVORITE    = 0x00000004,
102                 PRINTER_ENUM_NAME        = 0x00000008,
103                 PRINTER_ENUM_REMOTE      = 0x00000010,
104                 PRINTER_ENUM_SHARED      = 0x00000020,
105                 PRINTER_ENUM_NETWORK     = 0x00000040,
106                 PRINTER_ENUM_EXPAND      = 0x00004000,
107                 PRINTER_ENUM_CONTAINER   = 0x00008000,
108                 PRINTER_ENUM_ICON1       = 0x00010000,
109                 PRINTER_ENUM_ICON2       = 0x00020000,
110                 PRINTER_ENUM_ICON3       = 0x00040000,
111                 PRINTER_ENUM_ICON4       = 0x00080000,
112                 PRINTER_ENUM_ICON5       = 0x00100000,
113                 PRINTER_ENUM_ICON6       = 0x00200000,
114                 PRINTER_ENUM_ICON7       = 0x00400000,
115                 PRINTER_ENUM_ICON8       = 0x00800000,
116                 PRINTER_ENUM_HIDE        = 0x01000000
117         } spoolss_EnumPrinterFlags;
118
119         typedef struct {
120                 spoolss_EnumPrinterFlags flags;
121                 [relative] nstring *name;
122                 [relative] nstring *description;
123                 [relative] nstring *comment;
124         } spoolss_PrinterInfo1;
125
126         typedef bitmap {
127                 PRINTER_ATTRIBUTE_QUEUED                = 0x00000001,
128                 PRINTER_ATTRIBUTE_DIRECT                = 0x00000002,
129                 PRINTER_ATTRIBUTE_DEFAULT               = 0x00000004,
130                 PRINTER_ATTRIBUTE_SHARED                = 0x00000008,
131                 PRINTER_ATTRIBUTE_NETWORK               = 0x00000010,
132                 PRINTER_ATTRIBUTE_HIDDEN                = 0x00000020,
133                 PRINTER_ATTRIBUTE_LOCAL                 = 0x00000040,
134                 PRINTER_ATTRIBUTE_ENABLE_DEVQ           = 0x00000080,
135                 PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS       = 0x00000100,
136                 PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST     = 0x00000200,
137                 PRINTER_ATTRIBUTE_WORK_OFFLINE          = 0x00000400,
138                 PRINTER_ATTRIBUTE_ENABLE_BIDI           = 0x00000800,
139                 PRINTER_ATTRIBUTE_RAW_ONLY              = 0x00001000,
140                 PRINTER_ATTRIBUTE_PUBLISHED             = 0x00002000,
141                 PRINTER_ATTRIBUTE_FAX                   = 0x00004000,
142                 PRINTER_ATTRIBUTE_TS                    = 0x00008000
143         } spoolss_PrinterAttributes;
144
145         typedef bitmap {
146                 PRINTER_STATUS_PAUSED           = 0x00000001,
147                 PRINTER_STATUS_ERROR            = 0x00000002,
148                 PRINTER_STATUS_PENDING_DELETION = 0x00000004,
149                 PRINTER_STATUS_PAPER_JAM        = 0x00000008,
150                 PRINTER_STATUS_PAPER_OUT        = 0x00000010,
151                 PRINTER_STATUS_MANUAL_FEED      = 0x00000020,
152                 PRINTER_STATUS_PAPER_PROBLEM    = 0x00000040,
153                 PRINTER_STATUS_OFFLINE          = 0x00000080,
154                 PRINTER_STATUS_IO_ACTIVE        = 0x00000100,
155                 PRINTER_STATUS_BUSY             = 0x00000200,
156                 PRINTER_STATUS_PRINTING         = 0x00000400,
157                 PRINTER_STATUS_OUTPUT_BIN_FULL  = 0x00000800,
158                 PRINTER_STATUS_NOT_AVAILABLE    = 0x00001000,
159                 PRINTER_STATUS_WAITING          = 0x00002000,
160                 PRINTER_STATUS_PROCESSING       = 0x00004000,
161                 PRINTER_STATUS_INITIALIZING     = 0x00008000,
162                 PRINTER_STATUS_WARMING_UP       = 0x00010000,
163                 PRINTER_STATUS_TONER_LOW        = 0x00020000,
164                 PRINTER_STATUS_NO_TONER         = 0x00040000,
165                 PRINTER_STATUS_PAGE_PUNT        = 0x00080000,
166                 PRINTER_STATUS_USER_INTERVENTION= 0x00100000,
167                 PRINTER_STATUS_OUT_OF_MEMORY    = 0x00200000,
168                 PRINTER_STATUS_DOOR_OPEN        = 0x00400000,
169                 PRINTER_STATUS_SERVER_UNKNOWN   = 0x00800000,
170                 PRINTER_STATUS_POWER_SAVE       = 0x01000000
171         } spoolss_PrinterStatus;
172
173         typedef struct {
174                 [relative] nstring *servername;
175                 [relative] nstring *printername;
176                 [relative] nstring *sharename;
177                 [relative] nstring *portname;
178                 [relative] nstring *drivername;
179                 [relative] nstring *comment;
180                 [relative] nstring *location;
181                 [relative,subcontext(0)] spoolss_DeviceMode *devmode;
182                 [relative] nstring *sepfile;
183                 [relative] nstring *printprocessor;
184                 [relative] nstring *datatype;
185                 [relative] nstring *parameters;
186                 [relative,subcontext(0)] security_descriptor *secdesc;
187                 spoolss_PrinterAttributes attributes;
188                 uint32 priority;
189                 uint32 defaultpriority;
190                 uint32 starttime;
191                 uint32 untiltime;
192                 spoolss_PrinterStatus status;
193                 uint32 cjobs;
194                 uint32 averageppm;
195         } spoolss_PrinterInfo2;
196
197         typedef struct {
198                 [relative,subcontext(0)] security_descriptor *secdesc;
199         } spoolss_PrinterInfo3;
200
201         typedef struct {
202                 [relative] nstring *printername;
203                 [relative] nstring *servername;
204                 spoolss_PrinterAttributes attributes;
205         } spoolss_PrinterInfo4;
206
207         typedef struct {
208                 [relative] nstring *printername;
209                 [relative] nstring *portname;
210                 spoolss_PrinterAttributes attributes;
211                 uint32 device_not_selected_timeout;
212                 uint32 transmission_retry_timeout;
213         } spoolss_PrinterInfo5;
214
215         typedef struct {
216                 spoolss_PrinterStatus status;
217         } spoolss_PrinterInfo6;
218
219         typedef bitmap {
220                 DSPRINT_PUBLISH         = 0x00000001,
221                 DSPRINT_UPDATE          = 0x00000002,
222                 DSPRINT_UNPUBLISH       = 0x00000004,
223                 DSPRINT_REPUBLISH       = 0x00000008,
224                 DSPRINT_PENDING         = 0x80000000
225         } spoolss_DsPrintAction;
226
227         typedef struct {
228                 [relative] nstring *guid; /* text form of printer guid */
229                 spoolss_DsPrintAction action;
230         } spoolss_PrinterInfo7;
231
232         typedef struct {
233                 [relative,subcontext(0)] spoolss_DeviceMode *devmode;
234         } spoolss_DeviceModeInfo;
235
236         typedef [nodiscriminant,relative_base,public] union {
237                 [case(0)] spoolss_PrinterInfo0 info0;
238                 [case(1)] spoolss_PrinterInfo1 info1;
239                 [case(2)] spoolss_PrinterInfo2 info2;
240                 [case(3)] spoolss_PrinterInfo3 info3;
241                 [case(4)] spoolss_PrinterInfo4 info4;
242                 [case(5)] spoolss_PrinterInfo5 info5;
243                 [case(6)] spoolss_PrinterInfo6 info6;
244                 [case(7)] spoolss_PrinterInfo7 info7;
245                 [case(8)] spoolss_DeviceModeInfo info8;
246                 [case(9)] spoolss_DeviceModeInfo info9;
247                 [default];
248         } spoolss_PrinterInfo;
249
250         /******************/
251         /* Function: 0x00 */
252         /* we are using this as internal parsing code */
253         [public,noopnum,noprint] WERROR _spoolss_EnumPrinters(
254                 [in] spoolss_EnumPrinterFlags flags,
255                 [in] unistr *server,
256                 [in] uint32 level,
257                 [in,out] DATA_BLOB *buffer,
258                 [in,out,ref] uint32 *buf_size,
259                 [out] uint32 count
260         );
261         [public,noopnum,noprint] void __spoolss_EnumPrinters(
262                 [in] uint32 level,
263                 [in] uint32 count,
264                 [out,switch_is(level)] spoolss_PrinterInfo info[count]
265         );
266         [nopull,nopush] WERROR spoolss_EnumPrinters(
267                 [in] spoolss_EnumPrinterFlags flags,
268                 [in] unistr *server,
269                 [in] uint32 level,
270                 [in] DATA_BLOB *buffer,
271                 /* what we have here is a subcontext containing an array of no discriminant unions
272                  * and the array has no size in front
273                  */
274                 [out,switch_is(level),size_is(count)] spoolss_PrinterInfo *info,
275                 [in,out,ref] uint32 *buf_size,
276                 [out] uint32 count
277         );
278
279         /******************/
280         /* Function: 0x01 */
281         typedef struct {
282                 uint32 size;
283                 [subcontext(4),subcontext_size(size)] spoolss_DeviceMode *devmode;
284         } spoolss_DevmodeContainer;
285
286         WERROR spoolss_OpenPrinter(
287                 [in] unistr *printername,
288                 [in] unistr *datatype,
289                 [in] spoolss_DevmodeContainer devmode_ctr,
290                 [in] uint32 access_mask,
291                 [out,ref] policy_handle *handle
292         );
293
294         /******************/
295         /* Function: 0x02 */
296         typedef struct {
297                 uint32 job_id;
298                 [relative] nstring *printer_name;
299                 [relative] nstring *server_name;
300                 [relative] nstring *user_name;
301                 [relative] nstring *document_name;
302                 [relative] nstring *data_type;
303                 [relative] nstring *text_status;
304                 uint32 status;
305                 uint32 priority;
306                 uint32 position;
307                 uint32 total_pages;
308                 uint32 pages_printed;
309                 spoolss_Time time;
310         } spoolss_JobInfo1;
311
312         typedef [nodiscriminant,relative_base,public] union {
313                 [case(1)] spoolss_JobInfo1 info1;
314                 [case(2)]; /* TODO */
315                 [case(3)]; /* TODO */
316                 [default];
317         } spoolss_JobInfo;
318
319         typedef struct {
320                 uint32 level;
321                 [switch_is(level)] spoolss_JobInfo info;
322         } spoolss_JobInfoContainer;
323
324         typedef [v1_enum] enum {
325                 SPOOLSS_JOB_CONTROL_PAUSE               = 1,
326                 SPOOLSS_JOB_CONTROL_RESUME              = 2,
327                 SPOOLSS_JOB_CONTROL_CANCEL              = 3,
328                 SPOOLSS_JOB_CONTROL_RESTART             = 4,
329                 SPOOLSS_JOB_CONTROL_DELETE              = 5,
330                 SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER     = 6,
331                 SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED   = 7
332         } spoolss_JobControl;
333
334         WERROR spoolss_SetJob(
335                 [in,ref] policy_handle *handle,
336                 [in] uint32 job_id,
337                 [in] spoolss_JobInfoContainer *ctr,
338                 [in] spoolss_JobControl command
339         );
340
341         /******************/
342         /* Function: 0x03 */
343         WERROR spoolss_GetJob(
344                 [in,ref] policy_handle *handle,
345                 [in] uint32 job_id,
346                 [in] uint32 level,
347                 [in] DATA_BLOB *buffer,
348                 [out,subcontext(4),switch_is(level)] spoolss_JobInfo *info,
349                 [in,out,ref] uint32 *buf_size
350         );
351
352         /******************/
353         /* Function: 0x04 */
354         [public,noopnum,noprint] WERROR _spoolss_EnumJobs(
355                 [in,ref] policy_handle *handle,
356                 [in]     uint32 firstjob,
357                 [in]     uint32 numjobs,
358                 [in]     uint32 level,
359                 [in,out]     DATA_BLOB *buffer,
360                 [in,out,ref] uint32 *buf_size,
361                 [out]    uint32 count
362         );
363         [public,noopnum,noprint] void __spoolss_EnumJobs(
364                 [in] uint32 level,
365                 [in] uint32 count,
366                 [out,switch_is(level)] spoolss_JobInfo info[count]
367         );
368         [nopull,nopush] WERROR spoolss_EnumJobs(
369                 [in,ref] policy_handle *handle,
370                 [in]     uint32 firstjob,
371                 [in]     uint32 numjobs,
372                 [in]     uint32 level,
373                 [in]     DATA_BLOB *buffer,
374                 [out,switch_is(level),size_is(count)] spoolss_JobInfo *info,
375                 [in,out,ref] uint32 *buf_size,
376                 [out]    uint32 count
377         );
378
379         /******************/
380         /* Function: 0x05 */
381         WERROR spoolss_AddPrinter(
382                 /* This function is not implemented in Samba 3 as no
383                    clients have been observed using it. */
384         );
385
386         /******************/
387         /* Function: 0x06 */
388         WERROR spoolss_DeletePrinter(
389         );
390
391         /******************/
392         /* Function: 0x07 */
393         typedef [v1_enum] enum {
394                 SPOOLSS_PRINTER_CONTROL_UNPAUSE    = 0,
395                 SPOOLSS_PRINTER_CONTROL_PAUSE      = 1,
396                 SPOOLSS_PRINTER_CONTROL_RESUME     = 2,
397                 SPOOLSS_PRINTER_CONTROL_PURGE      = 3,
398                 SPOOLSS_PRINTER_CONTROL_SET_STATUS = 4
399         } spoolss_PrinterControl;
400
401         typedef [switch_type(uint32)] union {
402                 [case(0)] spoolss_PrinterInfo0 *info0;
403                 [case(1)] spoolss_PrinterInfo1 *info1;
404                 [case(2)] spoolss_PrinterInfo2 *info2;
405                 [case(3)] spoolss_PrinterInfo3 *info3;
406                 [case(4)] spoolss_PrinterInfo4 *info4;
407                 [case(5)] spoolss_PrinterInfo5 *info5;
408                 [case(6)] spoolss_PrinterInfo6 *info6;
409                 [case(7)] spoolss_PrinterInfo7 *info7;
410                 [case(8)] spoolss_DeviceModeInfo *info8;
411                 [case(9)] spoolss_DeviceModeInfo *info9;
412                 [default];
413         } spoolss_SetPrinterInfo;
414
415         typedef struct {
416                 uint32 size;
417                 [subcontext(4),subcontext_size(size)] security_descriptor *sd;
418         } spoolss_SecDescContainer;
419
420         WERROR spoolss_SetPrinter(
421                 [in,ref] policy_handle *handle,
422                 [in] uint32 level,
423                 [in,switch_is(level)] spoolss_SetPrinterInfo info,
424                 [in] spoolss_DevmodeContainer devmode_ctr,
425                 [in] spoolss_SecDescContainer secdesc_ctr,
426                 [in] spoolss_PrinterControl command
427         );
428
429         /******************/
430         /* Function: 0x08 */
431         WERROR spoolss_GetPrinter(
432                 [in,ref]     policy_handle *handle,
433                 [in]         uint32 level,
434                 [in]         DATA_BLOB *buffer,
435                 [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info,
436                 [in,out,ref] uint32 *buf_size
437         );
438
439         /******************/
440         /* Function: 0x09 */
441         WERROR spoolss_AddPrinterDriver(
442         );
443
444         typedef struct {
445                 [relative] nstring *driver_name;
446         } spoolss_DriverInfo1;
447
448         typedef [v1_enum] enum {
449                 SPOOLSS_DRIVER_VERSION_9X       = 0,
450                 SPOOLSS_DRIVER_VERSION_NT35     = 1,
451                 SPOOLSS_DRIVER_VERSION_NT4      = 2,
452                 SPOOLSS_DRIVER_VERSION_200X     = 3
453         } spoolss_DriverOSVersion;
454
455         typedef struct {
456                 spoolss_DriverOSVersion version;
457                 [relative] nstring *driver_name;
458                 [relative] nstring *architecture;
459                 [relative] nstring *driver_path;
460                 [relative] nstring *data_file;
461                 [relative] nstring *config_file;
462         } spoolss_DriverInfo2;
463
464         typedef struct {
465                 spoolss_DriverOSVersion version;
466                 [relative] nstring *driver_name;
467                 [relative] nstring *architecture;
468                 [relative] nstring *driver_path;
469                 [relative] nstring *data_file;
470                 [relative] nstring *config_file;
471                 [relative] nstring *help_file;
472                 [relative] nstring_array *dependent_files;
473                 [relative] nstring *monitor_name;
474                 [relative] nstring *default_datatype;
475         } spoolss_DriverInfo3;
476
477         typedef struct {
478                 spoolss_DriverOSVersion version;
479                 [relative] nstring *driver_name;
480                 [relative] nstring *architecture;
481                 [relative] nstring *driver_path;
482                 [relative] nstring *data_file;
483                 [relative] nstring *config_file;
484                 [relative] nstring *help_file;
485                 [relative] nstring_array *dependent_files;
486                 [relative] nstring *monitor_name;
487                 [relative] nstring *default_datatype;
488                 [relative] nstring_array *previous_names;
489         } spoolss_DriverInfo4;
490
491         typedef struct {
492                 spoolss_DriverOSVersion version;
493                 [relative] nstring *driver_name;
494                 [relative] nstring *architecture;
495                 [relative] nstring *driver_path;
496                 [relative] nstring *data_file;
497                 [relative] nstring *config_file;
498                 uint32 driver_attributes;
499                 uint32 config_version;
500                 uint32 driver_version;
501         } spoolss_DriverInfo5;
502
503         typedef struct {
504                 spoolss_DriverOSVersion version;
505                 [relative] nstring *driver_name;
506                 [relative] nstring *architecture;
507                 [relative] nstring *driver_path;
508                 [relative] nstring *data_file;
509                 [relative] nstring *config_file;
510                 [relative] nstring *help_file;
511                 [relative] nstring_array *dependent_files;
512                 [relative] nstring *monitor_name;
513                 [relative] nstring *default_datatype;
514                 [relative] nstring_array *previous_names;
515                 NTTIME driver_data;
516                 hyper driver_version;
517                 [relative] nstring *manufacturer_name;
518                 [relative] nstring *manufacturer_url;
519                 [relative] nstring *hardware_id;
520                 [relative] nstring *provider;
521         } spoolss_DriverInfo6;
522
523         typedef [nodiscriminant,relative_base,public] union {
524                 [case(1)] spoolss_DriverInfo1 info1;
525                 [case(2)] spoolss_DriverInfo2 info2;
526                 [case(3)] spoolss_DriverInfo3 info3;
527                 [case(4)] spoolss_DriverInfo4 info4;
528                 [case(5)] spoolss_DriverInfo5 info5;
529                 [case(6)] spoolss_DriverInfo6 info6;
530                 [default];
531         } spoolss_DriverInfo;
532
533         /******************/
534         /* Function: 0x0a */
535         [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers(
536                 [in] unistr *server,
537                 [in] unistr *environment,
538                 [in] uint32 level,
539                 [in,out] DATA_BLOB *buffer,
540                 [in,out,ref] uint32 *buf_size,
541                 [out] uint32 count
542         );
543         [public,noopnum,noprint] void __spoolss_EnumPrinterDrivers(
544                 [in] uint32 level,
545                 [in] uint32 count,
546                 [out,switch_is(level)] spoolss_DriverInfo info[count]
547         );
548         [nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
549                 [in] unistr *server,
550                 [in] unistr *environment,
551                 [in] uint32 level,
552                 [in] DATA_BLOB *buffer,
553                 [out,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
554                 [in,out,ref] uint32 *buf_size,
555                 [out] uint32 count
556         );
557
558         /******************/
559         /* Function: 0x0b */
560         WERROR spoolss_GetPrinterDriver(
561         );
562
563         /******************/
564         /* Function: 0x0c */
565         WERROR spoolss_GetPrinterDriverDirectory(
566         );
567
568         /******************/
569         /* Function: 0x0d */
570         WERROR spoolss_DeletePrinterDriver(
571                 [in,ref] policy_handle *handle,
572                 [in] unistr *server,
573                 [in] unistr architecture,
574                 [in] unistr driver
575         );
576
577         /******************/
578         /* Function: 0x0e */
579         WERROR spoolss_AddPrintProcessor(
580         );
581
582         /******************/
583         /* Function: 0x0f */
584         typedef struct {
585                 [relative] nstring *print_processor_name;
586         } spoolss_PrintProcessorInfo1;
587
588         typedef [nodiscriminant,relative_base,public] union {
589                 [case(1)] spoolss_PrintProcessorInfo1 info1;
590                 [default];
591         } spoolss_PrintProcessorInfo;
592
593         [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors(
594                 [in] unistr *servername,
595                 [in] unistr *environment,
596                 [in] uint32 level,
597                 [in,out] DATA_BLOB *buffer,
598                 [in,out,ref] uint32 *buf_size,
599                 [out] uint32 count
600         );
601         [public,noopnum,noprint] void __spoolss_EnumPrintProcessors(
602                 [in] uint32 level,
603                 [in] uint32 count,
604                 [out,switch_is(level)] spoolss_PrintProcessorInfo info[count]
605         );
606         [nopull,nopush] WERROR spoolss_EnumPrintProcessors(
607                 [in] unistr *servername,
608                 [in] unistr *environment,
609                 [in] uint32 level,
610                 [in] DATA_BLOB *buffer,
611                 [out,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
612                 [in,out,ref] uint32 *buf_size,
613                 [out] uint32 count
614         );
615
616         /******************/
617         /* Function: 0x10 */
618         WERROR spoolss_GetPrintProcessorDirectory(
619         );
620
621         /******************/
622         /* Function: 0x11 */
623         typedef struct {
624                 unistr *document_name;
625                 unistr *output_file;
626                 unistr *datatype;
627         } spoolss_DocumentInfo1;
628
629         typedef [switch_type(uint32)] union {
630                 [case(1)] spoolss_DocumentInfo1 *info1;
631                 [case(2)]; /* TODO */
632                 [case(3)]; /* TODO */
633                 [default];
634         } spoolss_DocumentInfo;
635
636         WERROR spoolss_StartDocPrinter(
637                 [in,ref] policy_handle *handle,
638                 [in] uint32 level,
639                 [in,switch_is(level)] spoolss_DocumentInfo info,
640                 [out] uint32 job_id
641         );
642
643         /******************/
644         /* Function: 0x12 */
645         WERROR spoolss_StartPagePrinter(
646                 [in,ref] policy_handle *handle
647         );
648
649         /******************/
650         /* Function: 0x13 */
651         WERROR spoolss_WritePrinter(
652                 [in,ref] policy_handle *handle,
653                 [in] DATA_BLOB data,
654                 [in,value(r->in.data.length)] uint32 _data_size,
655                 [out] uint32 num_written
656         );
657
658         /******************/
659         /* Function: 0x14 */
660         WERROR spoolss_EndPagePrinter(
661                 [in,ref] policy_handle *handle
662         );
663
664         /******************/
665         /* Function: 0x15 */
666         WERROR spoolss_AbortPrinter(
667                 [in,ref] policy_handle *handle
668         );
669
670         /******************/
671         /* Function: 0x16 */
672         WERROR spoolss_ReadPrinter(
673                 [in,ref] policy_handle *handle,
674                 [in] uint32 data_size,
675                 [out] DATA_BLOB data,
676                 [out,value(r->out.data.length)] uint32 _data_size
677         );
678
679         /******************/
680         /* Function: 0x17 */
681         WERROR spoolss_EndDocPrinter(
682                 [in,ref] policy_handle *handle
683         );
684
685         /******************/
686         /* Function: 0x18 */
687         WERROR spoolss_AddJob(
688         );
689
690         /******************/
691         /* Function: 0x19 */
692         WERROR spoolss_ScheduleJob(
693         );
694
695         /******************/
696         /* Function: 0x1a */
697         const string SPOOLSS_ARCHITECTURE_NT_X86                = "Windows NT x86";
698
699         typedef [v1_enum] enum {
700                 SPOOLSS_PRINTER_DATA_TYPE_NULL = 0,
701                 SPOOLSS_PRINTER_DATA_TYPE_STRING = 1,
702                 SPOOLSS_PRINTER_DATA_TYPE_UINT32 = 4
703         } spoolss_PrinterDataType;
704
705         typedef [nodiscriminant,gensize] union {
706                 [case(SPOOLSS_PRINTER_DATA_TYPE_NULL)];
707                 [case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] nstring string;
708                 [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] uint32 value;
709                 [default,flag(NDR_REMAINING)] DATA_BLOB data;
710         } spoolss_PrinterData;
711
712         [noopnum,nopush,noprint,public] WERROR _spoolss_GetPrinterData(
713                 [in,ref] policy_handle *handle,
714                 [in] unistr value_name,
715                 [out] spoolss_PrinterDataType type,
716                 [out] DATA_BLOB data,
717                 [in,out,ref] uint32 *buf_size
718         );
719         [noopnum,nopush,noprint,public] void __spoolss_GetPrinterData(
720                 [in] spoolss_PrinterDataType type,
721                 [out,switch_is(type)] spoolss_PrinterData data
722         );
723         [nopull] WERROR spoolss_GetPrinterData(
724                 [in,ref] policy_handle *handle,
725                 [in] unistr value_name,
726                 [out] spoolss_PrinterDataType type,
727                 [out,subcontext(4),switch_is(type)] spoolss_PrinterData data,
728                 [in,out,ref] uint32 *buf_size
729         );
730
731         /******************/
732         /* Function: 0x1b */
733         [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterData(
734                 [in,ref] policy_handle *handle,
735                 [in] unistr value_name,
736                 [in] spoolss_PrinterDataType type,
737                 [in] DATA_BLOB data,
738                 [in] uint32 _buf_size
739         );
740         [noopnum,nopull,noprint,public] void __spoolss_SetPrinterData(
741                 [in] spoolss_PrinterDataType type,
742                 [out,switch_is(type)] spoolss_PrinterData data
743         );
744         [nopush] WERROR spoolss_SetPrinterData(
745                 [in,ref] policy_handle *handle,
746                 [in] unistr value_name,
747                 [in] spoolss_PrinterDataType type,
748                 [in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
749                 [in,value(ndr_size_spoolss_PrinterData(&data,type,flags))] uint32 _buf_size
750         );
751
752         /******************/
753         /* Function: 0x1c */
754         WERROR spoolss_WaitForPrinterChange(
755         );
756
757         /******************/
758         /* Function: 0x1d */
759         WERROR spoolss_ClosePrinter(
760                 [in,out,ref]     policy_handle *handle
761         );
762
763         /******************/
764         /* Function: 0x1e */
765         typedef [v1_enum] enum {
766                 SPOOLSS_FORM_USER       = 0,
767                 SPOOLSS_FORM_BUILTIN    = 1,
768                 SPOOLSS_FORM_PRINTER    = 2
769         } spoolss_FormFlags;
770
771         typedef struct {
772                 uint32 width;
773                 uint32 height;
774         } spoolss_FormSize;
775
776         typedef struct {
777                 uint32 left;
778                 uint32 top;
779                 uint32 right;
780                 uint32 bottom;
781         } spoolss_FormArea;
782
783         typedef struct {
784                 spoolss_FormFlags flags;
785                 [relative] unistr *form_name;
786                 spoolss_FormSize size;
787                 spoolss_FormArea area;
788         } spoolss_AddFormInfo1;
789
790         typedef [switch_type(uint32)] union {
791                 [case(1)] spoolss_AddFormInfo1 *info1;
792         } spoolss_AddFormInfo;
793
794         WERROR spoolss_AddForm(
795                 [in,ref] policy_handle *handle,
796                 [in] uint32 level,
797                 [in,switch_is(level)] spoolss_AddFormInfo info
798         );
799
800         /******************/
801         /* Function: 0x1f */
802         WERROR spoolss_DeleteForm(
803                 [in,ref] policy_handle *handle,
804                 [in] unistr form_name
805         );
806
807         /******************/
808         /* Function: 0x20 */
809         typedef struct {
810                 spoolss_FormFlags flags;
811                 [relative] nstring *form_name;
812                 spoolss_FormSize size;
813                 spoolss_FormArea area;
814         } spoolss_FormInfo1;
815
816         WERROR spoolss_GetForm(
817                 [in,ref] policy_handle *handle,
818                 [in] unistr form_name,
819                 [in] uint32 level,
820                 [in] DATA_BLOB *buffer,
821                 [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info,
822                 [in,out,ref] uint32 *buf_size
823         );
824
825         typedef struct {
826                 spoolss_FormFlags flags;
827                 unistr *form_name;
828                 spoolss_FormSize size;
829                 spoolss_FormArea area;
830         } spoolss_SetFormInfo1;
831
832         typedef [switch_type(uint32)] union {
833                 [case(1)] spoolss_SetFormInfo1 *info1;
834         } spoolss_SetFormInfo;
835
836         /******************/
837         /* Function: 0x21 */
838         WERROR spoolss_SetForm(
839                 [in,ref] policy_handle *handle,
840                 [in] unistr form_name,
841                 [in] uint32 level,
842                 [in,switch_is(level)] spoolss_SetFormInfo info
843         );
844
845         typedef [nodiscriminant,relative_base,public] union {
846                 [case(1)] spoolss_FormInfo1 info1;
847                 [default];
848         } spoolss_FormInfo;
849
850         /******************/
851         /* Function: 0x22 */
852         [public,noopnum,noprint] WERROR _spoolss_EnumForms(
853                 [in,ref] policy_handle *handle,
854                 [in] uint32 level,
855                 [in,out] DATA_BLOB *buffer,
856                 [in,out,ref] uint32 *buf_size,
857                 [out] uint32 count
858         );
859         [public,noopnum,noprint] void __spoolss_EnumForms(
860                 [in] uint32 level,
861                 [in] uint32 count,
862                 [out,switch_is(level)] spoolss_FormInfo info[count]
863         );
864         [nopull,nopush] WERROR spoolss_EnumForms(
865                 [in,ref] policy_handle *handle,
866                 [in] uint32 level,
867                 [in] DATA_BLOB *buffer,
868                 [out,switch_is(level),size_is(count)] spoolss_FormInfo *info,
869                 [in,out,ref] uint32 *buf_size,
870                 [out] uint32 count
871         );
872
873         typedef struct {
874                 [relative] nstring *port_name;
875         } spoolss_PortInfo1;
876
877         typedef bitmap {
878                 SPOOLSS_PORT_TYPE_WRITE         = 0x00000001,
879                 SPOOLSS_PORT_TYPE_READ          = 0x00000002,
880                 SPOOLSS_PORT_TYPE_REDIRECTED    = 0x00000004,
881                 SPOOLSS_PORT_TYPE_NET_ATTACHED  = 0x00000008
882         } spoolss_PortType;
883
884         typedef struct {
885                 [relative] nstring *port_name;
886                 [relative] nstring *monitor_name;
887                 [relative] nstring *description;
888                 spoolss_PortType port_type;
889                 uint32 reserved;
890         } spoolss_PortInfo2;
891
892         typedef [nodiscriminant,relative_base,public] union {
893                 [case(1)] spoolss_PortInfo1 info1;
894                 [case(2)] spoolss_PortInfo2 info2;
895                 [case(3)]; /* TODO */
896                 [default];
897         } spoolss_PortInfo;
898
899         /******************/
900         /* Function: 0x23 */
901         [public,noopnum,noprint] WERROR _spoolss_EnumPorts(
902                 [in] unistr *servername,
903                 [in] uint32 level,
904                 [in,out] DATA_BLOB *buffer,
905                 [in,out,ref] uint32 *buf_size,
906                 [out] uint32 count
907         );
908         [public,noopnum,noprint] void __spoolss_EnumPorts(
909                 [in] uint32 level,
910                 [in] uint32 count,
911                 [out,switch_is(level)] spoolss_PortInfo info[count]
912         );
913         [nopull,nopush] WERROR spoolss_EnumPorts(
914                 [in] unistr *servername,
915                 [in] uint32 level,
916                 [in] DATA_BLOB *buffer,
917                 [out,switch_is(level),size_is(count)] spoolss_PortInfo *info,
918                 [in,out,ref] uint32 *buf_size,
919                 [out] uint32 count
920         );
921
922         /******************/
923         /* Function: 0x24 */
924         typedef struct {
925                 [relative] nstring *monitor_name;
926         } spoolss_MonitorInfo1;
927
928         typedef struct {
929                 [relative] nstring *monitor_name;
930                 [relative] nstring *environment;
931                 [relative] nstring *dll_name;
932         } spoolss_MonitorInfo2;
933
934         typedef [nodiscriminant,relative_base,public] union {
935                 [case(1)] spoolss_MonitorInfo1 info1;
936                 [case(2)] spoolss_MonitorInfo2 info2;
937                 [default];
938         } spoolss_MonitorInfo;
939
940         [public,noopnum,noprint] WERROR _spoolss_EnumMonitors(
941                 [in] unistr *servername,
942                 [in] uint32 level,
943                 [in,out] DATA_BLOB *buffer,
944                 [in,out,ref] uint32 *buf_size,
945                 [out] uint32 count
946         );
947         [public,noopnum,noprint] void __spoolss_EnumMonitors(
948                 [in] uint32 level,
949                 [in] uint32 count,
950                 [out,switch_is(level)] spoolss_MonitorInfo info[count]
951         );
952         [nopull,nopush] WERROR spoolss_EnumMonitors(
953                 [in] unistr *servername,
954                 [in] uint32 level,
955                 [in] DATA_BLOB *buffer,
956                 [out,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
957                 [in,out,ref] uint32 *buf_size,
958                 [out] uint32 count
959         );
960
961         /******************/
962         /* Function: 0x25 */
963         WERROR spoolss_AddPort(
964                [in] unistr *server_name,
965                [in] uint32 unknown,
966                [in] unistr monitor_name
967         );
968
969         /******************/
970         /* Function: 0x26 */
971         WERROR spoolss_ConfigurePort(
972         );
973
974         /******************/
975         /* Function: 0x27 */
976         WERROR spoolss_DeletePort(
977         );
978
979         /******************/
980         /* Function: 0x28 */
981         WERROR spoolss_CreatePrinterIC(
982         );
983
984         /******************/
985         /* Function: 0x29 */
986         WERROR spoolss_PlayGDIScriptOnPrinterIC(
987         );
988
989         /******************/
990         /* Function: 0x2a */
991         WERROR spoolss_DeletePrinterIC(
992         );
993
994         /******************/
995         /* Function: 0x2b */
996         WERROR spoolss_AddPrinterConnection(
997         );
998
999         /******************/
1000         /* Function: 0x2c */
1001         WERROR spoolss_DeletePrinterConnection(
1002         );
1003
1004         /******************/
1005         /* Function: 0x2d */
1006         WERROR spoolss_PrinterMessageBox(
1007                 /* Marked as obsolete in MSDN.  "Not necessary and has
1008                    no effect". */
1009         );
1010
1011         /******************/
1012         /* Function: 0x2e */
1013         WERROR spoolss_AddMonitor(
1014         );
1015
1016         /******************/
1017         /* Function: 0x2f */
1018         WERROR spoolss_DeleteMonitor(
1019         );
1020
1021         /******************/
1022         /* Function: 0x30 */
1023         WERROR spoolss_DeletePrintProcessor(
1024         );
1025
1026         /******************/
1027         /* Function: 0x31 */
1028         WERROR spoolss_AddPrintProvidor(
1029         );
1030
1031         /******************/
1032         /* Function: 0x32 */
1033         WERROR spoolss_DeletePrintProvidor(
1034         );
1035
1036         /******************/
1037         /* Function: 0x33 */
1038         WERROR spoolss_EnumPrintProcDataTypes(
1039         );
1040
1041         /******************/
1042         /* Function: 0x34 */
1043         WERROR spoolss_ResetPrinter(
1044         );
1045
1046         /******************/
1047         /* Function: 0x35 */
1048         WERROR spoolss_GetPrinterDriver2(
1049                 [in,ref] policy_handle *handle,
1050                 [in] unistr *architecture,
1051                 [in] uint32 level,
1052                 [in,out] DATA_BLOB *buffer,
1053                 [in,out,ref] uint32 *buf_size,
1054                 [in] uint32 client_major_version,
1055                 [in] uint32 client_minor_version,
1056                 [out] uint32 server_major_version,
1057                 [out] uint32 server_minor_version
1058         );
1059
1060         /******************/
1061         /* Function: 0x36 */
1062         WERROR spoolss_FindFirstPrinterChangeNotification(
1063         );
1064
1065         /******************/
1066         /* Function: 0x37 */
1067         WERROR spoolss_FindNextPrinterChangeNotification(
1068         );
1069
1070         /******************/
1071         /* Function: 0x38 */
1072         WERROR spoolss_FindClosePrinterNotify(
1073         );
1074
1075         /******************/
1076         /* Function: 0x39 */
1077         WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
1078         );
1079
1080         /******************/
1081         /* Function: 0x3a */
1082         WERROR spoolss_ReplyOpenPrinter(
1083         );
1084
1085         /******************/
1086         /* Function: 0x3b */
1087         WERROR spoolss_RouterReplyPrinter(
1088         );
1089
1090         /******************/
1091         /* Function: 0x3c */
1092         WERROR spoolss_ReplyClosePrinter(
1093         );
1094
1095         /******************/
1096         /* Function: 0x3d */
1097         WERROR spoolss_AddPortEx(
1098         );
1099
1100         /******************/
1101         /* Function: 0x3e */
1102         WERROR spoolss_RouterFindFirstPrinterChangeNotification(
1103         );
1104
1105         /******************/
1106         /* Function: 0x3f */
1107         WERROR spoolss_SpoolerInit(
1108         );
1109
1110         /******************/
1111         /* Function: 0x40 */
1112         WERROR spoolss_ResetPrinterEx(
1113         );
1114
1115         /******************/
1116         /* Function: 0x41 */
1117         typedef [flag(NDR_PAHEX)] struct {
1118                 uint16 u1;
1119                 uint16 u2;
1120                 uint32 u3;
1121                 uint32 u4;
1122                 uint32 count;
1123                 [size_is(count)] uint16 *array;
1124         } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2;
1125
1126         typedef struct {
1127                 uint32 u1;
1128                 uint32 u2;
1129                 uint32 count;
1130                 [size_is(count)] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2 *t2;
1131         } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1;
1132
1133         WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(
1134                 [in,ref] policy_handle *handle,
1135                 [in] uint32 u1,
1136                 [in] uint32 u2,
1137                 [in] unistr *str,
1138                 [in] uint32 u3,
1139                 [in] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1 *t1
1140         );
1141
1142         /******************/
1143         /* Function: 0x42 */
1144         WERROR spoolss_RouterRefreshPrinterChangeNotification(
1145         );
1146
1147         /******************/
1148         /* Function: 0x43 */
1149         WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(
1150         );
1151
1152         /******************/
1153         /* Function: 0x44 */
1154         WERROR spoolss_44(
1155         );
1156
1157         typedef struct {
1158                 uint32 size;
1159                 unistr *client;
1160                 unistr *user;
1161                 uint32 build;
1162                 uint32 major;
1163                 uint32 minor;
1164                 uint32 processor;
1165         } spoolss_UserLevel1;
1166
1167         typedef union {
1168                 [case(1)]  spoolss_UserLevel1 *level1;
1169         } spoolss_UserLevel;
1170
1171         /******************/
1172         /* Function: 0x45 */
1173         WERROR spoolss_OpenPrinterEx(
1174                 [in]                  unistr *printername,
1175                 [in]                  unistr *datatype,
1176                 [in]                  spoolss_DevmodeContainer devmode_ctr,
1177                 [in]                  uint32 access_mask,
1178                 [in]                  uint32 level,
1179                 [in,switch_is(level)] spoolss_UserLevel userlevel,
1180                 [out,ref]             policy_handle *handle
1181         );
1182
1183         /******************/
1184         /* Function: 0x46 */
1185         WERROR spoolss_AddPrinterEx(
1186                 [in] unistr *server,
1187                 [in] uint32 level,
1188                 [in,switch_is(level)] spoolss_PrinterInfo *info,
1189                 [in] spoolss_DevmodeContainer devmode_ctr,
1190                 [in] security_descriptor *secdesc,
1191                 [in] uint32 ulevel,
1192                 [in,switch_is(ulevel)] spoolss_UserLevel userlevel
1193         );
1194
1195         /******************/
1196         /* Function: 0x47 */
1197         WERROR spoolss_47(
1198         );
1199
1200         /******************/
1201         /* Function: 0x48 */
1202         WERROR spoolss_EnumPrinterData(
1203                 [in,ref] policy_handle *handle,
1204                 [in]     uint32 enum_index,
1205                 [in]     uint32 value_offered,
1206                 [out]    lstring value_name,
1207                 [out]    uint32 value_needed,
1208                 [out]    uint32 printerdata_type,
1209                 [out]    DATA_BLOB buffer,
1210                 [in,out,ref] uint32 *data_size
1211         );
1212
1213         /******************/
1214         /* Function: 0x49 */
1215         WERROR spoolss_DeletePrinterData(
1216                 [in,ref] policy_handle *handle,
1217                 [in] unistr value_name
1218         );
1219
1220         /******************/
1221         /* Function: 0x4a */
1222         WERROR spoolss_4a(
1223         );
1224
1225         /******************/
1226         /* Function: 0x4b */
1227         WERROR spoolss_4b(
1228         );
1229
1230         /******************/
1231         /* Function: 0x4c */
1232         WERROR spoolss_4c(
1233         );
1234
1235         /******************/
1236         /* Function: 0x4d */
1237         WERROR spoolss_SetPrinterDataEx(
1238                 [in,ref] policy_handle *handle,
1239                 [in] unistr key_name,
1240                 [in] unistr value_name,
1241                 [in] uint32 type,
1242                 [in] DATA_BLOB buffer,
1243                 [in,out,ref] uint32 *buf_size
1244         );
1245
1246         /******************/
1247         /* Function: 0x4e */
1248         WERROR spoolss_GetPrinterDataEx(
1249                 [in,ref] policy_handle *handle,
1250                 [in] unistr key_name,
1251                 [in] unistr value_name,
1252                 [out] uint32 type,
1253                 [out] DATA_BLOB buffer,
1254                 [in,out,ref] uint32 *buf_size
1255         );
1256
1257         /******************/
1258         /* Function: 0x4f */
1259         WERROR spoolss_EnumPrinterDataEx(
1260                 [in,ref] policy_handle *handle,
1261                 [in] unistr key_name,
1262                 [out] DATA_BLOB buffer,
1263                 [in,out] uint32 buf_size,
1264                 [out] uint32 count
1265         );
1266
1267         /******************/
1268         /* Function: 0x50 */
1269         WERROR spoolss_EnumPrinterKey(
1270         );
1271
1272         /******************/
1273         /* Function: 0x51 */
1274         WERROR spoolss_DeletePrinterDataEx(
1275                 [in,ref] policy_handle *handle,
1276                 [in] unistr key_name,
1277                 [in] unistr value_name
1278         );
1279
1280         /******************/
1281         /* Function: 0x52 */
1282         WERROR spoolss_DeletePrinterKey(
1283         );
1284
1285         /******************/
1286         /* Function: 0x53 */
1287         WERROR spoolss_53(
1288         );
1289
1290         /******************/
1291         /* Function: 0x54 */
1292         WERROR spoolss_DeletePrinterDriverEx(
1293         );
1294
1295         /******************/
1296         /* Function: 0x55 */
1297         WERROR spoolss_55(
1298         );
1299
1300         /******************/
1301         /* Function: 0x56 */
1302         WERROR spoolss_56(
1303         );
1304
1305         /******************/
1306         /* Function: 0x57 */
1307         WERROR spoolss_57(
1308         );
1309
1310         /******************/
1311         /* Function: 0x58 */
1312         WERROR spoolss_58(
1313         );
1314
1315         /******************/
1316         /* Function: 0x59 */
1317         WERROR spoolss_AddPrinterDriverEx(
1318         );
1319
1320         /******************/
1321         /* Function: 0x5a */
1322         WERROR spoolss_5a(
1323         );
1324
1325         /******************/
1326         /* Function: 0x5b */
1327         WERROR spoolss_5b(
1328         );
1329
1330         /******************/
1331         /* Function: 0x5c */
1332         WERROR spoolss_5c(
1333         );
1334
1335         /******************/
1336         /* Function: 0x5d */
1337         WERROR spoolss_5d(
1338         );
1339
1340         /******************/
1341         /* Function: 0x5e */
1342         WERROR spoolss_5e(
1343         );
1344
1345         /******************/
1346         /* Function: 0x5f */
1347         WERROR spoolss_5f(
1348         );
1349 }