[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;
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;
[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;
/*[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;
[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;
[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;
[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];
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 {
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;
[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 {
/******************/
/* 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
);
[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
);