Merge branch 'master' of ssh://git.samba.org/data/git/samba
[ira/wip.git] / librpc / gen_ndr / spoolss.h
1 /* header auto-generated by pidl */
2
3 #include <stdint.h>
4
5 #include "librpc/gen_ndr/misc.h"
6 #include "librpc/gen_ndr/security.h"
7 #include "librpc/gen_ndr/winreg.h"
8 #ifndef _HEADER_spoolss
9 #define _HEADER_spoolss
10
11 #define PRINTER_ENUM_ICONMASK   ( (PRINTER_ENUM_ICON1|PRINTER_ENUM_ICON2|PRINTER_ENUM_ICON3|PRINTER_ENUM_ICON4|PRINTER_ENUM_ICON5|PRINTER_ENUM_ICON6|PRINTER_ENUM_ICON7|PRINTER_ENUM_ICON8) )
12 #define SPOOLSS_ARCHITECTURE_NT_X86     ( "Windows NT x86" )
13 #define PRINTER_CHANGE_PRINTER  ( (PRINTER_CHANGE_ADD_PRINTER|PRINTER_CHANGE_SET_PRINTER|PRINTER_CHANGE_DELETE_PRINTER|PRINTER_CHANGE_FAILED_CONNECTION_PRINTER) )
14 #define PRINTER_CHANGE_JOB      ( (PRINTER_CHANGE_ADD_JOB|PRINTER_CHANGE_SET_JOB|PRINTER_CHANGE_DELETE_JOB|PRINTER_CHANGE_WRITE_JOB) )
15 #define PRINTER_CHANGE_FORM     ( (PRINTER_CHANGE_ADD_FORM|PRINTER_CHANGE_SET_FORM|PRINTER_CHANGE_DELETE_FORM) )
16 #define PRINTER_CHANGE_PORT     ( (PRINTER_CHANGE_ADD_PORT|PRINTER_CHANGE_CONFIGURE_PORT|PRINTER_CHANGE_DELETE_PORT) )
17 #define PRINTER_CHANGE_PRINT_PROCESSOR  ( (PRINTER_CHANGE_ADD_PRINT_PROCESSOR|PRINTER_CHANGE_DELETE_PRINT_PROCESSOR) )
18 #define PRINTER_CHANGE_PRINTER_DRIVER   ( (PRINTER_CHANGE_ADD_PRINTER_DRIVER|PRINTER_CHANGE_SET_PRINTER_DRIVER|PRINTER_CHANGE_DELETE_PRINTER_DRIVER) )
19 #define PRINTER_CHANGE_ALL      ( (PRINTER_CHANGE_JOB|PRINTER_CHANGE_FORM|PRINTER_CHANGE_PORT|PRINTER_CHANGE_PRINT_PROCESSOR|PRINTER_CHANGE_PRINTER_DRIVER) )
20 #define SERVER_ALL_ACCESS       ( SEC_STD_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
21 #define SERVER_READ     ( SEC_STD_READ_CONTROL|SERVER_ACCESS_ENUMERATE )
22 #define SERVER_WRITE    ( STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
23 #define SERVER_EXECUTE  ( SEC_STD_READ_CONTROL|SERVER_ACCESS_ENUMERATE )
24 #define PRINTER_ALL_ACCESS      ( SEC_STD_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE )
25 #define PRINTER_READ    ( SEC_STD_READ_CONTROL|PRINTER_ACCESS_USE )
26 #define PRINTER_WRITE   ( STANDARD_RIGHTS_WRITE_ACCESS|PRINTER_ACCESS_USE )
27 #define PRINTER_EXECUTE ( SEC_STD_READ_CONTROL|PRINTER_ACCESS_USE )
28 #define JOB_ALL_ACCESS  ( SEC_STD_REQUIRED|JOB_ACCESS_ADMINISTER )
29 #define JOB_READ        ( SEC_STD_READ_CONTROL|JOB_ACCESS_ADMINISTER )
30 #define JOB_WRITE       ( STANDARD_RIGHTS_WRITE_ACCESS|JOB_ACCESS_ADMINISTER )
31 #define JOB_EXECUTE     ( SEC_STD_READ_CONTROL|JOB_ACCESS_ADMINISTER )
32 #define PRINTER_ACE_FULL_CONTROL        ( SEC_GENERIC_ALL|PRINTER_ALL_ACCESS )
33 #define PRINTER_ACE_MANAGE_DOCUMENTS    ( SEC_GENERIC_ALL|READ_CONTROL_ACCESS )
34 #define PRINTER_ACE_PRINT       ( GENERIC_EXECUTE_ACCESS|READ_CONTROL_ACCESS|PRINTER_ACCESS_USE )
35 struct spoolss_Time {
36         uint16_t year;
37         uint16_t month;
38         uint16_t day_of_week;
39         uint16_t day;
40         uint16_t hour;
41         uint16_t minute;
42         uint16_t second;
43         uint16_t millisecond;
44 };
45
46 struct spoolss_PrinterInfo0 {
47         const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
48         const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
49         uint32_t cjobs;
50         uint32_t total_jobs;
51         uint32_t total_bytes;
52         struct spoolss_Time time;
53         uint32_t global_counter;
54         uint32_t total_pages;
55         uint32_t version;
56         uint32_t unknown10;
57         uint32_t unknown11;
58         uint32_t unknown12;
59         uint32_t session_counter;
60         uint32_t unknown14;
61         uint32_t printer_errors;
62         uint32_t unknown16;
63         uint32_t unknown17;
64         uint32_t unknown18;
65         uint32_t unknown19;
66         uint32_t change_id;
67         uint32_t unknown21;
68         uint32_t status;
69         uint32_t unknown23;
70         uint32_t c_setprinter;
71         uint16_t unknown25;
72         uint16_t unknown26;
73         uint32_t unknown27;
74         uint32_t unknown28;
75         uint32_t unknown29;
76 };
77
78 /* bitmap spoolss_DeviceModeFields */
79 #define DEVMODE_ORIENTATION ( 0x00000001 )
80 #define DEVMODE_PAPERSIZE ( 0x00000002 )
81 #define DEVMODE_PAPERLENGTH ( 0x00000004 )
82 #define DEVMODE_PAPERWIDTH ( 0x00000008 )
83 #define DEVMODE_SCALE ( 0x00000010 )
84 #define DEVMODE_POSITION ( 0x00000020 )
85 #define DEVMODE_NUP ( 0x00000040 )
86 #define DEVMODE_COPIES ( 0x00000100 )
87 #define DEVMODE_DEFAULTSOURCE ( 0x00000200 )
88 #define DEVMODE_PRINTQUALITY ( 0x00000400 )
89 #define DEVMODE_COLOR ( 0x00000800 )
90 #define DEVMODE_DUPLEX ( 0x00001000 )
91 #define DEVMODE_YRESOLUTION ( 0x00002000 )
92 #define DEVMODE_TTOPTION ( 0x00004000 )
93 #define DEVMODE_COLLATE ( 0x00008000 )
94 #define DEVMODE_FORMNAME ( 0x00010000 )
95 #define DEVMODE_LOGPIXELS ( 0x00020000 )
96 #define DEVMODE_BITSPERPEL ( 0x00040000 )
97 #define DEVMODE_PELSWIDTH ( 0x00080000 )
98 #define DEVMODE_PELSHEIGHT ( 0x00100000 )
99 #define DEVMODE_DISPLAYFLAGS ( 0x00200000 )
100 #define DEVMODE_DISPLAYFREQUENCY ( 0x00400000 )
101 #define DEVMODE_ICMMETHOD ( 0x00800000 )
102 #define DEVMODE_ICMINTENT ( 0x01000000 )
103 #define DEVMODE_MEDIATYPE ( 0x02000000 )
104 #define DEVMODE_DITHERTYPE ( 0x04000000 )
105 #define DEVMODE_PANNINGWIDTH ( 0x08000000 )
106 #define DEVMODE_PANNINGHEIGHT ( 0x10000000 )
107
108 struct spoolss_DeviceMode {
109         const char *devicename;/* [charset(UTF16)] */
110         uint16_t specversion;
111         uint16_t driverversion;
112         uint16_t size;
113         uint16_t __driverextra_length;/* [value(r->driverextra_data.length)] */
114         uint32_t fields;
115         uint16_t orientation;
116         uint16_t papersize;
117         uint16_t paperlength;
118         uint16_t paperwidth;
119         uint16_t scale;
120         uint16_t copies;
121         uint16_t defaultsource;
122         uint16_t printquality;
123         uint16_t color;
124         uint16_t duplex;
125         uint16_t yresolution;
126         uint16_t ttoption;
127         uint16_t collate;
128         const char *formname;/* [charset(UTF16)] */
129         uint16_t logpixels;
130         uint32_t bitsperpel;
131         uint32_t pelswidth;
132         uint32_t pelsheight;
133         uint32_t displayflags;
134         uint32_t displayfrequency;
135         uint32_t icmmethod;
136         uint32_t icmintent;
137         uint32_t mediatype;
138         uint32_t dithertype;
139         uint32_t reserved1;
140         uint32_t reserved2;
141         uint32_t panningwidth;
142         uint32_t panningheight;
143         DATA_BLOB driverextra_data;/* [subcontext_size(__driverextra_length),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
144 }/* [gensize,public] */;
145
146 /* bitmap spoolss_EnumPrinterFlags */
147 #define PRINTER_ENUM_DEFAULT ( 0x00000001 )
148 #define PRINTER_ENUM_LOCAL ( 0x00000002 )
149 #define PRINTER_ENUM_CONNECTIONS ( 0x00000004 )
150 #define PRINTER_ENUM_FAVORITE ( 0x00000004 )
151 #define PRINTER_ENUM_NAME ( 0x00000008 )
152 #define PRINTER_ENUM_REMOTE ( 0x00000010 )
153 #define PRINTER_ENUM_SHARED ( 0x00000020 )
154 #define PRINTER_ENUM_NETWORK ( 0x00000040 )
155 #define PRINTER_ENUM_EXPAND ( 0x00004000 )
156 #define PRINTER_ENUM_CONTAINER ( 0x00008000 )
157 #define PRINTER_ENUM_ICON1 ( 0x00010000 )
158 #define PRINTER_ENUM_ICON2 ( 0x00020000 )
159 #define PRINTER_ENUM_ICON3 ( 0x00040000 )
160 #define PRINTER_ENUM_ICON4 ( 0x00080000 )
161 #define PRINTER_ENUM_ICON5 ( 0x00100000 )
162 #define PRINTER_ENUM_ICON6 ( 0x00200000 )
163 #define PRINTER_ENUM_ICON7 ( 0x00400000 )
164 #define PRINTER_ENUM_ICON8 ( 0x00800000 )
165 #define PRINTER_ENUM_HIDE ( 0x01000000 )
166
167 struct spoolss_PrinterInfo1 {
168         uint32_t flags;
169         const char * name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
170         const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
171         const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
172 };
173
174 /* bitmap spoolss_PrinterAttributes */
175 #define PRINTER_ATTRIBUTE_QUEUED ( 0x00000001 )
176 #define PRINTER_ATTRIBUTE_DIRECT ( 0x00000002 )
177 #define PRINTER_ATTRIBUTE_DEFAULT ( 0x00000004 )
178 #define PRINTER_ATTRIBUTE_SHARED ( 0x00000008 )
179 #define PRINTER_ATTRIBUTE_NETWORK ( 0x00000010 )
180 #define PRINTER_ATTRIBUTE_HIDDEN ( 0x00000020 )
181 #define PRINTER_ATTRIBUTE_LOCAL ( 0x00000040 )
182 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ ( 0x00000080 )
183 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS ( 0x00000100 )
184 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST ( 0x00000200 )
185 #define PRINTER_ATTRIBUTE_WORK_OFFLINE ( 0x00000400 )
186 #define PRINTER_ATTRIBUTE_ENABLE_BIDI ( 0x00000800 )
187 #define PRINTER_ATTRIBUTE_RAW_ONLY ( 0x00001000 )
188 #define PRINTER_ATTRIBUTE_PUBLISHED ( 0x00002000 )
189 #define PRINTER_ATTRIBUTE_FAX ( 0x00004000 )
190 #define PRINTER_ATTRIBUTE_TS ( 0x00008000 )
191
192 /* bitmap spoolss_PrinterStatus */
193 #define PRINTER_STATUS_PAUSED ( 0x00000001 )
194 #define PRINTER_STATUS_ERROR ( 0x00000002 )
195 #define PRINTER_STATUS_PENDING_DELETION ( 0x00000004 )
196 #define PRINTER_STATUS_PAPER_JAM ( 0x00000008 )
197 #define PRINTER_STATUS_PAPER_OUT ( 0x00000010 )
198 #define PRINTER_STATUS_MANUAL_FEED ( 0x00000020 )
199 #define PRINTER_STATUS_PAPER_PROBLEM ( 0x00000040 )
200 #define PRINTER_STATUS_OFFLINE ( 0x00000080 )
201 #define PRINTER_STATUS_IO_ACTIVE ( 0x00000100 )
202 #define PRINTER_STATUS_BUSY ( 0x00000200 )
203 #define PRINTER_STATUS_PRINTING ( 0x00000400 )
204 #define PRINTER_STATUS_OUTPUT_BIN_FULL ( 0x00000800 )
205 #define PRINTER_STATUS_NOT_AVAILABLE ( 0x00001000 )
206 #define PRINTER_STATUS_WAITING ( 0x00002000 )
207 #define PRINTER_STATUS_PROCESSING ( 0x00004000 )
208 #define PRINTER_STATUS_INITIALIZING ( 0x00008000 )
209 #define PRINTER_STATUS_WARMING_UP ( 0x00010000 )
210 #define PRINTER_STATUS_TONER_LOW ( 0x00020000 )
211 #define PRINTER_STATUS_NO_TONER ( 0x00040000 )
212 #define PRINTER_STATUS_PAGE_PUNT ( 0x00080000 )
213 #define PRINTER_STATUS_USER_INTERVENTION ( 0x00100000 )
214 #define PRINTER_STATUS_OUT_OF_MEMORY ( 0x00200000 )
215 #define PRINTER_STATUS_DOOR_OPEN ( 0x00400000 )
216 #define PRINTER_STATUS_SERVER_UNKNOWN ( 0x00800000 )
217 #define PRINTER_STATUS_POWER_SAVE ( 0x01000000 )
218
219 struct spoolss_PrinterInfo2 {
220         const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
221         const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
222         const char * sharename;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
223         const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
224         const char * drivername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
225         const char * comment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
226         const char * location;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
227         struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0)] */
228         const char * sepfile;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
229         const char * printprocessor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
230         const char * datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
231         const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
232         struct security_descriptor *secdesc;/* [relative,subcontext(0)] */
233         uint32_t attributes;
234         uint32_t priority;
235         uint32_t defaultpriority;
236         uint32_t starttime;
237         uint32_t untiltime;
238         uint32_t status;
239         uint32_t cjobs;
240         uint32_t averageppm;
241 };
242
243 struct spoolss_PrinterInfo3 {
244         struct security_descriptor *secdesc;/* [relative,subcontext(0)] */
245 };
246
247 struct spoolss_PrinterInfo4 {
248         const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
249         const char * servername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
250         uint32_t attributes;
251 };
252
253 struct spoolss_PrinterInfo5 {
254         const char * printername;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
255         const char * portname;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
256         uint32_t attributes;
257         uint32_t device_not_selected_timeout;
258         uint32_t transmission_retry_timeout;
259 };
260
261 struct spoolss_PrinterInfo6 {
262         uint32_t status;
263 };
264
265 /* bitmap spoolss_DsPrintAction */
266 #define DSPRINT_PUBLISH ( 0x00000001 )
267 #define DSPRINT_UPDATE ( 0x00000002 )
268 #define DSPRINT_UNPUBLISH ( 0x00000004 )
269 #define DSPRINT_REPUBLISH ( 0x00000008 )
270 #define DSPRINT_PENDING ( 0x80000000 )
271
272 struct spoolss_PrinterInfo7 {
273         const char * guid;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
274         uint32_t action;
275 };
276
277 struct spoolss_DeviceModeInfo {
278         struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0)] */
279 };
280
281 union spoolss_PrinterInfo {
282         struct spoolss_PrinterInfo0 info0;/* [case(0)] */
283         struct spoolss_PrinterInfo1 info1;/* [case] */
284         struct spoolss_PrinterInfo2 info2;/* [case(2)] */
285         struct spoolss_PrinterInfo3 info3;/* [case(3)] */
286         struct spoolss_PrinterInfo4 info4;/* [case(4)] */
287         struct spoolss_PrinterInfo5 info5;/* [case(5)] */
288         struct spoolss_PrinterInfo6 info6;/* [case(6)] */
289         struct spoolss_PrinterInfo7 info7;/* [case(7)] */
290         struct spoolss_DeviceModeInfo info8;/* [case(8)] */
291         struct spoolss_DeviceModeInfo info9;/* [case(9)] */
292 }/* [relative_base,nodiscriminant,public] */;
293
294 struct spoolss_DevmodeContainer {
295         uint32_t _ndr_size;/* [value(_ndr_size_spoolss_DeviceMode(devmode,ndr->iconv_convenience,ndr->flags))] */
296         struct spoolss_DeviceMode *devmode;/* [unique,subcontext_size(_ndr_size),subcontext(4)] */
297 };
298
299 struct spoolss_JobInfo1 {
300         uint32_t job_id;
301         const char * printer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
302         const char * server_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
303         const char * user_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
304         const char * document_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
305         const char * data_type;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
306         const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
307         uint32_t status;
308         uint32_t priority;
309         uint32_t position;
310         uint32_t total_pages;
311         uint32_t pages_printed;
312         struct spoolss_Time time;
313 };
314
315 union spoolss_JobInfo {
316         struct spoolss_JobInfo1 info1;/* [case] */
317 }/* [relative_base,nodiscriminant,public] */;
318
319 struct spoolss_JobInfoContainer {
320         uint32_t level;
321         union spoolss_JobInfo info;/* [switch_is(level)] */
322 };
323
324 enum spoolss_JobControl
325 #ifndef USE_UINT_ENUMS
326  {
327         SPOOLSS_JOB_CONTROL_PAUSE=1,
328         SPOOLSS_JOB_CONTROL_RESUME=2,
329         SPOOLSS_JOB_CONTROL_CANCEL=3,
330         SPOOLSS_JOB_CONTROL_RESTART=4,
331         SPOOLSS_JOB_CONTROL_DELETE=5,
332         SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER=6,
333         SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED=7
334 }
335 #else
336  { __donnot_use_enum_spoolss_JobControl=0x7FFFFFFF}
337 #define SPOOLSS_JOB_CONTROL_PAUSE ( 1 )
338 #define SPOOLSS_JOB_CONTROL_RESUME ( 2 )
339 #define SPOOLSS_JOB_CONTROL_CANCEL ( 3 )
340 #define SPOOLSS_JOB_CONTROL_RESTART ( 4 )
341 #define SPOOLSS_JOB_CONTROL_DELETE ( 5 )
342 #define SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER ( 6 )
343 #define SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED ( 7 )
344 #endif
345 ;
346
347 enum spoolss_PrinterControl
348 #ifndef USE_UINT_ENUMS
349  {
350         SPOOLSS_PRINTER_CONTROL_UNPAUSE=0,
351         SPOOLSS_PRINTER_CONTROL_PAUSE=1,
352         SPOOLSS_PRINTER_CONTROL_RESUME=2,
353         SPOOLSS_PRINTER_CONTROL_PURGE=3,
354         SPOOLSS_PRINTER_CONTROL_SET_STATUS=4
355 }
356 #else
357  { __donnot_use_enum_spoolss_PrinterControl=0x7FFFFFFF}
358 #define SPOOLSS_PRINTER_CONTROL_UNPAUSE ( 0 )
359 #define SPOOLSS_PRINTER_CONTROL_PAUSE ( 1 )
360 #define SPOOLSS_PRINTER_CONTROL_RESUME ( 2 )
361 #define SPOOLSS_PRINTER_CONTROL_PURGE ( 3 )
362 #define SPOOLSS_PRINTER_CONTROL_SET_STATUS ( 4 )
363 #endif
364 ;
365
366 union spoolss_SetPrinterInfo {
367         struct spoolss_PrinterInfo0 *info0;/* [unique,case(0)] */
368         struct spoolss_PrinterInfo1 *info1;/* [unique,case] */
369         struct spoolss_PrinterInfo2 *info2;/* [unique,case(2)] */
370         struct spoolss_PrinterInfo3 *info3;/* [unique,case(3)] */
371         struct spoolss_PrinterInfo4 *info4;/* [unique,case(4)] */
372         struct spoolss_PrinterInfo5 *info5;/* [unique,case(5)] */
373         struct spoolss_PrinterInfo6 *info6;/* [unique,case(6)] */
374         struct spoolss_PrinterInfo7 *info7;/* [unique,case(7)] */
375         struct spoolss_DeviceModeInfo *info8;/* [unique,case(8)] */
376         struct spoolss_DeviceModeInfo *info9;/* [unique,case(9)] */
377 }/* [switch_type(uint32)] */;
378
379 struct spoolss_StringArray {
380         uint32_t _ndr_size;/* [value((ndr_size_spoolss_StringArray(r,ndr->iconv_convenience,ndr->flags)-4)/2)] */
381         const char ** string;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
382 }/* [gensize,public] */;
383
384 struct spoolss_AddDriverInfo1 {
385         const char *driver_name;/* [unique,charset(UTF16)] */
386 };
387
388 enum spoolss_DriverOSVersion
389 #ifndef USE_UINT_ENUMS
390  {
391         SPOOLSS_DRIVER_VERSION_9X=0,
392         SPOOLSS_DRIVER_VERSION_NT35=1,
393         SPOOLSS_DRIVER_VERSION_NT4=2,
394         SPOOLSS_DRIVER_VERSION_200X=3
395 }
396 #else
397  { __donnot_use_enum_spoolss_DriverOSVersion=0x7FFFFFFF}
398 #define SPOOLSS_DRIVER_VERSION_9X ( 0 )
399 #define SPOOLSS_DRIVER_VERSION_NT35 ( 1 )
400 #define SPOOLSS_DRIVER_VERSION_NT4 ( 2 )
401 #define SPOOLSS_DRIVER_VERSION_200X ( 3 )
402 #endif
403 ;
404
405 struct spoolss_AddDriverInfo2 {
406         enum spoolss_DriverOSVersion version;
407         const char *driver_name;/* [unique,charset(UTF16)] */
408         const char *architecture;/* [unique,charset(UTF16)] */
409         const char *driver_path;/* [unique,charset(UTF16)] */
410         const char *data_file;/* [unique,charset(UTF16)] */
411         const char *config_file;/* [unique,charset(UTF16)] */
412 };
413
414 struct spoolss_AddDriverInfo3 {
415         enum spoolss_DriverOSVersion version;
416         const char *driver_name;/* [unique,charset(UTF16)] */
417         const char *architecture;/* [unique,charset(UTF16)] */
418         const char *driver_path;/* [unique,charset(UTF16)] */
419         const char *data_file;/* [unique,charset(UTF16)] */
420         const char *config_file;/* [unique,charset(UTF16)] */
421         const char *help_file;/* [unique,charset(UTF16)] */
422         const char *monitor_name;/* [unique,charset(UTF16)] */
423         const char *default_datatype;/* [unique,charset(UTF16)] */
424         uint32_t _ndr_size_dependent_files;/* [value(((ndr_size_spoolss_StringArray(dependent_files,ndr->iconv_convenience,ndr->flags)-4)/2))] */
425         struct spoolss_StringArray *dependent_files;/* [unique] */
426 };
427
428 struct spoolss_AddDriverInfo4 {
429         enum spoolss_DriverOSVersion version;
430         const char *driver_name;/* [unique,charset(UTF16)] */
431         const char *architecture;/* [unique,charset(UTF16)] */
432         const char *driver_path;/* [unique,charset(UTF16)] */
433         const char *data_file;/* [unique,charset(UTF16)] */
434         const char *config_file;/* [unique,charset(UTF16)] */
435         const char *help_file;/* [unique,charset(UTF16)] */
436         const char *monitor_name;/* [unique,charset(UTF16)] */
437         const char *default_datatype;/* [unique,charset(UTF16)] */
438         uint32_t _ndr_size_dependent_files;/* [value(((ndr_size_spoolss_StringArray(dependent_files,ndr->iconv_convenience,ndr->flags)-4)/2))] */
439         struct spoolss_StringArray *dependent_files;/* [unique] */
440         uint32_t _ndr_size_previous_names;/* [value(((ndr_size_spoolss_StringArray(previous_names,ndr->iconv_convenience,ndr->flags)-4)/2))] */
441         struct spoolss_StringArray *previous_names;/* [unique] */
442 };
443
444 struct spoolss_AddDriverInfo5 {
445         enum spoolss_DriverOSVersion version;
446         const char *driver_name;/* [unique,charset(UTF16)] */
447         const char *architecture;/* [unique,charset(UTF16)] */
448         const char *driver_path;/* [unique,charset(UTF16)] */
449         const char *data_file;/* [unique,charset(UTF16)] */
450         const char *config_file;/* [unique,charset(UTF16)] */
451         uint32_t driver_attributes;
452         uint32_t config_version;
453         uint32_t driver_version;
454 };
455
456 struct spoolss_AddDriverInfo6 {
457         enum spoolss_DriverOSVersion version;
458         const char *driver_name;/* [unique,charset(UTF16)] */
459         const char *architecture;/* [unique,charset(UTF16)] */
460         const char *driver_path;/* [unique,charset(UTF16)] */
461         const char *data_file;/* [unique,charset(UTF16)] */
462         const char *config_file;/* [unique,charset(UTF16)] */
463         const char *help_file;/* [unique,charset(UTF16)] */
464         const char *monitor_name;/* [unique,charset(UTF16)] */
465         const char *default_datatype;/* [unique,charset(UTF16)] */
466         uint32_t _ndr_size_dependent_files;/* [value(((ndr_size_spoolss_StringArray(dependent_files,ndr->iconv_convenience,ndr->flags)-4)/2))] */
467         struct spoolss_StringArray *dependent_files;/* [unique] */
468         uint32_t _ndr_size_previous_names;/* [value(((ndr_size_spoolss_StringArray(previous_names,ndr->iconv_convenience,ndr->flags)-4)/2))] */
469         struct spoolss_StringArray *previous_names;/* [unique] */
470         NTTIME driver_data;
471         uint64_t driver_version;
472         const char *manufacturer_name;/* [unique,charset(UTF16)] */
473         const char *manufacturer_url;/* [unique,charset(UTF16)] */
474         const char *hardware_id;/* [unique,charset(UTF16)] */
475         const char *provider;/* [unique,charset(UTF16)] */
476 };
477
478 union spoolss_AddDriverInfo {
479         struct spoolss_AddDriverInfo1 *info1;/* [unique,case] */
480         struct spoolss_AddDriverInfo2 *info2;/* [unique,case(2)] */
481         struct spoolss_AddDriverInfo3 *info3;/* [unique,case(3)] */
482         struct spoolss_AddDriverInfo4 *info4;/* [unique,case(4)] */
483         struct spoolss_AddDriverInfo6 *info6;/* [unique,case(6)] */
484 }/* [switch_type(uint32)] */;
485
486 struct spoolss_DriverInfo1 {
487         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
488 };
489
490 struct spoolss_DriverInfo2 {
491         enum spoolss_DriverOSVersion version;
492         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
493         const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
494         const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
495         const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
496         const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
497 };
498
499 struct spoolss_DriverInfo3 {
500         enum spoolss_DriverOSVersion version;
501         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
502         const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
503         const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
504         const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
505         const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
506         const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
507         const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
508         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
509         const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
510 };
511
512 struct spoolss_DriverInfo4 {
513         enum spoolss_DriverOSVersion version;
514         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
515         const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
516         const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
517         const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
518         const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
519         const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
520         const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
521         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
522         const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
523         const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
524 };
525
526 struct spoolss_DriverInfo5 {
527         enum spoolss_DriverOSVersion version;
528         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
529         const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
530         const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
531         const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
532         const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
533         uint32_t driver_attributes;
534         uint32_t config_version;
535         uint32_t driver_version;
536 };
537
538 struct spoolss_DriverInfo6 {
539         enum spoolss_DriverOSVersion version;
540         const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
541         const char * architecture;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
542         const char * driver_path;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
543         const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
544         const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
545         const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
546         const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
547         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
548         const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
549         const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
550         NTTIME driver_data;
551         uint64_t driver_version;
552         const char * manufacturer_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
553         const char * manufacturer_url;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
554         const char * hardware_id;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
555         const char * provider;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
556 };
557
558 union spoolss_DriverInfo {
559         struct spoolss_DriverInfo1 info1;/* [case] */
560         struct spoolss_DriverInfo2 info2;/* [case(2)] */
561         struct spoolss_DriverInfo3 info3;/* [case(3)] */
562         struct spoolss_DriverInfo4 info4;/* [case(4)] */
563         struct spoolss_DriverInfo5 info5;/* [case(5)] */
564         struct spoolss_DriverInfo6 info6;/* [case(6)] */
565 }/* [relative_base,nodiscriminant,public] */;
566
567 struct spoolss_DriverDirectoryInfo1 {
568         const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
569 };
570
571 union spoolss_DriverDirectoryInfo {
572         struct spoolss_DriverDirectoryInfo1 info1;/* [case] */
573 }/* [gensize,relative_base,nodiscriminant,public] */;
574
575 struct spoolss_PrintProcessorInfo1 {
576         const char * print_processor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
577 };
578
579 union spoolss_PrintProcessorInfo {
580         struct spoolss_PrintProcessorInfo1 info1;/* [case] */
581 }/* [relative_base,nodiscriminant,public] */;
582
583 struct spoolss_DocumentInfo1 {
584         const char *document_name;/* [unique,charset(UTF16)] */
585         const char *output_file;/* [unique,charset(UTF16)] */
586         const char *datatype;/* [unique,charset(UTF16)] */
587 };
588
589 union spoolss_DocumentInfo {
590         struct spoolss_DocumentInfo1 *info1;/* [unique,case] */
591 }/* [switch_type(uint32)] */;
592
593 struct spoolss_OSVersion {
594         uint32_t _ndr_size;/* [value(ndr_size_spoolss_OSVersion(r,ndr->iconv_convenience,ndr->flags))] */
595         uint32_t major;
596         uint32_t minor;
597         uint32_t build;
598         uint32_t unknown;/* [value(2)] */
599         const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
600 }/* [gensize,public] */;
601
602 struct spoolss_OSVersionEx {
603         uint32_t _ndr_size;/* [value(ndr_size_spoolss_OSVersionEx(r,ndr->iconv_convenience,ndr->flags))] */
604         uint32_t major;
605         uint32_t minor;
606         uint32_t build;
607         uint32_t unknown1;/* [value(2)] */
608         const char * extra_string;/* [subcontext_size(256),subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
609         uint32_t unknown2;
610         uint32_t unknown3;
611 }/* [gensize,public] */;
612
613 enum spoolss_PrinterDataType
614 #ifndef USE_UINT_ENUMS
615  {
616         SPOOLSS_PRINTER_DATA_TYPE_NULL=0,
617         SPOOLSS_PRINTER_DATA_TYPE_STRING=1,
618         SPOOLSS_PRINTER_DATA_TYPE_BINARY=3,
619         SPOOLSS_PRINTER_DATA_TYPE_UINT32=4,
620         SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY=7
621 }
622 #else
623  { __donnot_use_enum_spoolss_PrinterDataType=0x7FFFFFFF}
624 #define SPOOLSS_PRINTER_DATA_TYPE_NULL ( 0 )
625 #define SPOOLSS_PRINTER_DATA_TYPE_STRING ( 1 )
626 #define SPOOLSS_PRINTER_DATA_TYPE_BINARY ( 3 )
627 #define SPOOLSS_PRINTER_DATA_TYPE_UINT32 ( 4 )
628 #define SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY ( 7 )
629 #endif
630 ;
631
632 union spoolss_PrinterData {
633         const char * string;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] */
634         DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING),case(SPOOLSS_PRINTER_DATA_TYPE_BINARY)] */
635         uint32_t value;/* [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] */
636         const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY)] */
637         DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
638 }/* [gensize,public,nodiscriminant] */;
639
640 enum spoolss_FormFlags
641 #ifndef USE_UINT_ENUMS
642  {
643         SPOOLSS_FORM_USER=0,
644         SPOOLSS_FORM_BUILTIN=1,
645         SPOOLSS_FORM_PRINTER=2
646 }
647 #else
648  { __donnot_use_enum_spoolss_FormFlags=0x7FFFFFFF}
649 #define SPOOLSS_FORM_USER ( 0 )
650 #define SPOOLSS_FORM_BUILTIN ( 1 )
651 #define SPOOLSS_FORM_PRINTER ( 2 )
652 #endif
653 ;
654
655 struct spoolss_FormSize {
656         uint32_t width;
657         uint32_t height;
658 };
659
660 struct spoolss_FormArea {
661         uint32_t left;
662         uint32_t top;
663         uint32_t right;
664         uint32_t bottom;
665 };
666
667 struct spoolss_FormInfo1 {
668         enum spoolss_FormFlags flags;
669         const char * form_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
670         struct spoolss_FormSize size;
671         struct spoolss_FormArea area;
672 };
673
674 union spoolss_FormInfo {
675         struct spoolss_FormInfo1 info1;/* [case] */
676 }/* [relative_base,gensize,public,nodiscriminant] */;
677
678 struct spoolss_AddFormInfo1 {
679         enum spoolss_FormFlags flags;
680         const char *form_name;/* [unique,charset(UTF16)] */
681         struct spoolss_FormSize size;
682         struct spoolss_FormArea area;
683 };
684
685 union spoolss_AddFormInfo {
686         struct spoolss_AddFormInfo1 *info1;/* [unique,case] */
687 }/* [switch_type(uint32)] */;
688
689 struct spoolss_PortInfo1 {
690         const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
691 };
692
693 /* bitmap spoolss_PortType */
694 #define SPOOLSS_PORT_TYPE_WRITE ( 0x00000001 )
695 #define SPOOLSS_PORT_TYPE_READ ( 0x00000002 )
696 #define SPOOLSS_PORT_TYPE_REDIRECTED ( 0x00000004 )
697 #define SPOOLSS_PORT_TYPE_NET_ATTACHED ( 0x00000008 )
698
699 struct spoolss_PortInfo2 {
700         const char * port_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
701         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
702         const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
703         uint32_t port_type;
704         uint32_t reserved;
705 };
706
707 union spoolss_PortInfo {
708         struct spoolss_PortInfo1 info1;/* [case] */
709         struct spoolss_PortInfo2 info2;/* [case(2)] */
710 }/* [relative_base,nodiscriminant,public] */;
711
712 struct spoolss_MonitorInfo1 {
713         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
714 };
715
716 struct spoolss_MonitorInfo2 {
717         const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
718         const char * environment;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
719         const char * dll_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
720 };
721
722 union spoolss_MonitorInfo {
723         struct spoolss_MonitorInfo1 info1;/* [case] */
724         struct spoolss_MonitorInfo2 info2;/* [case(2)] */
725 }/* [relative_base,nodiscriminant,public] */;
726
727 /* bitmap spoolss_PrinterChangeFlags */
728 #define PRINTER_CHANGE_ADD_PRINTER ( 0x00000001 )
729 #define PRINTER_CHANGE_SET_PRINTER ( 0x00000002 )
730 #define PRINTER_CHANGE_DELETE_PRINTER ( 0x00000004 )
731 #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER ( 0x00000008 )
732 #define PRINTER_CHANGE_ADD_JOB ( 0x00000100 )
733 #define PRINTER_CHANGE_SET_JOB ( 0x00000200 )
734 #define PRINTER_CHANGE_DELETE_JOB ( 0x00000400 )
735 #define PRINTER_CHANGE_WRITE_JOB ( 0x00000800 )
736 #define PRINTER_CHANGE_ADD_FORM ( 0x00010000 )
737 #define PRINTER_CHANGE_SET_FORM ( 0x00020000 )
738 #define PRINTER_CHANGE_DELETE_FORM ( 0x00040000 )
739 #define PRINTER_CHANGE_ADD_PORT ( 0x00100000 )
740 #define PRINTER_CHANGE_CONFIGURE_PORT ( 0x00200000 )
741 #define PRINTER_CHANGE_DELETE_PORT ( 0x00400000 )
742 #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR ( 0x01000000 )
743 #define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR ( 0x04000000 )
744 #define PRINTER_CHANGE_ADD_PRINTER_DRIVER ( 0x10000000 )
745 #define PRINTER_CHANGE_SET_PRINTER_DRIVER ( 0x20000000 )
746 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER ( 0x40000000 )
747 #define PRINTER_CHANGE_TIMEOUT ( 0x80000000 )
748
749 enum spoolss_Field
750 #ifndef USE_UINT_ENUMS
751  {
752         SPOOLSS_FIELD_SERVER_NAME=0,
753         SPOOLSS_FIELD_PRINTER_NAME=1,
754         SPOOLSS_FIELD_SHARE_NAME=2,
755         SPOOLSS_FIELD_PORT_NAME=3,
756         SPOOLSS_FIELD_DRIVER_NAME=4,
757         SPOOLSS_FIELD_COMMENT=5,
758         SPOOLSS_FIELD_LOCATION=6,
759         SPOOLSS_FIELD_DEVMODE=7,
760         SPOOLSS_FIELD_SEPFILE=8,
761         SPOOLSS_FIELD_PRINT_PROCESSOR=9,
762         SPOOLSS_FIELD_PARAMETERS=10,
763         SPOOLSS_FIELD_DATATYPE=11,
764         SPOOLSS_FIELD_SECURITY_DESCRIPTOR=12,
765         SPOOLSS_FIELD_ATTRIBUTES=13,
766         SPOOLSS_FIELD_PRIORITY=14,
767         SPOOLSS_FIELD_DEFAULT_PRIORITY=15,
768         SPOOLSS_FIELD_START_TIME=16,
769         SPOOLSS_FIELD_UNTIL_TIME=17,
770         SPOOLSS_FIELD_STATUS=18,
771         SPOOLSS_FIELD_STATUS_STRING=19,
772         SPOOLSS_FIELD_CJOBS=20,
773         SPOOLSS_FIELD_AVERAGE_PPM=21,
774         SPOOLSS_FIELD_TOTAL_PAGES=22,
775         SPOOLSS_FIELD_PAGES_PRINTED=23,
776         SPOOLSS_FIELD_TOTAL_BYTES=24,
777         SPOOLSS_FIELD_BYTES_PRINTED=25
778 }
779 #else
780  { __donnot_use_enum_spoolss_Field=0x7FFFFFFF}
781 #define SPOOLSS_FIELD_SERVER_NAME ( 0 )
782 #define SPOOLSS_FIELD_PRINTER_NAME ( 1 )
783 #define SPOOLSS_FIELD_SHARE_NAME ( 2 )
784 #define SPOOLSS_FIELD_PORT_NAME ( 3 )
785 #define SPOOLSS_FIELD_DRIVER_NAME ( 4 )
786 #define SPOOLSS_FIELD_COMMENT ( 5 )
787 #define SPOOLSS_FIELD_LOCATION ( 6 )
788 #define SPOOLSS_FIELD_DEVMODE ( 7 )
789 #define SPOOLSS_FIELD_SEPFILE ( 8 )
790 #define SPOOLSS_FIELD_PRINT_PROCESSOR ( 9 )
791 #define SPOOLSS_FIELD_PARAMETERS ( 10 )
792 #define SPOOLSS_FIELD_DATATYPE ( 11 )
793 #define SPOOLSS_FIELD_SECURITY_DESCRIPTOR ( 12 )
794 #define SPOOLSS_FIELD_ATTRIBUTES ( 13 )
795 #define SPOOLSS_FIELD_PRIORITY ( 14 )
796 #define SPOOLSS_FIELD_DEFAULT_PRIORITY ( 15 )
797 #define SPOOLSS_FIELD_START_TIME ( 16 )
798 #define SPOOLSS_FIELD_UNTIL_TIME ( 17 )
799 #define SPOOLSS_FIELD_STATUS ( 18 )
800 #define SPOOLSS_FIELD_STATUS_STRING ( 19 )
801 #define SPOOLSS_FIELD_CJOBS ( 20 )
802 #define SPOOLSS_FIELD_AVERAGE_PPM ( 21 )
803 #define SPOOLSS_FIELD_TOTAL_PAGES ( 22 )
804 #define SPOOLSS_FIELD_PAGES_PRINTED ( 23 )
805 #define SPOOLSS_FIELD_TOTAL_BYTES ( 24 )
806 #define SPOOLSS_FIELD_BYTES_PRINTED ( 25 )
807 #endif
808 ;
809
810 enum spoolss_NotifyType
811 #ifndef USE_UINT_ENUMS
812  {
813         SPOOLSS_NOTIFY_PRINTER=0,
814         SPOOLSS_NOTIFY_JOB=1
815 }
816 #else
817  { __donnot_use_enum_spoolss_NotifyType=0x7FFFFFFF}
818 #define SPOOLSS_NOTIFY_PRINTER ( 0 )
819 #define SPOOLSS_NOTIFY_JOB ( 1 )
820 #endif
821 ;
822
823 struct spoolss_NotifyOptionsArray {
824         enum spoolss_NotifyType type;
825         uint16_t u1;
826         uint32_t u2;
827         uint32_t u3;
828         uint32_t count;
829         enum spoolss_Field *fields;/* [unique,size_is(count)] */
830 };
831
832 struct spoolss_NotifyOptionsContainer {
833         uint32_t version;
834         uint32_t flags;
835         uint32_t count;
836         struct spoolss_NotifyOptionsArray *options;/* [unique,size_is(count)] */
837 };
838
839 struct spoolss_NotifyUTF16String {
840         uint32_t size;
841         const char *string;/* [unique,charset(UTF16),size_is(size/2)] */
842 };
843
844 struct spoolss_NotifyDOSString {
845         uint32_t size;
846         const char *string;/* [unique,charset(DOS),size_is(size)] */
847 };
848
849 struct spoolss_NotifyBlobData {
850         uint16_t data[8];
851 };
852
853 struct spoolss_NotifyBlob {
854         uint32_t len;
855         struct spoolss_NotifyBlobData *data;/* [unique] */
856 };
857
858 union spoolss_NotifyData {
859         int64_t integer;/* [case] */
860         struct spoolss_NotifyUTF16String utf16_string;/* [case(2)] */
861         struct spoolss_NotifyDOSString ascii_string;/* [case(3)] */
862         struct spoolss_NotifyBlob blob;/* [case(4)] */
863 }/* [switch_type(uint32)] */;
864
865 struct spoolss_Notify {
866         enum spoolss_NotifyType type;
867         enum spoolss_Field field;
868         uint32_t variable_type;
869         uint32_t job_id;
870         union spoolss_NotifyData data;/* [switch_is(variable_type)] */
871 };
872
873 struct spoolss_NotifyInfo {
874         uint32_t version;
875         uint32_t flags;
876         uint32_t count;
877         struct spoolss_Notify *notifies;/* [size_is(count)] */
878 };
879
880 union spoolss_ReplyPrinterInfo {
881         struct spoolss_NotifyInfo *info0;/* [unique,case(0)] */
882 }/* [switch_type(uint32)] */;
883
884 /* bitmap spoolss_PrinterNotifyFlags */
885 #define PRINTER_NOTIFY_INFO_DISCARDED ( 0x00000001 )
886 #define PRINTER_NOTIFY_INFO_DISCARDNOTED ( 0x00010000 )
887 #define PRINTER_NOTIFY_INFO_COLOR_MISMATCH ( 0x00080000 )
888
889 struct spoolss_UserLevel1 {
890         uint32_t size;
891         const char *client;/* [unique,charset(UTF16)] */
892         const char *user;/* [unique,charset(UTF16)] */
893         uint32_t build;
894         uint32_t major;
895         uint32_t minor;
896         uint32_t processor;
897 };
898
899 union spoolss_UserLevel {
900         struct spoolss_UserLevel1 *level1;/* [unique,case] */
901 };
902
903 /* bitmap spoolss_AccessRights */
904 #define SERVER_ACCESS_ADMINISTER ( 0x00000001 )
905 #define SERVER_ACCESS_ENUMERATE ( 0x00000002 )
906 #define PRINTER_ACCESS_ADMINISTER ( 0x00000004 )
907 #define PRINTER_ACCESS_USE ( 0x00000008 )
908 #define JOB_ACCESS_ADMINISTER ( 0x00000010 )
909
910 /* bitmap spoolss_DeleteDriverFlags */
911 #define DPD_DELETE_UNUSED_FILES ( 0x00000001 )
912 #define DPD_DELETE_SPECIFIC_VERSION ( 0x00000002 )
913 #define DPD_DELETE_ALL_FILES ( 0x00000004 )
914
915 /* bitmap spoolss_AddPrinterDriverExFlags */
916 #define APD_STRICT_UPGRADE ( 0x00000001 )
917 #define APD_STRICT_DOWNGRADE ( 0x00000002 )
918 #define APD_COPY_ALL_FILES ( 0x00000004 )
919 #define APD_COPY_NEW_FILES ( 0x00000008 )
920 #define APD_COPY_FROM_DIRECTORY ( 0x00000010 )
921 #define APD_DONT_COPY_FILES_TO_CLUSTER ( 0x00001000 )
922 #define APD_COPY_TO_ALL_SPOOLERS ( 0x00002000 )
923 #define APD_RETURN_BLOCKING_STATUS_CODE ( 0x00010000 )
924
925
926 struct _spoolss_EnumPrinters {
927         struct {
928                 uint32_t flags;
929                 const char *server;/* [unique,charset(UTF16)] */
930                 uint32_t level;
931                 DATA_BLOB *buffer;/* [unique] */
932                 uint32_t offered;
933         } in;
934
935         struct {
936                 DATA_BLOB *info;/* [unique] */
937                 uint32_t *needed;/* [ref] */
938                 uint32_t count;
939                 WERROR result;
940         } out;
941
942 };
943
944
945 struct __spoolss_EnumPrinters {
946         struct {
947                 uint32_t level;
948                 uint32_t count;
949         } in;
950
951         struct {
952                 union spoolss_PrinterInfo *info;/* [switch_is(level)] */
953         } out;
954
955 };
956
957
958 struct spoolss_EnumPrinters {
959         struct {
960                 uint32_t flags;
961                 const char *server;/* [unique,charset(UTF16)] */
962                 uint32_t level;
963                 DATA_BLOB *buffer;/* [unique] */
964                 uint32_t offered;
965         } in;
966
967         struct {
968                 union spoolss_PrinterInfo *info;/* [unique,switch_is(level),size_is(count)] */
969                 uint32_t *needed;/* [ref] */
970                 uint32_t count;
971                 WERROR result;
972         } out;
973
974 };
975
976
977 struct spoolss_OpenPrinter {
978         struct {
979                 const char *printername;/* [unique,charset(UTF16)] */
980                 const char *datatype;/* [unique,charset(UTF16)] */
981                 struct spoolss_DevmodeContainer devmode_ctr;
982                 uint32_t access_mask;
983         } in;
984
985         struct {
986                 struct policy_handle *handle;/* [ref] */
987                 WERROR result;
988         } out;
989
990 };
991
992
993 struct spoolss_SetJob {
994         struct {
995                 struct policy_handle *handle;/* [ref] */
996                 uint32_t job_id;
997                 struct spoolss_JobInfoContainer *ctr;/* [unique] */
998                 enum spoolss_JobControl command;
999         } in;
1000
1001         struct {
1002                 WERROR result;
1003         } out;
1004
1005 };
1006
1007
1008 struct spoolss_GetJob {
1009         struct {
1010                 struct policy_handle *handle;/* [ref] */
1011                 uint32_t job_id;
1012                 uint32_t level;
1013                 DATA_BLOB *buffer;/* [unique] */
1014                 uint32_t offered;
1015         } in;
1016
1017         struct {
1018                 union spoolss_JobInfo *info;/* [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */
1019                 uint32_t *needed;/* [ref] */
1020                 WERROR result;
1021         } out;
1022
1023 };
1024
1025
1026 struct _spoolss_EnumJobs {
1027         struct {
1028                 struct policy_handle *handle;/* [ref] */
1029                 uint32_t firstjob;
1030                 uint32_t numjobs;
1031                 uint32_t level;
1032                 DATA_BLOB *buffer;/* [unique] */
1033                 uint32_t offered;
1034         } in;
1035
1036         struct {
1037                 DATA_BLOB *info;/* [unique] */
1038                 uint32_t *needed;/* [ref] */
1039                 uint32_t count;
1040                 WERROR result;
1041         } out;
1042
1043 };
1044
1045
1046 struct __spoolss_EnumJobs {
1047         struct {
1048                 uint32_t level;
1049                 uint32_t count;
1050         } in;
1051
1052         struct {
1053                 union spoolss_JobInfo *info;/* [switch_is(level)] */
1054         } out;
1055
1056 };
1057
1058
1059 struct spoolss_EnumJobs {
1060         struct {
1061                 struct policy_handle *handle;/* [ref] */
1062                 uint32_t firstjob;
1063                 uint32_t numjobs;
1064                 uint32_t level;
1065                 DATA_BLOB *buffer;/* [unique] */
1066                 uint32_t offered;
1067         } in;
1068
1069         struct {
1070                 union spoolss_JobInfo *info;/* [unique,switch_is(level),size_is(count)] */
1071                 uint32_t *needed;/* [ref] */
1072                 uint32_t count;
1073                 WERROR result;
1074         } out;
1075
1076 };
1077
1078
1079 struct spoolss_AddPrinter {
1080         struct {
1081                 WERROR result;
1082         } out;
1083
1084 };
1085
1086
1087 struct spoolss_DeletePrinter {
1088         struct {
1089                 struct policy_handle *handle;/* [ref] */
1090         } in;
1091
1092         struct {
1093                 WERROR result;
1094         } out;
1095
1096 };
1097
1098
1099 struct spoolss_SetPrinter {
1100         struct {
1101                 struct policy_handle *handle;/* [ref] */
1102                 uint32_t level;
1103                 union spoolss_SetPrinterInfo info;/* [switch_is(level)] */
1104                 struct spoolss_DevmodeContainer devmode_ctr;
1105                 struct sec_desc_buf secdesc_ctr;
1106                 enum spoolss_PrinterControl command;
1107         } in;
1108
1109         struct {
1110                 WERROR result;
1111         } out;
1112
1113 };
1114
1115
1116 struct spoolss_GetPrinter {
1117         struct {
1118                 struct policy_handle *handle;/* [ref] */
1119                 uint32_t level;
1120                 DATA_BLOB *buffer;/* [unique] */
1121                 uint32_t offered;
1122         } in;
1123
1124         struct {
1125                 union spoolss_PrinterInfo *info;/* [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */
1126                 uint32_t *needed;/* [ref] */
1127                 WERROR result;
1128         } out;
1129
1130 };
1131
1132
1133 struct spoolss_AddPrinterDriver {
1134         struct {
1135                 const char *servername;/* [ref,charset(UTF16)] */
1136                 uint32_t level;
1137                 union spoolss_AddDriverInfo info;/* [switch_is(level)] */
1138         } in;
1139
1140         struct {
1141                 WERROR result;
1142         } out;
1143
1144 };
1145
1146
1147 struct _spoolss_EnumPrinterDrivers {
1148         struct {
1149                 const char *server;/* [unique,charset(UTF16)] */
1150                 const char *environment;/* [unique,charset(UTF16)] */
1151                 uint32_t level;
1152                 DATA_BLOB *buffer;/* [unique] */
1153                 uint32_t offered;
1154         } in;
1155
1156         struct {
1157                 DATA_BLOB *info;/* [unique] */
1158                 uint32_t *needed;/* [ref] */
1159                 uint32_t count;
1160                 WERROR result;
1161         } out;
1162
1163 };
1164
1165
1166 struct __spoolss_EnumPrinterDrivers {
1167         struct {
1168                 uint32_t level;
1169                 uint32_t count;
1170         } in;
1171
1172         struct {
1173                 union spoolss_DriverInfo *info;/* [switch_is(level)] */
1174         } out;
1175
1176 };
1177
1178
1179 struct spoolss_EnumPrinterDrivers {
1180         struct {
1181                 const char *server;/* [unique,charset(UTF16)] */
1182                 const char *environment;/* [unique,charset(UTF16)] */
1183                 uint32_t level;
1184                 DATA_BLOB *buffer;/* [unique] */
1185                 uint32_t offered;
1186         } in;
1187
1188         struct {
1189                 union spoolss_DriverInfo *info;/* [unique,switch_is(level),size_is(count)] */
1190                 uint32_t *needed;/* [ref] */
1191                 uint32_t count;
1192                 WERROR result;
1193         } out;
1194
1195 };
1196
1197
1198 struct spoolss_GetPrinterDriver {
1199         struct {
1200                 WERROR result;
1201         } out;
1202
1203 };
1204
1205
1206 struct spoolss_GetPrinterDriverDirectory {
1207         struct {
1208                 const char *server;/* [unique,charset(UTF16)] */
1209                 const char *environment;/* [unique,charset(UTF16)] */
1210                 uint32_t level;
1211                 DATA_BLOB *buffer;/* [unique] */
1212                 uint32_t offered;
1213         } in;
1214
1215         struct {
1216                 union spoolss_DriverDirectoryInfo *info;/* [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */
1217                 uint32_t *needed;/* [ref] */
1218                 WERROR result;
1219         } out;
1220
1221 };
1222
1223
1224 struct spoolss_DeletePrinterDriver {
1225         struct {
1226                 const char *server;/* [unique,charset(UTF16)] */
1227                 const char *architecture;/* [charset(UTF16)] */
1228                 const char *driver;/* [charset(UTF16)] */
1229         } in;
1230
1231         struct {
1232                 WERROR result;
1233         } out;
1234
1235 };
1236
1237
1238 struct spoolss_AddPrintProcessor {
1239         struct {
1240                 const char *server;/* [unique,charset(UTF16)] */
1241                 const char *architecture;/* [charset(UTF16)] */
1242                 const char *path_name;/* [charset(UTF16)] */
1243                 const char *print_processor_name;/* [charset(UTF16)] */
1244         } in;
1245
1246         struct {
1247                 WERROR result;
1248         } out;
1249
1250 };
1251
1252
1253 struct _spoolss_EnumPrintProcessors {
1254         struct {
1255                 const char *servername;/* [unique,charset(UTF16)] */
1256                 const char *environment;/* [unique,charset(UTF16)] */
1257                 uint32_t level;
1258                 DATA_BLOB *buffer;/* [unique] */
1259                 uint32_t offered;
1260         } in;
1261
1262         struct {
1263                 DATA_BLOB *info;/* [unique] */
1264                 uint32_t *needed;/* [ref] */
1265                 uint32_t count;
1266                 WERROR result;
1267         } out;
1268
1269 };
1270
1271
1272 struct __spoolss_EnumPrintProcessors {
1273         struct {
1274                 uint32_t level;
1275                 uint32_t count;
1276         } in;
1277
1278         struct {
1279                 union spoolss_PrintProcessorInfo *info;/* [switch_is(level)] */
1280         } out;
1281
1282 };
1283
1284
1285 struct spoolss_EnumPrintProcessors {
1286         struct {
1287                 const char *servername;/* [unique,charset(UTF16)] */
1288                 const char *environment;/* [unique,charset(UTF16)] */
1289                 uint32_t level;
1290                 DATA_BLOB *buffer;/* [unique] */
1291                 uint32_t offered;
1292         } in;
1293
1294         struct {
1295                 union spoolss_PrintProcessorInfo *info;/* [unique,switch_is(level),size_is(count)] */
1296                 uint32_t *needed;/* [ref] */
1297                 uint32_t count;
1298                 WERROR result;
1299         } out;
1300
1301 };
1302
1303
1304 struct spoolss_GetPrintProcessorDirectory {
1305         struct {
1306                 WERROR result;
1307         } out;
1308
1309 };
1310
1311
1312 struct spoolss_StartDocPrinter {
1313         struct {
1314                 struct policy_handle *handle;/* [ref] */
1315                 uint32_t level;
1316                 union spoolss_DocumentInfo info;/* [switch_is(level)] */
1317         } in;
1318
1319         struct {
1320                 uint32_t *job_id;/* [ref] */
1321                 WERROR result;
1322         } out;
1323
1324 };
1325
1326
1327 struct spoolss_StartPagePrinter {
1328         struct {
1329                 struct policy_handle *handle;/* [ref] */
1330         } in;
1331
1332         struct {
1333                 WERROR result;
1334         } out;
1335
1336 };
1337
1338
1339 struct spoolss_WritePrinter {
1340         struct {
1341                 struct policy_handle *handle;/* [ref] */
1342                 DATA_BLOB data;
1343                 uint32_t _data_size;/* [value(r->in.data.length)] */
1344         } in;
1345
1346         struct {
1347                 uint32_t *num_written;/* [ref] */
1348                 WERROR result;
1349         } out;
1350
1351 };
1352
1353
1354 struct spoolss_EndPagePrinter {
1355         struct {
1356                 struct policy_handle *handle;/* [ref] */
1357         } in;
1358
1359         struct {
1360                 WERROR result;
1361         } out;
1362
1363 };
1364
1365
1366 struct spoolss_AbortPrinter {
1367         struct {
1368                 struct policy_handle *handle;/* [ref] */
1369         } in;
1370
1371         struct {
1372                 WERROR result;
1373         } out;
1374
1375 };
1376
1377
1378 struct spoolss_ReadPrinter {
1379         struct {
1380                 struct policy_handle *handle;/* [ref] */
1381                 uint32_t data_size;
1382         } in;
1383
1384         struct {
1385                 uint8_t *data;/* [ref,size_is(data_size)] */
1386                 uint32_t *_data_size;/* [ref] */
1387                 WERROR result;
1388         } out;
1389
1390 };
1391
1392
1393 struct spoolss_EndDocPrinter {
1394         struct {
1395                 struct policy_handle *handle;/* [ref] */
1396         } in;
1397
1398         struct {
1399                 WERROR result;
1400         } out;
1401
1402 };
1403
1404
1405 struct spoolss_AddJob {
1406         struct {
1407                 struct policy_handle *handle;/* [ref] */
1408                 uint32_t level;
1409                 uint32_t offered;
1410                 uint8_t *buffer;/* [unique,size_is(offered)] */
1411         } in;
1412
1413         struct {
1414                 uint32_t *needed;/* [ref] */
1415                 uint8_t *buffer;/* [unique,size_is(offered)] */
1416                 WERROR result;
1417         } out;
1418
1419 };
1420
1421
1422 struct spoolss_ScheduleJob {
1423         struct {
1424                 struct policy_handle *handle;/* [ref] */
1425                 uint32_t jobid;
1426         } in;
1427
1428         struct {
1429                 WERROR result;
1430         } out;
1431
1432 };
1433
1434
1435 struct _spoolss_GetPrinterData {
1436         struct {
1437                 struct policy_handle *handle;/* [ref] */
1438                 const char *value_name;/* [charset(UTF16)] */
1439                 uint32_t offered;
1440         } in;
1441
1442         struct {
1443                 enum spoolss_PrinterDataType *type;/* [ref] */
1444                 DATA_BLOB data;
1445                 uint32_t *needed;/* [ref] */
1446                 WERROR result;
1447         } out;
1448
1449 };
1450
1451
1452 struct __spoolss_GetPrinterData {
1453         struct {
1454                 enum spoolss_PrinterDataType type;
1455         } in;
1456
1457         struct {
1458                 union spoolss_PrinterData data;/* [switch_is(type)] */
1459         } out;
1460
1461 };
1462
1463
1464 struct spoolss_GetPrinterData {
1465         struct {
1466                 struct policy_handle *handle;/* [ref] */
1467                 const char *value_name;/* [charset(UTF16)] */
1468                 uint32_t offered;
1469         } in;
1470
1471         struct {
1472                 enum spoolss_PrinterDataType *type;/* [ref] */
1473                 union spoolss_PrinterData data;/* [subcontext_size(offered),subcontext(4),switch_is(*type)] */
1474                 uint32_t *needed;/* [ref] */
1475                 WERROR result;
1476         } out;
1477
1478 };
1479
1480
1481 struct _spoolss_SetPrinterData {
1482         struct {
1483                 struct policy_handle *handle;/* [ref] */
1484                 const char *value_name;/* [charset(UTF16)] */
1485                 enum spoolss_PrinterDataType type;
1486                 DATA_BLOB data;
1487                 uint32_t _offered;
1488         } in;
1489
1490         struct {
1491                 WERROR result;
1492         } out;
1493
1494 };
1495
1496
1497 struct __spoolss_SetPrinterData {
1498         struct {
1499                 enum spoolss_PrinterDataType type;
1500         } in;
1501
1502         struct {
1503                 union spoolss_PrinterData data;/* [switch_is(type)] */
1504         } out;
1505
1506 };
1507
1508
1509 struct spoolss_SetPrinterData {
1510         struct {
1511                 struct policy_handle *handle;/* [ref] */
1512                 const char *value_name;/* [charset(UTF16)] */
1513                 enum spoolss_PrinterDataType type;
1514                 union spoolss_PrinterData data;/* [subcontext(4),switch_is(type)] */
1515                 uint32_t _offered;/* [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */
1516         } in;
1517
1518         struct {
1519                 WERROR result;
1520         } out;
1521
1522 };
1523
1524
1525 struct spoolss_WaitForPrinterChange {
1526         struct {
1527                 WERROR result;
1528         } out;
1529
1530 };
1531
1532
1533 struct spoolss_ClosePrinter {
1534         struct {
1535                 struct policy_handle *handle;/* [ref] */
1536         } in;
1537
1538         struct {
1539                 struct policy_handle *handle;/* [ref] */
1540                 WERROR result;
1541         } out;
1542
1543 };
1544
1545
1546 struct spoolss_AddForm {
1547         struct {
1548                 struct policy_handle *handle;/* [ref] */
1549                 uint32_t level;
1550                 union spoolss_AddFormInfo info;/* [switch_is(level)] */
1551         } in;
1552
1553         struct {
1554                 WERROR result;
1555         } out;
1556
1557 };
1558
1559
1560 struct spoolss_DeleteForm {
1561         struct {
1562                 struct policy_handle *handle;/* [ref] */
1563                 const char *form_name;/* [charset(UTF16)] */
1564         } in;
1565
1566         struct {
1567                 WERROR result;
1568         } out;
1569
1570 };
1571
1572
1573 struct spoolss_GetForm {
1574         struct {
1575                 struct policy_handle *handle;/* [ref] */
1576                 const char *form_name;/* [charset(UTF16)] */
1577                 uint32_t level;
1578                 DATA_BLOB *buffer;/* [unique] */
1579                 uint32_t offered;
1580         } in;
1581
1582         struct {
1583                 union spoolss_FormInfo *info;/* [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */
1584                 uint32_t *needed;/* [ref] */
1585                 WERROR result;
1586         } out;
1587
1588 };
1589
1590
1591 struct spoolss_SetForm {
1592         struct {
1593                 struct policy_handle *handle;/* [ref] */
1594                 const char *form_name;/* [charset(UTF16)] */
1595                 uint32_t level;
1596                 union spoolss_AddFormInfo info;/* [switch_is(level)] */
1597         } in;
1598
1599         struct {
1600                 WERROR result;
1601         } out;
1602
1603 };
1604
1605
1606 struct _spoolss_EnumForms {
1607         struct {
1608                 struct policy_handle *handle;/* [ref] */
1609                 uint32_t level;
1610                 DATA_BLOB *buffer;/* [unique] */
1611                 uint32_t offered;
1612         } in;
1613
1614         struct {
1615                 DATA_BLOB *info;/* [unique] */
1616                 uint32_t *needed;/* [ref] */
1617                 uint32_t count;
1618                 WERROR result;
1619         } out;
1620
1621 };
1622
1623
1624 struct __spoolss_EnumForms {
1625         struct {
1626                 uint32_t level;
1627                 uint32_t count;
1628         } in;
1629
1630         struct {
1631                 union spoolss_FormInfo *info;/* [switch_is(level)] */
1632         } out;
1633
1634 };
1635
1636
1637 struct spoolss_EnumForms {
1638         struct {
1639                 struct policy_handle *handle;/* [ref] */
1640                 uint32_t level;
1641                 DATA_BLOB *buffer;/* [unique] */
1642                 uint32_t offered;
1643         } in;
1644
1645         struct {
1646                 union spoolss_FormInfo *info;/* [unique,switch_is(level),size_is(count)] */
1647                 uint32_t *needed;/* [ref] */
1648                 uint32_t count;
1649                 WERROR result;
1650         } out;
1651
1652 };
1653
1654
1655 struct _spoolss_EnumPorts {
1656         struct {
1657                 const char *servername;/* [unique,charset(UTF16)] */
1658                 uint32_t level;
1659                 DATA_BLOB *buffer;/* [unique] */
1660                 uint32_t offered;
1661         } in;
1662
1663         struct {
1664                 DATA_BLOB *info;/* [unique] */
1665                 uint32_t *needed;/* [ref] */
1666                 uint32_t count;
1667                 WERROR result;
1668         } out;
1669
1670 };
1671
1672
1673 struct __spoolss_EnumPorts {
1674         struct {
1675                 uint32_t level;
1676                 uint32_t count;
1677         } in;
1678
1679         struct {
1680                 union spoolss_PortInfo *info;/* [switch_is(level)] */
1681         } out;
1682
1683 };
1684
1685
1686 struct spoolss_EnumPorts {
1687         struct {
1688                 const char *servername;/* [unique,charset(UTF16)] */
1689                 uint32_t level;
1690                 DATA_BLOB *buffer;/* [unique] */
1691                 uint32_t offered;
1692         } in;
1693
1694         struct {
1695                 union spoolss_PortInfo *info;/* [unique,switch_is(level),size_is(count)] */
1696                 uint32_t *needed;/* [ref] */
1697                 uint32_t count;
1698                 WERROR result;
1699         } out;
1700
1701 };
1702
1703
1704 struct _spoolss_EnumMonitors {
1705         struct {
1706                 const char *servername;/* [unique,charset(UTF16)] */
1707                 uint32_t level;
1708                 DATA_BLOB *buffer;/* [unique] */
1709                 uint32_t offered;
1710         } in;
1711
1712         struct {
1713                 DATA_BLOB *info;/* [unique] */
1714                 uint32_t *needed;/* [ref] */
1715                 uint32_t count;
1716                 WERROR result;
1717         } out;
1718
1719 };
1720
1721
1722 struct __spoolss_EnumMonitors {
1723         struct {
1724                 uint32_t level;
1725                 uint32_t count;
1726         } in;
1727
1728         struct {
1729                 union spoolss_MonitorInfo *info;/* [switch_is(level)] */
1730         } out;
1731
1732 };
1733
1734
1735 struct spoolss_EnumMonitors {
1736         struct {
1737                 const char *servername;/* [unique,charset(UTF16)] */
1738                 uint32_t level;
1739                 DATA_BLOB *buffer;/* [unique] */
1740                 uint32_t offered;
1741         } in;
1742
1743         struct {
1744                 union spoolss_MonitorInfo *info;/* [unique,switch_is(level),size_is(count)] */
1745                 uint32_t *needed;/* [ref] */
1746                 uint32_t count;
1747                 WERROR result;
1748         } out;
1749
1750 };
1751
1752
1753 struct spoolss_AddPort {
1754         struct {
1755                 const char *server_name;/* [unique,charset(UTF16)] */
1756                 uint32_t unknown;
1757                 const char *monitor_name;/* [charset(UTF16)] */
1758         } in;
1759
1760         struct {
1761                 WERROR result;
1762         } out;
1763
1764 };
1765
1766
1767 struct spoolss_ConfigurePort {
1768         struct {
1769                 WERROR result;
1770         } out;
1771
1772 };
1773
1774
1775 struct spoolss_DeletePort {
1776         struct {
1777                 WERROR result;
1778         } out;
1779
1780 };
1781
1782
1783 struct spoolss_CreatePrinterIC {
1784         struct {
1785                 WERROR result;
1786         } out;
1787
1788 };
1789
1790
1791 struct spoolss_PlayGDIScriptOnPrinterIC {
1792         struct {
1793                 WERROR result;
1794         } out;
1795
1796 };
1797
1798
1799 struct spoolss_DeletePrinterIC {
1800         struct {
1801                 WERROR result;
1802         } out;
1803
1804 };
1805
1806
1807 struct spoolss_AddPrinterConnection {
1808         struct {
1809                 WERROR result;
1810         } out;
1811
1812 };
1813
1814
1815 struct spoolss_DeletePrinterConnection {
1816         struct {
1817                 WERROR result;
1818         } out;
1819
1820 };
1821
1822
1823 struct spoolss_PrinterMessageBox {
1824         struct {
1825                 WERROR result;
1826         } out;
1827
1828 };
1829
1830
1831 struct spoolss_AddMonitor {
1832         struct {
1833                 WERROR result;
1834         } out;
1835
1836 };
1837
1838
1839 struct spoolss_DeleteMonitor {
1840         struct {
1841                 WERROR result;
1842         } out;
1843
1844 };
1845
1846
1847 struct spoolss_DeletePrintProcessor {
1848         struct {
1849                 WERROR result;
1850         } out;
1851
1852 };
1853
1854
1855 struct spoolss_AddPrintProvidor {
1856         struct {
1857                 WERROR result;
1858         } out;
1859
1860 };
1861
1862
1863 struct spoolss_DeletePrintProvidor {
1864         struct {
1865                 WERROR result;
1866         } out;
1867
1868 };
1869
1870
1871 struct spoolss_EnumPrintProcDataTypes {
1872         struct {
1873                 WERROR result;
1874         } out;
1875
1876 };
1877
1878
1879 struct spoolss_ResetPrinter {
1880         struct {
1881                 WERROR result;
1882         } out;
1883
1884 };
1885
1886
1887 struct spoolss_GetPrinterDriver2 {
1888         struct {
1889                 struct policy_handle *handle;/* [ref] */
1890                 const char *architecture;/* [unique,charset(UTF16)] */
1891                 uint32_t level;
1892                 DATA_BLOB *buffer;/* [unique] */
1893                 uint32_t offered;
1894                 uint32_t client_major_version;
1895                 uint32_t client_minor_version;
1896         } in;
1897
1898         struct {
1899                 DATA_BLOB *info;/* [unique] */
1900                 uint32_t *needed;/* [ref] */
1901                 uint32_t *server_major_version;/* [ref] */
1902                 uint32_t *server_minor_version;/* [ref] */
1903                 WERROR result;
1904         } out;
1905
1906 };
1907
1908
1909 struct spoolss_FindFirstPrinterChangeNotification {
1910         struct {
1911                 WERROR result;
1912         } out;
1913
1914 };
1915
1916
1917 struct spoolss_FindNextPrinterChangeNotification {
1918         struct {
1919                 WERROR result;
1920         } out;
1921
1922 };
1923
1924
1925 struct spoolss_FindClosePrinterNotify {
1926         struct {
1927                 struct policy_handle *handle;/* [ref] */
1928         } in;
1929
1930         struct {
1931                 WERROR result;
1932         } out;
1933
1934 };
1935
1936
1937 struct spoolss_RouterFindFirstPrinterChangeNotificationOld {
1938         struct {
1939                 WERROR result;
1940         } out;
1941
1942 };
1943
1944
1945 struct spoolss_ReplyOpenPrinter {
1946         struct {
1947                 const char *server_name;/* [charset(UTF16)] */
1948                 uint32_t printer_local;
1949                 enum winreg_Type type;
1950                 uint32_t bufsize;/* [range(0,512)] */
1951                 uint8_t *buffer;/* [unique,size_is(bufsize)] */
1952         } in;
1953
1954         struct {
1955                 struct policy_handle *handle;/* [ref] */
1956                 WERROR result;
1957         } out;
1958
1959 };
1960
1961
1962 struct spoolss_RouterReplyPrinter {
1963         struct {
1964                 struct policy_handle *handle;/* [ref] */
1965                 uint32_t flags;
1966                 uint32_t bufsize;/* [range(0,512)] */
1967                 uint8_t *buffer;/* [unique,size_is(bufsize)] */
1968         } in;
1969
1970         struct {
1971                 WERROR result;
1972         } out;
1973
1974 };
1975
1976
1977 struct spoolss_ReplyClosePrinter {
1978         struct {
1979                 struct policy_handle *handle;/* [ref] */
1980         } in;
1981
1982         struct {
1983                 struct policy_handle *handle;/* [ref] */
1984                 WERROR result;
1985         } out;
1986
1987 };
1988
1989
1990 struct spoolss_AddPortEx {
1991         struct {
1992                 WERROR result;
1993         } out;
1994
1995 };
1996
1997
1998 struct spoolss_RouterFindFirstPrinterChangeNotification {
1999         struct {
2000                 WERROR result;
2001         } out;
2002
2003 };
2004
2005
2006 struct spoolss_SpoolerInit {
2007         struct {
2008                 WERROR result;
2009         } out;
2010
2011 };
2012
2013
2014 struct spoolss_ResetPrinterEx {
2015         struct {
2016                 WERROR result;
2017         } out;
2018
2019 };
2020
2021
2022 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx {
2023         struct {
2024                 struct policy_handle *handle;/* [ref] */
2025                 uint32_t flags;
2026                 uint32_t options;
2027                 const char *str;/* [unique,charset(UTF16)] */
2028                 uint32_t printer_local;
2029                 struct spoolss_NotifyOptionsContainer *t1;/* [unique] */
2030         } in;
2031
2032         struct {
2033                 WERROR result;
2034         } out;
2035
2036 };
2037
2038
2039 struct spoolss_RouterReplyPrinterEx {
2040         struct {
2041                 struct policy_handle *handle;/* [ref] */
2042                 uint32_t color;
2043                 uint32_t flags;
2044                 uint32_t reply_type;
2045                 union spoolss_ReplyPrinterInfo info;/* [switch_is(reply_type)] */
2046         } in;
2047
2048         struct {
2049                 uint32_t *reply_result;/* [ref] */
2050                 WERROR result;
2051         } out;
2052
2053 };
2054
2055
2056 struct spoolss_RouterRefreshPrinterChangeNotify {
2057         struct {
2058                 struct policy_handle *handle;/* [ref] */
2059                 uint32_t change_low;
2060                 struct spoolss_NotifyOptionsContainer *container;/* [unique] */
2061         } in;
2062
2063         struct {
2064                 struct spoolss_NotifyInfo **info;/* [ref] */
2065                 WERROR result;
2066         } out;
2067
2068 };
2069
2070
2071 struct spoolss_44 {
2072         struct {
2073                 WERROR result;
2074         } out;
2075
2076 };
2077
2078
2079 struct spoolss_OpenPrinterEx {
2080         struct {
2081                 const char *printername;/* [unique,charset(UTF16)] */
2082                 const char *datatype;/* [unique,charset(UTF16)] */
2083                 struct spoolss_DevmodeContainer devmode_ctr;
2084                 uint32_t access_mask;
2085                 uint32_t level;
2086                 union spoolss_UserLevel userlevel;/* [switch_is(level)] */
2087         } in;
2088
2089         struct {
2090                 struct policy_handle *handle;/* [ref] */
2091                 WERROR result;
2092         } out;
2093
2094 };
2095
2096
2097 struct spoolss_AddPrinterEx {
2098         struct {
2099                 const char *server;/* [unique,charset(UTF16)] */
2100                 uint32_t level;
2101                 union spoolss_PrinterInfo *info;/* [unique,switch_is(level)] */
2102                 struct spoolss_DevmodeContainer devmode_ctr;
2103                 struct security_descriptor *secdesc;/* [unique] */
2104                 uint32_t ulevel;
2105                 union spoolss_UserLevel userlevel;/* [switch_is(ulevel)] */
2106         } in;
2107
2108         struct {
2109                 WERROR result;
2110         } out;
2111
2112 };
2113
2114
2115 struct spoolss_47 {
2116         struct {
2117                 WERROR result;
2118         } out;
2119
2120 };
2121
2122
2123 struct spoolss_EnumPrinterData {
2124         struct {
2125                 struct policy_handle *handle;/* [ref] */
2126                 uint32_t enum_index;
2127                 uint32_t value_offered;
2128                 uint32_t data_offered;
2129         } in;
2130
2131         struct {
2132                 const char *value_name;/* [charset(UTF16),size_is(value_offered/2)] */
2133                 uint32_t *value_needed;/* [ref] */
2134                 uint32_t *printerdata_type;/* [ref] */
2135                 DATA_BLOB *buffer;/* [ref] */
2136                 uint32_t *data_needed;/* [ref] */
2137                 WERROR result;
2138         } out;
2139
2140 };
2141
2142
2143 struct spoolss_DeletePrinterData {
2144         struct {
2145                 struct policy_handle *handle;/* [ref] */
2146                 const char *value_name;/* [charset(UTF16)] */
2147         } in;
2148
2149         struct {
2150                 WERROR result;
2151         } out;
2152
2153 };
2154
2155
2156 struct spoolss_4a {
2157         struct {
2158                 WERROR result;
2159         } out;
2160
2161 };
2162
2163
2164 struct spoolss_4b {
2165         struct {
2166                 WERROR result;
2167         } out;
2168
2169 };
2170
2171
2172 struct spoolss_4c {
2173         struct {
2174                 WERROR result;
2175         } out;
2176
2177 };
2178
2179
2180 struct spoolss_SetPrinterDataEx {
2181         struct {
2182                 struct policy_handle *handle;/* [ref] */
2183                 const char *key_name;/* [charset(UTF16)] */
2184                 const char *value_name;/* [charset(UTF16)] */
2185                 uint32_t type;
2186                 DATA_BLOB buffer;
2187                 uint32_t offered;
2188         } in;
2189
2190         struct {
2191                 WERROR result;
2192         } out;
2193
2194 };
2195
2196
2197 struct spoolss_GetPrinterDataEx {
2198         struct {
2199                 struct policy_handle *handle;/* [ref] */
2200                 const char *key_name;/* [charset(UTF16)] */
2201                 const char *value_name;/* [charset(UTF16)] */
2202                 uint32_t offered;
2203         } in;
2204
2205         struct {
2206                 uint32_t *type;/* [ref] */
2207                 uint8_t *buffer;/* [ref,size_is(offered)] */
2208                 uint32_t *needed;/* [ref] */
2209                 WERROR result;
2210         } out;
2211
2212 };
2213
2214
2215 struct spoolss_EnumPrinterDataEx {
2216         struct {
2217                 struct policy_handle *handle;/* [ref] */
2218                 const char *key_name;/* [charset(UTF16)] */
2219                 uint32_t offered;
2220         } in;
2221
2222         struct {
2223                 uint8_t *buffer;/* [ref,size_is(offered)] */
2224                 uint32_t *needed;/* [ref] */
2225                 uint32_t *count;/* [ref] */
2226                 WERROR result;
2227         } out;
2228
2229 };
2230
2231
2232 struct spoolss_EnumPrinterKey {
2233         struct {
2234                 struct policy_handle *handle;/* [ref] */
2235                 const char *key_name;/* [charset(UTF16)] */
2236                 uint32_t key_buffer_size;
2237         } in;
2238
2239         struct {
2240                 uint16_t *key_buffer;/* [ref,size_is(key_buffer_size/2)] */
2241                 uint32_t *needed;/* [ref] */
2242                 WERROR result;
2243         } out;
2244
2245 };
2246
2247
2248 struct spoolss_DeletePrinterDataEx {
2249         struct {
2250                 struct policy_handle *handle;/* [ref] */
2251                 const char *key_name;/* [charset(UTF16)] */
2252                 const char *value_name;/* [charset(UTF16)] */
2253         } in;
2254
2255         struct {
2256                 WERROR result;
2257         } out;
2258
2259 };
2260
2261
2262 struct spoolss_DeletePrinterKey {
2263         struct {
2264                 struct policy_handle *handle;/* [ref] */
2265                 const char *key_name;/* [charset(UTF16)] */
2266         } in;
2267
2268         struct {
2269                 WERROR result;
2270         } out;
2271
2272 };
2273
2274
2275 struct spoolss_53 {
2276         struct {
2277                 WERROR result;
2278         } out;
2279
2280 };
2281
2282
2283 struct spoolss_DeletePrinterDriverEx {
2284         struct {
2285                 const char *server;/* [unique,charset(UTF16)] */
2286                 const char *architecture;/* [charset(UTF16)] */
2287                 const char *driver;/* [charset(UTF16)] */
2288                 uint32_t delete_flags;
2289                 uint32_t version;
2290         } in;
2291
2292         struct {
2293                 WERROR result;
2294         } out;
2295
2296 };
2297
2298
2299 struct spoolss_55 {
2300         struct {
2301                 WERROR result;
2302         } out;
2303
2304 };
2305
2306
2307 struct spoolss_56 {
2308         struct {
2309                 WERROR result;
2310         } out;
2311
2312 };
2313
2314
2315 struct spoolss_57 {
2316         struct {
2317                 WERROR result;
2318         } out;
2319
2320 };
2321
2322
2323 struct spoolss_XcvData {
2324         struct {
2325                 struct policy_handle *handle;/* [ref] */
2326                 const char *function_name;/* [charset(UTF16)] */
2327                 DATA_BLOB in_data;
2328                 uint32_t _in_data_length;/* [value(r->in.in_data.length)] */
2329                 uint32_t out_data_size;
2330                 uint32_t *status_code;/* [ref] */
2331         } in;
2332
2333         struct {
2334                 uint8_t *out_data;/* [ref,size_is(out_data_size)] */
2335                 uint32_t *needed;/* [ref] */
2336                 uint32_t *status_code;/* [ref] */
2337                 WERROR result;
2338         } out;
2339
2340 };
2341
2342
2343 struct spoolss_AddPrinterDriverEx {
2344         struct {
2345                 const char *servername;/* [ref,charset(UTF16)] */
2346                 uint32_t level;
2347                 union spoolss_AddDriverInfo info;/* [switch_is(level)] */
2348                 uint32_t flags;
2349         } in;
2350
2351         struct {
2352                 WERROR result;
2353         } out;
2354
2355 };
2356
2357
2358 struct spoolss_5a {
2359         struct {
2360                 WERROR result;
2361         } out;
2362
2363 };
2364
2365
2366 struct spoolss_5b {
2367         struct {
2368                 WERROR result;
2369         } out;
2370
2371 };
2372
2373
2374 struct spoolss_5c {
2375         struct {
2376                 WERROR result;
2377         } out;
2378
2379 };
2380
2381
2382 struct spoolss_5d {
2383         struct {
2384                 WERROR result;
2385         } out;
2386
2387 };
2388
2389
2390 struct spoolss_5e {
2391         struct {
2392                 WERROR result;
2393         } out;
2394
2395 };
2396
2397
2398 struct spoolss_5f {
2399         struct {
2400                 WERROR result;
2401         } out;
2402
2403 };
2404
2405 #endif /* _HEADER_spoolss */