Changes from APPLIANCE_HEAD:
[ira/wip.git] / source3 / include / rpc_spoolss.h
index bf854492affa237ea75c3be0067fbe93472aa66b..33541c12fe06e4585dae920f7fd8d890e5b4dbb0 100755 (executable)
 #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
 #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_RESETPRINTEREX                         0x40
 #define SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFICATION 0x42
+#define SPOOLSS_GETPRINTERDATAEX                       0x4e
 */
 
 /* those are implemented */
@@ -83,6 +79,7 @@
 #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 +87,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 PRINTER_CONTROL_UNPAUSE                0x00000000
 #define PRINTER_CONTROL_PAUSE          0x00000001
 
 #define PRINTER_STATUS_POWER_SAVE      0x01000000
 
-/* Printer permissions ACE settings */
-
-#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)
-
 #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
+/* 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 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 POLICY_HND_SIZE 20
 
                                 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)
 /* 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;
@@ -514,6 +515,19 @@ typedef struct spool_r_getprinterdata
 }
 SPOOL_R_GETPRINTERDATA;
 
+typedef struct spool_q_deleteprinterdata
+{
+       POLICY_HND handle;
+       UNISTR2 valuename;
+}
+SPOOL_Q_DELETEPRINTERDATA;
+
+typedef struct spool_r_deleteprinterdata
+{
+       uint32 status;
+}
+SPOOL_R_DELETEPRINTERDATA;
+
 typedef struct spool_q_closeprinter
 {
        POLICY_HND handle;
@@ -889,11 +903,36 @@ typedef struct driver_info_3
 }
 DRIVER_INFO_3;
 
+typedef struct driver_info_6
+{
+       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;
 }
 PRINTER_DRIVER_CTR;
 
@@ -940,6 +979,8 @@ SPOOL_Q_ADDJOB;
 
 typedef struct spool_r_addjob
 {
+       NEW_BUFFER *buffer;
+       uint32 needed;
        uint32 status;
 }
 SPOOL_R_ADDJOB;
@@ -1188,6 +1229,23 @@ typedef struct spool_r_enumforms
 }
 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;
+       uint32 status;
+}
+SPOOL_R_GETFORM;
 
 typedef struct spool_printer_info_level_1
 {
@@ -1404,6 +1462,18 @@ typedef struct spool_r_deleteprinter
 }
 SPOOL_R_DELETEPRINTER;
 
+typedef struct spool_q_abortprinter
+{
+       POLICY_HND handle;
+}
+SPOOL_Q_ABORTPRINTER;
+
+typedef struct spool_r_abortprinter
+{
+       uint32 status;
+}
+SPOOL_R_ABORTPRINTER;
+
 
 typedef struct spool_q_addprinterex
 {
@@ -1653,6 +1723,19 @@ typedef struct spool_r_setform
 }
 SPOOL_R_SETFORM;
 
+typedef struct spool_q_deleteform
+{
+       POLICY_HND handle;
+       UNISTR2 name;
+}
+SPOOL_Q_DELETEFORM;
+
+typedef struct spool_r_deleteform
+{
+       uint32 status;
+}
+SPOOL_R_DELETEFORM;
+
 typedef struct spool_q_getjob
 {
        POLICY_HND handle;
@@ -1689,7 +1772,8 @@ typedef struct spool_q_replyopenprinter
        UNISTR2 string;
        uint32 printer;
        uint32 type;
-       NEW_BUFFER *buffer;
+       uint32 unknown0;
+       uint32 unknown1;
 }
 SPOOL_Q_REPLYOPENPRINTER;
 
@@ -1713,8 +1797,26 @@ typedef struct spool_r_replycloseprinter
 }
 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;
+       uint32 status;
+}
+SPOOL_R_REPLY_RRPCN;
+
 #define PRINTER_DRIVER_VERSION 2
 #define PRINTER_DRIVER_ARCHITECTURE "Windows NT x86"
 
-
 #endif /* _RPC_SPOOLSS_H */