Fixed a few typos and added the opnum for ADDPRINTERDRIVEREX to the
[ira/wip.git] / source3 / include / rpc_spoolss.h
index 0777a602b12ee156c07b72a73d0874a8dc65825d..dcb4bc04f28b0ea34d2c1bce30991e77f20cf5b9 100755 (executable)
 
 /* spoolss pipe: this are the calls which are not implemented ...
 #define SPOOLSS_OPENPRINTER                            0x01
-#define SPOOLSS_DELETEPRINTER                          0x06
 #define SPOOLSS_GETPRINTERDRIVER                       0x0b
-#define SPOOLSS_DELETEPRINTERDRIVER                    0x0d
-#define SPOOLSS_ADDPRINTPROCESSOR                      0x0e
 #define SPOOLSS_GETPRINTPROCESSORDIRECTORY             0x10
-#define SPOOLSS_ABORTPRINTER                           0x15
 #define SPOOLSS_READPRINTER                            0x16
 #define SPOOLSS_WAITFORPRINTERCHANGE                   0x1c
-#define SPOOLSS_DELETEFORM                             0x1f
-#define SPOOLSS_GETFORM                                        0x20
 #define SPOOLSS_ADDPORT                                        0x25
 #define SPOOLSS_CONFIGUREPORT                          0x26
 #define SPOOLSS_DELETEPORT                             0x27
@@ -57,9 +51,7 @@
 #define SPOOLSS_FINDFIRSTPRINTERCHANGENOTIFICATION     0x36
 #define SPOOLSS_FINDNEXTPRINTERCHANGENOTIFICATION      0x37
 #define SPOOLSS_ROUTERFINDFIRSTPRINTERNOTIFICATIONOLD  0x39
-#define SPOOLSS_REPLYOPENPRINTER                       0x3a
 #define SPOOLSS_ROUTERREPLYPRINTER                     0x3b
-#define SPOOLSS_REPLYCLOSEPRINTER                      0x3c
 #define SPOOLSS_ADDPORTEX                              0x3d
 #define SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFICATION0x3e
 #define SPOOLSS_SPOOLERINIT                            0x3f
 #define SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFICATION 0x42
 */
 
+/*
+ * Unimplement Win2k specific RPC's
+
+#define SPOOLSS_ADDPRINTERDRIVEREX                     0x59
+
+*/
+
 /* those are implemented */
 #define SPOOLSS_ENUMPRINTERS                           0x00
 #define SPOOLSS_SETJOB                                 0x02
 #define SPOOLSS_GETJOB                                 0x03
 #define SPOOLSS_ENUMJOBS                               0x04
 #define SPOOLSS_ADDPRINTER                             0x05
+#define SPOOLSS_DELETEPRINTER                          0x06
 #define SPOOLSS_SETPRINTER                             0x07
 #define SPOOLSS_GETPRINTER                             0x08
 #define SPOOLSS_ADDPRINTERDRIVER                       0x09
 #define SPOOLSS_ENUMPRINTERDRIVERS                     0x0a
 #define SPOOLSS_GETPRINTERDRIVERDIRECTORY              0x0c
+#define SPOOLSS_DELETEPRINTERDRIVER                    0x0d
+#define SPOOLSS_ADDPRINTPROCESSOR                      0x0e
 #define SPOOLSS_ENUMPRINTPROCESSORS                    0x0f
 #define SPOOLSS_STARTDOCPRINTER                                0x11
 #define SPOOLSS_STARTPAGEPRINTER                       0x12
 #define SPOOLSS_WRITEPRINTER                           0x13
 #define SPOOLSS_ENDPAGEPRINTER                         0x14
+#define SPOOLSS_ABORTPRINTER                           0x15
 #define SPOOLSS_ENDDOCPRINTER                          0x17
 #define SPOOLSS_ADDJOB                                 0x18
 #define SPOOLSS_SCHEDULEJOB                            0x19
@@ -90,6 +93,8 @@
 #define SPOOLSS_SETPRINTERDATA                         0x1b
 #define SPOOLSS_CLOSEPRINTER                           0x1d
 #define SPOOLSS_ADDFORM                                        0x1e
