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;
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,
286 [subcontext(4),subcontext_size(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),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;
424 [subcontext(4),subcontext_size(size)] security_descriptor *sd;
425 } spoolss_SecDescContainer;
427 WERROR spoolss_SetPrinter(
428 [in,ref] policy_handle *handle,
430 [in,switch_is(level)] spoolss_SetPrinterInfo info,
431 [in] spoolss_DevmodeContainer devmode_ctr,
432 [in] spoolss_SecDescContainer secdesc_ctr,
433 [in] spoolss_PrinterControl command
438 WERROR spoolss_GetPrinter(
439 [in,ref] policy_handle *handle,
441 [in] DATA_BLOB *buffer,
443 [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info,
449 WERROR spoolss_AddPrinterDriver(
453 [relative] nstring *driver_name;
454 } spoolss_DriverInfo1;
456 typedef [v1_enum] enum {
457 SPOOLSS_DRIVER_VERSION_9X = 0,
458 SPOOLSS_DRIVER_VERSION_NT35 = 1,
459 SPOOLSS_DRIVER_VERSION_NT4 = 2,
460 SPOOLSS_DRIVER_VERSION_200X = 3
461 } spoolss_DriverOSVersion;
464 spoolss_DriverOSVersion version;
465 [relative] nstring *driver_name;
466 [relative] nstring *architecture;
467 [relative] nstring *driver_path;
468 [relative] nstring *data_file;
469 [relative] nstring *config_file;
470 } spoolss_DriverInfo2;
473 spoolss_DriverOSVersion version;
474 [relative] nstring *driver_name;
475 [relative] nstring *architecture;
476 [relative] nstring *driver_path;
477 [relative] nstring *data_file;
478 [relative] nstring *config_file;
479 [relative] nstring *help_file;
480 [relative] nstring_array *dependent_files;
481 [relative] nstring *monitor_name;
482 [relative] nstring *default_datatype;
483 } spoolss_DriverInfo3;
486 spoolss_DriverOSVersion version;
487 [relative] nstring *driver_name;
488 [relative] nstring *architecture;
489 [relative] nstring *driver_path;
490 [relative] nstring *data_file;
491 [relative] nstring *config_file;
492 [relative] nstring *help_file;
493 [relative] nstring_array *dependent_files;
494 [relative] nstring *monitor_name;
495 [relative] nstring *default_datatype;
496 [relative] nstring_array *previous_names;
497 } spoolss_DriverInfo4;
500 spoolss_DriverOSVersion version;
501 [relative] nstring *driver_name;
502 [relative] nstring *architecture;
503 [relative] nstring *driver_path;
504 [relative] nstring *data_file;
505 [relative] nstring *config_file;
506 uint32 driver_attributes;
507 uint32 config_version;
508 uint32 driver_version;
509 } spoolss_DriverInfo5;
512 spoolss_DriverOSVersion version;
513 [relative] nstring *driver_name;
514 [relative] nstring *architecture;
515 [relative] nstring *driver_path;
516 [relative] nstring *data_file;
517 [relative] nstring *config_file;
518 [relative] nstring *help_file;
519 [relative] nstring_array *dependent_files;
520 [relative] nstring *monitor_name;
521 [relative] nstring *default_datatype;
522 [relative] nstring_array *previous_names;
524 hyper driver_version;
525 [relative] nstring *manufacturer_name;
526 [relative] nstring *manufacturer_url;
527 [relative] nstring *hardware_id;
528 [relative] nstring *provider;
529 } spoolss_DriverInfo6;
531 typedef [nodiscriminant,relative_base,public] union {
532 [case(1)] spoolss_DriverInfo1 info1;
533 [case(2)] spoolss_DriverInfo2 info2;
534 [case(3)] spoolss_DriverInfo3 info3;
535 [case(4)] spoolss_DriverInfo4 info4;
536 [case(5)] spoolss_DriverInfo5 info5;
537 [case(6)] spoolss_DriverInfo6 info6;
539 } spoolss_DriverInfo;
543 [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers(
545 [in] unistr *environment,
547 [in] DATA_BLOB *buffer,
549 [out] DATA_BLOB *info,
553 [public,noopnum,noprint] void __spoolss_EnumPrinterDrivers(
556 [out,switch_is(level)] spoolss_DriverInfo info[count]
558 [nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
560 [in] unistr *environment,
562 [in] DATA_BLOB *buffer,
564 [out,switch_is(level),size_is(count)] spoolss_DriverInfo *info,
571 WERROR spoolss_GetPrinterDriver(
576 WERROR spoolss_GetPrinterDriverDirectory(
581 WERROR spoolss_DeletePrinterDriver(
582 [in,ref] policy_handle *handle,
584 [in] unistr architecture,
590 WERROR spoolss_AddPrintProcessor(
596 [relative] nstring *print_processor_name;
597 } spoolss_PrintProcessorInfo1;
599 typedef [nodiscriminant,relative_base,public] union {
600 [case(1)] spoolss_PrintProcessorInfo1 info1;
602 } spoolss_PrintProcessorInfo;
604 [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors(
605 [in] unistr *servername,
606 [in] unistr *environment,
608 [in] DATA_BLOB *buffer,
610 [out] DATA_BLOB *info,
614 [public,noopnum,noprint] void __spoolss_EnumPrintProcessors(
617 [out,switch_is(level)] spoolss_PrintProcessorInfo info[count]
619 [nopull,nopush] WERROR spoolss_EnumPrintProcessors(
620 [in] unistr *servername,
621 [in] unistr *environment,
623 [in] DATA_BLOB *buffer,
625 [out,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info,
632 WERROR spoolss_GetPrintProcessorDirectory(
638 unistr *document_name;
641 } spoolss_DocumentInfo1;
643 typedef [switch_type(uint32)] union {
644 [case(1)] spoolss_DocumentInfo1 *info1;
645 [case(2)]; /* TODO */
646 [case(3)]; /* TODO */
648 } spoolss_DocumentInfo;
650 WERROR spoolss_StartDocPrinter(
651 [in,ref] policy_handle *handle,
653 [in,switch_is(level)] spoolss_DocumentInfo info,
659 WERROR spoolss_StartPagePrinter(
660 [in,ref] policy_handle *handle
665 WERROR spoolss_WritePrinter(
666 [in,ref] policy_handle *handle,
668 [in,value(r->in.data.length)] uint32 _data_size,
669 [out] uint32 num_written
674 WERROR spoolss_EndPagePrinter(
675 [in,ref] policy_handle *handle
680 WERROR spoolss_AbortPrinter(
681 [in,ref] policy_handle *handle
686 WERROR spoolss_ReadPrinter(
687 [in,ref] policy_handle *handle,
688 [in] uint32 data_size,
689 [out] DATA_BLOB data,
690 [out,value(r->out.data.length)] uint32 _data_size
695 WERROR spoolss_EndDocPrinter(
696 [in,ref] policy_handle *handle
701 WERROR spoolss_AddJob(
706 WERROR spoolss_ScheduleJob(
711 const string SPOOLSS_ARCHITECTURE_NT_X86 = "Windows NT x86";
713 typedef [v1_enum] enum {
714 SPOOLSS_PRINTER_DATA_TYPE_NULL = 0,
715 SPOOLSS_PRINTER_DATA_TYPE_STRING = 1,
716 SPOOLSS_PRINTER_DATA_TYPE_UINT32 = 4
717 } spoolss_PrinterDataType;
719 typedef [nodiscriminant,gensize] union {
720 [case(SPOOLSS_PRINTER_DATA_TYPE_NULL)];
721 [case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] nstring string;
722 [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] uint32 value;
723 [default,flag(NDR_REMAINING)] DATA_BLOB data;
724 } spoolss_PrinterData;
726 [noopnum,nopush,noprint,public] WERROR _spoolss_GetPrinterData(
727 [in,ref] policy_handle *handle,
728 [in] unistr value_name,
730 [out] spoolss_PrinterDataType type,
731 [out] DATA_BLOB data,
734 [noopnum,nopush,noprint,public] void __spoolss_GetPrinterData(
735 [in] spoolss_PrinterDataType type,
736 [out,switch_is(type)] spoolss_PrinterData data
738 [nopull] WERROR spoolss_GetPrinterData(
739 [in,ref] policy_handle *handle,
740 [in] unistr value_name,
742 [out] spoolss_PrinterDataType type,
743 [out,subcontext(4),switch_is(type)] spoolss_PrinterData data,
749 [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterData(
750 [in,ref] policy_handle *handle,
751 [in] unistr value_name,
752 [in] spoolss_PrinterDataType type,
756 [noopnum,nopull,noprint,public] void __spoolss_SetPrinterData(
757 [in] spoolss_PrinterDataType type,
758 [out,switch_is(type)] spoolss_PrinterData data
760 [nopush] WERROR spoolss_SetPrinterData(
761 [in,ref] policy_handle *handle,
762 [in] unistr value_name,
763 [in] spoolss_PrinterDataType type,
764 [in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
765 [in,value(ndr_size_spoolss_PrinterData(&data,type,flags))] uint32 _offered
770 WERROR spoolss_WaitForPrinterChange(
775 WERROR spoolss_ClosePrinter(
776 [in,out,ref] policy_handle *handle
781 typedef [v1_enum] enum {
782 SPOOLSS_FORM_USER = 0,
783 SPOOLSS_FORM_BUILTIN = 1,
784 SPOOLSS_FORM_PRINTER = 2
800 spoolss_FormFlags flags;
801 [relative] unistr *form_name;
802 spoolss_FormSize size;
803 spoolss_FormArea area;
804 } spoolss_AddFormInfo1;
806 typedef [switch_type(uint32)] union {
807 [case(1)] spoolss_AddFormInfo1 *info1;
808 } spoolss_AddFormInfo;
810 WERROR spoolss_AddForm(
811 [in,ref] policy_handle *handle,
813 [in,switch_is(level)] spoolss_AddFormInfo info
818 WERROR spoolss_DeleteForm(
819 [in,ref] policy_handle *handle,
820 [in] unistr form_name
826 spoolss_FormFlags flags;
827 [relative] nstring *form_name;
828 spoolss_FormSize size;
829 spoolss_FormArea area;
832 WERROR spoolss_GetForm(
833 [in,ref] policy_handle *handle,
834 [in] unistr form_name,
836 [in] DATA_BLOB *buffer,
838 [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info,
843 spoolss_FormFlags flags;
845 spoolss_FormSize size;
846 spoolss_FormArea area;
847 } spoolss_SetFormInfo1;
849 typedef [switch_type(uint32)] union {
850 [case(1)] spoolss_SetFormInfo1 *info1;
851 } spoolss_SetFormInfo;
855 WERROR spoolss_SetForm(
856 [in,ref] policy_handle *handle,
857 [in] unistr form_name,
859 [in,switch_is(level)] spoolss_SetFormInfo info
862 typedef [nodiscriminant,relative_base,public] union {
863 [case(1)] spoolss_FormInfo1 info1;
869 [public,noopnum,noprint] WERROR _spoolss_EnumForms(
870 [in,ref] policy_handle *handle,
872 [in] DATA_BLOB *buffer,
874 [out] DATA_BLOB *info,
878 [public,noopnum,noprint] void __spoolss_EnumForms(
881 [out,switch_is(level)] spoolss_FormInfo info[count]
883 [nopull,nopush] WERROR spoolss_EnumForms(
884 [in,ref] policy_handle *handle,
886 [in] DATA_BLOB *buffer,
888 [out,switch_is(level),size_is(count)] spoolss_FormInfo *info,
894 [relative] nstring *port_name;
898 SPOOLSS_PORT_TYPE_WRITE = 0x00000001,
899 SPOOLSS_PORT_TYPE_READ = 0x00000002,
900 SPOOLSS_PORT_TYPE_REDIRECTED = 0x00000004,
901 SPOOLSS_PORT_TYPE_NET_ATTACHED = 0x00000008
905 [relative] nstring *port_name;
906 [relative] nstring *monitor_name;
907 [relative] nstring *description;
908 spoolss_PortType port_type;
912 typedef [nodiscriminant,relative_base,public] union {
913 [case(1)] spoolss_PortInfo1 info1;
914 [case(2)] spoolss_PortInfo2 info2;
915 [case(3)]; /* TODO */
921 [public,noopnum,noprint] WERROR _spoolss_EnumPorts(
922 [in] unistr *servername,
924 [in] DATA_BLOB *buffer,
926 [out] DATA_BLOB *info,
930 [public,noopnum,noprint] void __spoolss_EnumPorts(
933 [out,switch_is(level)] spoolss_PortInfo info[count]
935 [nopull,nopush] WERROR spoolss_EnumPorts(
936 [in] unistr *servername,
938 [in] DATA_BLOB *buffer,
940 [out,switch_is(level),size_is(count)] spoolss_PortInfo *info,
948 [relative] nstring *monitor_name;
949 } spoolss_MonitorInfo1;
952 [relative] nstring *monitor_name;
953 [relative] nstring *environment;
954 [relative] nstring *dll_name;
955 } spoolss_MonitorInfo2;
957 typedef [nodiscriminant,relative_base,public] union {
958 [case(1)] spoolss_MonitorInfo1 info1;
959 [case(2)] spoolss_MonitorInfo2 info2;
961 } spoolss_MonitorInfo;
963 [public,noopnum,noprint] WERROR _spoolss_EnumMonitors(
964 [in] unistr *servername,
966 [in] DATA_BLOB *buffer,
968 [out] DATA_BLOB *info,
972 [public,noopnum,noprint] void __spoolss_EnumMonitors(
975 [out,switch_is(level)] spoolss_MonitorInfo info[count]
977 [nopull,nopush] WERROR spoolss_EnumMonitors(
978 [in] unistr *servername,
980 [in] DATA_BLOB *buffer,
982 [out,switch_is(level),size_is(count)] spoolss_MonitorInfo *info,
989 WERROR spoolss_AddPort(
990 [in] unistr *server_name,
992 [in] unistr monitor_name
997 WERROR spoolss_ConfigurePort(
1000 /******************/
1001 /* Function: 0x27 */
1002 WERROR spoolss_DeletePort(
1005 /******************/
1006 /* Function: 0x28 */
1007 WERROR spoolss_CreatePrinterIC(
1010 /******************/
1011 /* Function: 0x29 */
1012 WERROR spoolss_PlayGDIScriptOnPrinterIC(
1015 /******************/
1016 /* Function: 0x2a */
1017 WERROR spoolss_DeletePrinterIC(
1020 /******************/
1021 /* Function: 0x2b */
1022 WERROR spoolss_AddPrinterConnection(
1025 /******************/
1026 /* Function: 0x2c */
1027 WERROR spoolss_DeletePrinterConnection(
1030 /******************/
1031 /* Function: 0x2d */
1032 WERROR spoolss_PrinterMessageBox(
1033 /* Marked as obsolete in MSDN. "Not necessary and has
1037 /******************/
1038 /* Function: 0x2e */
1039 WERROR spoolss_AddMonitor(
1042 /******************/
1043 /* Function: 0x2f */
1044 WERROR spoolss_DeleteMonitor(
1047 /******************/
1048 /* Function: 0x30 */
1049 WERROR spoolss_DeletePrintProcessor(
1052 /******************/
1053 /* Function: 0x31 */
1054 WERROR spoolss_AddPrintProvidor(
1057 /******************/
1058 /* Function: 0x32 */
1059 WERROR spoolss_DeletePrintProvidor(
1062 /******************/
1063 /* Function: 0x33 */
1064 WERROR spoolss_EnumPrintProcDataTypes(
1067 /******************/
1068 /* Function: 0x34 */
1069 WERROR spoolss_ResetPrinter(
1072 /******************/
1073 /* Function: 0x35 */
1074 WERROR spoolss_GetPrinterDriver2(
1075 [in,ref] policy_handle *handle,
1076 [in] unistr *architecture,
1078 [in] DATA_BLOB *buffer,
1079 [in] uint32 offered,
1080 [in] uint32 client_major_version,
1081 [in] uint32 client_minor_version,
1082 [out] DATA_BLOB *info,
1083 [out] uint32 needed,
1084 [out] uint32 server_major_version,
1085 [out] uint32 server_minor_version
1088 /******************/
1089 /* Function: 0x36 */
1090 WERROR spoolss_FindFirstPrinterChangeNotification(
1093 /******************/
1094 /* Function: 0x37 */
1095 WERROR spoolss_FindNextPrinterChangeNotification(
1098 /******************/
1099 /* Function: 0x38 */
1100 WERROR spoolss_FindClosePrinterNotify(
1103 /******************/
1104 /* Function: 0x39 */
1105 WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
1108 /******************/
1109 /* Function: 0x3a */
1110 WERROR spoolss_ReplyOpenPrinter(
1113 /******************/
1114 /* Function: 0x3b */
1115 WERROR spoolss_RouterReplyPrinter(
1118 /******************/
1119 /* Function: 0x3c */
1120 WERROR spoolss_ReplyClosePrinter(
1123 /******************/
1124 /* Function: 0x3d */
1125 WERROR spoolss_AddPortEx(
1128 /******************/
1129 /* Function: 0x3e */
1130 WERROR spoolss_RouterFindFirstPrinterChangeNotification(
1133 /******************/
1134 /* Function: 0x3f */
1135 WERROR spoolss_SpoolerInit(
1138 /******************/
1139 /* Function: 0x40 */
1140 WERROR spoolss_ResetPrinterEx(
1143 /******************/
1144 /* Function: 0x41 */
1145 typedef [flag(NDR_PAHEX)] struct {
1151 [size_is(count)] uint16 *array;
1152 } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2;
1158 [size_is(count)] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t2 *t2;
1159 } spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1;
1161 WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(
1162 [in,ref] policy_handle *handle,
1167 [in] spoolss_RemoteFindFirstPrinterChangeNotifyEx_t1 *t1
1170 /******************/
1171 /* Function: 0x42 */
1172 WERROR spoolss_RouterRefreshPrinterChangeNotification(
1175 /******************/
1176 /* Function: 0x43 */
1177 WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(
1180 /******************/
1181 /* Function: 0x44 */
1193 } spoolss_UserLevel1;
1196 [case(1)] spoolss_UserLevel1 *level1;
1197 } spoolss_UserLevel;
1199 /******************/
1200 /* Function: 0x45 */
1201 WERROR spoolss_OpenPrinterEx(
1202 [in] unistr *printername,
1203 [in] unistr *datatype,
1204 [in] spoolss_DevmodeContainer devmode_ctr,
1205 [in] uint32 access_mask,
1207 [in,switch_is(level)] spoolss_UserLevel userlevel,
1208 [out,ref] policy_handle *handle
1211 /******************/
1212 /* Function: 0x46 */
1213 WERROR spoolss_AddPrinterEx(
1214 [in] unistr *server,
1216 [in,switch_is(level)] spoolss_PrinterInfo *info,
1217 [in] spoolss_DevmodeContainer devmode_ctr,
1218 [in] security_descriptor *secdesc,
1220 [in,switch_is(ulevel)] spoolss_UserLevel userlevel
1223 /******************/
1224 /* Function: 0x47 */
1228 /******************/
1229 /* Function: 0x48 */
1230 WERROR spoolss_EnumPrinterData(
1231 [in,ref] policy_handle *handle,
1232 [in] uint32 enum_index,
1233 [in] uint32 value_offered,
1234 [out] lstring value_name,
1235 [out] uint32 value_needed,
1236 [out] uint32 printerdata_type,
1237 [out] DATA_BLOB buffer,
1238 [in,out,ref] uint32 *data_size
1241 /******************/
1242 /* Function: 0x49 */
1243 WERROR spoolss_DeletePrinterData(
1244 [in,ref] policy_handle *handle,
1245 [in] unistr value_name
1248 /******************/
1249 /* Function: 0x4a */
1253 /******************/
1254 /* Function: 0x4b */
1258 /******************/
1259 /* Function: 0x4c */
1263 /******************/
1264 /* Function: 0x4d */
1265 WERROR spoolss_SetPrinterDataEx(
1266 [in,ref] policy_handle *handle,
1267 [in] unistr key_name,
1268 [in] unistr value_name,
1270 [in] DATA_BLOB buffer,
1274 /******************/
1275 /* Function: 0x4e */
1276 WERROR spoolss_GetPrinterDataEx(
1277 [in,ref] policy_handle *handle,
1278 [in] unistr key_name,
1279 [in] unistr value_name,
1280 [in] uint32 offered,
1282 [out] DATA_BLOB buffer,
1286 /******************/
1287 /* Function: 0x4f */
1288 WERROR spoolss_EnumPrinterDataEx(
1289 [in,ref] policy_handle *handle,
1290 [in] unistr key_name,
1291 [in] uint32 offered,
1292 [out] DATA_BLOB buffer,
1293 [out] uint32 needed,
1297 /******************/
1298 /* Function: 0x50 */
1299 WERROR spoolss_EnumPrinterKey(
1302 /******************/
1303 /* Function: 0x51 */
1304 WERROR spoolss_DeletePrinterDataEx(
1305 [in,ref] policy_handle *handle,
1306 [in] unistr key_name,
1307 [in] unistr value_name
1310 /******************/
1311 /* Function: 0x52 */
1312 WERROR spoolss_DeletePrinterKey(
1315 /******************/
1316 /* Function: 0x53 */
1320 /******************/
1321 /* Function: 0x54 */
1322 WERROR spoolss_DeletePrinterDriverEx(
1325 /******************/
1326 /* Function: 0x55 */
1330 /******************/
1331 /* Function: 0x56 */
1335 /******************/
1336 /* Function: 0x57 */
1340 /******************/
1341 /* Function: 0x58 */
1345 /******************/
1346 /* Function: 0x59 */
1347 WERROR spoolss_AddPrinterDriverEx(
1350 /******************/
1351 /* Function: 0x5a */
1355 /******************/
1356 /* Function: 0x5b */
1360 /******************/
1361 /* Function: 0x5c */
1365 /******************/
1366 /* Function: 0x5d */
1370 /******************/
1371 /* Function: 0x5e */
1375 /******************/
1376 /* Function: 0x5f */