s3-spoolss: remove old spoolss_EnumPrinterKey.
[ira/wip.git] / source3 / include / rpc_spoolss.h
index 091acc1285b01298afbd4f128f0937c73e62d279..0ad684d7afb6fde7e6223ccdda101c5b22313189 100644 (file)
 #define SPL_XCV_MONITOR_LOCALMON  ",XcvMonitor Local Port"
 #define SPL_XCV_MONITOR_TCPMON    ",XcvMonitor Standard TCP/IP Port"
 
-
-#define PRINTER_CONTROL_UNPAUSE                0x00000000
-#define PRINTER_CONTROL_PAUSE          0x00000001
-#define PRINTER_CONTROL_RESUME         0x00000002
-#define PRINTER_CONTROL_PURGE          0x00000003
-#define PRINTER_CONTROL_SET_STATUS     0x00000004
-
-#define PRINTER_STATUS_OK               0x00000000
-#define JOB_ACCESS_READ                        0x00000020
-
-/* JOB status codes. */
-
-#define JOB_STATUS_QUEUED               0x0000
-#define JOB_STATUS_PAUSED              0x0001
-#define JOB_STATUS_ERROR               0x0002
-#define JOB_STATUS_DELETING            0x0004
-#define JOB_STATUS_SPOOLING            0x0008
-#define JOB_STATUS_PRINTING            0x0010
-#define JOB_STATUS_OFFLINE             0x0020
-#define JOB_STATUS_PAPEROUT            0x0040
-#define JOB_STATUS_PRINTED             0x0080
-#define JOB_STATUS_DELETED             0x0100
-#define JOB_STATUS_BLOCKED             0x0200
-#define JOB_STATUS_USER_INTERVENTION   0x0400
-
 /* Notify field types */
 
-#define NOTIFY_ONE_VALUE 1             /* Notify data is stored in value1 */
-#define NOTIFY_TWO_VALUE 2             /* Notify data is stored in value2 */
-#define NOTIFY_POINTER   3             /* Data is a pointer to a buffer */
-#define NOTIFY_STRING    4             /* Data is a pointer to a buffer w/length */
-#define NOTIFY_SECDESC   5             /* Data is a security descriptor */
-
 #define PRINTER_NOTIFY_TYPE 0x00
 #define JOB_NOTIFY_TYPE     0x01
-#define PRINT_TABLE_END     0xFF
-
-#define MAX_PRINTER_NOTIFY 26
-#define MAX_JOB_NOTIFY 24
-
-#define MAX_NOTIFY_TYPE_FOR_NOW 26
 
 #define PRINTER_NOTIFY_SERVER_NAME             0x00
 #define PRINTER_NOTIFY_PRINTER_NAME            0x01
 #define JOB_NOTIFY_TOTAL_BYTES                 0x16
 #define JOB_NOTIFY_BYTES_PRINTED               0x17
 
-#define PRINTER_NOTIFY_OPTIONS_REFRESH         0x01
-
-#define PRINTER_CHANGE_ADD_PRINTER                     0x00000001
-#define PRINTER_CHANGE_SET_PRINTER                     0x00000002
-#define PRINTER_CHANGE_DELETE_PRINTER                  0x00000004
-#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER       0x00000008
-#define PRINTER_CHANGE_PRINTER (PRINTER_CHANGE_ADD_PRINTER | \
-                                PRINTER_CHANGE_SET_PRINTER | \
-                                PRINTER_CHANGE_DELETE_PRINTER | \
-                                PRINTER_CHANGE_FAILED_CONNECTION_PRINTER )
-
-#define PRINTER_CHANGE_ADD_JOB                         0x00000100
-#define PRINTER_CHANGE_SET_JOB                         0x00000200
-#define PRINTER_CHANGE_DELETE_JOB                      0x00000400
-#define PRINTER_CHANGE_WRITE_JOB                       0x00000800
-#define PRINTER_CHANGE_JOB     (PRINTER_CHANGE_ADD_JOB | \
-                                PRINTER_CHANGE_SET_JOB | \
-                                PRINTER_CHANGE_DELETE_JOB | \
-                                PRINTER_CHANGE_WRITE_JOB )
-
-#define PRINTER_CHANGE_ADD_FORM                                0x00010000
-#define PRINTER_CHANGE_SET_FORM                                0x00020000
-#define PRINTER_CHANGE_DELETE_FORM                     0x00040000
-#define PRINTER_CHANGE_FORM    (PRINTER_CHANGE_ADD_FORM | \
-                                PRINTER_CHANGE_SET_FORM | \
-                                PRINTER_CHANGE_DELETE_FORM )
-
-#define PRINTER_CHANGE_ADD_PORT                                0x00100000
-#define PRINTER_CHANGE_CONFIGURE_PORT                  0x00200000
-#define PRINTER_CHANGE_DELETE_PORT                     0x00400000
-#define PRINTER_CHANGE_PORT    (PRINTER_CHANGE_ADD_PORT | \
-                                PRINTER_CHANGE_CONFIGURE_PORT | \
-                                PRINTER_CHANGE_DELETE_PORT )
-
-#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR             0x01000000
-#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR          0x04000000
-#define PRINTER_CHANGE_PRINT_PROCESSOR (PRINTER_CHANGE_ADD_PRINT_PROCESSOR | \
-                                        PRINTER_CHANGE_DELETE_PRINT_PROCESSOR )
-
-#define PRINTER_CHANGE_ADD_PRINTER_DRIVER              0x10000000
-#define PRINTER_CHANGE_SET_PRINTER_DRIVER              0x20000000
-#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER           0x40000000
-#define PRINTER_CHANGE_PRINTER_DRIVER  (PRINTER_CHANGE_ADD_PRINTER_DRIVER | \
-                                        PRINTER_CHANGE_SET_PRINTER_DRIVER | \
-                                        PRINTER_CHANGE_DELETE_PRINTER_DRIVER )
-
-#define PRINTER_CHANGE_TIMEOUT                         0x80000000
-#define PRINTER_CHANGE_ALL     (PRINTER_CHANGE_JOB | \
-                                PRINTER_CHANGE_FORM | \
-                                PRINTER_CHANGE_PORT | \
-                                PRINTER_CHANGE_PRINT_PROCESSOR | \
-                                PRINTER_CHANGE_PRINTER_DRIVER )
-
-#define PRINTER_NOTIFY_INFO_DISCARDED  0x1
-
 /*
  * Set of macros for flagging what changed in the PRINTER_INFO_2 struct
  * when sending messages to other smbd's
@@ -317,78 +225,10 @@ PRINTER_MESSAGE_INFO;
 #define DEF_PRIORITY    1
 
 /* the flags of each printers */
