4 spoolss interface definitions
7 [ uuid("12345678-1234-abcd-ef00-0123456789ab"),
9 endpoint("ncacn_np:[\\pipe\\spoolss]"),
10 pointer_default(unique),
11 pointer_default_top(unique),
12 helpstring("Spooler SubSystem"),
28 [relative] nstring *printername;
29 [relative] nstring *servername;
34 uint32 global_counter;
40 uint32 session_counter;
42 uint32 printer_errors;
57 } spoolss_PrinterInfo0;
59 typedef [gensize] struct {
64 [value(r->driverextra_data.length)] uint16 __driverextra_length;
85 uint32 displayfrequency;
94 [subcontext_size(__driverextra_length),subcontext(0),flag(NDR_REMAINING)] DATA_BLOB driverextra_data;
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;
120 spoolss_EnumPrinterFlags flags;
121 [relative] nstring *name;
122 [relative] nstring *description;
123 [relative] nstring *comment;
124 } spoolss_PrinterInfo1;
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;
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;
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;
189 uint32 defaultpriority;
192 spoolss_PrinterStatus status;
195 } spoolss_PrinterInfo2;
198 [relative,subcontext(0)] security_descriptor *secdesc;
199 } spoolss_PrinterInfo3;
202 [relative] nstring *printername;
203 [relative] nstring *servername;
204 spoolss_PrinterAttributes attributes;
205 } spoolss_PrinterInfo4;
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;
216 spoolss_PrinterStatus status;
217 } spoolss_PrinterInfo6;
220 DSPRINT_PUBLISH = 0x00000001,
221 DSPRINT_UPDATE = 0x00000002,
222 DSPRINT_UNPUBLISH = 0x00000004,
223 DSPRINT_REPUBLISH = 0x00000008,
224 DSPRINT_PENDING = 0x80000000
225 } spoolss_DsPrintAction;
228 [relative] nstring *guid; /* text form of printer guid */
229 spoolss_DsPrintAction action;
230 } spoolss_PrinterInfo7;
233 [relative,subcontext(0)] spoolss_DeviceMode *devmode;
234 } spoolss_DeviceModeInfo;
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;
248 } spoolss_PrinterInfo;
252 /* we are using this as internal parsing code */
253 [public,noopnum,noprint] WERROR _spoolss_EnumPrinters(
254 [in] spoolss_EnumPrinterFlags flags,
257 [in] DATA_BLOB *buffer,
259 [out] DATA_BLOB *info,
263 [public,noopnum,noprint] void __spoolss_EnumPrinters(
266 [out,switch_is(level)] spoolss_PrinterInfo info[count]
268 [nopull,nopush] WERROR spoolss_EnumPrinters(
269 [in] spoolss_EnumPrinterFlags flags,
272 [in] DATA_BLOB *buffer,
274 /* what we have here is a subcontext containing an array of no discriminant unions
275 * and the array has no size in front
277 [out,switch_is(level),size_is(count)] spoolss_PrinterInfo *info,
285 [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] uint32 _ndr_size;
286 [subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode *devmode;
287 } spoolss_DevmodeContainer;
289 WERROR spoolss_OpenPrinter(
290 [in] unistr *printername,
291 [in] unistr *datatype,
292 [in] spoolss_DevmodeContainer devmode_ctr,
293 [in] uint32 access_mask,
294 [out,ref] policy_handle *handle
301 [relative] nstring *printer_name;
302 [relative] nstring *server_name;
303 [relative] nstring *user_name;
304 [relative] nstring *document_name;
305 [relative] nstring *data_type;
306 [relative] nstring *text_status;
311 uint32 pages_printed;
315 typedef [nodiscriminant,relative_base,public] union {
316 [case(1)] spoolss_JobInfo1 info1;
317 [case(2)]; /* TODO */
318 [case(3)]; /* TODO */
324 [switch_is(level)] spoolss_JobInfo info;
325 } spoolss_JobInfoContainer;
327 typedef [v1_enum] enum {
328 SPOOLSS_JOB_CONTROL_PAUSE = 1,
329 SPOOLSS_JOB_CONTROL_RESUME = 2,
330 SPOOLSS_JOB_CONTROL_CANCEL = 3,
331 SPOOLSS_JOB_CONTROL_RESTART = 4,
332 SPOOLSS_JOB_CONTROL_DELETE = 5,
333 SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER = 6,
334 SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED = 7
335 } spoolss_JobControl;
337 WERROR spoolss_SetJob(
338 [in,ref] policy_handle *handle,
340 [in] spoolss_JobInfoContainer *ctr,
341 [in] spoolss_JobControl command
346 WERROR spoolss_GetJob(
347 [in,ref] policy_handle *handle,
350 [in] DATA_BLOB *buffer,
352 [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_JobInfo *info,
358 [public,noopnum,noprint] WERROR _spoolss_EnumJobs(
359 [in,ref] policy_handle *handle,
360 [in] uint32 firstjob,
363 [in] DATA_BLOB *buffer,
365 [out] DATA_BLOB *info,
369 [public,noopnum,noprint] void __spoolss_EnumJobs(
372 [out,switch_is(level)] spoolss_JobInfo info[count]
374 [nopull,nopush] WERROR spoolss_EnumJobs(
375 [in,ref] policy_handle *handle,
376 [in] uint32 firstjob,
379 [in] DATA_BLOB *buffer,
381 [out,switch_is(level),size_is(count)] spoolss_JobInfo *info,
388 WERROR spoolss_AddPrinter(
389 /* This function is not implemented in Samba 3 as no
390 clients have been observed using it. */
395 WERROR spoolss_DeletePrinter(
400 typedef [v1_enum] enum {
401 SPOOLSS_PRINTER_CONTROL_UNPAUSE = 0,
402 SPOOLSS_PRINTER_CONTROL_PAUSE = 1,
403 SPOOLSS_PRINTER_CONTROL_RESUME = 2,
404 SPOOLSS_PRINTER_CONTROL_PURGE = 3,
405 SPOOLSS_PRINTER_CONTROL_SET_STATUS = 4
406 } spoolss_PrinterControl;
408 typedef [switch_type(uint32)] union {
409 [case(0)] spoolss_PrinterInfo0 *info0;
410 [case(1)] spoolss_PrinterInfo1 *info1;
411 [case(2)] spoolss_PrinterInfo2 *info2;
412 [case(3)] spoolss_PrinterInfo3 *info3;
413 [case(4)] spoolss_PrinterInfo4 *info4;
414 [case(5)] spoolss_PrinterInfo5 *info5;
415 [case(6)] spoolss_PrinterInfo6 *info6;
416 [case(7)] spoolss_PrinterInfo7 *info7;
417 [case(8)] spoolss_DeviceModeInfo *info8;
418 [case(9)] spoolss_DeviceModeInfo *info9;
420 } spoolss_SetPrinterInfo;
422 WERROR spoolss_SetPrinter(
423 [in,ref] policy_handle *handle,
425 [in,switch_is(level)] spoolss_SetPrinterInfo info,
426 [in] spoolss_DevmodeContainer devmode_ctr,
427 [in] sec_desc_buf secdesc_ctr,
428 [in] spoolss_PrinterControl command
433 WERROR spoolss_GetPrinter(
434 [in,ref] policy_handle *handle,
436 [in] DATA_BLOB *buffer,
438 [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_PrinterInfo *info,
444 WERROR spoolss_AddPrinterDriver(
448 [relative] nstring *driver_name;
449 } spoolss_DriverInfo1;
451 typedef [v1_enum] enum {
452 SPOOLSS_DRIVER_VERSION_9X = 0,
453 SPOOLSS_DRIVER_VERSION_NT35 = 1,
454 SPOOLSS_DRIVER_VERSION_NT4 = 2,
455 SPOOLSS_DRIVER_VERSION_200X = 3
456 } spoolss_DriverOSVersion;
459 spoolss_DriverOSVersion version;
460 [relative] nstring *driver_name;
461 [relative] nstring *architecture;
462 [relative] nstring *driver_path;
463 [relative] nstring *data_file;
464 [relative] nstring *config_file;
465 } spoolss_DriverInfo2;
468 spoolss_DriverOSVersion version;
469 [relative] nstring *driver_name;
470 [relative] nstring *architecture;
471 [relative] nstring *driver_path;
472 [relative] nstring *data_file;
473 [relative] nstring *config_file;
474 [relative] nstring *help_file;
475 [relative] nstring_array *dependent_files;
476 [relative] nstring *monitor_name;
477 [relative] nstring *default_datatype;
478 } spoolss_DriverInfo3;
481 spoolss_DriverOSVersion version;
482 [relative] nstring *driver_name;
483 [relative] nstring *architecture;
484 [relative] nstring *driver_path;
485 [relative] nstring *data_file;
486 [relative] nstring *config_file;
487 [relative] nstring *help_file;
488 [relative] nstring_array *dependent_files;
489 [relative] nstring *monitor_name;
490 [relative] nstring *default_datatype;
491 [relative] nstring_array *previous_names;
492 } spoolss_DriverInfo4;
495 spoolss_DriverOSVersion version;
496 [relative] nstring *driver_name;
497 [relative] nstring *architecture;
498 [relative] nstring *driver_path;
499 [relative] nstring *data_file;
500 [relative] nstring *config_file;
501 uint32 driver_attributes;
502 uint32 config_version;
503 uint32 driver_version;
504 } spoolss_DriverInfo5;
507 spoolss_DriverOSVersion version;
508 [relative] nstring *driver_name;
509 [relative] nstring *architecture;
510 [relative] nstring *driver_path;
511 [relative] nstring *data_file;
512 [relative] nstring *config_file;
513 [relative] nstring *help_file;
514 [relative] nstring_array *dependent_files;
515 [relative] nstring *monitor_name;
516 [relative] nstring *default_datatype;
517 [relative] nstring_array *previous_names;
519 hyper driver_version;
520 [relative] nstring *manufacturer_name;
521 [relative] nstring *manufacturer_url;
522 [relative] nstring *hardware_id;
523 [relative] nstring *provider;
524 } spoolss_DriverInfo6;
526 typedef [nodiscriminant,relative_base,public] union {
527 [case(1)] spoolss_DriverInfo1 info1;
528 [case(2)] spoolss_DriverInfo2 info2;
529 [case(3)] spoolss_DriverInfo3 info3;
530 [case(4)] spoolss_DriverInfo4 info4;
531 [case(5)] spoolss_DriverInfo5 info5;
532 [case(6)] spoolss_DriverInfo6 info6;
534 } spoolss_DriverInfo;
538 [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers(
540 [in] unistr *environment,
542 [in] DATA_BLOB *buffer,
544 [out] DATA_BLOB *info,
548 [public,noopnum,noprint] void __spoolss_EnumPrinterDrivers(
551 [out,switch_is(level)] spoolss_DriverInfo info[count]
553 [nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
555 [in] unistr *environment,
557 [in] DATA_BLOB *buffer,
559 [out,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
566 WERROR spoolss_GetPrinterDriver(
572 nstring directory_name;
573 } spoolss_DriverDirectoryInfo1;
575 /* NOTE: it's seems that w2k3 completly ignores the level
578 typedef [nodiscriminant,relative_base,gensize,public] union {
579 [case(1)] spoolss_DriverDirectoryInfo1 info1;
580 [default] spoolss_DriverDirectoryInfo1 info1;
581 } spoolss_DriverDirectoryInfo;
583 WERROR spoolss_GetPrinterDriverDirectory(
585 [in] unistr *environment,
587 [in] DATA_BLOB *buffer,
589 [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info,
595 WERROR spoolss_DeletePrinterDriver(
596 [in,ref] policy_handle *handle,
598 [in] unistr architecture,
604 WERROR spoolss_AddPrintProcessor(
610 [relative] nstring *print_processor_name;
611 } spoolss_PrintProcessorInfo1;
613 typedef [nodiscriminant,relative_base,public] union {
614 [case(1)] spoolss_PrintProcessorInfo1 info1;
616 } spoolss_PrintProcessorInfo;
618 [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors(
619 [in] unistr *servername,
620 [in] unistr *environment,
622 [in] DATA_BLOB *buffer,
624 [out] DATA_BLOB *info,
628 [public,noopnum,noprint] void __spoolss_EnumPrintProcessors(
631 [out,switch_is(level)] spoolss_PrintProcessorInfo info[count]
633 [nopull,nopush] WERROR spoolss_EnumPrintProcessors(
634 [in] unistr *servername,
635 [in] unistr *environment,
637 [in] DATA_BLOB *buffer,
639 [out,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
646 WERROR spoolss_GetPrintProcessorDirectory(
652 unistr *document_name;
655 } spoolss_DocumentInfo1;
657 typedef [switch_type(uint32)] union {
658 [case(1)] spoolss_DocumentInfo1 *info1;
659 [case(2)]; /* TODO */
660 [case(3)]; /* TODO */
662 } spoolss_DocumentInfo;
664 WERROR spoolss_StartDocPrinter(
665 [in,ref] policy_handle *handle,
667 [in,switch_is(level)] spoolss_DocumentInfo info,
673 WERROR spoolss_StartPagePrinter(
674 [in,ref] policy_handle *handle
679 WERROR spoolss_WritePrinter(
680 [in,ref] policy_handle *handle,
682 [in,value(r->in.data.length)] uint32 _data_size,
683 [out] uint32 num_written
688 WERROR spoolss_EndPagePrinter(
689 [in,ref] policy_handle *handle
694 WERROR spoolss_AbortPrinter(
695 [in,ref] policy_handle *handle
700 WERROR spoolss_ReadPrinter(
701 [in,ref] policy_handle *handle,
702 [in] uint32 data_size,
703 [out] DATA_BLOB data,
704 [out,value(r->out.data.length)] uint32 _data_size
709 WERROR spoolss_EndDocPrinter(
710 [in,ref] policy_handle *handle
715 WERROR spoolss_AddJob(
720 WERROR spoolss_ScheduleJob(
725 const string SPOOLSS_ARCHITECTURE_NT_X86 = "Windows NT x86";
727 typedef [v1_enum] enum {
728 SPOOLSS_PRINTER_DATA_TYPE_NULL = 0,
729 SPOOLSS_PRINTER_DATA_TYPE_STRING = 1,
730 SPOOLSS_PRINTER_DATA_TYPE_UINT32 = 4
731 } spoolss_PrinterDataType;
733 typedef [nodiscriminant,gensize] union {
734 [case(SPOOLSS_PRINTER_DATA_TYPE_NULL)];
735 [case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] nstring string;
736 [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] uint32 value;
737 [default,flag(NDR_REMAINING)] DATA_BLOB data;
738 } spoolss_PrinterData;
740 [noopnum,noprint,public] WERROR _spoolss_GetPrinterData(
741 [in,ref] policy_handle *handle,
742 [in] unistr value_name,
744 [out] spoolss_PrinterDataType type,
745 [out] DATA_BLOB data,
748 [noopnum,noprint,public] void __spoolss_GetPrinterData(
749 [in] spoolss_PrinterDataType type,
750 [out,switch_is(type)] spoolss_PrinterData data
752 [nopull,nopush] WERROR spoolss_GetPrinterData(
753 [in,ref] policy_handle *handle,
754 [in] unistr value_name,
756 [out] spoolss_PrinterDataType type,
757 [out,subcontext(4),subcontext_size(offered),switch_is(type)] spoolss_PrinterData data,
763 [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterData(
764 [in,ref] policy_handle *handle,
765 [in] unistr value_name,
766 [in] spoolss_PrinterDataType type,
770 [noopnum,nopull,noprint,public] void __spoolss_SetPrinterData(
771 [in] spoolss_PrinterDataType type,
772 [out,switch_is(type)] spoolss_PrinterData data
774 [nopush] WERROR spoolss_SetPrinterData(
775 [in,ref] policy_handle *handle,
776 [in] unistr value_name,
777 [in] spoolss_PrinterDataType type,
778 [in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
779 [in,value(ndr_size_spoolss_PrinterData(&data,type,flags))] uint32 _offered
784 WERROR spoolss_WaitForPrinterChange(
789 WERROR spoolss_ClosePrinter(
790 [in,out,ref] policy_handle *handle
795 typedef [v1_enum] enum {
796 SPOOLSS_FORM_USER = 0,
797 SPOOLSS_FORM_BUILTIN = 1,
798 SPOOLSS_FORM_PRINTER = 2
814 spoolss_FormFlags flags;
815 [relative] nstring *form_name;
816 spoolss_FormSize size;
817 spoolss_FormArea area;
820 typedef [nodiscriminant,relative_base,public,gensize] union {
821 [case(1)] spoolss_FormInfo1 info1;
826 spoolss_FormFlags flags;
828 spoolss_FormSize size;
829 spoolss_FormArea area;
830 } spoolss_AddFormInfo1;
832 typedef [switch_type(uint32)] union {
833 [case(1)] spoolss_AddFormInfo1 *info1;
834 } spoolss_AddFormInfo;
836 WERROR spoolss_AddForm(
837 [in,ref] policy_handle *handle,
839 [in,switch_is(level)] spoolss_AddFormInfo info
844 WERROR spoolss_DeleteForm(
845 [in,ref] policy_handle *handle,
846 [in] unistr form_name
851 WERROR spoolss_GetForm(
852 [in,ref] policy_handle *handle,
853 [in] unistr form_name,
855 [in] DATA_BLOB *buffer,
857 [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info,
863 WERROR spoolss_SetForm(
864 [in,ref] policy_handle *handle,
865 [in] unistr form_name,
867 [in,switch_is(level)] spoolss_AddFormInfo info
872 [public,noopnum,noprint] WERROR _spoolss_EnumForms(
873 [in,ref] policy_handle *handle,
875 [in] DATA_BLOB *buffer,
877 [out] DATA_BLOB *info,
881 [public,noopnum,noprint] void __spoolss_EnumForms(
884 [out,switch_is(level)] spoolss_FormInfo info[count]
886 [nopull,nopush] WERROR spoolss_EnumForms(
887 [in,ref] policy_handle *handle,
889 [in] DATA_BLOB *buffer,
891 [out,switch_is(level),size_is(count)] spoolss_FormInfo *info,
897 [relative] nstring *port_name;
901 SPOOLSS_PORT_TYPE_WRITE = 0x00000001,
902 SPOOLSS_PORT_TYPE_READ = 0x00000002,
903 SPOOLSS_PORT_TYPE_REDIRECTED = 0x00000004,
904 SPOOLSS_PORT_TYPE_NET_ATTACHED = 0x00000008
908 [relative] nstring *port_name;
909 [relative] nstring *monitor_name;
910 [relative] nstring *description;
911 spoolss_PortType port_type;
915 typedef [nodiscriminant,relative_base,public] union {
916 [case(1)] spoolss_PortInfo1 info1;
917 [case(2)] spoolss_PortInfo2 info2;
918 [case(3)]; /* TODO */
924 [public,noopnum,noprint] WERROR _spoolss_EnumPorts(
925 [in] unistr *servername,
927 [in] DATA_BLOB *buffer,
929 [out] DATA_BLOB *info,
933 [public,noopnum,noprint] void __spoolss_EnumPorts(
936 [out,switch_is(level)] spoolss_PortInfo info[count]
938 [nopull,nopush] WERROR spoolss_EnumPorts(
939 [in] unistr *servername,
941 [in] DATA_BLOB *buffer,
943 [out,switch_is(level),size_is(count)] spoolss_PortInfo *info,
951 [relative] nstring *monitor_name;
952 } spoolss_MonitorInfo1;
955 [relative] nstring *monitor_name;
956 [relative] nstring *environment;
957 [relative] nstring *dll_name;
958 } spoolss_MonitorInfo2;
960 typedef [nodiscriminant,relative_base,public] union {
961 [case(1)] spoolss_MonitorInfo1 info1;
962 [case(2)] spoolss_MonitorInfo2 info2;
964 } spoolss_MonitorInfo;
966 [public,noopnum,noprint] WERROR _spoolss_EnumMonitors(
967 [in] unistr *servername,
969 [in] DATA_BLOB *buffer,
971 [out] DATA_BLOB *info,
975 [public,noopnum,noprint] void __spoolss_EnumMonitors(
978 [out,switch_is(level)] spoolss_MonitorInfo info[count]
980 [nopull,nopush] WERROR spoolss_EnumMonitors(
981 [in] unistr *servername,
983 [in] DATA_BLOB *buffer,
985 [out,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
992 WERROR spoolss_AddPort(
993 [in] unistr *server_name,
995 [in] unistr monitor_name
1000 WERROR spoolss_ConfigurePort(
1003 /******************/
1004 /* Function: 0x27 */
1005 WERROR spoolss_DeletePort(
1008 /******************/
1009 /* Function: 0x28 */
1010 WERROR spoolss_CreatePrinterIC(
1013 /******************/
1014 /* Function: 0x29 */
1015 WERROR spoolss_PlayGDIScriptOnPrinterIC(
1018 /******************/
1019 /* Function: 0x2a */
1020 WERROR spoolss_DeletePrinterIC(
1023 /******************/
1024 /* Function: 0x2b */
1025 WERROR spoolss_AddPrinterConnection(
1028 /******************/
1029 /* Function: 0x2c */
1030 WERROR spoolss_DeletePrinterConnection(
1033 /******************/
1034 /* Function: 0x2d */
1035 WERROR spoolss_PrinterMessageBox(
1036 /* Marked as obsolete in MSDN. "Not necessary and has
1040 /******************/
1041 /* Function: 0x2e */
1042 WERROR spoolss_AddMonitor(
1045 /******************/
1046 /* Function: 0x2f */
1047 WERROR spoolss_DeleteMonitor(
1050 /******************/
1051 /* Function: 0x30 */
1052 WERROR spoolss_DeletePrintProcessor(
1055 /******************/
1056 /* Function: 0x31 */
1057 WERROR spoolss_AddPrintProvidor(
1060 /******************/
1061 /* Function: 0x32 */
1062 WERROR spoolss_DeletePrintProvidor(
1065 /******************/
1066 /* Function: 0x33 */
1067 WERROR spoolss_EnumPrintProcDataTypes(
1070 /******************/
1071 /* Function: 0x34 */
1072 WERROR spoolss_ResetPrinter(
1075 /******************/
1076 /* Function: 0x35 */
1077 WERROR spoolss_GetPrinterDriver2(
1078 [in,ref] policy_handle *handle,
1079 [in] unistr *architecture,
1081 [in] DATA_BLOB *buffer,
1082 [in] uint32 offered,
1083 [in] uint32 client_major_version,
1084 [in] uint32 client_minor_version,
1085 [out] DATA_BLOB *info,
1086 [out] uint32 needed,
1087 [out] uint32 server_major_version,
1088 [out] uint32 server_minor_version
1091 /******************/
1092 /* Function: 0x36 */
1093 WERROR spoolss_FindFirstPrinterChangeNotification(
1096 /******************/
1097 /* Function: 0x37 */
1098 WERROR spoolss_FindNextPrinterChangeNotification(
1101 /******************/
1102 /* Function: 0x38 */
1103 WERROR spoolss_FindClosePrinterNotify(
1106 /******************/
1107 /* Function: 0x39 */
1108 WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
1111 /******************/
1112 /* Function: 0x3a */
1113 WERROR spoolss_ReplyOpenPrinter(
1116 /******************/
1117 /* Function: 0x3b */
1118 WERROR spoolss_RouterReplyPrinter(
1121 /******************/
1122 /* Function: 0x3c */
1123 WERROR spoolss_ReplyClosePrinter(
1126 /******************/
1127 /* Function: 0x3d */
1128 WERROR spoolss_AddPortEx(
1131 /******************/
1132 /* Function: 0x3e */
1133 WERROR spoolss_RouterFindFirstPrinterChangeNotification(
1136 /******************/
1137 /* Function: 0x3f */
1138 WERROR spoolss_SpoolerInit(
1141 /******************/
1142 /* Function: 0x40 */
1143 WERROR spoolss_ResetPrinterEx(
1146 /******************/
1147 /* Function: 0x41 */
1148 typedef [flag(NDR_PAHEX)] struct {
1154 [size_is(count)] uint16 *array;
1155 } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2;
1161 [size_is(count)] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2 *t2;
1162 } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1;
1164 WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(
1165 [in,ref] policy_handle *handle,
1170 [in] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1 *t1
1173 /******************/
1174 /* Function: 0x42 */
1175 WERROR spoolss_RouterRefreshPrinterChangeNotification(
1178 /******************/
1179 /* Function: 0x43 */
1180 WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(
1183 /******************/
1184 /* Function: 0x44 */
1196 } spoolss_UserLevel1;
1199 [case(1)] spoolss_UserLevel1 *level1;
1200 } spoolss_UserLevel;
1202 /******************/
1203 /* Function: 0x45 */
1204 WERROR spoolss_OpenPrinterEx(
1205 [in] unistr *printername,
1206 [in] unistr *datatype,
1207 [in] spoolss_DevmodeContainer devmode_ctr,
1208 [in] uint32 access_mask,
1210 [in,switch_is(level)] spoolss_UserLevel userlevel,
1211 [out,ref] policy_handle *handle
1214 /******************/
1215 /* Function: 0x46 */
1216 WERROR spoolss_AddPrinterEx(
1217 [in] unistr *server,
1219 [in,switch_is(level)] spoolss_PrinterInfo *info,
1220 [in] spoolss_DevmodeContainer devmode_ctr,
1221 [in] security_descriptor *secdesc,
1223 [in,switch_is(ulevel)] spoolss_UserLevel userlevel
1226 /******************/
1227 /* Function: 0x47 */
1231 /******************/
1232 /* Function: 0x48 */
1233 WERROR spoolss_EnumPrinterData(
1234 [in,ref] policy_handle *handle,
1235 [in] uint32 enum_index,
1236 [in] uint32 value_offered,
1237 [out] lstring value_name,
1238 [out] uint32 value_needed,
1239 [out] uint32 printerdata_type,
1240 [out] DATA_BLOB buffer,
1241 [in,out,ref] uint32 *data_size
1244 /******************/
1245 /* Function: 0x49 */
1246 WERROR spoolss_DeletePrinterData(
1247 [in,ref] policy_handle *handle,
1248 [in] unistr value_name
1251 /******************/
1252 /* Function: 0x4a */
1256 /******************/
1257 /* Function: 0x4b */
1261 /******************/
1262 /* Function: 0x4c */
1266 /******************/
1267 /* Function: 0x4d */
1268 WERROR spoolss_SetPrinterDataEx(
1269 [in,ref] policy_handle *handle,
1270 [in] unistr key_name,
1271 [in] unistr value_name,
1273 [in] DATA_BLOB buffer,
1277 /******************/
1278 /* Function: 0x4e */
1279 WERROR spoolss_GetPrinterDataEx(
1280 [in,ref] policy_handle *handle,
1281 [in] unistr key_name,
1282 [in] unistr value_name,
1283 [in] uint32 offered,
1285 [out] DATA_BLOB buffer,
1289 /******************/
1290 /* Function: 0x4f */
1291 WERROR spoolss_EnumPrinterDataEx(
1292 [in,ref] policy_handle *handle,
1293 [in] unistr key_name,
1294 [in] uint32 offered,
1295 [out] DATA_BLOB buffer,
1296 [out] uint32 needed,
1300 /******************/
1301 /* Function: 0x50 */
1302 WERROR spoolss_EnumPrinterKey(
1305 /******************/
1306 /* Function: 0x51 */
1307 WERROR spoolss_DeletePrinterDataEx(
1308 [in,ref] policy_handle *handle,
1309 [in] unistr key_name,
1310 [in] unistr value_name
1313 /******************/
1314 /* Function: 0x52 */
1315 WERROR spoolss_DeletePrinterKey(
1318 /******************/
1319 /* Function: 0x53 */
1323 /******************/
1324 /* Function: 0x54 */
1325 WERROR spoolss_DeletePrinterDriverEx(
1328 /******************/
1329 /* Function: 0x55 */
1333 /******************/
1334 /* Function: 0x56 */
1338 /******************/
1339 /* Function: 0x57 */
1343 /******************/
1344 /* Function: 0x58 */
1348 /******************/
1349 /* Function: 0x59 */
1350 WERROR spoolss_AddPrinterDriverEx(
1353 /******************/
1354 /* Function: 0x5a */
1358 /******************/
1359 /* Function: 0x5b */
1363 /******************/
1364 /* Function: 0x5c */
1368 /******************/
1369 /* Function: 0x5d */
1373 /******************/
1374 /* Function: 0x5e */
1378 /******************/
1379 /* Function: 0x5f */