spoolss interface definitions
*/
-[ uuid(12345678-1234-abcd-ef00-0123456789ab),
+[ uuid("12345678-1234-abcd-ef00-0123456789ab"),
version(1.0),
- endpoints(spoolss),
+ endpoint("ncacn_np:[\\pipe\\spoolss]"),
pointer_default(unique),
- helpstring("Spooler SubSystem")
+ helpstring("Spooler SubSystem"),
+ depends(security)
] interface spoolss
{
typedef struct {
- nstring devicename;
+ uint16 year;
+ uint16 month;
+ uint16 day_of_week;
+ uint16 day;
+ uint16 hour;
+ uint16 minute;
+ uint16 second;
+ uint16 millisecond;
+ } spoolss_Time;
+
+ typedef struct {
+ [relative] nstring *printername;
+ [relative] nstring *servername;
+ uint32 cjobs;
+ uint32 total_jobs;
+ uint32 total_bytes;
+ spoolss_Time time;
+ uint32 global_counter;
+ uint32 total_pages;
+ uint32 version;
+ uint32 unknown10;
+ uint32 unknown11;
+ uint32 unknown12;
+ uint32 session_counter;
+ uint32 unknown14;
+ uint32 printer_errors;
+ uint32 unknown16;
+ uint32 unknown17;
+ uint32 unknown18;
+ uint32 unknown19;
+ uint32 change_id;
+ uint32 unknown21;
+ uint32 status;
+ uint32 unknown23;
+ uint32 c_setprinter;
+ uint16 unknown25;
+ uint16 unknown26;
+ uint32 unknown27;
+ uint32 unknown28;
+ uint32 unknown29;
+ } spoolss_PrinterInfo0;
+
+ typedef struct {
+ string32 devicename;
uint16 specversion;
uint16 driverversion;
uint16 size;
uint16 yresolution;
uint16 ttoption;
uint16 collate;
- nstring formname;
+ string32 formname;
uint16 logpixels;
uint32 bitsperpel;
uint32 pelswidth;
[relative] nstring *comment;
} spoolss_PrinterInfo1;
- typedef struct {
- uint32 flags;
- [relative] nstring *name;
- uint32 width;
- uint32 length;
- uint32 left;
- uint32 top;
- uint32 right;
- uint32 bottom;
- } spoolss_FormInfo1;
-
typedef [public] struct {
[relative] nstring *servername;
[relative] nstring *printername;
[relative] nstring *printprocessor;
[relative] nstring *datatype;
[relative] nstring *parameters;
- [relative] security_descriptor *secdesc;
+ [relative,subcontext(0)] security_descriptor *secdesc;
uint32 attributes;
uint32 priority;
uint32 defaultpriority;
typedef struct {
uint32 flags;
- security_descriptor secdesc;
+ [subcontext(0)] security_descriptor secdesc;
} spoolss_PrinterInfo3;
typedef struct {
} spoolss_PrinterInfo7;
typedef [nodiscriminant,public] union {
+ [case(0)] spoolss_PrinterInfo0 info0;
[case(1)] spoolss_PrinterInfo1 info1;
[case(2)] spoolss_PrinterInfo2 info2;
[case(3)] spoolss_PrinterInfo3 info3;
[case(7)] spoolss_PrinterInfo7 info7;
} spoolss_PrinterInfo;
+ const int PRINTER_ENUM_DEFAULT = 0x00000001;
+ const int PRINTER_ENUM_LOCAL = 0x00000002;
+ const int PRINTER_ENUM_CONNECTIONS = 0x00000004;
+ const int PRINTER_ENUM_FAVORITE = 0x00000004;
+ const int PRINTER_ENUM_NAME = 0x00000008;
+ const int PRINTER_ENUM_REMOTE = 0x00000010;
+ const int PRINTER_ENUM_SHARED = 0x00000020;
+ const int PRINTER_ENUM_NETWORK = 0x00000040;
+
/******************/
/* Function: 0x00 */
- WERROR spoolss_EnumPrinters(
- [in] uint32 flags,
- [in] unistr *server,
- [in] uint32 level,
- [in,out] DATA_BLOB *buffer,
+ [noprint,nopull,nopush] WERROR spoolss_EnumPrinters(
+ [in] uint32 flags,
+ [in] unistr *server,
+ [in] uint32 level,
+ [in] DATA_BLOB *buffer,
+ /* [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info[count],*/
+ [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo **info,
[in,out,ref] uint32 *buf_size,
- [out] uint32 count
+ [out] uint32 count
);
/******************/
/* Function: 0x01 */
+ typedef struct {
+ uint32 foo;
+ } spoolss_Devmode;
+
+ typedef struct {
+ uint32 size;
+ spoolss_Devmode *devmode;
+ } spoolss_DevmodeContainer;
+
WERROR spoolss_OpenPrinter(
- [in] unistr *server,
- [in] unistr *printer,
- [in] DATA_BLOB *buffer,
- [in] uint32 access_mask,
- [out,ref] policy_handle *handle
+ [in] unistr *printername,
+ [in] unistr *datatype,
+ [in] spoolss_DevmodeContainer devmode_ctr,
+ [in] uint32 access_mask,
+ [out,ref] policy_handle *handle
);
/******************/
[in,out,ref] uint32 *buf_size
);
- typedef struct {
- uint16 year;
- uint16 month;
- uint16 day_of_week;
- uint16 day;
- uint16 hour;
- uint16 minute;
- uint16 second;
- uint16 millisecond;
- } spoolss_Time;
-
typedef struct {
uint32 job_id;
- [relative] nstring printer_name;
- [relative] nstring server_name;
- [relative] nstring user_name;
- [relative] nstring document_name;
- [relative] nstring data_type;
- [relative] nstring text_status;
+ [relative] nstring *printer_name;
+ [relative] nstring *server_name;
+ [relative] nstring *user_name;
+ [relative] nstring *document_name;
+ [relative] nstring *data_type;
+ [relative] nstring *text_status;
uint32 status;
uint32 priority;
uint32 position;
/******************/
/* Function: 0x04 */
- WERROR spoolss_EnumJobs(
+ [noprint,nopull,nopush] WERROR spoolss_EnumJobs(
[in,ref] policy_handle *handle,
[in] uint32 firstjob,
[in] uint32 numjobs,
[in] uint32 level,
- [in,out] DATA_BLOB *buffer,
+ [in] DATA_BLOB *buffer,
+ /* [out,subcontext(4),switch_is(level)] spoolss_JobInfo *info[count],*/
+ [out,subcontext(4),switch_is(level)] spoolss_JobInfo **info,
[in,out,ref] uint32 *buf_size,
[out] uint32 count
);
/******************/
/* Function: 0x0a */
- WERROR spoolss_EnumPrinterDrivers(
+ [noprint,nopull,nopush] WERROR spoolss_EnumPrinterDrivers(
[in] unistr *server,
[in] unistr *environment,
[in] uint32 level,
- [in,out] DATA_BLOB *buffer,
+ [in] DATA_BLOB *buffer,
+ /* [out,subcontext(4),switch_is(level)] spoolss_DriverInfo *info[count],*/
+ [out,subcontext(4),switch_is(level)] spoolss_DriverInfo **info,
[in,out,ref] uint32 *buf_size,
[out] uint32 count
);
typedef struct {
uint32 flags;
- [relative] unistr *name;
+ [relative] unistr *formname;
uint32 width;
uint32 length;
uint32 left;
/******************/
/* Function: 0x20 */
+ typedef struct {
+ uint32 flags;
+ [relative] nstring *formname;
+ uint32 width;
+ uint32 length;
+ uint32 left;
+ uint32 top;
+ uint32 right;
+ uint32 bottom;
+ } spoolss_FormInfo1;
+
WERROR spoolss_GetForm(
[in,ref] policy_handle *handle,
[in] unistr formname,
[in,out,ref] uint32 *buf_size
);
+ typedef struct {
+ uint32 flags;
+ unistr *formname;
+ uint32 width;
+ uint32 length;
+ uint32 left;
+ uint32 top;
+ uint32 right;
+ uint32 bottom;
+ } spoolss_SetFormInfo1;
+
+ typedef union {
+ [case(1)] spoolss_AddFormInfo1 *info1;
+ } spoolss_SetFormInfo;
+
/******************/
/* Function: 0x21 */
WERROR spoolss_SetForm(
[in,ref] policy_handle *handle,
- [in] unistr form_name,
+ [in] unistr formname,
[in] uint32 level,
- [in,switch_is(level)] spoolss_AddFormInfo info
+ [in,switch_is(level)] spoolss_SetFormInfo info
);
typedef [nodiscriminant,public] union {
/******************/
/* Function: 0x22 */
- WERROR spoolss_EnumForms(
+ [noprint,nopull,nopush] WERROR spoolss_EnumForms(
[in,ref] policy_handle *handle,
[in] uint32 level,
- [in,out] DATA_BLOB *buffer,
+ [in] DATA_BLOB *buffer,
+ /* [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info[count],*/
+ [out,subcontext(4),switch_is(level)] spoolss_FormInfo **info,
[in,out,ref] uint32 *buf_size,
[out] uint32 count
);
+ typedef [flag(RELATIVE_CURRENT)] struct {
+ [relative] nstring *port_name;
+ } spoolss_PortInfo1;
+
+ typedef bitmap {
+ SPOOLSS_PORT_TYPE_WRITE = 0x00000001,
+ SPOOLSS_PORT_TYPE_READ = 0x00000002,
+ SPOOLSS_PORT_TYPE_REDIRECTED = 0x00000004,
+ SPOOLSS_PORT_TYPE_NET_ATTACHED = 0x00000008
+ } spoolss_PortType;
+
+ typedef struct {
+ [relative] nstring *port_name;
+ [relative] nstring *monitor_name;
+ [relative] nstring *description;
+ spoolss_PortType port_type;
+ uint32 reserved;
+ } spoolss_PortInfo2;
+
+ typedef [nondiscriminant,public] union {
+ [case(1)] spoolss_PortInfo1 info1;
+ [case(2)] spoolss_PortInfo2 info2;
+ } spoolss_PortInfo;
+
/******************/
/* Function: 0x23 */
- WERROR spoolss_EnumPorts(
+ [noprint,nopull,nopush] WERROR spoolss_EnumPorts(
+ [in] unistr *servername,
+ [in] uint32 level,
+ [in] DATA_BLOB *buffer,
+ /* [out,subcontext(4),switch_is(level)] spoolss_PortInfo *info[count], */
+ [out,subcontext(4),switch_is(level)] spoolss_PortInfo **info,
+ [in,out,ref] uint32 *buf_size,
+ [out] uint32 count
);
/******************/
WERROR spoolss_44(
);
- typedef struct {
- uint32 foo;
- } spoolss_Devmode;
-
- typedef struct {
- uint32 size;
- spoolss_Devmode *devmode;
- } spoolss_DevmodeContainer;
-
typedef struct {
uint32 size;
unistr *client;
[in] unistr *printername,
[in] unistr *datatype,
[in] spoolss_DevmodeContainer devmode_ctr,
- [in] uint32 access_required,
+ [in] uint32 access_mask,
[in] uint32 level,
[in,switch_is(level)] spoolss_UserLevel userlevel,
[out,ref] policy_handle *handle
[out] lstring value_name,
[out] uint32 value_needed,
[out] uint32 printerdata_type,
- [out] DATA_BLOB data,
+ [out] DATA_BLOB buffer,
[in,out,ref] uint32 *data_size
);
/******************/
/* Function: 0x4f */
WERROR spoolss_EnumPrinterDataEx(
- [in,ref] policy_handle *handle
+ [in,ref] policy_handle *handle,
+ [in] unistr key_name,
+ [out] DATA_BLOB buffer,
+ [in,out] uint32 buf_size,
+ [out] uint32 count
);
/******************/