source: branches/samba-3.2.x/source/include/rpc_spoolss.h

Last change on this file was 136, checked in by Paul Smedley, 17 years ago

Update trunk to 3.2.0rc1

File size: 47.3 KB
Line 
1/*
2 Unix SMB/Netbios implementation.
3
4 Copyright (C) Andrew Tridgell 1992-2000,
5 Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
6 Copyright (C) Jean Francois Micouleau 1998-2000.
7 Copyright (C) Gerald Carter 2001-2006.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
21*/
22
23#ifndef _RPC_SPOOLSS_H /* _RPC_SPOOLSS_H */
24#define _RPC_SPOOLSS_H
25
26/* spoolss pipe: this are the calls which are not implemented ...
27#define SPOOLSS_GETPRINTERDRIVER 0x0b
28#define SPOOLSS_READPRINTER 0x16
29#define SPOOLSS_WAITFORPRINTERCHANGE 0x1c
30#define SPOOLSS_ADDPORT 0x25
31#define SPOOLSS_CONFIGUREPORT 0x26
32#define SPOOLSS_DELETEPORT 0x27
33#define SPOOLSS_CREATEPRINTERIC 0x28
34#define SPOOLSS_PLAYGDISCRIPTONPRINTERIC 0x29
35#define SPOOLSS_DELETEPRINTERIC 0x2a
36#define SPOOLSS_ADDPRINTERCONNECTION 0x2b
37#define SPOOLSS_DELETEPRINTERCONNECTION 0x2c
38#define SPOOLSS_PRINTERMESSAGEBOX 0x2d
39#define SPOOLSS_ADDMONITOR 0x2e
40#define SPOOLSS_DELETEMONITOR 0x2f
41#define SPOOLSS_DELETEPRINTPROCESSOR 0x30
42#define SPOOLSS_ADDPRINTPROVIDOR 0x31
43#define SPOOLSS_DELETEPRINTPROVIDOR 0x32
44#define SPOOLSS_FINDFIRSTPRINTERCHANGENOTIFICATION 0x36
45#define SPOOLSS_FINDNEXTPRINTERCHANGENOTIFICATION 0x37
46#define SPOOLSS_ROUTERFINDFIRSTPRINTERNOTIFICATIONOLD 0x39
47#define SPOOLSS_ADDPORTEX 0x3d
48#define SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFICATION0x3e
49#define SPOOLSS_SPOOLERINIT 0x3f
50#define SPOOLSS_RESETPRINTEREX 0x40
51*/
52
53/* those are implemented */
54#define SPOOLSS_ENUMPRINTERS 0x00
55#define SPOOLSS_OPENPRINTER 0x01
56#define SPOOLSS_SETJOB 0x02
57#define SPOOLSS_GETJOB 0x03
58#define SPOOLSS_ENUMJOBS 0x04
59#define SPOOLSS_ADDPRINTER 0x05
60#define SPOOLSS_DELETEPRINTER 0x06
61#define SPOOLSS_SETPRINTER 0x07
62#define SPOOLSS_GETPRINTER 0x08
63#define SPOOLSS_ADDPRINTERDRIVER 0x09
64#define SPOOLSS_ENUMPRINTERDRIVERS 0x0a
65#define SPOOLSS_GETPRINTERDRIVERDIRECTORY 0x0c
66#define SPOOLSS_DELETEPRINTERDRIVER 0x0d
67#define SPOOLSS_ADDPRINTPROCESSOR 0x0e
68#define SPOOLSS_ENUMPRINTPROCESSORS 0x0f
69#define SPOOLSS_GETPRINTPROCESSORDIRECTORY 0x10
70#define SPOOLSS_STARTDOCPRINTER 0x11
71#define SPOOLSS_STARTPAGEPRINTER 0x12
72#define SPOOLSS_WRITEPRINTER 0x13
73#define SPOOLSS_ENDPAGEPRINTER 0x14
74#define SPOOLSS_ABORTPRINTER 0x15
75#define SPOOLSS_ENDDOCPRINTER 0x17
76#define SPOOLSS_ADDJOB 0x18
77#define SPOOLSS_SCHEDULEJOB 0x19
78#define SPOOLSS_GETPRINTERDATA 0x1a
79#define SPOOLSS_SETPRINTERDATA 0x1b
80#define SPOOLSS_CLOSEPRINTER 0x1d
81#define SPOOLSS_ADDFORM 0x1e
82#define SPOOLSS_DELETEFORM 0x1f
83#define SPOOLSS_GETFORM 0x20
84#define SPOOLSS_SETFORM 0x21
85#define SPOOLSS_ENUMFORMS 0x22
86#define SPOOLSS_ENUMPORTS 0x23
87#define SPOOLSS_ENUMMONITORS 0x24
88#define SPOOLSS_ENUMPRINTPROCDATATYPES 0x33
89#define SPOOLSS_RESETPRINTER 0x34
90#define SPOOLSS_GETPRINTERDRIVER2 0x35
91#define SPOOLSS_FCPN 0x38 /* FindClosePrinterNotify */
92#define SPOOLSS_REPLYOPENPRINTER 0x3a
93#define SPOOLSS_ROUTERREPLYPRINTER 0x3b
94#define SPOOLSS_REPLYCLOSEPRINTER 0x3c
95#define SPOOLSS_RFFPCNEX 0x41 /* RemoteFindFirstPrinterChangeNotifyEx */
96#define SPOOLSS_RRPCN 0x42 /* RouteRefreshPrinterChangeNotification */
97#define SPOOLSS_RFNPCNEX 0x43 /* RemoteFindNextPrinterChangeNotifyEx */
98#define SPOOLSS_OPENPRINTEREX 0x45
99#define SPOOLSS_ADDPRINTEREX 0x46
100#define SPOOLSS_ENUMPRINTERDATA 0x48
101#define SPOOLSS_DELETEPRINTERDATA 0x49
102#define SPOOLSS_SETPRINTERDATAEX 0x4d
103#define SPOOLSS_GETPRINTERDATAEX 0x4e
104#define SPOOLSS_ENUMPRINTERDATAEX 0x4f
105#define SPOOLSS_ENUMPRINTERKEY 0x50
106#define SPOOLSS_DELETEPRINTERDATAEX 0x51
107#define SPOOLSS_DELETEPRINTERKEY 0x52
108#define SPOOLSS_DELETEPRINTERDRIVEREX 0x54
109#define SPOOLSS_XCVDATAPORT 0x58
110#define SPOOLSS_ADDPRINTERDRIVEREX 0x59
111
112/*
113 * Special strings for the OpenPrinter() call. See the MSDN DDK
114 * docs on the XcvDataPort() for more details.
115 */
116
117#define SPL_LOCAL_PORT "Local Port"
118#define SPL_TCPIP_PORT "Standard TCP/IP Port"
119#define SPL_XCV_MONITOR_LOCALMON ",XcvMonitor Local Port"
120#define SPL_XCV_MONITOR_TCPMON ",XcvMonitor Standard TCP/IP Port"
121
122
123#define PRINTER_CONTROL_UNPAUSE 0x00000000
124#define PRINTER_CONTROL_PAUSE 0x00000001
125#define PRINTER_CONTROL_RESUME 0x00000002
126#define PRINTER_CONTROL_PURGE 0x00000003
127#define PRINTER_CONTROL_SET_STATUS 0x00000004
128
129#define PRINTER_STATUS_OK 0x00000000
130#define PRINTER_STATUS_PAUSED 0x00000001
131#define PRINTER_STATUS_ERROR 0x00000002
132#define PRINTER_STATUS_PENDING_DELETION 0x00000004
133#define PRINTER_STATUS_PAPER_JAM 0x00000008
134
135#define PRINTER_STATUS_PAPER_OUT 0x00000010
136#define PRINTER_STATUS_MANUAL_FEED 0x00000020
137#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040
138#define PRINTER_STATUS_OFFLINE 0x00000080
139
140#define PRINTER_STATUS_IO_ACTIVE 0x00000100
141#define PRINTER_STATUS_BUSY 0x00000200
142#define PRINTER_STATUS_PRINTING 0x00000400
143#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800
144
145#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000
146#define PRINTER_STATUS_WAITING 0x00002000
147#define PRINTER_STATUS_PROCESSING 0x00004000
148#define PRINTER_STATUS_INITIALIZING 0x00008000
149
150#define PRINTER_STATUS_WARMING_UP 0x00010000
151#define PRINTER_STATUS_TONER_LOW 0x00020000
152#define PRINTER_STATUS_NO_TONER 0x00040000
153#define PRINTER_STATUS_PAGE_PUNT 0x00080000
154
155#define PRINTER_STATUS_USER_INTERVENTION 0x00100000
156#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000
157#define PRINTER_STATUS_DOOR_OPEN 0x00400000
158#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000
159
160#define PRINTER_STATUS_POWER_SAVE 0x01000000
161
162#define SERVER_ACCESS_ADMINISTER 0x00000001
163#define SERVER_ACCESS_ENUMERATE 0x00000002
164#define PRINTER_ACCESS_ADMINISTER 0x00000004
165#define PRINTER_ACCESS_USE 0x00000008
166#define JOB_ACCESS_ADMINISTER 0x00000010
167#define JOB_ACCESS_READ 0x00000020
168
169/* JOB status codes. */
170
171#define JOB_STATUS_QUEUED 0x0000
172#define JOB_STATUS_PAUSED 0x0001
173#define JOB_STATUS_ERROR 0x0002
174#define JOB_STATUS_DELETING 0x0004
175#define JOB_STATUS_SPOOLING 0x0008
176#define JOB_STATUS_PRINTING 0x0010
177#define JOB_STATUS_OFFLINE 0x0020
178#define JOB_STATUS_PAPEROUT 0x0040
179#define JOB_STATUS_PRINTED 0x0080
180#define JOB_STATUS_DELETED 0x0100
181#define JOB_STATUS_BLOCKED 0x0200
182#define JOB_STATUS_USER_INTERVENTION 0x0400
183
184/* Access rights for print servers */
185#define SERVER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
186#define SERVER_READ STANDARD_RIGHTS_READ_ACCESS|SERVER_ACCESS_ENUMERATE
187#define SERVER_WRITE STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
188#define SERVER_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|SERVER_ACCESS_ENUMERATE
189
190/* Access rights for printers */
191#define PRINTER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE
192#define PRINTER_READ STANDARD_RIGHTS_READ_ACCESS|PRINTER_ACCESS_USE
193#define PRINTER_WRITE STANDARD_RIGHTS_WRITE_ACCESS|PRINTER_ACCESS_USE
194#define PRINTER_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|PRINTER_ACCESS_USE
195
196/* Access rights for jobs */
197#define JOB_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|JOB_ACCESS_ADMINISTER|JOB_ACCESS_READ|PRINTER_ACCESS_USE
198#define JOB_READ STANDARD_RIGHTS_READ_ACCESS|JOB_ACCESS_ADMINISTER|JOB_ACCESS_READ
199#define JOB_WRITE STANDARD_RIGHTS_WRITE_ACCESS|JOB_ACCESS_ADMINISTER|PRINTER_ACCESS_USE
200#define JOB_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|JOB_ACCESS_ADMINISTER|PRINTER_ACCESS_USE
201
202/* ACE masks for the various print permissions */
203
204#define PRINTER_ACE_FULL_CONTROL (GENERIC_ALL_ACCESS|PRINTER_ALL_ACCESS)
205#define PRINTER_ACE_MANAGE_DOCUMENTS (GENERIC_ALL_ACCESS|READ_CONTROL_ACCESS)
206#define PRINTER_ACE_PRINT (GENERIC_EXECUTE_ACCESS|READ_CONTROL_ACCESS|PRINTER_ACCESS_USE)
207
208
209/* Notify field types */
210
211#define NOTIFY_ONE_VALUE 1 /* Notify data is stored in value1 */
212#define NOTIFY_TWO_VALUE 2 /* Notify data is stored in value2 */
213#define NOTIFY_POINTER 3 /* Data is a pointer to a buffer */
214#define NOTIFY_STRING 4 /* Data is a pointer to a buffer w/length */
215#define NOTIFY_SECDESC 5 /* Data is a security descriptor */
216
217#define PRINTER_NOTIFY_TYPE 0x00
218#define JOB_NOTIFY_TYPE 0x01
219#define PRINT_TABLE_END 0xFF
220
221#define MAX_PRINTER_NOTIFY 26
222#define MAX_JOB_NOTIFY 24
223
224#define MAX_NOTIFY_TYPE_FOR_NOW 26
225
226#define PRINTER_NOTIFY_SERVER_NAME 0x00
227#define PRINTER_NOTIFY_PRINTER_NAME 0x01
228#define PRINTER_NOTIFY_SHARE_NAME 0x02
229#define PRINTER_NOTIFY_PORT_NAME 0x03
230#define PRINTER_NOTIFY_DRIVER_NAME 0x04
231#define PRINTER_NOTIFY_COMMENT 0x05
232#define PRINTER_NOTIFY_LOCATION 0x06
233#define PRINTER_NOTIFY_DEVMODE 0x07
234#define PRINTER_NOTIFY_SEPFILE 0x08
235#define PRINTER_NOTIFY_PRINT_PROCESSOR 0x09
236#define PRINTER_NOTIFY_PARAMETERS 0x0A
237#define PRINTER_NOTIFY_DATATYPE 0x0B
238#define PRINTER_NOTIFY_SECURITY_DESCRIPTOR 0x0C
239#define PRINTER_NOTIFY_ATTRIBUTES 0x0D
240#define PRINTER_NOTIFY_PRIORITY 0x0E
241#define PRINTER_NOTIFY_DEFAULT_PRIORITY 0x0F
242#define PRINTER_NOTIFY_START_TIME 0x10
243#define PRINTER_NOTIFY_UNTIL_TIME 0x11
244#define PRINTER_NOTIFY_STATUS 0x12
245#define PRINTER_NOTIFY_STATUS_STRING 0x13
246#define PRINTER_NOTIFY_CJOBS 0x14
247#define PRINTER_NOTIFY_AVERAGE_PPM 0x15
248#define PRINTER_NOTIFY_TOTAL_PAGES 0x16
249#define PRINTER_NOTIFY_PAGES_PRINTED 0x17
250#define PRINTER_NOTIFY_TOTAL_BYTES 0x18
251#define PRINTER_NOTIFY_BYTES_PRINTED 0x19
252
253#define JOB_NOTIFY_PRINTER_NAME 0x00
254#define JOB_NOTIFY_MACHINE_NAME 0x01
255#define JOB_NOTIFY_PORT_NAME 0x02
256#define JOB_NOTIFY_USER_NAME 0x03
257#define JOB_NOTIFY_NOTIFY_NAME 0x04
258#define JOB_NOTIFY_DATATYPE 0x05
259#define JOB_NOTIFY_PRINT_PROCESSOR 0x06
260#define JOB_NOTIFY_PARAMETERS 0x07
261#define JOB_NOTIFY_DRIVER_NAME 0x08
262#define JOB_NOTIFY_DEVMODE 0x09
263#define JOB_NOTIFY_STATUS 0x0A
264#define JOB_NOTIFY_STATUS_STRING 0x0B
265#define JOB_NOTIFY_SECURITY_DESCRIPTOR 0x0C
266#define JOB_NOTIFY_DOCUMENT 0x0D
267#define JOB_NOTIFY_PRIORITY 0x0E
268#define JOB_NOTIFY_POSITION 0x0F
269#define JOB_NOTIFY_SUBMITTED 0x10
270#define JOB_NOTIFY_START_TIME 0x11
271#define JOB_NOTIFY_UNTIL_TIME 0x12
272#define JOB_NOTIFY_TIME 0x13
273#define JOB_NOTIFY_TOTAL_PAGES 0x14
274#define JOB_NOTIFY_PAGES_PRINTED 0x15
275#define JOB_NOTIFY_TOTAL_BYTES 0x16
276#define JOB_NOTIFY_BYTES_PRINTED 0x17
277
278#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
279
280#define PRINTER_CHANGE_ADD_PRINTER 0x00000001
281#define PRINTER_CHANGE_SET_PRINTER 0x00000002
282#define PRINTER_CHANGE_DELETE_PRINTER 0x00000004
283#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
284#define PRINTER_CHANGE_PRINTER (PRINTER_CHANGE_ADD_PRINTER | \
285 PRINTER_CHANGE_SET_PRINTER | \
286 PRINTER_CHANGE_DELETE_PRINTER | \
287 PRINTER_CHANGE_FAILED_CONNECTION_PRINTER )
288
289#define PRINTER_CHANGE_ADD_JOB 0x00000100
290#define PRINTER_CHANGE_SET_JOB 0x00000200
291#define PRINTER_CHANGE_DELETE_JOB 0x00000400
292#define PRINTER_CHANGE_WRITE_JOB 0x00000800
293#define PRINTER_CHANGE_JOB (PRINTER_CHANGE_ADD_JOB | \
294 PRINTER_CHANGE_SET_JOB | \
295 PRINTER_CHANGE_DELETE_JOB | \
296 PRINTER_CHANGE_WRITE_JOB )
297
298#define PRINTER_CHANGE_ADD_FORM 0x00010000
299#define PRINTER_CHANGE_SET_FORM 0x00020000
300#define PRINTER_CHANGE_DELETE_FORM 0x00040000
301#define PRINTER_CHANGE_FORM (PRINTER_CHANGE_ADD_FORM | \
302 PRINTER_CHANGE_SET_FORM | \
303 PRINTER_CHANGE_DELETE_FORM )
304
305#define PRINTER_CHANGE_ADD_PORT 0x00100000
306#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000
307#define PRINTER_CHANGE_DELETE_PORT 0x00400000
308#define PRINTER_CHANGE_PORT (PRINTER_CHANGE_ADD_PORT | \
309 PRINTER_CHANGE_CONFIGURE_PORT | \
310 PRINTER_CHANGE_DELETE_PORT )
311
312#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000
313#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000
314#define PRINTER_CHANGE_PRINT_PROCESSOR (PRINTER_CHANGE_ADD_PRINT_PROCESSOR | \
315 PRINTER_CHANGE_DELETE_PRINT_PROCESSOR )
316
317#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000
318#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000
319#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000
320#define PRINTER_CHANGE_PRINTER_DRIVER (PRINTER_CHANGE_ADD_PRINTER_DRIVER | \
321 PRINTER_CHANGE_SET_PRINTER_DRIVER | \
322 PRINTER_CHANGE_DELETE_PRINTER_DRIVER )
323
324#define PRINTER_CHANGE_TIMEOUT 0x80000000
325#define PRINTER_CHANGE_ALL (PRINTER_CHANGE_JOB | \
326 PRINTER_CHANGE_FORM | \
327 PRINTER_CHANGE_PORT | \
328 PRINTER_CHANGE_PRINT_PROCESSOR | \
329 PRINTER_CHANGE_PRINTER_DRIVER )
330
331#define PRINTER_NOTIFY_INFO_DISCARDED 0x1
332
333/*
334 * Set of macros for flagging what changed in the PRINTER_INFO_2 struct
335 * when sending messages to other smbd's
336 */
337#define PRINTER_MESSAGE_NULL 0x00000000
338#define PRINTER_MESSAGE_DRIVER 0x00000001
339#define PRINTER_MESSAGE_COMMENT 0x00000002
340#define PRINTER_MESSAGE_PRINTERNAME 0x00000004
341#define PRINTER_MESSAGE_LOCATION 0x00000008
342#define PRINTER_MESSAGE_DEVMODE 0x00000010 /* not curently supported */
343#define PRINTER_MESSAGE_SEPFILE 0x00000020
344#define PRINTER_MESSAGE_PRINTPROC 0x00000040
345#define PRINTER_MESSAGE_PARAMS 0x00000080
346#define PRINTER_MESSAGE_DATATYPE 0x00000100
347#define PRINTER_MESSAGE_SECDESC 0x00000200
348#define PRINTER_MESSAGE_CJOBS 0x00000400
349#define PRINTER_MESSAGE_PORT 0x00000800
350#define PRINTER_MESSAGE_SHARENAME 0x00001000
351#define PRINTER_MESSAGE_ATTRIBUTES 0x00002000
352
353typedef struct printer_message_info {
354 uint32 low; /* PRINTER_CHANGE_XXX */
355 uint32 high; /* PRINTER_CHANGE_XXX */
356 fstring printer_name;
357 uint32 flags; /* PRINTER_MESSAGE_XXX */
358}
359PRINTER_MESSAGE_INFO;
360
361/*
362 * The printer attributes.
363 * I #defined all of them (grabbed form MSDN)
364 * I'm only using:
365 * ( SHARED | NETWORK | RAW_ONLY )
366 * RAW_ONLY _MUST_ be present otherwise NT will send an EMF file
367 */
368
369#define PRINTER_ATTRIBUTE_QUEUED 0x00000001
370#define PRINTER_ATTRIBUTE_DIRECT 0x00000002
371#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004
372#define PRINTER_ATTRIBUTE_SHARED 0x00000008
373
374#define PRINTER_ATTRIBUTE_NETWORK 0x00000010
375#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020
376#define PRINTER_ATTRIBUTE_LOCAL 0x00000040
377#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080
378
379#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100
380#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
381#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400
382#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800
383
384#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000
385#define PRINTER_ATTRIBUTE_PUBLISHED 0x00002000
386
387#define PRINTER_ATTRIBUTE_SAMBA (PRINTER_ATTRIBUTE_RAW_ONLY|\
388 PRINTER_ATTRIBUTE_SHARED|\
389 PRINTER_ATTRIBUTE_LOCAL)
390#define PRINTER_ATTRIBUTE_NOT_SAMBA (PRINTER_ATTRIBUTE_NETWORK)
391
392#define NO_PRIORITY 0
393#define MAX_PRIORITY 99
394#define MIN_PRIORITY 1
395#define DEF_PRIORITY 1
396
397/* the flags of the query */
398#define PRINTER_ENUM_DEFAULT 0x00000001
399#define PRINTER_ENUM_LOCAL 0x00000002
400#define PRINTER_ENUM_CONNECTIONS 0x00000004
401#define PRINTER_ENUM_FAVORITE 0x00000004
402#define PRINTER_ENUM_NAME 0x00000008
403#define PRINTER_ENUM_REMOTE 0x00000010
404#define PRINTER_ENUM_SHARED 0x00000020
405#define PRINTER_ENUM_NETWORK 0x00000040
406
407/* the flags of each printers */
408#define PRINTER_ENUM_UNKNOWN_8 0x00000008
409#define PRINTER_ENUM_EXPAND 0x00004000
410#define PRINTER_ENUM_CONTAINER 0x00008000
411#define PRINTER_ENUM_ICONMASK 0x00ff0000
412#define PRINTER_ENUM_ICON1 0x00010000
413#define PRINTER_ENUM_ICON2 0x00020000
414#define PRINTER_ENUM_ICON3 0x00040000
415#define PRINTER_ENUM_ICON4 0x00080000
416#define PRINTER_ENUM_ICON5 0x00100000
417#define PRINTER_ENUM_ICON6 0x00200000
418#define PRINTER_ENUM_ICON7 0x00400000
419#define PRINTER_ENUM_ICON8 0x00800000
420
421/* FLAGS for SPOOLSS_DELETEPRINTERDRIVEREX */
422
423#define DPD_DELETE_UNUSED_FILES 0x00000001
424#define DPD_DELETE_SPECIFIC_VERSION 0x00000002
425#define DPD_DELETE_ALL_FILES 0x00000004
426
427#define DRIVER_ANY_VERSION 0xffffffff
428#define DRIVER_MAX_VERSION 4
429
430/* FLAGS for SPOOLSS_ADDPRINTERDRIVEREX */
431
432#define APD_STRICT_UPGRADE 0x00000001
433#define APD_STRICT_DOWNGRADE 0x00000002
434#define APD_COPY_ALL_FILES 0x00000004
435#define APD_COPY_NEW_FILES 0x00000008
436
437
438/* this struct is undocumented */
439/* thanks to the ddk ... */
440typedef struct {
441 uint32 size; /* length of user_name & client_name + 2? */
442 UNISTR2 *client_name;
443 UNISTR2 *user_name;
444 uint32 build;
445 uint32 major;
446 uint32 minor;
447 uint32 processor;
448} SPOOL_USER_1;
449
450typedef struct {
451 uint32 level;
452 union {
453 SPOOL_USER_1 *user1;
454 } user;
455} SPOOL_USER_CTR;
456
457/*
458 * various bits in the DEVICEMODE.fields member
459 */
460
461#define DEVMODE_ORIENTATION 0x00000001
462#define DEVMODE_PAPERSIZE 0x00000002
463#define DEVMODE_PAPERLENGTH 0x00000004
464#define DEVMODE_PAPERWIDTH 0x00000008
465#define DEVMODE_SCALE 0x00000010
466#define DEVMODE_POSITION 0x00000020
467#define DEVMODE_NUP 0x00000040
468#define DEVMODE_COPIES 0x00000100
469#define DEVMODE_DEFAULTSOURCE 0x00000200
470#define DEVMODE_PRINTQUALITY 0x00000400
471#define DEVMODE_COLOR 0x00000800
472#define DEVMODE_DUPLEX 0x00001000
473#define DEVMODE_YRESOLUTION 0x00002000
474#define DEVMODE_TTOPTION 0x00004000
475#define DEVMODE_COLLATE 0x00008000
476#define DEVMODE_FORMNAME 0x00010000
477#define DEVMODE_LOGPIXELS 0x00020000
478#define DEVMODE_BITSPERPEL 0x00040000
479#define DEVMODE_PELSWIDTH 0x00080000
480#define DEVMODE_PELSHEIGHT 0x00100000
481#define DEVMODE_DISPLAYFLAGS 0x00200000
482#define DEVMODE_DISPLAYFREQUENCY 0x00400000
483#define DEVMODE_ICMMETHOD 0x00800000
484#define DEVMODE_ICMINTENT 0x01000000
485#define DEVMODE_MEDIATYPE 0x02000000
486#define DEVMODE_DITHERTYPE 0x04000000
487#define DEVMODE_PANNINGWIDTH 0x08000000
488#define DEVMODE_PANNINGHEIGHT 0x10000000
489
490
491/*
492 * Devicemode structure
493 */
494
495typedef struct devicemode
496{
497 UNISTR devicename;
498 uint16 specversion;
499 uint16 driverversion;
500 uint16 size;
501 uint16 driverextra;
502 uint32 fields;
503 uint16 orientation;
504 uint16 papersize;
505 uint16 paperlength;
506 uint16 paperwidth;
507 uint16 scale;
508 uint16 copies;
509 uint16 defaultsource;
510 uint16 printquality;
511 uint16 color;
512 uint16 duplex;
513 uint16 yresolution;
514 uint16 ttoption;
515 uint16 collate;
516 UNISTR formname;
517 uint16 logpixels;
518 uint32 bitsperpel;
519 uint32 pelswidth;
520 uint32 pelsheight;
521 uint32 displayflags;
522 uint32 displayfrequency;
523 uint32 icmmethod;
524 uint32 icmintent;
525 uint32 mediatype;
526 uint32 dithertype;
527 uint32 reserved1;
528 uint32 reserved2;
529 uint32 panningwidth;
530 uint32 panningheight;
531 uint8 *dev_private;
532}
533DEVICEMODE;
534
535typedef struct _devmode_cont
536{
537 uint32 size;
538 uint32 devmode_ptr;
539 DEVICEMODE *devmode;
540}
541DEVMODE_CTR;
542
543typedef struct _printer_default
544{
545 uint32 datatype_ptr;
546 UNISTR2 datatype;
547 DEVMODE_CTR devmode_cont;
548 uint32 access_required;
549}
550PRINTER_DEFAULT;
551
552/********************************************/
553
554typedef struct {
555 UNISTR2 *printername;
556 PRINTER_DEFAULT printer_default;
557} SPOOL_Q_OPEN_PRINTER;
558
559typedef struct {
560 POLICY_HND handle; /* handle used along all transactions (20*uint8) */
561 WERROR status;
562} SPOOL_R_OPEN_PRINTER;
563
564/********************************************/
565
566typedef struct {
567 UNISTR2 *printername;
568 PRINTER_DEFAULT printer_default;
569 uint32 user_switch;
570 SPOOL_USER_CTR user_ctr;
571} SPOOL_Q_OPEN_PRINTER_EX;
572
573typedef struct {
574 POLICY_HND handle; /* handle used along all transactions (20*uint8) */
575 WERROR status;
576} SPOOL_R_OPEN_PRINTER_EX;
577
578/********************************************/
579
580typedef struct spool_notify_option_type
581{
582 uint16 type;
583 uint16 reserved0;
584 uint32 reserved1;
585 uint32 reserved2;
586 uint32 count;
587 uint32 fields_ptr;
588 uint32 count2;
589 uint16 fields[MAX_NOTIFY_TYPE_FOR_NOW];
590}
591SPOOL_NOTIFY_OPTION_TYPE;
592
593typedef struct spool_notify_option_type_ctr
594{
595 uint32 count;
596 SPOOL_NOTIFY_OPTION_TYPE *type;
597}
598SPOOL_NOTIFY_OPTION_TYPE_CTR;
599
600
601
602typedef struct s_header_type
603{
604 uint32 type;
605 union
606 {
607 uint32 value;
608 UNISTR string;
609 }
610 data;
611}
612HEADER_TYPE;
613
614
615typedef struct spool_q_getprinterdata
616{
617 POLICY_HND handle;
618 UNISTR2 valuename;
619 uint32 size;
620}
621SPOOL_Q_GETPRINTERDATA;
622
623typedef struct spool_r_getprinterdata
624{
625 uint32 type;
626 uint32 size;
627 uint8 *data;
628 uint32 needed;
629 WERROR status;
630}
631SPOOL_R_GETPRINTERDATA;
632
633typedef struct spool_q_deleteprinterdata
634{
635 POLICY_HND handle;
636 UNISTR2 valuename;
637}
638SPOOL_Q_DELETEPRINTERDATA;
639
640typedef struct spool_r_deleteprinterdata
641{
642 WERROR status;
643}
644SPOOL_R_DELETEPRINTERDATA;
645
646typedef struct spool_q_closeprinter
647{
648 POLICY_HND handle;
649}
650SPOOL_Q_CLOSEPRINTER;
651
652typedef struct spool_r_closeprinter
653{
654 POLICY_HND handle;
655 WERROR status;
656}
657SPOOL_R_CLOSEPRINTER;
658
659typedef struct spool_q_startpageprinter
660{
661 POLICY_HND handle;
662}
663SPOOL_Q_STARTPAGEPRINTER;
664
665typedef struct spool_r_startpageprinter
666{
667 WERROR status;
668}
669SPOOL_R_STARTPAGEPRINTER;
670
671typedef struct spool_q_endpageprinter
672{
673 POLICY_HND handle;
674}
675SPOOL_Q_ENDPAGEPRINTER;
676
677typedef struct spool_r_endpageprinter
678{
679 WERROR status;
680}
681SPOOL_R_ENDPAGEPRINTER;
682
683
684typedef struct spool_q_deleteprinterdriver
685{
686 uint32 server_ptr;
687 UNISTR2 server;
688 UNISTR2 arch;
689 UNISTR2 driver;
690}
691SPOOL_Q_DELETEPRINTERDRIVER;
692
693typedef struct spool_r_deleteprinterdriver
694{
695 WERROR status;
696}
697SPOOL_R_DELETEPRINTERDRIVER;
698
699typedef struct spool_q_deleteprinterdriverex
700{
701 uint32 server_ptr;
702 UNISTR2 server;
703 UNISTR2 arch;
704 UNISTR2 driver;
705 uint32 delete_flags;
706 uint32 version;
707}
708SPOOL_Q_DELETEPRINTERDRIVEREX;
709
710typedef struct spool_r_deleteprinterdriverex
711{
712 WERROR status;
713}
714SPOOL_R_DELETEPRINTERDRIVEREX;
715
716
717typedef struct spool_doc_info_1
718{
719 uint32 p_docname;
720 uint32 p_outputfile;
721 uint32 p_datatype;
722 UNISTR2 docname;
723 UNISTR2 outputfile;
724 UNISTR2 datatype;
725}
726DOC_INFO_1;
727
728typedef struct spool_doc_info
729{
730 uint32 switch_value;
731 DOC_INFO_1 doc_info_1;
732}
733DOC_INFO;
734
735typedef struct spool_doc_info_container
736{
737 uint32 level;
738 DOC_INFO docinfo;
739}
740DOC_INFO_CONTAINER;
741
742typedef struct spool_q_startdocprinter
743{
744 POLICY_HND handle;
745 DOC_INFO_CONTAINER doc_info_container;
746}
747SPOOL_Q_STARTDOCPRINTER;
748
749typedef struct spool_r_startdocprinter
750{
751 uint32 jobid;
752 WERROR status;
753}
754SPOOL_R_STARTDOCPRINTER;
755
756typedef struct spool_q_enddocprinter
757{
758 POLICY_HND handle;
759}
760SPOOL_Q_ENDDOCPRINTER;
761
762typedef struct spool_r_enddocprinter
763{
764 WERROR status;
765}
766SPOOL_R_ENDDOCPRINTER;
767
768typedef struct spool_q_writeprinter
769{
770 POLICY_HND handle;
771 uint32 buffer_size;
772 uint8 *buffer;
773 uint32 buffer_size2;
774}
775SPOOL_Q_WRITEPRINTER;
776
777typedef struct spool_r_writeprinter
778{
779 uint32 buffer_written;
780 WERROR status;
781}
782SPOOL_R_WRITEPRINTER;
783
784typedef struct spool_notify_option
785{
786 uint32 version;
787 uint32 flags;
788 uint32 count;
789 uint32 option_type_ptr;
790 SPOOL_NOTIFY_OPTION_TYPE_CTR ctr;
791}
792SPOOL_NOTIFY_OPTION;
793
794typedef struct spool_notify_info_data
795{
796 uint16 type;
797 uint16 field;
798 uint32 reserved;
799 uint32 id;
800 union {
801 uint32 value[2];
802 struct {
803 uint32 length;
804 uint16 *string;
805 } data;
806 struct {
807 uint32 size;
808 SEC_DESC *desc;
809 } sd;
810 }
811 notify_data;
812 uint32 size;
813 uint32 enc_type;
814} SPOOL_NOTIFY_INFO_DATA;
815
816typedef struct spool_notify_info
817{
818 uint32 version;
819 uint32 flags;
820 uint32 count;
821 SPOOL_NOTIFY_INFO_DATA *data;
822}
823SPOOL_NOTIFY_INFO;
824
825/* If the struct name looks obscure, yes it is ! */
826/* RemoteFindFirstPrinterChangeNotificationEx query struct */
827typedef struct spoolss_q_rffpcnex
828{
829 POLICY_HND handle;
830 uint32 flags;
831 uint32 options;
832 uint32 localmachine_ptr;
833 UNISTR2 localmachine;
834 uint32 printerlocal;
835 uint32 option_ptr;
836 SPOOL_NOTIFY_OPTION *option;
837}
838SPOOL_Q_RFFPCNEX;
839
840typedef struct spool_r_rffpcnex
841{
842 WERROR status;
843}
844SPOOL_R_RFFPCNEX;
845
846/* Remote Find Next Printer Change Notify Ex */
847typedef struct spool_q_rfnpcnex
848{
849 POLICY_HND handle;
850 uint32 change;
851 uint32 option_ptr;
852 SPOOL_NOTIFY_OPTION *option;
853}
854SPOOL_Q_RFNPCNEX;
855
856typedef struct spool_r_rfnpcnex
857{
858 uint32 info_ptr;
859 SPOOL_NOTIFY_INFO info;
860 WERROR status;
861}
862SPOOL_R_RFNPCNEX;
863
864/* Find Close Printer Notify */
865typedef struct spool_q_fcpn
866{
867 POLICY_HND handle;
868}
869SPOOL_Q_FCPN;
870
871typedef struct spool_r_fcpn
872{
873 WERROR status;
874}
875SPOOL_R_FCPN;
876
877
878typedef struct printer_info_0
879{
880 UNISTR printername;
881 UNISTR servername;
882 uint32 cjobs;
883 uint32 total_jobs;
884 uint32 total_bytes;
885
886 uint16 year;
887 uint16 month;
888 uint16 dayofweek;
889 uint16 day;
890 uint16 hour;
891 uint16 minute;
892 uint16 second;
893 uint16 milliseconds;
894
895 uint32 global_counter;
896 uint32 total_pages;
897
898 uint16 major_version;
899 uint16 build_version;
900
901 uint32 unknown7;
902 uint32 unknown8;
903 uint32 unknown9;
904 uint32 session_counter;
905 uint32 unknown11;
906 uint32 printer_errors;
907 uint32 unknown13;
908 uint32 unknown14;
909 uint32 unknown15;
910 uint32 unknown16;
911 uint32 change_id;
912 uint32 unknown18;
913 uint32 status;
914 uint32 unknown20;
915 uint32 c_setprinter;
916
917 uint16 unknown22;
918 uint16 unknown23;
919 uint16 unknown24;
920 uint16 unknown25;
921 uint16 unknown26;
922 uint16 unknown27;
923 uint16 unknown28;
924 uint16 unknown29;
925} PRINTER_INFO_0;
926
927typedef struct printer_info_1
928{
929 uint32 flags;
930 UNISTR description;
931 UNISTR name;
932 UNISTR comment;
933}
934PRINTER_INFO_1;
935
936typedef struct printer_info_2
937{
938 UNISTR servername;
939 UNISTR printername;
940 UNISTR sharename;
941 UNISTR portname;
942 UNISTR drivername;
943 UNISTR comment;
944 UNISTR location;
945 DEVICEMODE *devmode;
946 UNISTR sepfile;
947 UNISTR printprocessor;
948 UNISTR datatype;
949 UNISTR parameters;
950 SEC_DESC *secdesc;
951 uint32 attributes;
952 uint32 priority;
953 uint32 defaultpriority;
954 uint32 starttime;
955 uint32 untiltime;
956 uint32 status;
957 uint32 cjobs;
958 uint32 averageppm;
959}
960PRINTER_INFO_2;
961
962typedef struct printer_info_3
963{
964 SEC_DESC *secdesc;
965}
966PRINTER_INFO_3;
967
968typedef struct printer_info_4
969{
970 UNISTR printername;
971 UNISTR servername;
972 uint32 attributes;
973}
974PRINTER_INFO_4;
975
976typedef struct printer_info_5
977{
978 UNISTR printername;
979 UNISTR portname;
980 uint32 attributes;
981 uint32 device_not_selected_timeout;
982 uint32 transmission_retry_timeout;
983}
984PRINTER_INFO_5;
985
986typedef struct printer_info_6
987{
988 uint32 status;
989}
990PRINTER_INFO_6;
991
992#define SPOOL_DS_PUBLISH 1
993#define SPOOL_DS_UPDATE 2
994#define SPOOL_DS_UNPUBLISH 4
995#define SPOOL_DS_PENDING 0x80000000
996
997typedef struct printer_info_7
998{
999 UNISTR guid; /* text form of printer guid */
1000 uint32 action;
1001}
1002PRINTER_INFO_7;
1003
1004typedef struct spool_q_enumprinters
1005{
1006 uint32 flags;
1007 uint32 servername_ptr;
1008 UNISTR2 servername;
1009 uint32 level;
1010 RPC_BUFFER *buffer;
1011 uint32 offered;
1012}
1013SPOOL_Q_ENUMPRINTERS;
1014
1015typedef struct printer_info_ctr_info
1016{
1017 PRINTER_INFO_0 *printers_0;
1018 PRINTER_INFO_1 *printers_1;
1019 PRINTER_INFO_2 *printers_2;
1020 PRINTER_INFO_3 *printers_3;
1021 PRINTER_INFO_4 *printers_4;
1022 PRINTER_INFO_5 *printers_5;
1023 PRINTER_INFO_7 *printers_7;
1024}
1025PRINTER_INFO_CTR;
1026
1027typedef struct spool_r_enumprinters
1028{
1029 RPC_BUFFER *buffer;
1030 uint32 needed; /* bytes needed */
1031 uint32 returned; /* number of printers */
1032 WERROR status;
1033}
1034SPOOL_R_ENUMPRINTERS;
1035
1036
1037typedef struct spool_q_getprinter
1038{
1039 POLICY_HND handle;
1040 uint32 level;
1041 RPC_BUFFER *buffer;
1042 uint32 offered;
1043}
1044SPOOL_Q_GETPRINTER;
1045
1046typedef struct printer_info_info
1047{
1048 union
1049 {
1050 PRINTER_INFO_0 *info0;
1051 PRINTER_INFO_1 *info1;
1052 PRINTER_INFO_2 *info2;
1053 void *info;
1054 } printer;
1055} PRINTER_INFO;
1056
1057typedef struct spool_r_getprinter
1058{
1059 RPC_BUFFER *buffer;
1060 uint32 needed;
1061 WERROR status;
1062} SPOOL_R_GETPRINTER;
1063
1064typedef struct driver_info_1
1065{
1066 UNISTR name;
1067} DRIVER_INFO_1;
1068
1069typedef struct driver_info_2
1070{
1071 uint32 version;
1072 UNISTR name;
1073 UNISTR architecture;
1074 UNISTR driverpath;
1075 UNISTR datafile;
1076 UNISTR configfile;
1077} DRIVER_INFO_2;
1078
1079typedef struct driver_info_3
1080{
1081 uint32 version;
1082 UNISTR name;
1083 UNISTR architecture;
1084 UNISTR driverpath;
1085 UNISTR datafile;
1086 UNISTR configfile;
1087 UNISTR helpfile;
1088 uint16 *dependentfiles;
1089 UNISTR monitorname;
1090 UNISTR defaultdatatype;
1091}
1092DRIVER_INFO_3;
1093
1094typedef struct driver_info_6
1095{
1096 uint32 version;
1097 UNISTR name;
1098 UNISTR architecture;
1099 UNISTR driverpath;
1100 UNISTR datafile;
1101 UNISTR configfile;
1102 UNISTR helpfile;
1103 uint16 *dependentfiles;
1104 UNISTR monitorname;
1105 UNISTR defaultdatatype;
1106 uint16* previousdrivernames;
1107 NTTIME driver_date;
1108 uint32 padding;
1109 uint32 driver_version_low;
1110 uint32 driver_version_high;
1111 UNISTR mfgname;
1112 UNISTR oem_url;
1113 UNISTR hardware_id;
1114 UNISTR provider;
1115}
1116DRIVER_INFO_6;
1117
1118typedef struct driver_info_info
1119{
1120 DRIVER_INFO_1 *info1;
1121 DRIVER_INFO_2 *info2;
1122 DRIVER_INFO_3 *info3;
1123 DRIVER_INFO_6 *info6;
1124}
1125PRINTER_DRIVER_CTR;
1126
1127typedef struct spool_q_getprinterdriver2
1128{
1129 POLICY_HND handle;
1130 uint32 architecture_ptr;
1131 UNISTR2 architecture;
1132 uint32 level;
1133 RPC_BUFFER *buffer;
1134 uint32 offered;
1135 uint32 clientmajorversion;
1136 uint32 clientminorversion;
1137}
1138SPOOL_Q_GETPRINTERDRIVER2;
1139
1140typedef struct spool_r_getprinterdriver2
1141{
1142 RPC_BUFFER *buffer;
1143 uint32 needed;
1144 uint32 servermajorversion;
1145 uint32 serverminorversion;
1146 WERROR status;
1147}
1148SPOOL_R_GETPRINTERDRIVER2;
1149
1150
1151typedef struct add_jobinfo_1
1152{
1153 UNISTR path;
1154 uint32 job_number;
1155}
1156ADD_JOBINFO_1;
1157
1158
1159typedef struct spool_q_addjob
1160{
1161 POLICY_HND handle;
1162 uint32 level;
1163 RPC_BUFFER *buffer;
1164 uint32 offered;
1165}
1166SPOOL_Q_ADDJOB;
1167
1168typedef struct spool_r_addjob
1169{
1170 RPC_BUFFER *buffer;
1171 uint32 needed;
1172 WERROR status;
1173}
1174SPOOL_R_ADDJOB;
1175
1176/*
1177 * I'm really wondering how many different time formats
1178 * I will have to cope with
1179 *
1180 * JFM, 09/13/98 In a mad mood ;-(
1181*/
1182typedef struct systemtime
1183{
1184 uint16 year;
1185 uint16 month;
1186 uint16 dayofweek;
1187 uint16 day;
1188 uint16 hour;
1189 uint16 minute;
1190 uint16 second;
1191 uint16 milliseconds;
1192}
1193SYSTEMTIME;
1194
1195typedef struct s_job_info_1
1196{
1197 uint32 jobid;
1198 UNISTR printername;
1199 UNISTR machinename;
1200 UNISTR username;
1201 UNISTR document;
1202 UNISTR datatype;
1203 UNISTR text_status;
1204 uint32 status;
1205 uint32 priority;
1206 uint32 position;
1207 uint32 totalpages;
1208 uint32 pagesprinted;
1209 SYSTEMTIME submitted;
1210}
1211JOB_INFO_1;
1212
1213typedef struct s_job_info_2
1214{
1215 uint32 jobid;
1216 UNISTR printername;
1217 UNISTR machinename;
1218 UNISTR username;
1219 UNISTR document;
1220 UNISTR notifyname;
1221 UNISTR datatype;
1222 UNISTR printprocessor;
1223 UNISTR parameters;
1224 UNISTR drivername;
1225 DEVICEMODE *devmode;
1226 UNISTR text_status;
1227/* SEC_DESC sec_desc;*/
1228 uint32 status;
1229 uint32 priority;
1230 uint32 position;
1231 uint32 starttime;
1232 uint32 untiltime;
1233 uint32 totalpages;
1234 uint32 size;
1235 SYSTEMTIME submitted;
1236 uint32 timeelapsed;
1237 uint32 pagesprinted;
1238}
1239JOB_INFO_2;
1240
1241typedef struct spool_q_enumjobs
1242{
1243 POLICY_HND handle;
1244 uint32 firstjob;
1245 uint32 numofjobs;
1246 uint32 level;
1247 RPC_BUFFER *buffer;
1248 uint32 offered;
1249}
1250SPOOL_Q_ENUMJOBS;
1251
1252typedef struct job_info_ctr_info
1253{
1254 union
1255 {
1256 JOB_INFO_1 *job_info_1;
1257 JOB_INFO_2 *job_info_2;
1258 void *info;
1259 } job;
1260
1261} JOB_INFO_CTR;
1262
1263typedef struct spool_r_enumjobs
1264{
1265 RPC_BUFFER *buffer;
1266 uint32 needed;
1267 uint32 returned;
1268 WERROR status;
1269}
1270SPOOL_R_ENUMJOBS;
1271
1272typedef struct spool_q_schedulejob
1273{
1274 POLICY_HND handle;
1275 uint32 jobid;
1276}
1277SPOOL_Q_SCHEDULEJOB;
1278
1279typedef struct spool_r_schedulejob
1280{
1281 WERROR status;
1282}
1283SPOOL_R_SCHEDULEJOB;
1284
1285typedef struct s_port_info_1
1286{
1287 UNISTR port_name;
1288}
1289PORT_INFO_1;
1290
1291typedef struct s_port_info_2
1292{
1293 UNISTR port_name;
1294 UNISTR monitor_name;
1295 UNISTR description;
1296 uint32 port_type;
1297 uint32 reserved;
1298}
1299PORT_INFO_2;
1300
1301/* Port Type bits */
1302#define PORT_TYPE_WRITE 0x0001
1303#define PORT_TYPE_READ 0x0002
1304#define PORT_TYPE_REDIRECTED 0x0004
1305#define PORT_TYPE_NET_ATTACHED 0x0008
1306
1307typedef struct spool_q_enumports
1308{
1309 uint32 name_ptr;
1310 UNISTR2 name;
1311 uint32 level;
1312 RPC_BUFFER *buffer;
1313 uint32 offered;
1314}
1315SPOOL_Q_ENUMPORTS;
1316
1317typedef struct port_info_ctr_info
1318{
1319 union
1320 {
1321 PORT_INFO_1 *info_1;
1322 PORT_INFO_2 *info_2;
1323 }
1324 port;
1325
1326}
1327PORT_INFO_CTR;
1328
1329typedef struct spool_r_enumports
1330{
1331 RPC_BUFFER *buffer;
1332 uint32 needed; /* bytes needed */
1333 uint32 returned; /* number of printers */
1334 WERROR status;
1335}
1336SPOOL_R_ENUMPORTS;
1337
1338#define JOB_CONTROL_PAUSE 1
1339#define JOB_CONTROL_RESUME 2
1340#define JOB_CONTROL_CANCEL 3
1341#define JOB_CONTROL_RESTART 4
1342#define JOB_CONTROL_DELETE 5
1343
1344typedef struct job_info_info
1345{
1346 union
1347 {
1348 JOB_INFO_1 job_info_1;
1349 JOB_INFO_2 job_info_2;
1350 }
1351 job;
1352
1353}
1354JOB_INFO;
1355
1356typedef struct spool_q_setjob
1357{
1358 POLICY_HND handle;
1359 uint32 jobid;
1360 uint32 level;
1361 JOB_INFO ctr;
1362 uint32 command;
1363
1364}
1365SPOOL_Q_SETJOB;
1366
1367typedef struct spool_r_setjob
1368{
1369 WERROR status;
1370
1371}
1372SPOOL_R_SETJOB;
1373
1374typedef struct spool_q_enumprinterdrivers
1375{
1376 uint32 name_ptr;
1377 UNISTR2 name;
1378 uint32 environment_ptr;
1379 UNISTR2 environment;
1380 uint32 level;
1381 RPC_BUFFER *buffer;
1382 uint32 offered;
1383}
1384SPOOL_Q_ENUMPRINTERDRIVERS;
1385
1386typedef struct spool_r_enumprinterdrivers
1387{
1388 RPC_BUFFER *buffer;
1389 uint32 needed;
1390 uint32 returned;
1391 WERROR status;
1392}
1393SPOOL_R_ENUMPRINTERDRIVERS;
1394
1395#define FORM_USER 0
1396#define FORM_BUILTIN 1
1397#define FORM_PRINTER 2
1398
1399typedef struct spool_form_1
1400{
1401 uint32 flag;
1402 UNISTR name;
1403 uint32 width;
1404 uint32 length;
1405 uint32 left;
1406 uint32 top;
1407 uint32 right;
1408 uint32 bottom;
1409}
1410FORM_1;
1411
1412typedef struct spool_q_enumforms
1413{
1414 POLICY_HND handle;
1415 uint32 level;
1416 RPC_BUFFER *buffer;
1417 uint32 offered;
1418}
1419SPOOL_Q_ENUMFORMS;
1420
1421typedef struct spool_r_enumforms
1422{
1423 RPC_BUFFER *buffer;
1424 uint32 needed;
1425 uint32 numofforms;
1426 WERROR status;
1427}
1428SPOOL_R_ENUMFORMS;
1429
1430typedef struct spool_q_getform
1431{
1432 POLICY_HND handle;
1433 UNISTR2 formname;
1434 uint32 level;
1435 RPC_BUFFER *buffer;
1436 uint32 offered;
1437}
1438SPOOL_Q_GETFORM;
1439
1440typedef struct spool_r_getform
1441{
1442 RPC_BUFFER *buffer;
1443 uint32 needed;
1444 WERROR status;
1445}
1446SPOOL_R_GETFORM;
1447
1448typedef struct spool_printer_info_level_1
1449{
1450 uint32 flags;
1451 uint32 description_ptr;
1452 uint32 name_ptr;
1453 uint32 comment_ptr;
1454 UNISTR2 description;
1455 UNISTR2 name;
1456 UNISTR2 comment;
1457} SPOOL_PRINTER_INFO_LEVEL_1;
1458
1459typedef struct spool_printer_info_level_2
1460{
1461 uint32 servername_ptr;
1462 uint32 printername_ptr;
1463 uint32 sharename_ptr;
1464 uint32 portname_ptr;
1465 uint32 drivername_ptr;
1466 uint32 comment_ptr;
1467 uint32 location_ptr;
1468 uint32 devmode_ptr;
1469 uint32 sepfile_ptr;
1470 uint32 printprocessor_ptr;
1471 uint32 datatype_ptr;
1472 uint32 parameters_ptr;
1473 uint32 secdesc_ptr;
1474 uint32 attributes;
1475 uint32 priority;
1476 uint32 default_priority;
1477 uint32 starttime;
1478 uint32 untiltime;
1479 uint32 status;
1480 uint32 cjobs;
1481 uint32 averageppm;
1482 UNISTR2 servername;
1483 UNISTR2 printername;
1484 UNISTR2 sharename;
1485 UNISTR2 portname;
1486 UNISTR2 drivername;
1487 UNISTR2 comment;
1488 UNISTR2 location;
1489 UNISTR2 sepfile;
1490 UNISTR2 printprocessor;
1491 UNISTR2 datatype;
1492 UNISTR2 parameters;
1493}
1494SPOOL_PRINTER_INFO_LEVEL_2;
1495
1496typedef struct spool_printer_info_level_3
1497{
1498 uint32 secdesc_ptr;
1499}
1500SPOOL_PRINTER_INFO_LEVEL_3;
1501
1502typedef struct spool_printer_info_level_7
1503{
1504 uint32 guid_ptr;
1505 uint32 action;
1506 UNISTR2 guid;
1507}
1508SPOOL_PRINTER_INFO_LEVEL_7;
1509
1510typedef struct spool_printer_info_level
1511{
1512 uint32 level;
1513 uint32 info_ptr;
1514 SPOOL_PRINTER_INFO_LEVEL_1 *info_1;
1515 SPOOL_PRINTER_INFO_LEVEL_2 *info_2;
1516 SPOOL_PRINTER_INFO_LEVEL_3 *info_3;
1517 SPOOL_PRINTER_INFO_LEVEL_7 *info_7;
1518}
1519SPOOL_PRINTER_INFO_LEVEL;
1520
1521typedef struct spool_printer_driver_info_level_3
1522{
1523 uint32 cversion;
1524 uint32 name_ptr;
1525 uint32 environment_ptr;
1526 uint32 driverpath_ptr;
1527 uint32 datafile_ptr;
1528 uint32 configfile_ptr;
1529 uint32 helpfile_ptr;
1530 uint32 monitorname_ptr;
1531 uint32 defaultdatatype_ptr;
1532 uint32 dependentfilessize;
1533 uint32 dependentfiles_ptr;
1534
1535 UNISTR2 name;
1536 UNISTR2 environment;
1537 UNISTR2 driverpath;
1538 UNISTR2 datafile;
1539 UNISTR2 configfile;
1540 UNISTR2 helpfile;
1541 UNISTR2 monitorname;
1542 UNISTR2 defaultdatatype;
1543 BUFFER5 dependentfiles;
1544
1545}
1546SPOOL_PRINTER_DRIVER_INFO_LEVEL_3;
1547
1548/* SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 structure */
1549typedef struct {
1550 uint32 version;
1551 uint32 name_ptr;
1552 uint32 environment_ptr;
1553 uint32 driverpath_ptr;
1554 uint32 datafile_ptr;
1555 uint32 configfile_ptr;
1556 uint32 helpfile_ptr;
1557 uint32 monitorname_ptr;
1558 uint32 defaultdatatype_ptr;
1559 uint32 dependentfiles_len;
1560 uint32 dependentfiles_ptr;
1561 uint32 previousnames_len;
1562 uint32 previousnames_ptr;
1563 NTTIME driverdate;
1564 uint64 driverversion;
1565 uint32 dummy4;
1566 uint32 mfgname_ptr;
1567 uint32 oemurl_ptr;
1568 uint32 hardwareid_ptr;
1569 uint32 provider_ptr;
1570 UNISTR2 name;
1571 UNISTR2 environment;
1572 UNISTR2 driverpath;
1573 UNISTR2 datafile;
1574 UNISTR2 configfile;
1575 UNISTR2 helpfile;
1576 UNISTR2 monitorname;
1577 UNISTR2 defaultdatatype;
1578 BUFFER5 dependentfiles;
1579 BUFFER5 previousnames;
1580 UNISTR2 mfgname;
1581 UNISTR2 oemurl;
1582 UNISTR2 hardwareid;
1583 UNISTR2 provider;
1584} SPOOL_PRINTER_DRIVER_INFO_LEVEL_6;
1585
1586
1587typedef struct spool_printer_driver_info_level
1588{
1589 uint32 level;
1590 uint32 ptr;
1591 SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *info_3;
1592 SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *info_6;
1593}
1594SPOOL_PRINTER_DRIVER_INFO_LEVEL;
1595
1596
1597typedef struct spool_q_setprinter
1598{
1599 POLICY_HND handle;
1600 uint32 level;
1601 SPOOL_PRINTER_INFO_LEVEL info;
1602 SEC_DESC_BUF *secdesc_ctr;
1603 DEVMODE_CTR devmode_ctr;
1604
1605 uint32 command;
1606
1607}
1608SPOOL_Q_SETPRINTER;
1609
1610typedef struct spool_r_setprinter
1611{
1612 WERROR status;
1613}
1614SPOOL_R_SETPRINTER;
1615
1616/********************************************/
1617
1618typedef struct {
1619 POLICY_HND handle;
1620} SPOOL_Q_DELETEPRINTER;
1621
1622typedef struct {
1623 POLICY_HND handle;
1624 WERROR status;
1625} SPOOL_R_DELETEPRINTER;
1626
1627/********************************************/
1628
1629typedef struct {
1630 POLICY_HND handle;
1631} SPOOL_Q_ABORTPRINTER;
1632
1633typedef struct {
1634 WERROR status;
1635} SPOOL_R_ABORTPRINTER;
1636
1637
1638/********************************************/
1639
1640typedef struct {
1641 UNISTR2 *server_name;
1642 uint32 level;
1643 SPOOL_PRINTER_INFO_LEVEL info;
1644 DEVMODE_CTR devmode_ctr;
1645 SEC_DESC_BUF *secdesc_ctr;
1646 uint32 user_switch;
1647 SPOOL_USER_CTR user_ctr;
1648} SPOOL_Q_ADDPRINTEREX;
1649
1650typedef struct {
1651 POLICY_HND handle;
1652 WERROR status;
1653} SPOOL_R_ADDPRINTEREX;
1654
1655/********************************************/
1656
1657typedef struct spool_q_addprinterdriver
1658{
1659 uint32 server_name_ptr;
1660 UNISTR2 server_name;
1661 uint32 level;
1662 SPOOL_PRINTER_DRIVER_INFO_LEVEL info;
1663}
1664SPOOL_Q_ADDPRINTERDRIVER;
1665
1666typedef struct spool_r_addprinterdriver
1667{
1668 WERROR status;
1669}
1670SPOOL_R_ADDPRINTERDRIVER;
1671
1672typedef struct spool_q_addprinterdriverex
1673{
1674 uint32 server_name_ptr;
1675 UNISTR2 server_name;
1676 uint32 level;
1677 SPOOL_PRINTER_DRIVER_INFO_LEVEL info;
1678 uint32 copy_flags;
1679}
1680SPOOL_Q_ADDPRINTERDRIVEREX;
1681
1682typedef struct spool_r_addprinterdriverex
1683{
1684 WERROR status;
1685}
1686SPOOL_R_ADDPRINTERDRIVEREX;
1687
1688
1689typedef struct driver_directory_1
1690{
1691 UNISTR name;
1692}
1693DRIVER_DIRECTORY_1;
1694
1695typedef struct driver_info_ctr_info
1696{
1697 DRIVER_DIRECTORY_1 *info1;
1698}
1699DRIVER_DIRECTORY_CTR;
1700
1701typedef struct spool_q_getprinterdriverdirectory
1702{
1703 uint32 name_ptr;
1704 UNISTR2 name;
1705 uint32 environment_ptr;
1706 UNISTR2 environment;
1707 uint32 level;
1708 RPC_BUFFER *buffer;
1709 uint32 offered;
1710}
1711SPOOL_Q_GETPRINTERDRIVERDIR;
1712
1713typedef struct spool_r_getprinterdriverdirectory
1714{
1715 RPC_BUFFER *buffer;
1716 uint32 needed;
1717 WERROR status;
1718}
1719SPOOL_R_GETPRINTERDRIVERDIR;
1720
1721typedef struct spool_q_addprintprocessor
1722{
1723 uint32 server_ptr;
1724 UNISTR2 server;
1725 UNISTR2 environment;
1726 UNISTR2 path;
1727 UNISTR2 name;
1728}
1729SPOOL_Q_ADDPRINTPROCESSOR;
1730
1731typedef struct spool_r_addprintprocessor
1732{
1733 WERROR status;
1734}
1735SPOOL_R_ADDPRINTPROCESSOR;
1736
1737
1738typedef struct spool_q_enumprintprocessors
1739{
1740 uint32 name_ptr;
1741 UNISTR2 name;
1742 uint32 environment_ptr;
1743 UNISTR2 environment;
1744 uint32 level;
1745 RPC_BUFFER *buffer;
1746 uint32 offered;
1747}
1748SPOOL_Q_ENUMPRINTPROCESSORS;
1749
1750typedef struct printprocessor_1
1751{
1752 UNISTR name;
1753}
1754PRINTPROCESSOR_1;
1755
1756typedef struct spool_r_enumprintprocessors
1757{
1758 RPC_BUFFER *buffer;
1759 uint32 needed;
1760 uint32 returned;
1761 WERROR status;
1762}
1763SPOOL_R_ENUMPRINTPROCESSORS;
1764
1765typedef struct spool_q_enumprintprocdatatypes
1766{
1767 uint32 name_ptr;
1768 UNISTR2 name;
1769 uint32 processor_ptr;
1770 UNISTR2 processor;
1771 uint32 level;
1772 RPC_BUFFER *buffer;
1773 uint32 offered;
1774}
1775SPOOL_Q_ENUMPRINTPROCDATATYPES;
1776
1777typedef struct ppdatatype_1
1778{
1779 UNISTR name;
1780}
1781PRINTPROCDATATYPE_1;
1782
1783typedef struct spool_r_enumprintprocdatatypes
1784{
1785 RPC_BUFFER *buffer;
1786 uint32 needed;
1787 uint32 returned;
1788 WERROR status;
1789}
1790SPOOL_R_ENUMPRINTPROCDATATYPES;
1791
1792typedef struct printmonitor_1
1793{
1794 UNISTR name;
1795}
1796PRINTMONITOR_1;
1797
1798typedef struct printmonitor_2
1799{
1800 UNISTR name;
1801 UNISTR environment;
1802 UNISTR dll_name;
1803}
1804PRINTMONITOR_2;
1805
1806typedef struct spool_q_enumprintmonitors
1807{
1808 uint32 name_ptr;
1809 UNISTR2 name;
1810 uint32 level;
1811 RPC_BUFFER *buffer;
1812 uint32 offered;
1813}
1814SPOOL_Q_ENUMPRINTMONITORS;
1815
1816typedef struct spool_r_enumprintmonitors
1817{
1818 RPC_BUFFER *buffer;
1819 uint32 needed;
1820 uint32 returned;
1821 WERROR status;
1822}
1823SPOOL_R_ENUMPRINTMONITORS;
1824
1825
1826typedef struct spool_q_enumprinterdata
1827{
1828 POLICY_HND handle;
1829 uint32 index;
1830 uint32 valuesize;
1831 uint32 datasize;
1832}
1833SPOOL_Q_ENUMPRINTERDATA;
1834
1835typedef struct spool_r_enumprinterdata
1836{
1837 uint32 valuesize;
1838 uint16 *value;
1839 uint32 realvaluesize;
1840 uint32 type;
1841 uint32 datasize;
1842 uint8 *data;
1843 uint32 realdatasize;
1844 WERROR status;
1845}
1846SPOOL_R_ENUMPRINTERDATA;
1847
1848typedef struct spool_q_setprinterdata
1849{
1850 POLICY_HND handle;
1851 UNISTR2 value;
1852 uint32 type;
1853 uint32 max_len;
1854 uint8 *data;
1855 uint32 real_len;
1856 uint32 numeric_data;
1857}
1858SPOOL_Q_SETPRINTERDATA;
1859
1860typedef struct spool_r_setprinterdata
1861{
1862 WERROR status;
1863}
1864SPOOL_R_SETPRINTERDATA;
1865
1866typedef struct spool_q_resetprinter
1867{
1868 POLICY_HND handle;
1869 uint32 datatype_ptr;
1870 UNISTR2 datatype;
1871 DEVMODE_CTR devmode_ctr;
1872
1873} SPOOL_Q_RESETPRINTER;
1874
1875typedef struct spool_r_resetprinter
1876{
1877 WERROR status;
1878}
1879SPOOL_R_RESETPRINTER;
1880
1881
1882
1883typedef struct _form
1884{
1885 uint32 flags;
1886 uint32 name_ptr;
1887 uint32 size_x;
1888 uint32 size_y;
1889 uint32 left;
1890 uint32 top;
1891 uint32 right;
1892 uint32 bottom;
1893 UNISTR2 name;
1894}
1895FORM;
1896
1897typedef struct spool_q_addform
1898{
1899 POLICY_HND handle;
1900 uint32 level;
1901 uint32 level2; /* This should really be part of the FORM structure */
1902 FORM form;
1903}
1904SPOOL_Q_ADDFORM;
1905
1906typedef struct spool_r_addform
1907{
1908 WERROR status;
1909}
1910SPOOL_R_ADDFORM;
1911
1912typedef struct spool_q_setform
1913{
1914 POLICY_HND handle;
1915 UNISTR2 name;
1916 uint32 level;
1917 uint32 level2;
1918 FORM form;
1919}
1920SPOOL_Q_SETFORM;
1921
1922typedef struct spool_r_setform
1923{
1924 WERROR status;
1925}
1926SPOOL_R_SETFORM;
1927
1928typedef struct spool_q_deleteform
1929{
1930 POLICY_HND handle;
1931 UNISTR2 name;
1932}
1933SPOOL_Q_DELETEFORM;
1934
1935typedef struct spool_r_deleteform
1936{
1937 WERROR status;
1938}
1939SPOOL_R_DELETEFORM;
1940
1941typedef struct spool_q_getjob
1942{
1943 POLICY_HND handle;
1944 uint32 jobid;
1945 uint32 level;
1946 RPC_BUFFER *buffer;
1947 uint32 offered;
1948}
1949SPOOL_Q_GETJOB;
1950
1951typedef struct pjob_info_info
1952{
1953 union
1954 {
1955 JOB_INFO_1 *job_info_1;
1956 JOB_INFO_2 *job_info_2;
1957 void *info;
1958 }
1959 job;
1960
1961}
1962PJOB_INFO;
1963
1964typedef struct spool_r_getjob
1965{
1966 RPC_BUFFER *buffer;
1967 uint32 needed;
1968 WERROR status;
1969}
1970SPOOL_R_GETJOB;
1971
1972typedef struct spool_q_replyopenprinter
1973{
1974 UNISTR2 string;
1975 uint32 printer;
1976 uint32 type;
1977 uint32 unknown0;
1978 uint32 unknown1;
1979}
1980SPOOL_Q_REPLYOPENPRINTER;
1981
1982typedef struct spool_r_replyopenprinter
1983{
1984 POLICY_HND handle;
1985 WERROR status;
1986}
1987SPOOL_R_REPLYOPENPRINTER;
1988
1989typedef struct spool_q_routerreplyprinter
1990{
1991 POLICY_HND handle;
1992 uint32 condition;
1993 uint32 unknown1; /* 0x00000001 */
1994 uint32 change_id;
1995 uint8 unknown2[5]; /* 0x0000000001 */
1996}
1997SPOOL_Q_ROUTERREPLYPRINTER;
1998
1999typedef struct spool_r_routerreplyprinter
2000{
2001 WERROR status;
2002}
2003SPOOL_R_ROUTERREPLYPRINTER;
2004
2005typedef struct spool_q_replycloseprinter
2006{
2007 POLICY_HND handle;
2008}
2009SPOOL_Q_REPLYCLOSEPRINTER;
2010
2011typedef struct spool_r_replycloseprinter
2012{
2013 POLICY_HND handle;
2014 WERROR status;
2015}
2016SPOOL_R_REPLYCLOSEPRINTER;
2017
2018typedef struct spool_q_rrpcn
2019{
2020 POLICY_HND handle;
2021 uint32 change_low;
2022 uint32 change_high;
2023 uint32 unknown0;
2024 uint32 unknown1;
2025 uint32 info_ptr;
2026 SPOOL_NOTIFY_INFO info;
2027}
2028SPOOL_Q_REPLY_RRPCN;
2029
2030typedef struct spool_r_rrpcn
2031{
2032 uint32 unknown0;
2033 WERROR status;
2034}
2035SPOOL_R_REPLY_RRPCN;
2036
2037typedef struct spool_q_getprinterdataex
2038{
2039 POLICY_HND handle;
2040 UNISTR2 keyname;
2041 UNISTR2 valuename;
2042 uint32 size;
2043}
2044SPOOL_Q_GETPRINTERDATAEX;
2045
2046typedef struct spool_r_getprinterdataex
2047{
2048 uint32 type;
2049 uint32 size;
2050 uint8 *data;
2051 uint32 needed;
2052 WERROR status;
2053}
2054SPOOL_R_GETPRINTERDATAEX;
2055
2056typedef struct spool_q_setprinterdataex
2057{
2058 POLICY_HND handle;
2059 UNISTR2 key;
2060 UNISTR2 value;
2061 uint32 type;
2062 uint32 max_len;
2063 uint8 *data;
2064 uint32 real_len;
2065 uint32 numeric_data;
2066}
2067SPOOL_Q_SETPRINTERDATAEX;
2068
2069typedef struct spool_r_setprinterdataex
2070{
2071 WERROR status;
2072}
2073SPOOL_R_SETPRINTERDATAEX;
2074
2075
2076typedef struct spool_q_deleteprinterdataex
2077{
2078 POLICY_HND handle;
2079 UNISTR2 keyname;
2080 UNISTR2 valuename;
2081}
2082SPOOL_Q_DELETEPRINTERDATAEX;
2083
2084typedef struct spool_r_deleteprinterdataex
2085{
2086 WERROR status;
2087}
2088SPOOL_R_DELETEPRINTERDATAEX;
2089
2090
2091typedef struct spool_q_enumprinterkey
2092{
2093 POLICY_HND handle;
2094 UNISTR2 key;
2095 uint32 size;
2096}
2097SPOOL_Q_ENUMPRINTERKEY;
2098
2099typedef struct spool_r_enumprinterkey
2100{
2101 BUFFER5 keys;
2102 uint32 needed; /* in bytes */
2103 WERROR status;
2104}
2105SPOOL_R_ENUMPRINTERKEY;
2106
2107typedef struct spool_q_deleteprinterkey
2108{
2109 POLICY_HND handle;
2110 UNISTR2 keyname;
2111}
2112SPOOL_Q_DELETEPRINTERKEY;
2113
2114typedef struct spool_r_deleteprinterkey
2115{
2116 WERROR status;
2117}
2118SPOOL_R_DELETEPRINTERKEY;
2119
2120typedef struct printer_enum_values
2121{
2122 UNISTR valuename;
2123 uint32 value_len;
2124 uint32 type;
2125 uint8 *data;
2126 uint32 data_len;
2127
2128}
2129PRINTER_ENUM_VALUES;
2130
2131typedef struct printer_enum_values_ctr
2132{
2133 uint32 size;
2134 uint32 size_of_array;
2135 PRINTER_ENUM_VALUES *values;
2136}
2137PRINTER_ENUM_VALUES_CTR;
2138
2139typedef struct spool_q_enumprinterdataex
2140{
2141 POLICY_HND handle;
2142 UNISTR2 key;
2143 uint32 size;
2144}
2145SPOOL_Q_ENUMPRINTERDATAEX;
2146
2147typedef struct spool_r_enumprinterdataex
2148{
2149 PRINTER_ENUM_VALUES_CTR ctr;
2150 uint32 needed;
2151 uint32 returned;
2152 WERROR status;
2153}
2154SPOOL_R_ENUMPRINTERDATAEX;
2155
2156typedef struct printprocessor_directory_1
2157{
2158 UNISTR name;
2159}
2160PRINTPROCESSOR_DIRECTORY_1;
2161
2162typedef struct spool_q_getprintprocessordirectory
2163{
2164 UNISTR2 name;
2165 UNISTR2 environment;
2166 uint32 level;
2167 RPC_BUFFER *buffer;
2168 uint32 offered;
2169}
2170SPOOL_Q_GETPRINTPROCESSORDIRECTORY;
2171
2172typedef struct spool_r_getprintprocessordirectory
2173{
2174 RPC_BUFFER *buffer;
2175 uint32 needed;
2176 WERROR status;
2177}
2178SPOOL_R_GETPRINTPROCESSORDIRECTORY;
2179
2180/**************************************/
2181
2182#define MAX_PORTNAME 64
2183#define MAX_NETWORK_NAME 49
2184#define MAX_SNMP_COMM_NAME 33
2185#define MAX_QUEUE_NAME 33
2186#define MAX_IPADDR_STRING 17
2187
2188typedef struct {
2189 uint16 portname[MAX_PORTNAME];
2190 uint32 version;
2191 uint32 protocol;
2192 uint32 size;
2193 uint32 reserved;
2194 uint16 hostaddress[MAX_NETWORK_NAME];
2195 uint16 snmpcommunity[MAX_SNMP_COMM_NAME];
2196 uint32 dblspool;
2197 uint16 queue[MAX_QUEUE_NAME];
2198 uint16 ipaddress[MAX_IPADDR_STRING];
2199 uint32 port;
2200 uint32 snmpenabled;
2201 uint32 snmpdevindex;
2202} SPOOL_PORT_DATA_1;
2203
2204typedef struct {
2205 POLICY_HND handle;
2206 UNISTR2 dataname;
2207 RPC_BUFFER indata;
2208 uint32 indata_len;
2209 uint32 offered;
2210 uint32 unknown;
2211} SPOOL_Q_XCVDATAPORT;
2212
2213typedef struct {
2214 RPC_BUFFER outdata;
2215 uint32 needed;
2216 uint32 unknown;
2217 WERROR status;
2218} SPOOL_R_XCVDATAPORT;
2219
2220#define PRINTER_DRIVER_VERSION 2
2221#define PRINTER_DRIVER_ARCHITECTURE "Windows NT x86"
2222
2223#endif /* _RPC_SPOOLSS_H */
2224
Note: See TracBrowser for help on using the repository browser.