-#define PRINTER_ENUM_UNKNOWN_8         0x00000008
-#define PRINTER_ENUM_ICONMASK          0x00ff0000
-
-/* FLAGS for SPOOLSS_DELETEPRINTERDRIVEREX */
-
-#define DPD_DELETE_UNUSED_FILES                0x00000001
-#define DPD_DELETE_SPECIFIC_VERSION    0x00000002
-#define DPD_DELETE_ALL_FILES           0x00000004
 
 #define DRIVER_ANY_VERSION             0xffffffff
 #define DRIVER_MAX_VERSION             4
 
-/* FLAGS for SPOOLSS_ADDPRINTERDRIVEREX */
-
-#define APD_STRICT_UPGRADE             0x00000001
-#define APD_STRICT_DOWNGRADE           0x00000002
-#define APD_COPY_ALL_FILES             0x00000004
-#define APD_COPY_NEW_FILES             0x00000008
-
-
-/* this struct is undocumented */
-/* thanks to the ddk ... */
-typedef struct {
-       uint32 size;            /* length of user_name & client_name + 2? */
-       UNISTR2 *client_name;
-       UNISTR2 *user_name;
-       uint32 build;
-       uint32 major;
-       uint32 minor;
-       uint32 processor;
-} SPOOL_USER_1;
-
-typedef struct {
-       uint32 level;
-       union {
-               SPOOL_USER_1 *user1;
-       } user;
-} SPOOL_USER_CTR;
-
-/*
- * various bits in the DEVICEMODE.fields member
- */
-
-#define DEVMODE_ORIENTATION            0x00000001
-#define DEVMODE_PAPERSIZE              0x00000002
-#define DEVMODE_PAPERLENGTH            0x00000004
-#define DEVMODE_PAPERWIDTH             0x00000008
-#define DEVMODE_SCALE                  0x00000010
-#define DEVMODE_POSITION               0x00000020
-#define DEVMODE_NUP                    0x00000040
-#define DEVMODE_COPIES                 0x00000100
-#define DEVMODE_DEFAULTSOURCE          0x00000200
-#define DEVMODE_PRINTQUALITY           0x00000400
-#define DEVMODE_COLOR                  0x00000800
-#define DEVMODE_DUPLEX                 0x00001000
-#define DEVMODE_YRESOLUTION            0x00002000
-#define DEVMODE_TTOPTION               0x00004000
-#define DEVMODE_COLLATE                        0x00008000
-#define DEVMODE_FORMNAME               0x00010000
-#define DEVMODE_LOGPIXELS              0x00020000
-#define DEVMODE_BITSPERPEL             0x00040000
-#define DEVMODE_PELSWIDTH              0x00080000
-#define DEVMODE_PELSHEIGHT             0x00100000
-#define DEVMODE_DISPLAYFLAGS           0x00200000
-#define DEVMODE_DISPLAYFREQUENCY       0x00400000
-#define DEVMODE_ICMMETHOD              0x00800000
-#define DEVMODE_ICMINTENT              0x01000000
-#define DEVMODE_MEDIATYPE              0x02000000
-#define DEVMODE_DITHERTYPE             0x04000000
-#define DEVMODE_PANNINGWIDTH           0x08000000
-#define DEVMODE_PANNINGHEIGHT          0x10000000
-
 
 /* 
  * Devicemode structure
@@ -434,344 +274,14 @@ typedef struct devicemode
 }
 DEVICEMODE;
 
-typedef struct _devmode_cont
-{
-       uint32 size;
-       uint32 devmode_ptr;
-       DEVICEMODE *devmode;
-}
-DEVMODE_CTR;
-
-typedef struct _printer_default
-{
-       uint32 datatype_ptr;
-       UNISTR2 datatype;
-       DEVMODE_CTR devmode_cont;
-       uint32 access_required;
-}
-PRINTER_DEFAULT;
-
-/********************************************/
-
-typedef struct {
-       UNISTR2 *printername;
-       PRINTER_DEFAULT printer_default;
-} SPOOL_Q_OPEN_PRINTER;
-
-typedef struct {
-       POLICY_HND handle;      /* handle used along all transactions (20*uint8) */
-       WERROR status;
-} SPOOL_R_OPEN_PRINTER;
-
-/********************************************/
-
-typedef struct {
-       UNISTR2 *printername;
-       PRINTER_DEFAULT printer_default;
-       uint32 user_switch;
-       SPOOL_USER_CTR user_ctr;
-} SPOOL_Q_OPEN_PRINTER_EX;
-
-typedef struct {
-       POLICY_HND handle;      /* handle used along all transactions (20*uint8) */
-       WERROR status;
-} SPOOL_R_OPEN_PRINTER_EX;
-
-/********************************************/
-
-typedef struct spool_notify_option_type
-{
-       uint16 type;
-       uint16 reserved0;
-       uint32 reserved1;
-       uint32 reserved2;
-       uint32 count;
-       uint32 fields_ptr;
-       uint32 count2;
-       uint16 fields[MAX_NOTIFY_TYPE_FOR_NOW];
-}
-SPOOL_NOTIFY_OPTION_TYPE;
-
-typedef struct spool_notify_option_type_ctr
-{
-       uint32 count;
-       SPOOL_NOTIFY_OPTION_TYPE *type;
-}
-SPOOL_NOTIFY_OPTION_TYPE_CTR;
-
-
-
-typedef struct s_header_type
-{
-       uint32 type;
-       union
-       {
-               uint32 value;
-               UNISTR string;
-       }
-       data;
-}
-HEADER_TYPE;
-
-
-typedef struct spool_q_getprinterdata
-{
-       POLICY_HND handle;
-       UNISTR2 valuename;
-       uint32 size;
-}
-SPOOL_Q_GETPRINTERDATA;
-
-typedef struct spool_r_getprinterdata
-{
-       uint32 type;
-       uint32 size;
-       uint8 *data;
-       uint32 needed;
-       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_startpageprinter
-{
-       POLICY_HND handle;
-}
-SPOOL_Q_STARTPAGEPRINTER;
-
-typedef struct spool_r_startpageprinter
-{
-       WERROR status;
-}
-SPOOL_R_STARTPAGEPRINTER;
-
-typedef struct spool_q_endpageprinter
-{
-       POLICY_HND handle;
-}
-SPOOL_Q_ENDPAGEPRINTER;
-
-typedef struct spool_r_endpageprinter
-{
-       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_q_deleteprinterdriverex
-{
-       uint32 server_ptr;
-       UNISTR2 server;
-       UNISTR2 arch;
-       UNISTR2 driver;
-       uint32 delete_flags;
-       uint32 version;
-}
-SPOOL_Q_DELETEPRINTERDRIVEREX;
-
-typedef struct spool_r_deleteprinterdriverex
-{
-       WERROR status;
-}
-SPOOL_R_DELETEPRINTERDRIVEREX;
-
-
-typedef struct spool_doc_info_1
-{
-       uint32 p_docname;
-       uint32 p_outputfile;
-       uint32 p_datatype;
-       UNISTR2 docname;
-       UNISTR2 outputfile;
-       UNISTR2 datatype;
-}
-DOC_INFO_1;
-
-typedef struct spool_doc_info
-{
-       uint32 switch_value;
-       DOC_INFO_1 doc_info_1;
-}
-DOC_INFO;
-
-typedef struct spool_doc_info_container
-{
-       uint32 level;
-       DOC_INFO docinfo;
-}
-DOC_INFO_CONTAINER;
-
-typedef struct spool_q_startdocprinter
-{
-       POLICY_HND handle;
-       DOC_INFO_CONTAINER doc_info_container;
-}
-SPOOL_Q_STARTDOCPRINTER;
-
-typedef struct spool_r_startdocprinter
-{
-       uint32 jobid;
-       WERROR status;
-}
-SPOOL_R_STARTDOCPRINTER;
-
-typedef struct spool_q_enddocprinter
-{
-       POLICY_HND handle;
-}
-SPOOL_Q_ENDDOCPRINTER;
-
-typedef struct spool_r_enddocprinter
-{
-       WERROR status;
-}
-SPOOL_R_ENDDOCPRINTER;
-
-typedef struct spool_q_writeprinter
-{
-       POLICY_HND handle;
-       uint32 buffer_size;
-       uint8 *buffer;
-       uint32 buffer_size2;
-}
-SPOOL_Q_WRITEPRINTER;
-
-typedef struct spool_r_writeprinter
-{
-       uint32 buffer_written;
-       WERROR status;
-}
-SPOOL_R_WRITEPRINTER;
-
-typedef struct spool_notify_option
-{
-       uint32 version;
-       uint32 flags;
-       uint32 count;
-       uint32 option_type_ptr;
-       SPOOL_NOTIFY_OPTION_TYPE_CTR ctr;
-}
-SPOOL_NOTIFY_OPTION;
-
-typedef struct spool_notify_info_data
-{
-       uint16 type;
-       uint16 field;
-       uint32 reserved;
-       uint32 id;
-       union {
-               uint32 value[2];
-               struct {
-                       uint32 length;
-                       uint16 *string;
-               } data;
-               struct {
-                       uint32  size;
-                       SEC_DESC *desc;
-               } sd;
-       }
-       notify_data;
-       uint32 size;
-       uint32 enc_type;
-} SPOOL_NOTIFY_INFO_DATA;
-
-typedef struct spool_notify_info
-{
-       uint32 version;
-       uint32 flags;
-       uint32 count;
-       SPOOL_NOTIFY_INFO_DATA *data;
-}
-SPOOL_NOTIFY_INFO;
-
-/* If the struct name looks obscure, yes it is ! */
-/* RemoteFindFirstPrinterChangeNotificationEx query struct */
-typedef struct spoolss_q_rffpcnex
-{
-       POLICY_HND handle;
-       uint32 flags;
-       uint32 options;
-       uint32 localmachine_ptr;
-       UNISTR2 localmachine;
-       uint32 printerlocal;
-       uint32 option_ptr;
-       SPOOL_NOTIFY_OPTION *option;
-}
-SPOOL_Q_RFFPCNEX;
-
-typedef struct spool_r_rffpcnex
-{
-       WERROR status;
-}
-SPOOL_R_RFFPCNEX;
-
-/* Remote Find Next Printer Change Notify Ex */
-typedef struct spool_q_rfnpcnex
-{
-       POLICY_HND handle;
-       uint32 change;
-       uint32 option_ptr;
-       SPOOL_NOTIFY_OPTION *option;
-}
-SPOOL_Q_RFNPCNEX;
-
-typedef struct spool_r_rfnpcnex
-{
-       uint32 info_ptr;
-       SPOOL_NOTIFY_INFO info;
-       WERROR status;
-}
-SPOOL_R_RFNPCNEX;
-
-/* Find Close Printer Notify */
-typedef struct spool_q_fcpn
-{
-       POLICY_HND handle;
-}
-SPOOL_Q_FCPN;
-
-typedef struct spool_r_fcpn
-{
-       WERROR status;
-}
-SPOOL_R_FCPN;
-
-
-typedef struct printer_info_0
+/*
+ * I'm really wondering how many different time formats
+ * I will have to cope with
+ *
+ * JFM, 09/13/98 In a mad mood ;-(
+*/
+typedef struct systemtime
 {
-       UNISTR printername;
-       UNISTR servername;
-       uint32 cjobs;
-       uint32 total_jobs;
-       uint32 total_bytes;
-       
        uint16 year;
        uint16 month;
        uint16 dayofweek;
@@ -780,1323 +290,46 @@ typedef struct printer_info_0
        uint16 minute;
        uint16 second;
        uint16 milliseconds;
-
-       uint32 global_counter;
-       uint32 total_pages;
-
-       uint16 major_version;
-       uint16 build_version;
-
-       uint32 unknown7;
-       uint32 unknown8;
-       uint32 unknown9;
-       uint32 session_counter;
-       uint32 unknown11;
-       uint32 printer_errors;
-       uint32 unknown13;
-       uint32 unknown14;
-       uint32 unknown15;
-       uint32 unknown16;
-       uint32 change_id;
-       uint32 unknown18;
-       uint32 status;
-       uint32 unknown20;
-       uint32 c_setprinter;
-
-       uint16 unknown22;
-       uint16 unknown23;
-       uint16 unknown24;
-       uint16 unknown25;
-       uint16 unknown26;
-       uint16 unknown27;
-       uint16 unknown28;
-       uint16 unknown29;
-} PRINTER_INFO_0;
-
-typedef struct printer_info_1
-{
-       uint32 flags;
-       UNISTR description;
-       UNISTR name;
-       UNISTR comment;
-}
-PRINTER_INFO_1;
-
-typedef struct printer_info_2
-{
-       UNISTR servername;
-       UNISTR printername;
-       UNISTR sharename;
-       UNISTR portname;
-       UNISTR drivername;
-       UNISTR comment;
-       UNISTR location;
-       DEVICEMODE *devmode;
-       UNISTR sepfile;
-       UNISTR printprocessor;
-       UNISTR datatype;
-       UNISTR parameters;
-       SEC_DESC *secdesc;
-       uint32 attributes;
-       uint32 priority;
-       uint32 defaultpriority;
-       uint32 starttime;
-       uint32 untiltime;
-       uint32 status;
-       uint32 cjobs;
-       uint32 averageppm;
-}
-PRINTER_INFO_2;
-
-typedef struct printer_info_3
-{
-       SEC_DESC *secdesc;
-}
-PRINTER_INFO_3;
-
-typedef struct printer_info_4
-{
-       UNISTR printername;
-       UNISTR servername;
-       uint32 attributes;
-}
-PRINTER_INFO_4;
-
-typedef struct printer_info_5
-{
-       UNISTR printername;
-       UNISTR portname;
-       uint32 attributes;
-       uint32 device_not_selected_timeout;
-       uint32 transmission_retry_timeout;
-}
-PRINTER_INFO_5;
-
-typedef struct printer_info_6
-{
-       uint32 status;
-}
-PRINTER_INFO_6;
-
-#define SPOOL_DS_PUBLISH       1
-#define SPOOL_DS_UPDATE                2
-#define SPOOL_DS_UNPUBLISH     4
-#define SPOOL_DS_PENDING        0x80000000
-
-typedef struct printer_info_7
-{
-       UNISTR guid; /* text form of printer guid */
-       uint32 action;
 }
-PRINTER_INFO_7;
+SYSTEMTIME;
 
-typedef struct spool_q_enumprinters
-{
-       uint32 flags;
-       uint32 servername_ptr;
-       UNISTR2 servername;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPRINTERS;
+/********************************************/
 
-typedef struct printer_info_ctr_info
+typedef struct printer_enum_values
 {
-       PRINTER_INFO_0 *printers_0;
-       PRINTER_INFO_1 *printers_1;
-       PRINTER_INFO_2 *printers_2;
-       PRINTER_INFO_3 *printers_3;
-       PRINTER_INFO_4 *printers_4;
-       PRINTER_INFO_5 *printers_5;
-       PRINTER_INFO_7 *printers_7;
+       UNISTR valuename;
+       uint32 value_len;
+       uint32 type;
+       uint8  *data;
+       uint32 data_len; 
+       
 }
-PRINTER_INFO_CTR;
+PRINTER_ENUM_VALUES;
 
-typedef struct spool_r_enumprinters
+typedef struct printer_enum_values_ctr
 {
-       RPC_BUFFER *buffer;
-       uint32 needed;          /* bytes needed */
-       uint32 returned;        /* number of printers */
-       WERROR status;
+       uint32 size;
+       uint32 size_of_array;
+       PRINTER_ENUM_VALUES *values;
 }
-SPOOL_R_ENUMPRINTERS;
-
+PRINTER_ENUM_VALUES_CTR;
 
-typedef struct spool_q_getprinter
+typedef struct spool_q_enumprinterdataex
 {
        POLICY_HND handle;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
+       UNISTR2 key;
+       uint32 size;
 }
-SPOOL_Q_GETPRINTER;
-
-typedef struct printer_info_info
-{
-       union
-       {
-               PRINTER_INFO_0 *info0;
-               PRINTER_INFO_1 *info1;
-               PRINTER_INFO_2 *info2;
-               void *info;
-       } printer;
-} PRINTER_INFO;
+SPOOL_Q_ENUMPRINTERDATAEX;
 
-typedef struct spool_r_getprinter
+typedef struct spool_r_enumprinterdataex
 {
-       RPC_BUFFER *buffer;
+       PRINTER_ENUM_VALUES_CTR ctr;
        uint32 needed;
-       WERROR status;
-} SPOOL_R_GETPRINTER;
-
-typedef struct driver_info_1
-{
-       UNISTR name;
-} DRIVER_INFO_1;
-
-typedef struct driver_info_2
-{
-       uint32 version;
-       UNISTR name;
-       UNISTR architecture;
-       UNISTR driverpath;
-       UNISTR datafile;
-       UNISTR configfile;
-} DRIVER_INFO_2;
-
-typedef struct driver_info_3
-{
-       uint32 version;
-       UNISTR name;
-       UNISTR architecture;
-       UNISTR driverpath;
-       UNISTR datafile;
-       UNISTR configfile;
-       UNISTR helpfile;
-       uint16 *dependentfiles;
-       UNISTR monitorname;
-       UNISTR defaultdatatype;
-}
-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;
-
-typedef struct spool_q_getprinterdriver2
-{
-       POLICY_HND handle;
-       uint32 architecture_ptr;
-       UNISTR2 architecture;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-       uint32 clientmajorversion;
-       uint32 clientminorversion;
-}
-SPOOL_Q_GETPRINTERDRIVER2;
-
-typedef struct spool_r_getprinterdriver2
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 servermajorversion;
-       uint32 serverminorversion;
-       WERROR status;
-}
-SPOOL_R_GETPRINTERDRIVER2;
-
-
-typedef struct add_jobinfo_1
-{
-       UNISTR path;
-       uint32 job_number;
-}
-ADD_JOBINFO_1;
-
-
-typedef struct spool_q_addjob
-{
-       POLICY_HND handle;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ADDJOB;
-
-typedef struct spool_r_addjob
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       WERROR status;
-}
-SPOOL_R_ADDJOB;
-
-/*
- * I'm really wondering how many different time formats
- * I will have to cope with
- *
- * JFM, 09/13/98 In a mad mood ;-(
-*/
-typedef struct systemtime
-{
-       uint16 year;
-       uint16 month;
-       uint16 dayofweek;
-       uint16 day;
-       uint16 hour;
-       uint16 minute;
-       uint16 second;
-       uint16 milliseconds;
-}
-SYSTEMTIME;
-
-typedef struct s_job_info_1
-{
-       uint32 jobid;
-       UNISTR printername;
-       UNISTR machinename;
-       UNISTR username;
-       UNISTR document;
-       UNISTR datatype;
-       UNISTR text_status;
-       uint32 status;
-       uint32 priority;
-       uint32 position;
-       uint32 totalpages;
-       uint32 pagesprinted;
-       SYSTEMTIME submitted;
-}
-JOB_INFO_1;
-
-typedef struct s_job_info_2
-{
-       uint32 jobid;
-       UNISTR printername;
-       UNISTR machinename;
-       UNISTR username;
-       UNISTR document;
-       UNISTR notifyname;
-       UNISTR datatype;
-       UNISTR printprocessor;
-       UNISTR parameters;
-       UNISTR drivername;
-       DEVICEMODE *devmode;
-       UNISTR text_status;
-/*     SEC_DESC sec_desc;*/
-       uint32 status;
-       uint32 priority;
-       uint32 position;
-       uint32 starttime;
-       uint32 untiltime;
-       uint32 totalpages;
-       uint32 size;
-       SYSTEMTIME submitted;
-       uint32 timeelapsed;
-       uint32 pagesprinted;
-}
-JOB_INFO_2;
-
-typedef struct spool_q_enumjobs
-{
-       POLICY_HND handle;
-       uint32 firstjob;
-       uint32 numofjobs;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMJOBS;
-
-typedef struct job_info_ctr_info
-{
-       union
-       {
-               JOB_INFO_1 *job_info_1;
-               JOB_INFO_2 *job_info_2;
-               void *info;
-       } job;
-
-} JOB_INFO_CTR;
-
-typedef struct spool_r_enumjobs
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 returned;
-       WERROR status;
-}
-SPOOL_R_ENUMJOBS;
-
-typedef struct spool_q_schedulejob
-{
-       POLICY_HND handle;
-       uint32 jobid;
-}
-SPOOL_Q_SCHEDULEJOB;
-
-typedef struct spool_r_schedulejob
-{
-       WERROR status;
-}
-SPOOL_R_SCHEDULEJOB;
-
-typedef struct s_port_info_1
-{
-       UNISTR port_name;
-}
-PORT_INFO_1;
-
-typedef struct s_port_info_2
-{
-       UNISTR port_name;
-       UNISTR monitor_name;
-       UNISTR description;
-       uint32 port_type;
-       uint32 reserved;
-}
-PORT_INFO_2;
-
-/* Port Type bits */
-#define PORT_TYPE_WRITE         0x0001
-#define PORT_TYPE_READ          0x0002
-#define PORT_TYPE_REDIRECTED    0x0004
-#define PORT_TYPE_NET_ATTACHED  0x0008
-
-typedef struct spool_q_enumports
-{
-       uint32 name_ptr;
-       UNISTR2 name;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPORTS;
-
-typedef struct port_info_ctr_info
-{
-       union
-       {
-               PORT_INFO_1 *info_1;
-               PORT_INFO_2 *info_2;
-       }
-       port;
-
-}
-PORT_INFO_CTR;
-
-typedef struct spool_r_enumports
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;          /* bytes needed */
-       uint32 returned;        /* number of printers */
-       WERROR status;
-}
-SPOOL_R_ENUMPORTS;
-
-#define JOB_CONTROL_PAUSE              1
-#define JOB_CONTROL_RESUME             2
-#define JOB_CONTROL_CANCEL             3
-#define JOB_CONTROL_RESTART            4
-#define JOB_CONTROL_DELETE             5
-
-typedef struct job_info_info
-{
-       union
-       {
-               JOB_INFO_1 job_info_1;
-               JOB_INFO_2 job_info_2;
-       }
-       job;
-
-}
-JOB_INFO;
-
-typedef struct spool_q_setjob
-{
-       POLICY_HND handle;
-       uint32 jobid;
-       uint32 level;
-       JOB_INFO ctr;
-       uint32 command;
-
-}
-SPOOL_Q_SETJOB;
-
-typedef struct spool_r_setjob
-{
-       WERROR status;
-
-}
-SPOOL_R_SETJOB;
-
-typedef struct spool_q_enumprinterdrivers
-{
-       uint32 name_ptr;
-       UNISTR2 name;
-       uint32 environment_ptr;
-       UNISTR2 environment;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPRINTERDRIVERS;
-
-typedef struct spool_r_enumprinterdrivers
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 returned;
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTERDRIVERS;
-
-#define FORM_USER    0
-#define FORM_BUILTIN 1
-#define FORM_PRINTER 2
-
-typedef struct spool_form_1
-{
-       uint32 flag;
-       UNISTR name;
-       uint32 width;
-       uint32 length;
-       uint32 left;
-       uint32 top;
-       uint32 right;
-       uint32 bottom;
-}
-FORM_1;
-
-typedef struct spool_q_enumforms
-{
-       POLICY_HND handle;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMFORMS;
-
-typedef struct spool_r_enumforms
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 numofforms;
-       WERROR status;
-}
-SPOOL_R_ENUMFORMS;
-
-typedef struct spool_q_getform
-{
-       POLICY_HND handle;
-       UNISTR2 formname;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_GETFORM;
-
-typedef struct spool_r_getform
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       WERROR status;
-}
-SPOOL_R_GETFORM;
-
-typedef struct spool_printer_info_level_1
-{
-       uint32 flags;
-       uint32 description_ptr;
-       uint32 name_ptr;
-       uint32 comment_ptr;
-       UNISTR2 description;
-       UNISTR2 name;
-       UNISTR2 comment;        
-} SPOOL_PRINTER_INFO_LEVEL_1;
-
-typedef struct spool_printer_info_level_2
-{
-       uint32 servername_ptr;
-       uint32 printername_ptr;
-       uint32 sharename_ptr;
-       uint32 portname_ptr;
-       uint32 drivername_ptr;
-       uint32 comment_ptr;
-       uint32 location_ptr;
-       uint32 devmode_ptr;
-       uint32 sepfile_ptr;
-       uint32 printprocessor_ptr;
-       uint32 datatype_ptr;
-       uint32 parameters_ptr;
-       uint32 secdesc_ptr;
-       uint32 attributes;
-       uint32 priority;
-       uint32 default_priority;
-       uint32 starttime;
-       uint32 untiltime;
-       uint32 status;
-       uint32 cjobs;
-       uint32 averageppm;
-       UNISTR2 servername;
-       UNISTR2 printername;
-       UNISTR2 sharename;
-       UNISTR2 portname;
-       UNISTR2 drivername;
-       UNISTR2 comment;
-       UNISTR2 location;
-       UNISTR2 sepfile;
-       UNISTR2 printprocessor;
-       UNISTR2 datatype;
-       UNISTR2 parameters;
-}
-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_7
-{
-       uint32 guid_ptr;
-       uint32 action;
-       UNISTR2 guid;
-}
-SPOOL_PRINTER_INFO_LEVEL_7;
-
-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_7 *info_7;
-}
-SPOOL_PRINTER_INFO_LEVEL;
-
-typedef struct spool_printer_driver_info_level_3
-{
-       uint32 cversion;
-       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 dependentfilessize;
-       uint32 dependentfiles_ptr;
-
-       UNISTR2 name;
-       UNISTR2 environment;
-       UNISTR2 driverpath;
-       UNISTR2 datafile;
-       UNISTR2 configfile;
-       UNISTR2 helpfile;
-       UNISTR2 monitorname;
-       UNISTR2 defaultdatatype;
-       BUFFER5 dependentfiles;
-
-}
-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  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;
-
-
-typedef struct spool_q_setprinter
-{
-       POLICY_HND handle;
-       uint32 level;
-       SPOOL_PRINTER_INFO_LEVEL info;
-       SEC_DESC_BUF *secdesc_ctr;
-       DEVMODE_CTR devmode_ctr;
-
-       uint32 command;
-
-}
-SPOOL_Q_SETPRINTER;
-
-typedef struct spool_r_setprinter
-{
-       WERROR status;
-}
-SPOOL_R_SETPRINTER;
-
-/********************************************/
-
-typedef struct {
-       POLICY_HND handle;
-} SPOOL_Q_ABORTPRINTER;
-
-typedef struct {
-       WERROR status;
-} SPOOL_R_ABORTPRINTER;
-
-
-/********************************************/
-
-typedef struct {
-       UNISTR2 *server_name;
-       uint32 level;
-       SPOOL_PRINTER_INFO_LEVEL info;
-       DEVMODE_CTR devmode_ctr;
-       SEC_DESC_BUF *secdesc_ctr;
-       uint32 user_switch;
-       SPOOL_USER_CTR user_ctr;
-} SPOOL_Q_ADDPRINTEREX;
-
-typedef struct {
-       POLICY_HND handle;
-       WERROR status;
-} SPOOL_R_ADDPRINTEREX;
-
-/********************************************/
-
-typedef struct spool_q_addprinterdriver
-{
-       uint32 server_name_ptr;
-       UNISTR2 server_name;
-       uint32 level;
-       SPOOL_PRINTER_DRIVER_INFO_LEVEL info;
-}
-SPOOL_Q_ADDPRINTERDRIVER;
-
-typedef struct spool_r_addprinterdriver
-{
-       WERROR status;
-}
-SPOOL_R_ADDPRINTERDRIVER;
-
-typedef struct spool_q_addprinterdriverex
-{
-       uint32 server_name_ptr;
-       UNISTR2 server_name;
-       uint32 level;
-       SPOOL_PRINTER_DRIVER_INFO_LEVEL info;
-       uint32 copy_flags;
-}
-SPOOL_Q_ADDPRINTERDRIVEREX;
-
-typedef struct spool_r_addprinterdriverex
-{
-       WERROR status;
-}
-SPOOL_R_ADDPRINTERDRIVEREX;
-
-
-typedef struct driver_directory_1
-{
-       UNISTR name;
-}
-DRIVER_DIRECTORY_1;
-
-typedef struct driver_info_ctr_info
-{
-       DRIVER_DIRECTORY_1 *info1;
-}
-DRIVER_DIRECTORY_CTR;
-
-typedef struct spool_q_getprinterdriverdirectory
-{
-       uint32 name_ptr;
-       UNISTR2 name;
-       uint32 environment_ptr;
-       UNISTR2 environment;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_GETPRINTERDRIVERDIR;
-
-typedef struct spool_r_getprinterdriverdirectory
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       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;
-       UNISTR2 name;
-       uint32 environment_ptr;
-       UNISTR2 environment;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPRINTPROCESSORS;
-
-typedef struct printprocessor_1
-{
-       UNISTR name;
-}
-PRINTPROCESSOR_1;
-
-typedef struct spool_r_enumprintprocessors
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 returned;
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTPROCESSORS;
-
-typedef struct spool_q_enumprintprocdatatypes
-{
-       uint32 name_ptr;
-       UNISTR2 name;
-       uint32 processor_ptr;
-       UNISTR2 processor;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPRINTPROCDATATYPES;
-
-typedef struct ppdatatype_1
-{
-       UNISTR name;
-}
-PRINTPROCDATATYPE_1;
-
-typedef struct spool_r_enumprintprocdatatypes
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 returned;
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTPROCDATATYPES;
-
-typedef struct printmonitor_1
-{
-       UNISTR name;
-}
-PRINTMONITOR_1;
-
-typedef struct printmonitor_2
-{
-       UNISTR name;
-       UNISTR environment;
-       UNISTR dll_name;
-}
-PRINTMONITOR_2;
-
-typedef struct spool_q_enumprintmonitors
-{
-       uint32 name_ptr;
-       UNISTR2 name;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_ENUMPRINTMONITORS;
-
-typedef struct spool_r_enumprintmonitors
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       uint32 returned;
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTMONITORS;
-
-
-typedef struct spool_q_enumprinterdata
-{
-       POLICY_HND handle;
-       uint32 index;
-       uint32 valuesize;
-       uint32 datasize;
-}
-SPOOL_Q_ENUMPRINTERDATA;
-
-typedef struct spool_r_enumprinterdata
-{
-       uint32 valuesize;
-       uint16 *value;
-       uint32 realvaluesize;
-       uint32 type;
-       uint32 datasize;
-       uint8 *data;
-       uint32 realdatasize;
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTERDATA;
-
-typedef struct spool_q_setprinterdata
-{
-       POLICY_HND handle;
-       UNISTR2 value;
-       uint32 type;
-       uint32 max_len;
-       uint8 *data;
-       uint32 real_len;
-       uint32 numeric_data;
-}
-SPOOL_Q_SETPRINTERDATA;
-
-typedef struct spool_r_setprinterdata
-{
-       WERROR status;
-}
-SPOOL_R_SETPRINTERDATA;
-
-typedef struct spool_q_resetprinter
-{
-       POLICY_HND handle;
-       uint32 datatype_ptr;
-       UNISTR2 datatype;
-       DEVMODE_CTR devmode_ctr;
-
-} SPOOL_Q_RESETPRINTER;
-
-typedef struct spool_r_resetprinter
-{
-       WERROR status;
-} 
-SPOOL_R_RESETPRINTER;
-
-
-
-typedef struct _form
-{
-       uint32 flags;
-       uint32 name_ptr;
-       uint32 size_x;
-       uint32 size_y;
-       uint32 left;
-       uint32 top;
-       uint32 right;
-       uint32 bottom;
-       UNISTR2 name;
-}
-FORM;
-
-typedef struct spool_q_addform
-{
-       POLICY_HND handle;
-       uint32 level;
-       uint32 level2;          /* This should really be part of the FORM structure */
-       FORM form;
-}
-SPOOL_Q_ADDFORM;
-
-typedef struct spool_r_addform
-{
-       WERROR status;
-}
-SPOOL_R_ADDFORM;
-
-typedef struct spool_q_setform
-{
-       POLICY_HND handle;
-       UNISTR2 name;
-       uint32 level;
-       uint32 level2;
-       FORM form;
-}
-SPOOL_Q_SETFORM;
-
-typedef struct spool_r_setform
-{
-       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;
-       uint32 jobid;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_GETJOB;
-
-typedef struct pjob_info_info
-{
-       union
-       {
-               JOB_INFO_1 *job_info_1;
-               JOB_INFO_2 *job_info_2;
-               void *info;
-       }
-       job;
-
-}
-PJOB_INFO;
-
-typedef struct spool_r_getjob
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       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_routerreplyprinter
-{
-       POLICY_HND handle;
-       uint32 condition;
-       uint32 unknown1;        /* 0x00000001 */
-       uint32 change_id;
-       uint8  unknown2[5];     /* 0x0000000001 */
-}
-SPOOL_Q_ROUTERREPLYPRINTER;
-
-typedef struct spool_r_routerreplyprinter
-{
-       WERROR status;
-}
-SPOOL_R_ROUTERREPLYPRINTER;
-
-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;
-
-
-typedef struct spool_q_deleteprinterdataex
-{
-       POLICY_HND handle;
-       UNISTR2 keyname;
-       UNISTR2 valuename;
-}
-SPOOL_Q_DELETEPRINTERDATAEX;
-
-typedef struct spool_r_deleteprinterdataex
-{
-       WERROR status;
-}
-SPOOL_R_DELETEPRINTERDATAEX;
-
-
-typedef struct spool_q_enumprinterkey
-{
-       POLICY_HND handle;
-       UNISTR2 key;
-       uint32 size;
-}
-SPOOL_Q_ENUMPRINTERKEY;
-
-typedef struct spool_r_enumprinterkey
-{
-       BUFFER5 keys;
-       uint32 needed;  /* in bytes */
-       WERROR status;
-}
-SPOOL_R_ENUMPRINTERKEY;
-
-typedef struct spool_q_deleteprinterkey
-{
-       POLICY_HND handle;
-       UNISTR2 keyname;
-}
-SPOOL_Q_DELETEPRINTERKEY;
-
-typedef struct spool_r_deleteprinterkey
-{
-       WERROR status;
-}
-SPOOL_R_DELETEPRINTERKEY;
-
-typedef struct printer_enum_values
-{
-       UNISTR valuename;
-       uint32 value_len;
-       uint32 type;
-       uint8  *data;
-       uint32 data_len; 
-       
-}
-PRINTER_ENUM_VALUES;
-
-typedef struct printer_enum_values_ctr
-{
-       uint32 size;
-       uint32 size_of_array;
-       PRINTER_ENUM_VALUES *values;
-}
-PRINTER_ENUM_VALUES_CTR;
-
-typedef struct spool_q_enumprinterdataex
-{
-       POLICY_HND handle;
-       UNISTR2 key;
-       uint32 size;
-}
-SPOOL_Q_ENUMPRINTERDATAEX;
-
-typedef struct spool_r_enumprinterdataex
-{
-       PRINTER_ENUM_VALUES_CTR ctr;
-       uint32 needed;
-       uint32 returned;
+       uint32 returned;
        WERROR status;
 }
 SPOOL_R_ENUMPRINTERDATAEX;
 
-typedef struct printprocessor_directory_1
-{
-       UNISTR name;
-}
-PRINTPROCESSOR_DIRECTORY_1;
-
-typedef struct spool_q_getprintprocessordirectory
-{
-       UNISTR2 name;
-       UNISTR2 environment;
-       uint32 level;
-       RPC_BUFFER *buffer;
-       uint32 offered;
-}
-SPOOL_Q_GETPRINTPROCESSORDIRECTORY;
-
-typedef struct spool_r_getprintprocessordirectory
-{
-       RPC_BUFFER *buffer;
-       uint32 needed;
-       WERROR status;
-}
-SPOOL_R_GETPRINTPROCESSORDIRECTORY;
-
-/**************************************/
-
-#define MAX_PORTNAME           64
-#define MAX_NETWORK_NAME       49
-#define MAX_SNMP_COMM_NAME     33
-#define        MAX_QUEUE_NAME          33
-#define MAX_IPADDR_STRING      17
-               
-typedef struct {
-       uint16 portname[MAX_PORTNAME];
-       uint32 version;
-       uint32 protocol;
-       uint32 size;
-       uint32 reserved;
-       uint16 hostaddress[MAX_NETWORK_NAME];
-       uint16 snmpcommunity[MAX_SNMP_COMM_NAME];
-       uint32 dblspool;
-       uint16 queue[MAX_QUEUE_NAME];
-       uint16 ipaddress[MAX_IPADDR_STRING];
-       uint32 port;
-       uint32 snmpenabled;
-       uint32 snmpdevindex;
-} SPOOL_PORT_DATA_1;
-
-typedef struct {
-       POLICY_HND handle;
-       UNISTR2 dataname;
-       RPC_BUFFER indata;
-       uint32 indata_len;
-       uint32 offered;
-       uint32 unknown;
-} SPOOL_Q_XCVDATAPORT;
-
-typedef struct {
-       RPC_BUFFER outdata;
-       uint32 needed;
-       uint32 unknown;
-       WERROR status;
-} SPOOL_R_XCVDATAPORT;
-
-#define PRINTER_DRIVER_VERSION 2
-#define PRINTER_DRIVER_ARCHITECTURE "Windows NT x86"
-
 #endif /* _RPC_SPOOLSS_H */