spoolss: fill in spoolss_PlayGDIScriptOnPrinterIC IDL.
[metze/samba/wip.git] / librpc / idl / spoolss.idl
index a957a5439ae8d774cd2889bb48346edbd2922cf7..d5e02bc0d1752e60f6bfb70ac856b58273c2c850 100644 (file)
@@ -35,11 +35,13 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        typedef enum {
                PROCESSOR_ARCHITECTURE_INTEL            = 0x0000,
+               PROCESSOR_ARCHITECTURE_ARM              = 0x0005,
                PROCESSOR_ARCHITECTURE_IA64             = 0x0006,
                PROCESSOR_ARCHITECTURE_AMD64            = 0x0009
        } spoolss_ProcessorArchitecture;
 
        typedef [v1_enum] enum {
+               PROCESSOR_ARM                           = 0x00000000,
                PROCESSOR_INTEL_386                     = 0x00000182,
                PROCESSOR_INTEL_486                     = 0x000001E6,
                PROCESSOR_INTEL_PENTIUM                 = 0x0000024A,
@@ -678,7 +680,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        const int MAXDEVICENAME = 32;
 
        typedef [public,gensize] struct {
-               [charset(UTF16)] uint16 devicename[MAXDEVICENAME];
+               [charset(UTF16),to_null] uint16 devicename[MAXDEVICENAME];
                spoolss_DeviceModeSpecVersion specversion;
                uint16 driverversion;
                uint16 size;
@@ -697,7 +699,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                uint16 yresolution;
                spoolss_DeviceModeTTOption ttoption;
                spoolss_DeviceModeCollate collate;
-               [charset(UTF16)] uint16 formname[MAXDEVICENAME];
+               [charset(UTF16),to_null] uint16 formname[MAXDEVICENAME];
                uint16 logpixels; /* reserved */
                uint32 bitsperpel; /* reserved */
                uint32 pelswidth; /* reserved */
@@ -1009,9 +1011,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *print_processor;
                [string,charset(UTF16)] uint16 *parameters;
                [string,charset(UTF16)] uint16 *driver_name;
-               uint32 _devmode_ptr; /* pointer to truncated devicemode */
+               uint32 *_devmode_ptr; /* pointer to truncated devicemode */
                [string,charset(UTF16)] uint16 *text_status;
-               uint32 _secdesc_ptr;
+               uint32 *_secdesc_ptr;
                spoolss_JobStatus status;
                [range(0,99)] uint32 priority;
                uint32 position;
@@ -1035,9 +1037,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *print_processor;
                [string,charset(UTF16)] uint16 *parameters;
                [string,charset(UTF16)] uint16 *driver_name;
-               uint32 _devmode_ptr; /* pointer to truncated devicemode */
+               uint32 *_devmode_ptr; /* pointer to truncated devicemode */
                [string,charset(UTF16)] uint16 *text_status;
-               uint32 _secdesc_ptr;
+               uint32 *_secdesc_ptr;
                spoolss_JobStatus status;
                [range(0,99)] uint32 priority;
                uint32 position;
@@ -1198,12 +1200,12 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *drivername;
                [string,charset(UTF16)] uint16 *comment;
                [string,charset(UTF16)] uint16 *location;
-               uint32 devmode_ptr;
+               uint32 *devmode_ptr;
                [string,charset(UTF16)] uint16 *sepfile;
                [string,charset(UTF16)] uint16 *printprocessor;
                [string,charset(UTF16)] uint16 *datatype;
                [string,charset(UTF16)] uint16 *parameters;
-               uint32 secdesc_ptr;
+               uint32 *secdesc_ptr;
                spoolss_PrinterAttributes attributes;
                [range(0,99)] uint32 priority;
                uint32 defaultpriority;
@@ -1215,7 +1217,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_SetPrinterInfo2;
 
        typedef struct {
-               uint32 sec_desc_ptr;
+               uint32 *sec_desc_ptr;
        } spoolss_SetPrinterInfo3;
 
        typedef struct {
@@ -1242,11 +1244,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_SetPrinterInfo7;
 
        typedef struct {
-               uint32 devmode_ptr;
+               uint32 *devmode_ptr;
        } spoolss_SetPrinterInfo8;
 
        typedef struct {
-               uint32 devmode_ptr;
+               uint32 *devmode_ptr;
        } spoolss_SetPrinterInfo9;
 
        typedef [switch_type(uint32)] union {
@@ -1268,7 +1270,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [switch_is(level)] spoolss_SetPrinterInfo info;
        } spoolss_SetPrinterInfoCtr;
 
-       WERROR spoolss_SetPrinter(
+       [public] WERROR spoolss_SetPrinter(
                [in,ref] policy_handle *handle,
                [in,ref] spoolss_SetPrinterInfoCtr *info_ctr,
                [in,ref] spoolss_DevmodeContainer *devmode_ctr,
@@ -1303,7 +1305,8 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                SPOOLSS_DRIVER_VERSION_9X       = 0,
                SPOOLSS_DRIVER_VERSION_NT35     = 1,
                SPOOLSS_DRIVER_VERSION_NT4      = 2,
-               SPOOLSS_DRIVER_VERSION_200X     = 3
+               SPOOLSS_DRIVER_VERSION_200X     = 3,
+               SPOOLSS_DRIVER_VERSION_2012     = 4
        } spoolss_DriverOSVersion;
 
        typedef struct {
@@ -1346,7 +1349,17 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_AddDriverInfo4;
 
        typedef [bitmap32bit] bitmap {
-               PRINTER_DRIVER_PACKAGE_AWARE = 0x00000002
+               PRINTER_DRIVER_PACKAGE_AWARE            = 0x00000001,
+               PRINTER_DRIVER_XPS                      = 0x00000002,
+               PRINTER_DRIVER_SANDBOX_ENABLED          = 0x00000004,
+               PRINTER_DRIVER_CLASS                    = 0x00000008,
+               PRINTER_DRIVER_DERIVED                  = 0x00000010,
+               PRINTER_DRIVER_NOT_SHAREABLE            = 0x00000020,
+               PRINTER_DRIVER_CATEGORY_FAX             = 0x00000040,
+               PRINTER_DRIVER_CATEGORY_FILE            = 0x00000080,
+               PRINTER_DRIVER_CATEGORY_VIRTUAL         = 0x00000100,
+               PRINTER_DRIVER_CATEGORY_SERVICE         = 0x00000200,
+               PRINTER_DRIVER_SOFT_RESET_REQUIRED      = 0x00000400
        } spoolss_DriverAttributes;
 
        typedef struct {
@@ -1408,7 +1421,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [value(((ndr_size_spoolss_StringArray(color_profiles, ndr->flags)-4)/2))] uint32 _ndr_size_color_profiles;
                spoolss_StringArray *color_profiles;
                [string,charset(UTF16)] uint16 *inf_path;
-               uint32 printer_driver_attributes;
+               spoolss_DriverAttributes printer_driver_attributes;
                [value(((ndr_size_spoolss_StringArray(core_driver_dependencies, ndr->flags)-4)/2))] uint32 _ndr_size_core_driver_dependencies;
                spoolss_StringArray *core_driver_dependencies;
                NTTIME min_inbox_driver_ver_date;
@@ -1536,7 +1549,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [relative] nstring *vendor_setup;
                [relative] nstring_array *color_profiles;
                [relative] nstring *inf_path;
-               uint32 printer_driver_attributes;
+               spoolss_DriverAttributes printer_driver_attributes;
                [relative] nstring_array *core_driver_dependencies;
                NTTIME min_inbox_driver_ver_date;
                hyper min_inbox_driver_ver_version;
@@ -1560,7 +1573,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                spoolss_DriverOSVersion version;
                [relative] nstring *driver_name;
                [relative] nstring *architecture;
-               [relative] [size_is(file_count)] spoolss_DriverFileInfo *file_info;
+               [relative,size_is(file_count),flag(NDR_ALIGN4)] spoolss_DriverFileInfo *file_info;
                uint32 file_count;
                [relative] nstring *monitor_name;
                [relative] nstring *default_datatype;
@@ -1740,10 +1753,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [default];
        } spoolss_DocumentInfo;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] spoolss_DocumentInfo info;
+       } spoolss_DocumentInfoCtr;
+
        WERROR spoolss_StartDocPrinter(
                [in,ref] policy_handle *handle,
-               [in] uint32 level,
-               [in,switch_is(level)] spoolss_DocumentInfo info,
+               [in,ref] spoolss_DocumentInfoCtr *info_ctr,
                [out,ref] uint32 *job_id
        );
 
@@ -1816,6 +1833,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        const string SPL_ARCH_W32PPC            = "W32PPC";
        const string SPL_ARCH_IA64              = "IA64";
        const string SPL_ARCH_X64               = "x64";
+       const string SPL_ARCH_ARM               = "ARM";
 
        const string SPOOLSS_ARCHITECTURE_ALL                   = "All";
        const string SPOOLSS_ARCHITECTURE_ALL_CLUSTER           = "AllCluster";
@@ -1823,6 +1841,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        const string SPOOLSS_ARCHITECTURE_IA_64                 = "Windows IA64";
        const string SPOOLSS_ARCHITECTURE_x64                   = "Windows x64";
        const string SPOOLSS_ARCHITECTURE_4_0                   = "Windows 4.0";
+       const string SPOOLSS_ARCHITECTURE_ARM                   = "Windows ARM";
        const string SPOOLSS_DEFAULT_SERVER_PATH                = "C:\\WINDOWS\\system32\\spool";
 
        typedef [public,gensize] struct {
@@ -2033,10 +2052,14 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [case(2)] spoolss_AddFormInfo2 *info2;
        } spoolss_AddFormInfo;
 
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] spoolss_AddFormInfo info;
+       } spoolss_AddFormInfoCtr;
+
        WERROR spoolss_AddForm(
                [in,ref] policy_handle *handle,
-               [in] uint32 level,
-               [in,switch_is(level)] spoolss_AddFormInfo info
+               [in,ref] spoolss_AddFormInfoCtr *info_ctr
        );
 
        /******************/
@@ -2063,8 +2086,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        WERROR spoolss_SetForm(
                [in,ref] policy_handle *handle,
                [in] [string,charset(UTF16)] uint16 form_name[],
-               [in] uint32 level,
-               [in,switch_is(level)] spoolss_AddFormInfo info
+               [in,ref] spoolss_AddFormInfoCtr *info_ctr
        );
 
        /******************/
@@ -2233,6 +2255,42 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x25 */
+
+       typedef [public,gensize] struct {
+               [string,charset(UTF16)] uint16 *port_name;
+       } spoolss_SetPortInfo1;
+
+       typedef [public,gensize] struct {
+               [string,charset(UTF16)] uint16 *port_name;
+               [string,charset(UTF16)] uint16 *monitor_name;
+               [string,charset(UTF16)] uint16 *description;
+               spoolss_PortType port_type;
+               uint32 reserved;
+       } spoolss_SetPortInfo2;
+
+       typedef [public,gensize] struct {
+               spoolss_PortStatus status;
+               [string,charset(UTF16)] uint16 *status_string;
+               spoolss_PortSeverity severity;
+       } spoolss_SetPortInfo3;
+
+       typedef [public,gensize] struct {
+               [string,charset(UTF16)] uint16 *port_name;
+               DATA_BLOB monitor_data; /* relative ?? */
+       } spoolss_SetPortInfoFF;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] spoolss_SetPortInfo1 *info1;
+               [case(2)] spoolss_SetPortInfo2 *info2;
+               [case(3)] spoolss_SetPortInfo3 *info3;
+               [case(0xff)] spoolss_SetPortInfoFF *infoFF;
+       } spoolss_SetPortInfo;
+
+       typedef struct {
+               uint32 level;
+               [switch_is(level)] spoolss_SetPrinterInfo info;
+       } spoolss_SetPortInfoContainer;
+
        WERROR spoolss_AddPort(
               [in,unique] [string,charset(UTF16)] uint16 *server_name,
               [in] uint32 unknown,
@@ -2246,7 +2304,10 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x27 */
-       [todo] WERROR spoolss_DeletePort(
+       WERROR spoolss_DeletePort(
+              [in,unique] [string,charset(UTF16)] uint16 *server_name,
+              [in] uint32 ptr,
+              [in,ref] [string,charset(UTF16)] uint16 *port_name
        );
 
        /******************/
@@ -2259,7 +2320,13 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x29 */
-       [todo] WERROR spoolss_PlayGDIScriptOnPrinterIC(
+       WERROR spoolss_PlayGDIScriptOnPrinterIC(
+               [in,ref] policy_handle *gdi_handle,
+               [in,ref] [size_is(cIn)] uint8 *pIn,
+               [in] uint32 cIn,
+               [out,ref] [size_is(cOut)] uint8 *pOut,
+               [in] uint32 cOut,
+               [in] uint32 ul
        );
 
        /******************/
@@ -2470,7 +2537,17 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x3d */
-       [todo] WERROR spoolss_AddPortEx(
+
+       typedef struct {
+               uint32 monitor_data_size;
+               [size_is(monitor_data_size),unique] uint8 *monitor_data;
+       } spoolss_PortVarContainer;
+
+       WERROR spoolss_AddPortEx(
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
+               [in,ref] spoolss_SetPortInfoContainer *port_ctr,
+               [in,ref] spoolss_PortVarContainer *port_var_ctr,
+               [in,unique] [string,charset(UTF16)] uint16 *monitor_name
        );
 
        /******************/
@@ -2767,8 +2844,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [in,unique]           [string,charset(UTF16)] uint16 *datatype,
                [in]                  spoolss_DevmodeContainer devmode_ctr,
                [in]                  spoolss_AccessRights access_mask,
-               [in]                  uint32 level,
-               [in,switch_is(level)] spoolss_UserLevel userlevel,
+               [in]                  spoolss_UserLevelCtr userlevel_ctr,
                [out,ref]             policy_handle *handle
        );
 
@@ -2785,7 +2861,10 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x47 */
-       [todo] WERROR spoolss_47(
+       WERROR spoolss_SetPort(
+               [in,unique] [string,charset(UTF16)] uint16 *servername,
+               [in,unique] [string,charset(UTF16)] uint16 *port_name,
+               [in,ref] spoolss_SetPortInfoContainer *port_ctr
        );
 
        /******************/
@@ -2854,7 +2933,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [relative] nstring *value_name;
                [value(2*strlen_m_term(value_name))] uint32 value_name_len;
                winreg_Type type;
-               [relative,subcontext(0),subcontext_size(data_length),flag(NDR_REMAINING)] DATA_BLOB *data;
+               [relative,subcontext(0),subcontext_size(data_length),flag(NDR_REMAINING|ndr_spoolss_PrinterEnumValues_align(r->type))] DATA_BLOB *data;
                [value(data ? data->length : 0)] uint32 data_length;
        } spoolss_PrinterEnumValues;
 
@@ -2934,17 +3013,23 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x55 */
-       [todo] WERROR spoolss_55(
+       WERROR spoolss_AddPerMachineConnection(
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,ref] [string,charset(UTF16)] uint16 *printername,
+               [in,ref] [string,charset(UTF16)] uint16 *printserver,
+               [in,ref] [string,charset(UTF16)] uint16 *provider
        );
 
        /******************/
        /* Function: 0x56 */
-       [todo] WERROR spoolss_56(
+       WERROR spoolss_DeletePerMachineConnection(
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,ref] [string,charset(UTF16)] uint16 *printername
        );
 
        /******************/
        /* Function: 0x57 */
-       [todo] WERROR spoolss_57(
+       [todo] WERROR spoolss_EnumPerMachineConnections(
        );
 
        /******************/
@@ -2955,11 +3040,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                PROTOCOL_LPR_TYPE       = 2
        } spoolss_PortProtocol;
 
-       typedef [public] struct {
+       typedef [public,gensize] struct {
                [charset(UTF16)] uint16 portname[64];
                [value(0x00000001)] uint32 version;
                spoolss_PortProtocol protocol;
-               [value(sizeof(r))] uint32 size;
+               [value(ndr_size_spoolss_PortData1(r, ndr->flags))] uint32 size;
                uint32 reserved;
                [charset(UTF16)] uint16 hostaddress[49];
                [charset(UTF16)] uint16 snmpcommunity[33];
@@ -2973,11 +3058,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                uint32 snmp_dev_index;
        } spoolss_PortData1;
 
-       typedef [public] struct {
+       typedef [public,gensize] struct {
                [charset(UTF16)] uint16 portname[64];
                [value(0x00000002)] uint32 version;
                spoolss_PortProtocol protocol;
-               [value(sizeof(r))] uint32 size;
+               [value(ndr_size_spoolss_PortData2(r, ndr->flags))] uint32 size;
                uint32 reserved;
                [charset(UTF16)] uint16 hostaddress[128];
                [charset(UTF16)] uint16 snmpcommunity[33];
@@ -3144,4 +3229,24 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        /* Function: 0x6d */
        [todo] WERROR spoolss_6d(
        );
+
+       /******************/
+       /* Function: 0x6e */
+       [todo] WERROR spoolss_RpcGetJobNamedPropertyValue(
+       );
+
+       /******************/
+       /* Function: 0x6f */
+       [todo] WERROR spoolss_RpcSetJobNamedProperty(
+       );
+
+       /******************/
+       /* Function: 0x70 */
+       [todo] WERROR spoolss_RpcDeleteJobNamedProperty(
+       );
+
+       /******************/
+       /* Function: 0x71 */
+       [todo] WERROR spoolss_RpcEnumJobNamedProperties(
+       );
 }