spoolss: more mork on SetPrinterInfo() levels.
[ira/wip.git] / librpc / idl / spoolss.idl
index 3ae1685e66d02765e96e24b587fc3693dafd8ab7..259ffd4d7ec765c15537730032cd331dc67c944a 100644 (file)
@@ -891,12 +891,12 @@ import "misc.idl", "security.idl", "winreg.idl";
                [string,charset(UTF16)] uint16 *drivername;
                [string,charset(UTF16)] uint16 *comment;
                [string,charset(UTF16)] uint16 *location;
-               [subcontext(0)] spoolss_DeviceMode *devmode;
+               uint32 devmode_ptr;
                [string,charset(UTF16)] uint16 *sepfile;
                [string,charset(UTF16)] uint16 *printprocessor;
                [string,charset(UTF16)] uint16 *datatype;
                [string,charset(UTF16)] uint16 *parameters;
-               [subcontext(0)] security_descriptor *secdesc;
+               uint32 secdesc_ptr;
                spoolss_PrinterAttributes attributes;
                [range(0,99)] uint32 priority;
                uint32 defaultpriority;
@@ -934,6 +934,14 @@ import "misc.idl", "security.idl", "winreg.idl";
                spoolss_DsPrintAction action;
        } spoolss_SetPrinterInfo7;
 
+       typedef struct {
+               uint32 devmode_ptr;
+       } spoolss_SetPrinterInfo8;
+
+       typedef struct {
+               uint32 devmode_ptr;
+       } spoolss_SetPrinterInfo9;
+
        typedef [switch_type(uint32)] union {
                [case(0)] spoolss_SetPrinterInfo0 *info0;
                [case(1)] spoolss_SetPrinterInfo1 *info1;
@@ -943,8 +951,8 @@ import "misc.idl", "security.idl", "winreg.idl";
                [case(5)] spoolss_SetPrinterInfo5 *info5;
                [case(6)] spoolss_SetPrinterInfo6 *info6;
                [case(7)] spoolss_SetPrinterInfo7 *info7;
-               [case(8)] spoolss_DeviceModeInfo *info8;
-               [case(9)] spoolss_DeviceModeInfo *info9;
+               [case(8)] spoolss_SetPrinterInfo8 *info8;
+               [case(9)] spoolss_SetPrinterInfo9 *info9;
                [default];
        } spoolss_SetPrinterInfo;
 
@@ -980,11 +988,6 @@ import "misc.idl", "security.idl", "winreg.idl";
                /*[subcontext(0),subcontext_size(_ndr_size*2)]*/ nstring_array string;
        } spoolss_StringArray;
 
-       typedef [public] struct {
-               [value((ndr_size_spoolss_StringArray2(r, ndr->iconv_convenience, ndr->flags)-4)/2)] uint32 _ndr_size;
-               [subcontext(0),subcontext_size(_ndr_size*2)] nstring_array string;
-       } spoolss_StringArray2;
-
        typedef struct {
                [string,charset(UTF16)] uint16 *driver_name;
        } spoolss_AddDriverInfo1;
@@ -1196,6 +1199,14 @@ import "misc.idl", "security.idl", "winreg.idl";
                [relative] nstring *provider;
        } spoolss_DriverInfo6;
 
