] 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;
} 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;
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;
uint32 global_counter;
uint32 total_pages;
uint32 version;
- uint32 free_build;
+ spoolss_Build free_build;
uint32 spooling;
uint32 max_spooling;
uint32 session_counter;
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;
[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;
} spoolss_PrinterAttributes;
typedef [public,gensize] struct {
- spoolss_PrinterAttributes flags;
+ spoolss_EnumPrinterFlags flags;
[relative] nstring *description;
[relative] nstring *name;
[relative] nstring *comment;
/******************/
/* 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;
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;
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;
/* 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;
[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;
[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;
[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;
[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;
[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;
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;
} 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;
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
);
/******************/
/* 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,
/******************/
/* 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
);
/******************/
/******************/
/* Function: 0x35 */
- WERROR spoolss_GetPrinterDriver2(
+ [public] WERROR spoolss_GetPrinterDriver2(
[in,ref] policy_handle *handle,
[in,unique] [string,charset(UTF16)] uint16 *architecture,
[in] uint32 level,
/******************/
/* 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
);
/******************/
/******************/
/* 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
);
/******************/
/******************/
/* 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
);
[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(
/******************/
/* 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(
);
/******************/