+#define SPOOLSS_DELETEFORM                             0x1f
+#define SPOOLSS_GETFORM                                        0x20
 #define SPOOLSS_SETFORM                                        0x21
 #define SPOOLSS_ENUMFORMS                              0x22
 #define SPOOLSS_ENUMPORTS                              0x23
 #define SPOOLSS_GETPRINTERDRIVER2                      0x35
 /* find close printer notification */
 #define SPOOLSS_FCPN                                   0x38
+#define SPOOLSS_REPLYOPENPRINTER                       0x3a
+#define SPOOLSS_REPLYCLOSEPRINTER                      0x3c
 /* remote find first printer change notifyEx */
 #define SPOOLSS_RFFPCNEX                               0x41
+/*SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFICATION */
+#define SPOOLSS_RRPCN                                  0x42
 /* remote find next printer change notifyEx */
 #define SPOOLSS_RFNPCNEX                               0x43
 #define SPOOLSS_OPENPRINTEREX                          0x45
 #define SPOOLSS_ADDPRINTEREX                           0x46
 #define SPOOLSS_ENUMPRINTERDATA                                0x48
+#define SPOOLSS_DELETEPRINTERDATA                      0x49
+#define SPOOLSS_GETPRINTERDATAEX                       0x4e
+#define SPOOLSS_SETPRINTERDATAEX                       0x50
 
 #define PRINTER_CONTROL_UNPAUSE                0x00000000
 #define PRINTER_CONTROL_PAUSE          0x00000001
 
 #define PRINTER_STATUS_POWER_SAVE      0x01000000
 
-
 #define SERVER_ACCESS_ADMINISTER       0x00000001
 #define SERVER_ACCESS_ENUMERATE                0x00000002
 #define PRINTER_ACCESS_ADMINISTER      0x00000004
 #define PRINTER_ACCESS_USE             0x00000008
 #define JOB_ACCESS_ADMINISTER          0x00000010
 
-#define STANDARD_RIGHTS_READ           0x00020000
-#define STANDARD_RIGHTS_WRITE          STANDARD_RIGHTS_READ
-#define STANDARD_RIGHTS_EXECUTE                STANDARD_RIGHTS_READ
-#define STANDARD_RIGHTS_REQUIRED       0x000F0000
+/* JOB status codes. */
+
+#define JOB_STATUS_PAUSED              0x001
+#define JOB_STATUS_ERROR               0x002
+#define JOB_STATUS_DELETING            0x004
+#define JOB_STATUS_SPOOLING            0x008
+#define JOB_STATUS_PRINTING            0x010
+#define JOB_STATUS_OFFLINE             0x020
+#define JOB_STATUS_PAPEROUT            0x040
+#define JOB_STATUS_PRINTED             0x080
+#define JOB_STATUS_DELETED             0x100
+#define JOB_STATUS_BLOCKED             0x200
+#define JOB_STATUS_USER_INTERVENTION   0x400
+
+/* ACE masks for the various print permissions */
+
+#define PRINTER_ACE_FULL_CONTROL      GENERIC_ALL_ACCESS
+#define PRINTER_ACE_MANAGE_DOCUMENTS  READ_CONTROL_ACCESS
+#define PRINTER_ACE_PRINT             \
+    (GENERIC_READ_ACCESS | GENERIC_WRITE_ACCESS | GENERIC_EXECUTE_ACCESS)
 
 /* Access rights for print servers */
-#define SERVER_ALL_ACCESS      STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
-#define SERVER_READ            STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE
-#define SERVER_WRITE           STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
-#define SERVER_EXECUTE         STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE
+#define SERVER_ALL_ACCESS      STANDARD_RIGHTS_REQUIRED_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
+#define SERVER_READ            STANDARD_RIGHTS_READ_ACCESS|SERVER_ACCESS_ENUMERATE
+#define SERVER_WRITE           STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE
+#define SERVER_EXECUTE         STANDARD_RIGHTS_EXECUTE_ACCESS|SERVER_ACCESS_ENUMERATE
 
 /* Access rights for printers */
-#define PRINTER_ALL_ACCESS     STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE
-#define PRINTER_READ          STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE
-#define PRINTER_WRITE         STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE
-#define PRINTER_EXECUTE       STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE
+#define PRINTER_ALL_ACCESS     STANDARD_RIGHTS_REQUIRED_ACCESS|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE
+#define PRINTER_READ          STANDARD_RIGHTS_READ_ACCESS|PRINTER_ACCESS_USE
+#define PRINTER_WRITE         STANDARD_RIGHTS_WRITE_ACCESS|PRINTER_ACCESS_USE
+#define PRINTER_EXECUTE       STANDARD_RIGHTS_EXECUTE_ACCESS|PRINTER_ACCESS_USE
 
 /* Access rights for jobs */