+       typedef [public,gensize] struct {
+               uint32 size;
+               spoolss_DriverOSVersion version;
+               [relative] nstring *driver_name;
+               [relative] nstring *inf_name;
+               [relative] nstring *install_source_root;
+       } spoolss_DriverInfo7;
+
        typedef [public,gensize] struct {
                spoolss_DriverOSVersion version;
                [relative] nstring *driver_name;
@@ -1204,9 +1215,9 @@ import "misc.idl", "security.idl", "winreg.idl";
                [relative] nstring *data_file;
                [relative] nstring *config_file;
                [relative] nstring *help_file;
+               [relative] nstring_array *dependent_files;
                [relative] nstring *monitor_name;
                [relative] nstring *default_datatype;
-               [relative] nstring_array *dependent_files;
                [relative] nstring_array *previous_names;
                NTTIME driver_date;
                hyper driver_version;
@@ -1262,6 +1273,7 @@ import "misc.idl", "security.idl", "winreg.idl";
                [case(4)] spoolss_DriverInfo4 info4;
                [case(5)] spoolss_DriverInfo5 info5;
                [case(6)] spoolss_DriverInfo6 info6;
+               [case(7)] spoolss_DriverInfo7 info7;
                [case(8)] spoolss_DriverInfo8 info8;
                [case(101)] spoolss_DriverInfo101 info101;
                [default];
@@ -1498,8 +1510,12 @@ import "misc.idl", "security.idl", "winreg.idl";
        const string SPL_ARCH_IA64              = "IA64";
        const string SPL_ARCH_X64               = "x64";
 
-       const string SPOOLSS_ARCHITECTURE_ALL                   = "all";
+       const string SPOOLSS_ARCHITECTURE_ALL                   = "All";
+       const string SPOOLSS_ARCHITECTURE_ALL_CLUSTER           = "AllCluster";
        const string SPOOLSS_ARCHITECTURE_NT_X86                = "Windows NT x86";
+       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_DEFAULT_SERVER_PATH                = "C:\\WINDOWS\\system32\\spool";
 
        typedef [public,gensize] struct {
@@ -1525,7 +1541,7 @@ import "misc.idl", "security.idl", "winreg.idl";
                uint8 reserved;
        } spoolss_OSVersionEx;
 
-       typedef [nodiscriminant,public,gensize] union {
+       typedef [nodiscriminant,public] union {
                [case(REG_NONE)];
                [case(REG_SZ)] nstring string;
                [case(REG_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
@@ -1698,7 +1714,8 @@ import "misc.idl", "security.idl", "winreg.idl";
                [relative] nstring *mui_dll;
                uint32 ressource_id;
                [relative] nstring *display_name;
-               uint32 lang_id;
+               uint16 lang_id;
+               uint16 unused;
        } spoolss_FormInfo2;
 
        typedef [nodiscriminant,relative_base,public,gensize] union {
@@ -2525,24 +2542,49 @@ import "misc.idl", "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x4d */
-       WERROR spoolss_SetPrinterDataEx(
+       [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterDataEx(
                [in,ref] policy_handle *handle,
-               [in]     [string,charset(UTF16)] uint16 key_name[],
-               [in]     [string,charset(UTF16)] uint16 value_name[],
-               [in]     winreg_Type type,
-               [in,ref] [size_is(offered)] uint8 *buffer,
-               [in]     uint32 offered
+               [in] [string,charset(UTF16)] uint16 key_name[],
+               [in] [string,charset(UTF16)] uint16 value_name[],
+               [in] winreg_Type type,
+               [in] DATA_BLOB data,
+               [in] uint32 _offered
+       );
+       [noopnum,nopull,noprint,public] void __spoolss_SetPrinterDataEx(
+               [in] winreg_Type type,
+               [out,ref,switch_is(type)] spoolss_PrinterData *data
+       );
+       [nopush] WERROR spoolss_SetPrinterDataEx(
+               [in,ref] policy_handle *handle,
+               [in] [string,charset(UTF16)] uint16 key_name[],
+               [in] [string,charset(UTF16)] uint16 value_name[],
+               [in] winreg_Type type,
+               [in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
+               [in,value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] uint32 _offered
        );
 
        /******************/
        /* Function: 0x4e */
-       WERROR spoolss_GetPrinterDataEx(
+       [noopnum,noprint,public] 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] [size_is(offered)] uint8 *buffer,
+               [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[],
                [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
        );
 
@@ -2578,12 +2620,19 @@ import "misc.idl", "security.idl", "winreg.idl";
                [out,ref] uint32 *needed
        );
 
+       typedef [nodiscriminant] union {
+               [case(0)];
+               [case(1)];
+               [default] nstring_array string_array;
+       } spoolss_KeyNames;
+
        /******************/
        /* Function: 0x50 */
        [public] WERROR spoolss_EnumPrinterKey(
                [in, ref] policy_handle *handle,
                [in] [string,charset(UTF16)] uint16 key_name[],
-               [out,ref] spoolss_StringArray2 *key_buffer,
+               [out,ref] uint32 *_ndr_size,
+               [out,ref,subcontext(0),subcontext_size(*_ndr_size*2),switch_is(*_ndr_size)] spoolss_KeyNames *key_buffer,
                [in] uint32 offered,
                [out,ref] uint32 *needed
        );