spoolss.idl: align spoolss_PrinterEnumValues 'data' based on the type
[nivanova/samba-autobuild/.git] / librpc / idl / spoolss.idl
index 6a53cb8c5c8f4673a80e793b261c99975c8f428d..430b538123212f7c0f4f86177e2a36303f4c9738 100644 (file)
@@ -17,7 +17,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 ] interface spoolss
 {
        typedef [v1_enum] enum winreg_Type winreg_Type;
-       typedef [gensize] struct {
+       typedef [gensize,noprint] struct {
                uint16 year;
                uint16 month;
                uint16 day_of_week;
@@ -29,7 +29,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_Time;
 
        typedef struct {
-               [value(ndr_size_spoolss_Time(time, ndr->iconv_convenience, ndr->flags))] uint32 size;
+               [value(ndr_size_spoolss_Time(time, ndr->flags))] uint32 size;
                [unique] spoolss_Time *time;
        } spoolss_TimeCtr;
 
@@ -119,6 +119,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                JOB_STATUS_COMPLETE             = 0x00001000
        } spoolss_JobStatus;
 
+       typedef [v1_enum] enum {
+               SPOOLSS_DEBUGGING_BUILD         = 0x00000000,
+               SPOOLSS_RELEASE_BUILD           = 0x00000001
+       } spoolss_Build;
+
        typedef [public,gensize] struct {
                [relative] nstring *printername;
                [relative] nstring *servername;
@@ -129,7 +134,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                uint32 global_counter;
                uint32 total_pages;
                uint32 version;
-               uint32 free_build;
+               spoolss_Build free_build;
                uint32 spooling;
                uint32 max_spooling;
                uint32 session_counter;
@@ -328,7 +333,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                uint16 caColorfulness;
                uint16 caRedGreenTint;
                uint16 wCoreJTExpSize;
-               [value(ndr_size_spoolss_PSDRVEXTRA(r, ndr->iconv_convenience, ndr->flags) + wCoreJTExpSize)] uint16 wCoreFullSize;
+               [value(ndr_size_spoolss_PSDRVEXTRA(r, ndr->flags) + wCoreJTExpSize)] uint16 wCoreFullSize;
                uint32 fxScrFreq;
                uint32 fxScrAngle;
                spoolss_DMPS_Dialect iDialect;
@@ -399,7 +404,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [value(SPOOLSS_DM_SIGNATURE_UNIDRVEXTRA)] spoolss_DM_Signature dwSignature;
                [value(0x0022)] uint16 wVer;
                uint16 wCoreJTExpSize;
-               [value(ndr_size_spoolss_UNIDRVEXTRA(r, ndr->iconv_convenience, ndr->flags) + wCoreJTExpSize)] uint16 wCoreFullSize;
+               [value(ndr_size_spoolss_UNIDRVEXTRA(r, ndr->flags) + wCoreJTExpSize)] uint16 wCoreFullSize;
                uint16 wOEMExtra;
                uint32 dwChecksum32;
                spoolss_DMUNI_Flags dwFlags;
@@ -761,7 +766,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_PrinterAttributes;
 
        typedef [public,gensize] struct {
-               spoolss_PrinterAttributes flags;
+               spoolss_EnumPrinterFlags flags;
                [relative] nstring *description;
                [relative] nstring *name;
                [relative] nstring *comment;
@@ -879,7 +884,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        /******************/
        /* Function: 0x01 */
        typedef struct {
-               [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->iconv_convenience, ndr->flags))] uint32 _ndr_size;
+               [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] uint32 _ndr_size;
                [subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode *devmode;
        } spoolss_DevmodeContainer;
 
@@ -1146,11 +1151,6 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                SPOOLSS_PRINTER_CONTROL_SET_STATUS = 4
        } spoolss_PrinterControl;
 
-       typedef [v1_enum] enum {
-               SPOOLSS_DEBUGGING_BUILD         = 0x00000000,
-               SPOOLSS_RELEASE_BUILD           = 0x00000001
-       } spoolss_Build;
-
        typedef struct {
                [string,charset(UTF16)] uint16 *servername;
                [string,charset(UTF16)] uint16 *printername;
@@ -1167,13 +1167,13 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                uint32 session_counter;
                uint32 num_error_out_of_paper;
                uint32 num_error_not_ready;
-               uint32 job_error;
+               spoolss_JobStatus job_error;
                uint32 number_of_processors;
                spoolss_ProcessorType processor_type;
                uint32 high_part_total_bytes;
                uint32 change_id;
                WERROR last_error;
-               uint32 status;
+               spoolss_PrinterStatus status;
                uint32 enumerate_network_printers;
                uint32 c_setprinter;
                spoolss_ProcessorArchitecture processor_architecture;
@@ -1291,7 +1291,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        /* Function: 0x09 */
 
        typedef [public] struct {
-               [value((ndr_size_spoolss_StringArray(r, ndr->iconv_convenience, ndr->flags)-4)/2)] uint32 _ndr_size;
+               [value((ndr_size_spoolss_StringArray(r, ndr->flags)-4)/2)] uint32 _ndr_size;
                /*[subcontext(0),subcontext_size(_ndr_size*2)]*/ nstring_array string;
        } spoolss_StringArray;
 
@@ -1325,7 +1325,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *help_file;
                [string,charset(UTF16)] uint16 *monitor_name;
                [string,charset(UTF16)] uint16 *default_datatype;
-               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
+               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
                spoolss_StringArray *dependent_files;
        } spoolss_AddDriverInfo3;
 
@@ -1339,9 +1339,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *help_file;
                [string,charset(UTF16)] uint16 *monitor_name;
                [string,charset(UTF16)] uint16 *default_datatype;
-               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
+               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
                spoolss_StringArray *dependent_files;
-               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
+               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
                spoolss_StringArray *previous_names;
        } spoolss_AddDriverInfo4;
 
@@ -1371,9 +1371,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *help_file;
                [string,charset(UTF16)] uint16 *monitor_name;
                [string,charset(UTF16)] uint16 *default_datatype;
-               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
+               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
                spoolss_StringArray *dependent_files;
-               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
+               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
                spoolss_StringArray *previous_names;
                NTTIME driver_date;
                hyper driver_version;
@@ -1393,9 +1393,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *help_file;
                [string,charset(UTF16)] uint16 *monitor_name;
                [string,charset(UTF16)] uint16 *default_datatype;
-               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
+               [value(((ndr_size_spoolss_StringArray(dependent_files, ndr->flags)-4)/2))] uint32 _ndr_size_dependent_files;
                spoolss_StringArray *dependent_files;
-               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
+               [value(((ndr_size_spoolss_StringArray(previous_names, ndr->flags)-4)/2))] uint32 _ndr_size_previous_names;
                spoolss_StringArray *previous_names;
                NTTIME driver_date;
                hyper driver_version;
@@ -1405,11 +1405,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
                [string,charset(UTF16)] uint16 *provider;
                [string,charset(UTF16)] uint16 *print_processor;
                [string,charset(UTF16)] uint16 *vendor_setup;
-               [value(((ndr_size_spoolss_StringArray(color_profiles, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_color_profiles;
+               [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;
-               [value(((ndr_size_spoolss_StringArray(core_driver_dependencies, ndr->iconv_convenience, ndr->flags)-4)/2))] uint32 _ndr_size_core_driver_dependencies;
+               [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;
                hyper min_inbox_driver_ver_version;
@@ -1826,7 +1826,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        const string SPOOLSS_DEFAULT_SERVER_PATH                = "C:\\WINDOWS\\system32\\spool";
 
        typedef [public,gensize] struct {
-               [value(ndr_size_spoolss_OSVersion(r,ndr->iconv_convenience,ndr->flags))] uint32 _ndr_size;
+               [value(ndr_size_spoolss_OSVersion(r,ndr->flags))] uint32 _ndr_size;
                uint32 major;
                uint32 minor;
                uint32 build;
@@ -1835,7 +1835,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        } spoolss_OSVersion;
 
        typedef [public,gensize] struct {
-               [value(ndr_size_spoolss_OSVersionEx(r,ndr->iconv_convenience,ndr->flags))] uint32 _ndr_size;
+               [value(ndr_size_spoolss_OSVersionEx(r,ndr->flags))] uint32 _ndr_size;
                uint32 major;
                uint32 minor;
                uint32 build;
@@ -1925,24 +1925,12 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
        const string SPOOL_REG_URL                      = "url";
        const string SPOOL_REG_VERSIONNUMBER            = "versionNumber";
 
-       [noopnum,noprint,public] WERROR _spoolss_GetPrinterData(
+       [public] WERROR spoolss_GetPrinterData(
                [in,ref] policy_handle *handle,
                [in]     [string,charset(UTF16)] uint16 value_name[],
-               [in]     uint32 offered,
                [out,ref] winreg_Type *type,
-               [out,ref] DATA_BLOB *data,
-               [out,ref] uint32 *needed
-       );
-       [noopnum,noprint,public] void __spoolss_GetPrinterData(
-               [in] winreg_Type type,
-               [out,ref,switch_is(type)] spoolss_PrinterData *data
-       );
-       [nopull,nopush,public] WERROR spoolss_GetPrinterData(
-               [in,ref] policy_handle *handle,
-               [in]     [string,charset(UTF16)] uint16 value_name[],
+               [out,ref,size_is(offered)] uint8 *data,
                [in]     uint32 offered,
-               [out,ref] winreg_Type *type,
-               [out,ref,subcontext(4),subcontext_size(offered),switch_is(*type)] spoolss_PrinterData *data,
                [out,ref] uint32 *needed
        );
 
@@ -2245,6 +2233,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,
@@ -2258,7 +2282,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
        );
 
        /******************/
@@ -2370,7 +2397,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x35 */
-       WERROR spoolss_GetPrinterDriver2(
+       [public] WERROR spoolss_GetPrinterDriver2(
                [in,ref] policy_handle *handle,
                [in,unique] [string,charset(UTF16)] uint16 *architecture,
                [in]     uint32 level,
@@ -2482,7 +2509,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
        );
 
        /******************/
@@ -2797,7 +2834,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
        );
 
        /******************/
@@ -2849,26 +2889,13 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x4e */
-       [noopnum,noprint,public] WERROR _spoolss_GetPrinterDataEx(
+       WERROR spoolss_GetPrinterDataEx(
                [in,ref] policy_handle *handle,
                [in]     [string,charset(UTF16)] uint16 key_name[],
                [in]     [string,charset(UTF16)] uint16 value_name[],
-               [in]     uint32 offered,
                [out,ref] winreg_Type *type,
-               [out,ref] DATA_BLOB *data,
-               [out,ref] uint32 *needed
-       );
-       [noopnum,noprint,public] void __spoolss_GetPrinterDataEx(
-               [in] winreg_Type type,
-               [out,ref,switch_is(type)] spoolss_PrinterData *data
-       );
-       [nopull,nopush,public] WERROR spoolss_GetPrinterDataEx(
-               [in,ref] policy_handle *handle,
-               [in]     [string,charset(UTF16)] uint16 key_name[],
-               [in]     [string,charset(UTF16)] uint16 value_name[],
+               [out,ref,size_is(offered)] uint8 *data,
                [in]     uint32 offered,
-               [out,ref] winreg_Type *type,
-               [out,ref,subcontext(4),subcontext_size(offered),switch_is(*type)] spoolss_PrinterData *data,
                [out,ref] uint32 *needed
        );
 
@@ -2879,8 +2906,8 @@ 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,switch_is(type),subcontext(0),subcontext_size(r->data_length)] spoolss_PrinterData *data;
-               [value(ndr_size_spoolss_PrinterData(data, type, ndr->iconv_convenience, ndr->flags))] uint32 data_length;
+               [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;
 
        [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDataEx(
@@ -2959,17 +2986,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(
        );
 
        /******************/