*/
import "misc.idl", "security.idl", "winreg.idl";
+
+cpp_quote("#define spoolss_security_descriptor security_descriptor")
+
[ uuid("12345678-1234-abcd-ef00-0123456789ab"),
version(1.0),
endpoint("ncacn_np:[\\pipe\\spoolss]"),
const int PRINTER_STATUS_OK = 0x00000000;
- typedef bitmap {
+ typedef [public] bitmap {
PRINTER_STATUS_PAUSED = 0x00000001,
PRINTER_STATUS_ERROR = 0x00000002,
PRINTER_STATUS_PENDING_DELETION = 0x00000004,
PRINTER_ENUM_ICON7 |
PRINTER_ENUM_ICON8); /* 0x00ff0000 */
- typedef bitmap {
+ typedef [public] bitmap {
PRINTER_ATTRIBUTE_QUEUED = 0x00000001,
PRINTER_ATTRIBUTE_DIRECT = 0x00000002,
PRINTER_ATTRIBUTE_DEFAULT = 0x00000004,
[relative] nstring *comment;
} spoolss_PrinterInfo1;
- typedef [public,gensize] struct {
+ typedef [public,gensize,nopush] struct {
[relative] nstring *servername;
[relative] nstring *printername;
[relative] nstring *sharename;
[relative] nstring *drivername;
[relative] nstring *comment;
[relative] nstring *location;
- [relative,subcontext(0)] spoolss_DeviceMode *devmode;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
[relative] nstring *sepfile;
[relative] nstring *printprocessor;
[relative] nstring *datatype;
[relative] nstring *parameters;
- [relative,subcontext(0)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_PrinterAttributes attributes;
[range(0,99)] uint32 priority;
uint32 defaultpriority;
} spoolss_PrinterInfo2;
typedef [public,gensize] struct {
- [relative,subcontext(0)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
} spoolss_PrinterInfo3;
typedef [public,gensize] struct {
} spoolss_PrinterInfo7;
typedef struct {
- [relative,subcontext(0)] spoolss_DeviceMode *devmode;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
} spoolss_DeviceModeInfo;
- typedef [nodiscriminant,relative_base,public,gensize] union {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(0)] spoolss_PrinterInfo0 info0;
[case(1)] spoolss_PrinterInfo1 info1;
[case(2)] spoolss_PrinterInfo2 info2;
[relative] nstring *print_processor;
[relative] nstring *parameters;
[relative] nstring *driver_name;
- [relative] spoolss_DeviceMode *devmode;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
[relative] nstring *text_status;
- [relative] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
[relative] nstring *print_processor;
[relative] nstring *parameters;
[relative] nstring *driver_name;
- [relative] spoolss_DeviceMode *devmode;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
[relative] nstring *text_status;
- [relative] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
uint32 size_high;
} spoolss_JobInfo4;
- typedef [nodiscriminant,relative_base,public,gensize] union {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_JobInfo1 info1;
[case(2)] spoolss_JobInfo2 info2;
[case(3)] spoolss_JobInfo3 info3;
[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;
[relative] nstring *provider;
} spoolss_DriverInfo101;
- typedef [nodiscriminant,relative_base,public,gensize] union {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_DriverInfo1 info1;
[case(2)] spoolss_DriverInfo2 info2;
[case(3)] spoolss_DriverInfo3 info3;
[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];
/* NOTE: it's seems that w2k3 completly ignores the level
in its server code
*/
- typedef [nodiscriminant,relative_base,gensize,public] union {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_DriverDirectoryInfo1 info1;
[default] spoolss_DriverDirectoryInfo1 info1;
} spoolss_DriverDirectoryInfo;
[relative] nstring *print_processor_name;
} spoolss_PrintProcessorInfo1;
- typedef [nodiscriminant,relative_base,public] union {
+ typedef [nodiscriminant,relative_base,public,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_PrintProcessorInfo1 info1;
[default];
} spoolss_PrintProcessorInfo;
nstring directory_name;
} spoolss_PrintProcessorDirectoryInfo1;
- typedef [nodiscriminant,relative_base,gensize,public] union {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_PrintProcessorDirectoryInfo1 info1;
[default] spoolss_PrintProcessorDirectoryInfo1 info1;
} spoolss_PrintProcessorDirectoryInfo;
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 {
+ typedef [nodiscriminant,relative_base,public,gensize,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_FormInfo1 info1;
[case(2)] spoolss_FormInfo2 info2;
[default];
DATA_BLOB monitor_data; /* relative ?? */
} spoolss_PortInfoFF;
- typedef [nodiscriminant,relative_base,public] union {
+ typedef [nodiscriminant,relative_base,public,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_PortInfo1 info1;
[case(2)] spoolss_PortInfo2 info2;
[case(3)] spoolss_PortInfo3 info3;
[relative] nstring *dll_name;
} spoolss_MonitorInfo2;
- typedef [nodiscriminant,relative_base,public] union {
+ typedef [nodiscriminant,relative_base,public,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_MonitorInfo1 info1;
[case(2)] spoolss_MonitorInfo2 info2;
[default];
[relative] nstring *name_array;
} spoolss_PrintProcDataTypesInfo1;
- typedef [nodiscriminant,relative_base,public] union {
+ typedef [nodiscriminant,relative_base,public,flag(NDR_RELATIVE_REVERSE)] union {
[case(1)] spoolss_PrintProcDataTypesInfo1 info1;
[default];
} spoolss_PrintProcDataTypesInfo;
/******************/
/* 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] [size_is(offered/2)] uint16 *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
);