-#define JOB_ALL_ACCESS STANDARD_RIGHTS_REQUIRED|JOB_ACCESS_ADMINISTER
-#define JOB_READ       STANDARD_RIGHTS_READ|JOB_ACCESS_ADMINISTER
-#define JOB_WRITE      STANDARD_RIGHTS_WRITE|JOB_ACCESS_ADMINISTER
-#define JOB_EXECUTE    STANDARD_RIGHTS_EXECUTE|JOB_ACCESS_ADMINISTER
-
-#define POLICY_HND_SIZE 20
+#define JOB_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|JOB_ACCESS_ADMINISTER
+#define JOB_READ       STANDARD_RIGHTS_READ_ACCESS|JOB_ACCESS_ADMINISTER
+#define JOB_WRITE      STANDARD_RIGHTS_WRITE_ACCESS|JOB_ACCESS_ADMINISTER
+#define JOB_EXECUTE    STANDARD_RIGHTS_EXECUTE_ACCESS|JOB_ACCESS_ADMINISTER
 
 #define ONE_VALUE 01
 #define TWO_VALUE 02
                                 PRINTER_CHANGE_PRINT_PROCESSOR | \
                                 PRINTER_CHANGE_PRINTER_DRIVER )
 
+#define PRINTER_NOTIFY_INFO_DISCARDED  0x1
+
 /*
  * The printer attributes.
  * I #defined all of them (grabbed form MSDN)
 #define PRINTER_ENUM_ICON7             0x00400000
 #define PRINTER_ENUM_ICON8             0x00800000
 
-#define POLICY_HND_SIZE 20
-
 /* this struct is undocumented */
 /* thanks to the ddk ... */
 typedef struct spool_user_1
 {
-       uint32 size;
+       uint32 size;            /* length of user_name & client_name + 2? */
        uint32 client_name_ptr;
        uint32 user_name_ptr;
        uint32 build;
@@ -443,8 +468,7 @@ SPOOL_Q_OPEN_PRINTER_EX;
 typedef struct spool_r_open_printer_ex
 {
        POLICY_HND handle;      /* handle used along all transactions (20*uint8) */
-       uint32 status;
-
+       WERROR status;
 }
 SPOOL_R_OPEN_PRINTER_EX;
 
@@ -506,10 +530,23 @@ typedef struct spool_r_getprinterdata
        uint32 size;
        uint8 *data;
        uint32 needed;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_GETPRINTERDATA;
 
+typedef struct spool_q_deleteprinterdata
+{
+       POLICY_HND handle;
+       UNISTR2 valuename;
+}
+SPOOL_Q_DELETEPRINTERDATA;
+
+typedef struct spool_r_deleteprinterdata
+{
+       WERROR status;
+}
+SPOOL_R_DELETEPRINTERDATA;
+
 typedef struct spool_q_closeprinter
 {
        POLICY_HND handle;
@@ -519,7 +556,7 @@ SPOOL_Q_CLOSEPRINTER;
 typedef struct spool_r_closeprinter
 {
        POLICY_HND handle;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_CLOSEPRINTER;
 
@@ -531,7 +568,7 @@ SPOOL_Q_STARTPAGEPRINTER;
 
 typedef struct spool_r_startpageprinter
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_STARTPAGEPRINTER;
 
@@ -543,10 +580,27 @@ SPOOL_Q_ENDPAGEPRINTER;
 
 typedef struct spool_r_endpageprinter
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENDPAGEPRINTER;
 
+
+typedef struct spool_q_deleteprinterdriver
+{
+       uint32 server_ptr;
+       UNISTR2 server;
+       UNISTR2 arch;
+       UNISTR2 driver;
+}
+SPOOL_Q_DELETEPRINTERDRIVER;
+
+typedef struct spool_r_deleteprinterdriver
+{
+       WERROR status;
+}
+SPOOL_R_DELETEPRINTERDRIVER;
+
+
 typedef struct spool_doc_info_1
 {
        uint32 p_docname;
@@ -582,7 +636,7 @@ SPOOL_Q_STARTDOCPRINTER;
 typedef struct spool_r_startdocprinter
 {
        uint32 jobid;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_STARTDOCPRINTER;
 
@@ -594,7 +648,7 @@ SPOOL_Q_ENDDOCPRINTER;
 
 typedef struct spool_r_enddocprinter
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENDDOCPRINTER;
 
@@ -610,7 +664,7 @@ SPOOL_Q_WRITEPRINTER;
 typedef struct spool_r_writeprinter
 {
        uint32 buffer_written;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_WRITEPRINTER;
 
@@ -636,7 +690,7 @@ typedef struct spool_notify_info_data
                struct
                {
                        uint32 length;
-                       uint16 string[1024];
+                       uint16 *string;
                }
                data;
        }
@@ -671,7 +725,7 @@ SPOOL_Q_RFFPCNEX;
 
 typedef struct spool_r_rffpcnex
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_RFFPCNEX;
 
@@ -689,7 +743,7 @@ typedef struct spool_r_rfnpcnex
 {
        uint32 info_ptr;
        SPOOL_NOTIFY_INFO info;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_RFNPCNEX;
 
@@ -702,7 +756,7 @@ SPOOL_Q_FCPN;
 
 typedef struct spool_r_fcpn
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_FCPN;
 
@@ -779,7 +833,7 @@ typedef struct printer_info_2
        UNISTR printprocessor;
        UNISTR datatype;
        UNISTR parameters;
-       /*SECURITY_DESCRIPTOR securitydescriptor; */
+       SEC_DESC *secdesc;
        uint32 attributes;
        uint32 priority;
        uint32 defaultpriority;
@@ -791,6 +845,13 @@ typedef struct printer_info_2
 }
 PRINTER_INFO_2;
 
+typedef struct printer_info_3
+{
+       uint32 flags;
+       SEC_DESC *secdesc;
+}
+PRINTER_INFO_3;
+
 typedef struct spool_q_enumprinters
 {
        uint32 flags;
@@ -804,8 +865,10 @@ SPOOL_Q_ENUMPRINTERS;
 
 typedef struct printer_info_ctr_info
 {
+       PRINTER_INFO_0 *printers_0;
        PRINTER_INFO_1 *printers_1;
        PRINTER_INFO_2 *printers_2;
+       PRINTER_INFO_3 *printers_3;
 }
 PRINTER_INFO_CTR;
 
@@ -814,7 +877,7 @@ typedef struct spool_r_enumprinters
        NEW_BUFFER *buffer;
        uint32 needed;          /* bytes needed */
        uint32 returned;        /* number of printers */
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTERS;
 
@@ -843,20 +906,9 @@ typedef struct spool_r_getprinter
 {
        NEW_BUFFER *buffer;
        uint32 needed;
-       uint32 status;
+       WERROR status;
 } SPOOL_R_GETPRINTER;
 
-struct s_notify_info_data_table
-{
-       uint16 type;
-       uint16 field;
-       char *name;
-       uint32 size;
-       void (*fn) (int snum, SPOOL_NOTIFY_INFO_DATA *data,
-                   print_queue_struct *queue,
-                   NT_PRINTER_INFO_LEVEL *printer);
-};
-
 typedef struct driver_info_1
 {
        UNISTR name;
@@ -881,24 +933,44 @@ typedef struct driver_info_3
        UNISTR datafile;
        UNISTR configfile;
        UNISTR helpfile;
-       UNISTR **dependentfiles;
+       uint16 *dependentfiles;
        UNISTR monitorname;
        UNISTR defaultdatatype;
 }
 DRIVER_INFO_3;
 
-typedef struct driver_info_info
+typedef struct driver_info_6
 {
-       union
-       {
-               DRIVER_INFO_1 *info1;
-               DRIVER_INFO_2 *info2;
-               DRIVER_INFO_3 *info3;
-       }
-       driver;
+       uint32 version;
+       UNISTR name;
+       UNISTR architecture;
+       UNISTR driverpath;
+       UNISTR datafile;
+       UNISTR configfile;
+       UNISTR helpfile;
+       uint16 *dependentfiles;
+       UNISTR monitorname;
+       UNISTR defaultdatatype;
+       uint16* previousdrivernames;
+       NTTIME driver_date;
+       uint32 padding;
+       uint32 driver_version_low;
+       uint32 driver_version_high;
+       UNISTR mfgname;
+       UNISTR oem_url;
+       UNISTR hardware_id;
+       UNISTR provider;
+}
+DRIVER_INFO_6;
 
+typedef struct driver_info_info
+{
+       DRIVER_INFO_1 *info1;
+       DRIVER_INFO_2 *info2;
+       DRIVER_INFO_3 *info3;
+       DRIVER_INFO_6 *info6;
 }
-DRIVER_INFO;
+PRINTER_DRIVER_CTR;
 
 typedef struct spool_q_getprinterdriver2
 {
@@ -919,7 +991,7 @@ typedef struct spool_r_getprinterdriver2
        uint32 needed;
        uint32 servermajorversion;
        uint32 serverminorversion;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_GETPRINTERDRIVER2;
 
@@ -943,7 +1015,9 @@ SPOOL_Q_ADDJOB;
 
 typedef struct spool_r_addjob
 {
-       uint32 status;
+       NEW_BUFFER *buffer;
+       uint32 needed;
+       WERROR status;
 }
 SPOOL_R_ADDJOB;
 
@@ -1039,7 +1113,7 @@ typedef struct spool_r_enumjobs
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 returned;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMJOBS;
 
@@ -1052,7 +1126,7 @@ SPOOL_Q_SCHEDULEJOB;
 
 typedef struct spool_r_schedulejob
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_SCHEDULEJOB;
 
@@ -1099,7 +1173,7 @@ typedef struct spool_r_enumports
        NEW_BUFFER *buffer;
        uint32 needed;          /* bytes needed */
        uint32 returned;        /* number of printers */
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPORTS;
 
@@ -1134,7 +1208,7 @@ SPOOL_Q_SETJOB;
 
 typedef struct spool_r_setjob
 {
-       uint32 status;
+       WERROR status;
 
 }
 SPOOL_R_SETJOB;
@@ -1156,7 +1230,7 @@ typedef struct spool_r_enumprinterdrivers
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 returned;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTERDRIVERS;
 
@@ -1187,10 +1261,27 @@ typedef struct spool_r_enumforms
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 numofforms;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMFORMS;
 
+typedef struct spool_q_getform
+{
+       POLICY_HND handle;
+       UNISTR2 formname;
+       uint32 level;
+       NEW_BUFFER *buffer;
+       uint32 offered;
+}
+SPOOL_Q_GETFORM;
+
+typedef struct spool_r_getform
+{
+       NEW_BUFFER *buffer;
+       uint32 needed;
+       WERROR status;
+}
+SPOOL_R_GETFORM;
 
 typedef struct spool_printer_info_level_1
 {
@@ -1223,7 +1314,7 @@ typedef struct spool_printer_info_level_2
        uint32 default_priority;
        uint32 starttime;
        uint32 untiltime;
-       uint32 status;
+       WERROR status;
        uint32 cjobs;
        uint32 averageppm;
        UNISTR2 servername;
@@ -1241,12 +1332,19 @@ typedef struct spool_printer_info_level_2
 }
 SPOOL_PRINTER_INFO_LEVEL_2;
 
+typedef struct spool_printer_info_level_3
+{
+       uint32 secdesc_ptr;
+}
+SPOOL_PRINTER_INFO_LEVEL_3;
+
 typedef struct spool_printer_info_level
 {
        uint32 level;
        uint32 info_ptr;
        SPOOL_PRINTER_INFO_LEVEL_1 *info_1;
        SPOOL_PRINTER_INFO_LEVEL_2 *info_2;
+       SPOOL_PRINTER_INFO_LEVEL_3 *info_3;
 }
 SPOOL_PRINTER_INFO_LEVEL;
 
@@ -1277,11 +1375,51 @@ typedef struct spool_printer_driver_info_level_3
 }
 SPOOL_PRINTER_DRIVER_INFO_LEVEL_3;
 
+/* SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 structure */
+typedef struct {
+       uint32 version;
+       uint32 name_ptr;
+       uint32 environment_ptr;
+       uint32 driverpath_ptr;
+       uint32 datafile_ptr;
+       uint32 configfile_ptr;
+       uint32 helpfile_ptr;
+       uint32 monitorname_ptr;
+       uint32 defaultdatatype_ptr;
+       uint32 dependentfiles_len;
+       uint32 dependentfiles_ptr;
+       uint32 previousnames_len;
+       uint32 previousnames_ptr;
+       NTTIME  driverdate;
+       UINT64_S        driverversion;
+       uint32  dummy4;
+       uint32 mfgname_ptr;
+       uint32 oemurl_ptr;
+       uint32 hardwareid_ptr;
+       uint32 provider_ptr;
+       UNISTR2 name;
+       UNISTR2 environment;
+       UNISTR2 driverpath;
+       UNISTR2 datafile;
+       UNISTR2 configfile;
+       UNISTR2 helpfile;
+       UNISTR2 monitorname;
+       UNISTR2 defaultdatatype;
+       BUFFER5 dependentfiles;
+       BUFFER5 previousnames;
+       UNISTR2 mfgname;
+       UNISTR2 oemurl;
+       UNISTR2 hardwareid;
+       UNISTR2 provider;
+} SPOOL_PRINTER_DRIVER_INFO_LEVEL_6;
+
+
 typedef struct spool_printer_driver_info_level
 {
        uint32 level;
        uint32 ptr;
        SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *info_3;
+       SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *info_6;
 }
 SPOOL_PRINTER_DRIVER_INFO_LEVEL;
 
@@ -1313,16 +1451,9 @@ typedef struct spool_q_setprinter
        POLICY_HND handle;
        uint32 level;
        SPOOL_PRINTER_INFO_LEVEL info;
+       SEC_DESC_BUF *secdesc_ctr;
        DEVMODE_CTR devmode_ctr;
 
-       /* lkclXXXX jean-francois, see SEC_DESC_BUF code */
-       struct
-       {
-               uint32 size_of_buffer;
-               uint32 data;
-       }
-       security;
-
        uint32 command;
 
 }
@@ -1330,7 +1461,7 @@ SPOOL_Q_SETPRINTER;
 
 typedef struct spool_r_setprinter
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_SETPRINTER;
 
@@ -1350,10 +1481,35 @@ SPOOL_Q_ADDPRINTER;
 
 typedef struct spool_r_addprinter
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ADDPRINTER;
 
+typedef struct spool_q_deleteprinter
+{
+       POLICY_HND handle;
+}
+SPOOL_Q_DELETEPRINTER;
+
+typedef struct spool_r_deleteprinter
+{
+       POLICY_HND handle;
+       WERROR status;
+}
+SPOOL_R_DELETEPRINTER;
+
+typedef struct spool_q_abortprinter
+{
+       POLICY_HND handle;
+}
+SPOOL_Q_ABORTPRINTER;
+
+typedef struct spool_r_abortprinter
+{
+       WERROR status;
+}
+SPOOL_R_ABORTPRINTER;
+
 
 typedef struct spool_q_addprinterex
 {
@@ -1373,7 +1529,7 @@ SPOOL_Q_ADDPRINTEREX;
 typedef struct spool_r_addprinterex
 {
        POLICY_HND handle;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ADDPRINTEREX;
 
@@ -1389,7 +1545,7 @@ SPOOL_Q_ADDPRINTERDRIVER;
 
 typedef struct spool_r_addprinterdriver
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ADDPRINTERDRIVER;
 
@@ -1402,11 +1558,7 @@ DRIVER_DIRECTORY_1;
 
 typedef struct driver_info_ctr_info
 {
-       union
-       {
-               DRIVER_DIRECTORY_1 info_1;
-       }
-       driver;
+       DRIVER_DIRECTORY_1 *info1;
 }
 DRIVER_DIRECTORY_CTR;
 
@@ -1426,10 +1578,27 @@ typedef struct spool_r_getprinterdriverdirectory
 {
        NEW_BUFFER *buffer;
        uint32 needed;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_GETPRINTERDRIVERDIR;
 
+typedef struct spool_q_addprintprocessor
+{
+       uint32 server_ptr;
+       UNISTR2 server;
+       UNISTR2 environment;
+       UNISTR2 path;
+       UNISTR2 name;
+}
+SPOOL_Q_ADDPRINTPROCESSOR;
+
+typedef struct spool_r_addprintprocessor
+{
+       WERROR status;
+}
+SPOOL_R_ADDPRINTPROCESSOR;
+
+
 typedef struct spool_q_enumprintprocessors
 {
        uint32 name_ptr;
@@ -1453,7 +1622,7 @@ typedef struct spool_r_enumprintprocessors
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 returned;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTPROCESSORS;
 
@@ -1480,7 +1649,7 @@ typedef struct spool_r_enumprintprocdatatypes
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 returned;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTPROCDATATYPES;
 
@@ -1513,7 +1682,7 @@ typedef struct spool_r_enumprintmonitors
        NEW_BUFFER *buffer;
        uint32 needed;
        uint32 returned;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTMONITORS;
 
@@ -1536,7 +1705,7 @@ typedef struct spool_r_enumprinterdata
        uint32 datasize;
        uint8 *data;
        uint32 realdatasize;
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ENUMPRINTERDATA;
 
@@ -1554,7 +1723,7 @@ SPOOL_Q_SETPRINTERDATA;
 
 typedef struct spool_r_setprinterdata
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_SETPRINTERDATA;
 
@@ -1583,7 +1752,7 @@ SPOOL_Q_ADDFORM;
 
 typedef struct spool_r_addform
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_ADDFORM;
 
@@ -1599,10 +1768,23 @@ SPOOL_Q_SETFORM;
 
 typedef struct spool_r_setform
 {
-       uint32 status;
+       WERROR status;
 }
 SPOOL_R_SETFORM;
 
+typedef struct spool_q_deleteform
+{
+       POLICY_HND handle;
+       UNISTR2 name;
+}
+SPOOL_Q_DELETEFORM;
+
+typedef struct spool_r_deleteform
+{
+       WERROR status;
+}
+SPOOL_R_DELETEFORM;
+
 typedef struct spool_q_getjob
 {
        POLICY_HND handle;
@@ -1630,13 +1812,98 @@ typedef struct spool_r_getjob
 {
        NEW_BUFFER *buffer;
        uint32 needed;
-       uint32 status;
-
+       WERROR status;
 }
 SPOOL_R_GETJOB;
 
+typedef struct spool_q_replyopenprinter
+{
+       UNISTR2 string;
+       uint32 printer;
+       uint32 type;
+       uint32 unknown0;
+       uint32 unknown1;
+}
+SPOOL_Q_REPLYOPENPRINTER;
+
+typedef struct spool_r_replyopenprinter
+{
+       POLICY_HND handle;
+       WERROR status;
+}
+SPOOL_R_REPLYOPENPRINTER;
+
+typedef struct spool_q_replycloseprinter
+{
+       POLICY_HND handle;
+}
+SPOOL_Q_REPLYCLOSEPRINTER;
+
+typedef struct spool_r_replycloseprinter
+{
+       POLICY_HND handle;
+       WERROR status;
+}
+SPOOL_R_REPLYCLOSEPRINTER;
+
+typedef struct spool_q_rrpcn
+{
+       POLICY_HND handle;
+       uint32 change_low;
+       uint32 change_high;
+       uint32 unknown0;
+       uint32 unknown1;
+       uint32 info_ptr;
+       SPOOL_NOTIFY_INFO info; 
+}
+SPOOL_Q_REPLY_RRPCN;
+
+typedef struct spool_r_rrpcn
+{
+       uint32 unknown0;
+       WERROR status;
+}
+SPOOL_R_REPLY_RRPCN;
+
+typedef struct spool_q_getprinterdataex
+{
+       POLICY_HND handle;
+       UNISTR2 keyname;
+        UNISTR2 valuename;
+       uint32 size;
+}
+SPOOL_Q_GETPRINTERDATAEX;
+
+typedef struct spool_r_getprinterdataex
+{
+       uint32 type;
+       uint32 size;
+       uint8 *data;
+       uint32 needed;
+       WERROR status;
+}
+SPOOL_R_GETPRINTERDATAEX;
+
+typedef struct spool_q_setprinterdataex
+{
+       POLICY_HND handle;
+       UNISTR2 key;
+       UNISTR2 value;
+       uint32 type;
+       uint32 max_len;
+       uint8 *data;
+       uint32 real_len;
+       uint32 numeric_data;
+}
+SPOOL_Q_SETPRINTERDATAEX;
+
+typedef struct spool_r_setprinterdataex
+{
+       WERROR status;
+}
+SPOOL_R_SETPRINTERDATAEX;
+
 #define PRINTER_DRIVER_VERSION 2
 #define PRINTER_DRIVER_ARCHITECTURE "Windows NT x86"
 
-
 #endif /* _RPC_SPOOLSS_H */